文章

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(未被过滤)、openfiltered(开放或者被过滤的)、closedfiltered(关闭或者别过滤的)

①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个地址进行扫描。
本文由作者按照 CC BY 4.0 进行授权