nmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 基本扫描
nmap [IP] # 扫描一个主机
nmap -Pn [IP] # 扫描一个主机如果无法ping通也继续扫描
nmap [网络地址/子网前缀长度] # 扫描一个CIDR地址
nmap [-iL] hosts.txt # 扫描文件内的所有主机
nmap 192.168.1.1-10 # 扫描一个IP范围内的

# 指定端口
nmap -p [端口号] [IP] # 扫描某个端口
nmap -p [端口号-端口号] [IP] # 扫描某个区间端口
nmap -p [端口号,..] [IP] # 扫描某个特定端口
nmap -p- www.example.com # 扫描所有端口

# 指定扫描类型
TCP SYN扫描(默认):使用TCP SYN包探测主机上的开放端口。使用-sS选项指定。
nmap -sS www.example.com
TCP 连接扫描:使用TCP连接探测主机上的开放端口。使用-sT选项指定。
nmap -sT www.example.com
UDP 扫描:探测主机上的开放UDP端口。使用-sU选项指定。--top-ports <number> 最常用的UDP端口
nmap -sU www.example.com
nmap -sU --top-ports 20 <target> .将扫描前 20 个最常用的 UDP 端口,从而获得更可接受的扫描时间。
操作系统检测:尝试识别主机的操作系统类型和版本。使用-O选项指定。
nmap -O www.example.com
版本检测:尝试识别主机上运行的服务及其版本。使用-sV选项指定。
nmap -sV www.example.com
全面扫描:结合TCP SYN扫描、TCP连接扫描、UDP扫描、操作系统检测和版本检测进行全面扫描。使用-sS -sT -sU -O -sV选项指定。
nmap -sS -sT -sU -O -sV www.example.com
TCP Null Scans TCP 空扫描
-sN
TCP FIN Scans
-sF
TCP Xmas Scans
-sX
ping扫描
-sn
增加信息
nmap -v www.example.com
nmap -vv www.example.com # 二级
aggressive 侵略模式
nmap -A www.example.com

# 指定扫描速度
-T0:非常慢的速度
-T1:慢速
-T2:正常速度
-T3:快速
-T4:非常快的速度
-T5:极快的速度

# 输出扫描结果
-oA <file>: 三种格式文件
-oN <file>:将扫描结果保存为普通文本文件
-oX <file>:将扫描结果保存为XML文件
-oG <file>:将扫描结果保存为可读性更好的格式
nmap -oA example_scan www.example.com # 这将在当前目录中创建三个文件,文件名分别为:xample_scan.nmap:普通格式 example_scan.xml:XML格式 example_scan.gnmap:可grep格式
nmap -oN result.txt www.example.com # 将扫描结果保存为普通文本文件
nmap -oX result.xml www.example.com # 将扫描结果保存为XML文件
nmap -oG result.txt www.example.com # 将扫描结果保存为可读性更好的格式

# 使用脚本
要从nmap脚本库中激活一个脚本,可以使用--script选项,后跟要激活的脚本名称。例如,以下命令将激活http-title脚本,该脚本可用于提取目标Web服务器的标题:
nmap --script=http-title www.example.com
您还可以使用逗号分隔的列表来激活多个脚本。例如,以下命令将激活http-title和http-headers脚本:
nmap --script=http-title,http-headers www.example.com
如果您想要激活所有脚本,可以使用 --script=all 选项。这将激活nmap脚本库中的所有脚本,但可能会导致扫描时间变长。
nmap --script=all www.example.com
以下命令将激活所有"vuln"类别中的脚本,并对www.example.com进行扫描:
nmap --script=vuln www.example.com
脚本库
safe :- 不会影响目标
intrusive :- 不安全:可能会影响目标
vuln :- 扫描漏洞
exploit :- 尝试利用漏洞
auth :- 尝试绕过正在运行服务的身份验证(例如匿名登录FTP服务器)
brute :- 尝试暴力破解正在运行服务的凭据
discovery :- 尝试查询正在运行的服务以获取有关网络的更多信息(例如查询 SNMP 服务器)。
https://nmap.org/book/nse-usage.html
某些脚本需要参数(例如,凭据,如果它们正在利用经过身份验证的漏洞)。这些可以通过 --script-args Nmap开关提供。这方面的一个例子是 http-put 脚本(用于使用 PUT 方法上传文件)。这需要两个参数:要将文件上传到的 URL 和文件在磁盘上的位置。例如:
nmap -p 80 --script http-put --script-args http-put.url='/dav/shell.php',http-put.file='./shell.php'

搜索NSE脚本

grep "{脚本名字}" /usr/share/nmap/scripts/script.db

防火墙规避

-f :- 用于对数据包进行分段(即将它们分成更小的部分),使防火墙或 IDS 不太可能检测到数据包。

-f 替代方法,但可以更好地控制数据包的大小: --mtu <number> ,接受用于发送的数据包的最大传输单元大小。这必须是 8 的倍数。

--scan-delay <time>ms :- 用于在发送的数据包之间添加延迟。如果网络不稳定,这非常有用,但对于规避可能存在的任何基于时间的防火墙/ IDS触发器也非常有用。

--badsum :- 这用于生成无效的数据包校验和。任何真正的TCP / IP堆栈都会丢弃此数据包,但是,防火墙可能会自动响应,而无需费心检查数据包的校验和。因此,此开关可用于确定是否存在防火墙/IDS。