NMAP使用介绍
本文总结了NMAP的一些常用命令。
参考文章:
https://blog.csdn.net/wholeliubei/article/details/143204993
https://nmap.org/book/man.html
https://www.cnblogs.com/HOsystem/p/16538678.html
1、介绍
Nmap是一款用于网络发现和安全审计的开源工具。它最初由 Gordon Lyon(也被称为 Fyodor Vaskovich)开发,是一款功能强大且广泛使用的网络扫描工具。Nmap 允许用户在网络上执行主机发现、端口扫描、服务识别和版本检测等操作,以帮助评估网络的安全性、发现主机和服务、以及识别潜在的安全威胁。
一些功能:
1、主机发现: Nmap 可以通过发送网络探测包(ping 扫描)来确定一个网络中活跃的主机。这有助于确定哪些 IP 地址上有活动的设备。
2、端口扫描: Nmap 可以扫描目标主机的开放端口,帮助确定哪些服务正在运行。它支持多种扫描技术,包括 TCP 扫描、UDP 扫描、SYN/ACK 扫描等。
3、服务识别: Nmap 可以识别目标主机上运行的具体服务和应用程序的版本号。这对于了解目标系统上可能存在的漏洞和弱点很有帮助。
4、操作系统检测: Nmap 能够尝试检测目标主机的操作系统类型和版本。这有助于识别网络中的不同操作系统,并为后续的渗透测试提供信息。
5、脚本扫描: Nmap 支持脚本扫描,允许用户执行自定义脚本以进行更深入的信息收集和安全审计。
6、版本检测: Nmap 可以检测目标系统上运行的服务的版本信息。这对于确定目标系统上可能存在的已知漏洞和安全问题非常有用。
7、输出: Nmap 可以生成多种输出格式,包括文本、XML、JSON 等,以便进一步的分析和报告。
2、使用
(1)扫描目标
①快速扫描
1
nmap.exe IP
②扫描多个目标
1
nmap.exe IP IP ....
③扫描网段
1
2
3
4
nmap.exe IP/子网掩码
E.g. nmap.exe 127.0.0.1/24
nmap.exe 192.168.2.1-192.168.2.100 #扫描同网段内的不同IP
④列表输入
1
-iL [LIST.txt] #有大量的主机需要扫描
⑤排除目标
1
2
-exclude 过滤的IP
E.g. nmap.exe 127.0.0.1/24 -exclude 127.0.0.10
(2)主机
①列表扫描
1
-sL
只列出了指定网络的每个主机, 而不向目标主机发送任何数据包
②无端口扫描
1
2
nmap.exe -sP IP/子网掩码
//-sn
在主机之后不进行端口扫描 发现,并且仅打印出满足 响应主机发现探测。通常称为Ping scan
③无ping扫描
1
namp.exe -Pn IP
完全跳过主机发现阶段,对指定的每个目标 IP 地址执行请求的扫描功能
当扫描被ping探针的防火墙阻止时,这是非常有用的
④TCP SYN Ping
1
-PS <端口列表>
发送一个带有 SYN 的空 TCP 数据包 标志集。默认目标端口为 80(可以修改,更改 nmap.h
中的 DEFAULT_TCP_PROBE_PORT_SPEC)
-PS
和端口之间不能有空格
⑤TCP ACK Ping
1
-PA <端口列表>
与TCP SYN Ping的区别是设置了 TCP ACK 标志,而不是 SYN 标志。
这样的ACK数据包声称正在确认TCP的连接,但实际上没有这样的连接存在。
同时提供 SYN 和 ACK ping 探测的原因 是为了最大限度地提高绕过防火墙的机会:
有的阻止传入的SYN数据包,有的会丢弃意外的ACK数据包。通过指定-PS和-PA来发送,来解决这个困境
⑥UDP Ping
1
-PU <端口列表>
如果未指定端口,默认值为 40125. 此默认 可以在编译时通过更改 nmap.h
中的DEFAULT_UDP_PROBE_PORT_SPEC 进行配置。 默认情况下使用非常不常见的端口。
这种扫描类型的主要优点是它 绕过仅屏蔽 TCP 的防火墙和过滤器。
⑦SCTP INIT Ping
1
-PY <端口列表>
发送一个 SCTP 数据包,其中包含一个最小的 INIT 块。默认目标端口为 80(可配置 在编译时通过更改 nmap.h
中的 DEFAULT_SCTP_PROBE_PORT_SPEC)。 -PY
和端口之间不能有空格
要有root权限
⑧ICMP Ping
1
-PE;-PP;-pM
许多主机和防火墙现在会阻止这些数据包,很少使用仅 ICMP 进行扫描 对 Internet 上的未知目标,但对于系统管理员监控内部 网络,它们可以是一种实用且有效的方法
⑨IP协议 Ping
1
-PO <协议列表>
发送具有指定协议号的 IP 数据包 设置在其 IP 标头中。协议列表:TCP、UDP 和 SCTP。如果未指定协议,则默认发送多个 ICMP、IGMP和 IP-in-IP。
默认协议可以是 在编译时通过更改 nmap.h
中的 DEFAULT_PROTO_PROBE_PORT_SPEC 进行配置。
对于 ICMP、IGMP、TCP(协议 6)、UDP(协议 17)和 SCTP(协议 132),数据包使用正确的协议报头发送,而其他协议则发送除 IP 报头之外的其他数据(除非指定了 –data、–data-string 或 –data-length 选项中的任何一个)。
⑩无ARP 或 ND Ping
1
--disable-arp-ping
Nmap 通常对本地连接的以太网主机进行 ARP 或 IPv6 邻居发现 (ND) 发现,即使使用其他主机发现选项,如 -Pn 或 -PE。要禁用此隐式行为,请使用 –disable-arp-ping 选项。
默认行为通常更快,但此选项在使用代理 ARP 的网络上非常有用,在代理 ARP 中,路由器会推测性地回复所有 ARP 请求,使每个目标根据 ARP 扫描显示为已启动。
①①不考虑RST回复
1
--discovery-ignore-rst
在某些情况下,防火墙可能会欺骗 TCP 重置 (RST) 回复,以响应对未占用或不允许的地址的探测。因为Nmap通常认为RST回复是目标已经启动的证明,这可能导致浪费时间扫描不存在的目标。使用 –discovery-ignore-rst 将阻止 Nmap 在主机发现期间考虑这些回复。在这种情况下,您可能需要选择额外的主机发现选项,以确保您不会错过目标。
①②追踪主机的路径
1
--traceroute
跟踪路由在扫描后使用扫描结果中的信息执行,以确定最有可能到达目标的端口和协议。它适用于除连接扫描 (-sT
) 和空闲扫描 (-sI
) 之外的所有扫描类型。
①③全面扫描/综合扫描
1
-A
(3)端口
端口状态
open(开放的)、closed(关闭的)、filtered(被过滤的)、unfiltered(未被过滤)、open | filtered(开放或者被过滤的)、closed | filtered(关闭或者别过滤的) |
①TCP SYN扫描
1
-sS
是默认且最常用的 扫描选项
快速:在不受限制性防火墙阻碍的快速网络上每秒扫描数千个端口
相对隐蔽:不会完成 TCP 连接
适用于任何兼容的 TCP 堆栈
②TCP连接扫描
1
-ST
不像大多数其他扫描类型那样写入原始数据包,而是通过发出 connect
系统调用来要求底层操作系统与目标机器和端口建立连接。
当 SYN 扫描可用时,它通常是更好的选择。与原始数据包相比,Nmap 对高级 connect
调用的控制较少,因此效率较低。
③UDP扫描
1
-sU
由于 UDP 扫描通常比 TCP 更慢且更困难,因此一些安全审核员会忽略UDP扫描端口。可利用的 UDP 服务非常普遍,我们可以利用UDP协议。
④SCTP INIT扫描
1
-sY
它结合了 TCP 和 UDP 的大部分特性,还添加了多宿主和多流等新功能。它主要用于 SS7/SIGTRAN 相关服务,但也有可能用于其他应用。SCTP INIT 扫描是 TCP SYN 扫描的 SCTP 等效项。
快速执行:在不受限制性防火墙阻碍的快速网络上每秒扫描数千个端口 隐蔽:不会完成 SCTP 关联
⑤TCP NULL,FIN 和Xmas 扫描
1
-sN ; -sF ; -sX
隐蔽
利用了 TCP RFC 中的一个微妙漏洞来区分开放
端口和封闭
端口。
NULL扫描:不设置任何位(TCP 标志报头为 0)
FIN扫描:仅设置 TCP FIN 位。
Xmas扫描:设置 FIN、PSH 和 URG 标志,像圣诞树一样点亮数据包。
⑥常用扫描方式
1
2
3
4
5
nmap -p 80 192.168.1.103
nmap -p 80-100 192.168.1.103
nmap -p T:80,U:445 192.168.1.103
nmap -F 192.168.1.1.103 (快速扫描)
nmap --top-ports 100 192.168.1.103 (扫描最有用的前100个端口)
⑦空闲扫描(隐藏IP)
1
nmap -sI www.0day.co:80 192.168.1.103
(4)指纹识别与探测
①版本检测
1
2
3
4
5
6
7
8
9
10
11
12
13
-sV
-sV -A
//全端口
--allports
//设置扫描强度 0~9(默认为7)
--version-intensity
//重量级扫描——试每个探测器--version-intensity 9 的别名
--version-all
确保对每个端口尝试每个探测
②获取详细版本信息
1
--version-trace
打印出有关版本扫描正在做什么的大量调试信息
③RPC扫描
1
nmap -sS -sR 192.168.1.103
④对指定的目标进行操作系统监测
1
nmap -O --osscan-limit 192.168.1.103
⑤ 推测系统并识别
1
nmap -O --osscan-guess 192.168.1.103
(5)防火墙/IDS逃逸
①报文分段
1
nmap.exe -f -v IP
②指定偏移大小
1
2
nmap.exe --mtu 偏移量大小 IP
E.g. nmap.exe --mtu 16 127.0.0.1
③IP欺骗
1
nmap.exe -D 假IP,假IP,假IP,... 目标IP
④源地址欺骗
1
nmap.exe -S 伪造的源IP 目标IP
⑤源端口欺骗
1
2
nmap.exe --source-port 源port 目标IP
nmap.exe -g 源port 目标IP
⑥指定发包长度
1
2
nmap.exe --data-legth 长度 IP
E.g. nmap.exe --data-length 30 16 127.0.0.1
⑦目标主机随机排序
防止连续扫描多个目标而被防火墙和入侵检测系统检测到.
1
nmap.exe --randomize-hosts IP
⑧MAC地址欺骗
1
nmap.exe -sT -PN –spoof-mac MAC地址 IP
需要了解哪些MAC地址可以使用,通过手动或先进的模糊测试完成
扫描隐蔽
⑨发送错误校验
在某些防火墙和IDS /IPS,只会检查有正确校验包的数据包。因此,攻击者通过发送错误校验欺骗IDS /IPS。
1
nmap.exe --badsum IP
(6)信息收集
①IP信息
1
nmap --script ip-geolocation-* www.pcos.cn
②WHOIS 查询
1
2
3
4
nmap --script whois-domain www.pcos.cn
nmap --script whois-domain --script-args whois.whodb=nofollow www.ithome.com
nmap -sn --script whois-domain -v -iL host.txt
③DNS信息收集
1
2
3
nmap --script dns-brute www.pcos.cn
nmap --script dns-brute dns-brute.threads=10 www.pcos.cn
nmap --script dns-brute dns-brute.threads=10,dns-brute.hostlis www.pcos.cn
④系统漏洞扫描
1
nmap --script smb-check-vulns.nse -p 445 119.29.155.45
⑤Web漏洞扫描
1
nmap -p80 --script http-stored-xss.nse/http-sql-injection.nse 119.29.155.45
⑥列举Windows服务。账户
1
2
nmap -sU -p 161 --script=snmp-win32-services 192.168.1.104
nmap -sU -f -p 161 --script=snmp-win32-users 192.168.1.110
⑦枚举DNS服务器的主机名
1
nmap --script dns-brute --script-args dns-brute.domain=baidu.com
(7)输出和保存
①标准保存
1
nmap -F -oN d:/test1.txt 192.168.1.111
②XML保存
1
nmap -F -oX d:/test1.xml 192.168.1.111
③ Grep保存
1
nmap -F -oG d:/test2.txt 192.168.1.111
④保存所有格式
1
nmap -F -oA d:/test2.txt 192.168.1.111
(8)数据库渗透测试
精心整理超详细Nmap使用技巧(非常详细)零基础入门到精通,收藏这一篇就够了_nmap工具使用详解-CSDN博客
3、常用命令
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
nmap -sT 192.168.96.4 //TCP连接扫描,不安全,慢
nmap -sS 192.168.96.4 //SYN扫描,使用最频繁,安全,快
nmap -Pn 192.168.96.4 //目标机禁用ping,绕过ping扫描
nmap -sU 192.168.96.4 //UDP扫描,慢,可得到有价值的服务器程序
nmap -sI 僵尸ip 目标ip //使用僵尸机对目标机发送数据包
nmap -sA 192.168.96.4 //检测哪些端口被屏蔽
nmap 192.168.96.4 -p //对指定端口扫描
nmap 192.168.96.1/24 //对整个网段的主机进行扫描
nmap 192.168.96.4 -oX myscan.xml //对扫描结果另存在myscan.xml
nmap -T1~6 192.168.96.4 //设置扫描速度,一般T4足够。
nmap -sV 192.168.96.4 //对端口上的服务程序版本进行扫描
nmap -O 192.168.96.4 //对目标主机的操作系统进行扫描
nmap -sC 192.168.96.4 //使用脚本进行扫描,耗时长
nmap -A 192.168.96.4 //强力扫描,耗时长
nmap -6 ipv6地址 //对ipv6地址的主机进行扫描
nmap -f 192.168.96.4 //使用小数据包发送,避免被识别出
nmap –mtu 192.168.96.4 //发送的包大小,最大传输单元必须是8的整数
nmap -D <假ip> 192.168.96.4 //发送参杂着假ip的数据包检测
nmap --source-port //针对防火墙只允许的源端口
nmap –data-length: 192.168.96.4 //改变发生数据包的默认的长度,避免被识别出来是nmap发送的。
nmap -v 192.168.96.4 //显示冗余信息(扫描细节)
nmap -sn 192.168.96.4 //对目标进行ping检测,不进行端口扫描(会发送四种报文确定目标是否存活,)
nmap -sP 192.168.96.4 //仅仅对目标进行ping检测。
nmap -n/-p 192.168.96.4 //-n表示不进行dns解析,-p表示要
nmap --system-dns 192.168.96.4 //扫描指定系统的dns服务器
nmap –traceroute 192.168.96.4 //追踪每个路由节点。
nmap -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。
nmap -sP 192.168.96.4 //主机存活性扫描,arp直连方式。
nmap -iR [number] //对随机生成number个地址进行扫描。