nmap命令详细

最近在研究Kali,配合一本《Kali渗透测试技术实战》 。在扫描部分,书中重点介绍nmap的使用。

为什么是nmap

常见的网络扫描器有很多,而nmap有如下优势:

1.多平台。nmap原本是linux下的软件,后来逐步发布了windows版本,在不同的系统环境下都可以使用强大的nmap进行网络扫描和信息收集。

2.功能强大。nmap的参数非常多,入手可能略困难,但通过设置不同的参数,可以发起不同类型的扫描,可订制化非常高。

比如,可以发起UDP扫描,可以发起ACK扫描,这种扫描方式可以帮助判断目标机是否开启防火墙。

nmap可以设置扫描的延时、扫描并发延时等等,控制扫描速度,在最慢速的扫描中,扫描一台主机有可能花费很多小时,但足以隐藏这次信息收集过程不被对方管理员发现。

nmap设置可以伪造源地址发起扫描,以期绕过防火墙和IDS的日志记录,达到隐藏攻击者的目的。nmap甚至可以将发送的扫描数据包分片,实现绕过防火墙的功能,上述这些功能,在常见的X-scan、superscan上都不具备。

nmap命令结构

如图,这是一个常见的nmap扫描命令,向目标为192.168.1.44发起一次SYN隐蔽扫描,按照T2时间模板进行,并将结果输出为文本文件。

扫描选项部分,-s 小写的s,表示后面一个大写字母代表扫描类型。
“-sS” 代表隐蔽扫描,只发送一个SYN,不完成TCP三次握手
“-sT” TCP扫描,建立完整TCP三次握手,可被目标系统记录日志,但信息更丰富。
“-sU” UDP扫描 可以扫描UDP端口,开放的、关闭的、被防火墙过滤的。根据icmp返回的不同响应。
“-sA” ACK扫描 辨别靶机是否开启防火墙。
若防火墙启用,结果应该是All 1000 scanned ports on 192.168.1.44 are filtered
若防火墙未启用,结果应该是All 1000 scanned ports on 192.168.1.44 are unfiltered

计时选项
“-T0” 慢速扫描,最小化被发现,串行的扫描方式,两次扫描之前的间隔最少5分钟。扫描500个UDP端口可能需要3小时。
该选项只应在需要隐蔽而且时间充裕时使用
“-T1” 比T0略快。保持慢速扫描的隐蔽性同时,减少了扫描需要的时间。同为串行扫描,两次扫描之间的间隔15s
“-T2” 最后一个串行扫描选项,两次扫描间隔400ms,单次扫描延时默认1分钟。
“-T3” 默认扫描方式,并行扫描,单次扫描延时1s,一秒后当前端口被放弃并进行下一个端口扫描。
“-T4” 单次扫描延时10ms,部分系统易出错。
“-T5” 速度最快。单次扫描延时5ms。

扫描目标
可扫描ip段 nmap 10.0.2.1-255 或 nmap 10.0.2.1/24
扫描指定IP 把需要扫描的地址写入targets.txt nmap -iL targets.txt
如果需要排除目标ip段中的部分主机,需要使用–exclude 1.1.1.1 将其排除在外。

可指定扫描端口 nmap -sS -p 1-100 nmap -sS -p 53,137,3389

输出选项
-oN 结果输出到文本文件 nmap -oN aaa.txt 10.0.2.100
-oX 结果输出到XML文件 nmap -oX aaa.xml 10.0.2.100

其他有用的参数

如果只想使用ping扫描发现存活主机,而不想进一步获取操作系统、端口等信息,可使用-sP 参数

“-PA” -PS的区别
“-PS” 使用syn标志位的tcp包进行扫描,根据对方返回的数据包标志位判断是否存活。如果存活,根据TCP协议会返回一个SYN/ACK标志位的包,如果端口关闭,会返回RST包。对于无状态防火墙也即普通的包过滤防火墙而言,-PS这种扫描方式会被防火墙阻拦。而有状态防火墙则不然。
“-PA” 使用ACK标志位的tcp包进行扫描。对无状态防火墙也即普通包过滤防火墙而言,-PA是可以透过防火墙的。但有状态防火墙则不然,没头没脑的ACK报文会被丢弃。
“-PU” 使用UDP ping发现主机是否存活,有些防火墙只过滤TCP端口,-PU可绕过这一点。

哄骗防火墙
“-S” 1.1.1.1 使用1.1.1.1进行扫描,让防火墙误以为是来自1.1.1.1的扫描行为
“-f” 把扫描报文分片以期绕过防火墙

“-sV” 获取应用的版本信息 -O 获取操作系统信息

写在最后

nmap还可以通过设置不同的参数实现其他很多好玩有用的功能,具体细节有兴趣的可以参见官方的《nmap参考指南》

你的打赏,我的干粮