Nmap是网络安全人员常用的信息收集工具,主要用来探测主机、扫描端口和服务。下面总结一下nmap常用的几种扫描方式,以及流量情况。
测试环境
kali linux ip=192.168.74.128
目标主机 ip=192.168.74.130 测试端口:tcp 22 udp 53
流量分析工具:科来网络分析系统11技术交流版
1、TCP connect scan
命令:nmap -sT ip
TCP 完全连接扫描,直接与被扫描端口进行TCP三次握手。如果端口开放,则三次握手成功;如果端口不开放,主机则返回ACK和RST包。TCP connect()扫描就是默认的扫描模式,要求调用系统的connect()。
优点:你勿需root权限。普通用户也可以使用。
缺点:极容易被侦测到,在目标主机的日志中会记录大批的连接请求以及错误信息
扫描到开放端口的tcp时序图,可以看到完整的TCP三次握手状态,然后RST掉。
扫描到关闭端口的tcp时序图
2、TCP SYN scan
命令:nmap -sS ip
SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快,效率高
(一个完整的tcp连接需要3次握手,而-sS选项不需要3次握手)
优点:Nmap发送SYN包到远程主机,但是它不会产生任何会话,目标主机几乎不会把连接记入系统日志。(防止对方判断为扫描攻击),扫描速度快,效率高,在工作中使用频率最高
缺点:它需要root/administrator权限执行
扫描到开放端口的tcp时序图,nmap接收到主机回传的SYN和ACK确认后,直接RST掉了,没有进行完整TCP握手。
扫描到关闭端口的tcp时序图
3、TCP FIN scan
命令:nmap -sF ip
有些时候防火墙绘过滤tcp syn数据包,有些时候会记录syn数据包并检测时候有nmap扫描。这时候可以使用TCP FIN scanning。这种方式很简单。发送tcp FIN数据包到待测端口。如果返回RST数据包,则说明该端口关闭,如果无返回则说明该端口开放。
优点:可绕过防火墙阻止掉SYN数据包的规则,速度比-sT快,与-sS效果差不多。
缺点:这是tcp协议的一个BUG,所以这种扫描方式不一定百分之百可靠(例如windows),但是这种扫描方式适合大部分 *NIX 系统。
扫描到开放端口的tcp时序图,对开放端口发送FIN后,没有任何响应。
扫描到关闭端口的tcp时序图
4、TCP Xmas scans
命令:nmap -sX ip
圣诞树扫描圣诞树扫描打开数据包的FIN、URG和PUSH标志,跟fin扫描效果类似,都是为了绕过防火墙屏蔽SYN的限制。
扫描到开放端口的tcp时序图
扫描到关闭端口的tcp时序图
5、TCP NULL scans
命令:nmap -sN ip
tcp flag headers 全为0的扫描,与-sF、-sX类似,不过以上三种扫描方式均对windows无效。
扫描到开放端口的tcp时序图
扫描到关闭端口的tcp时序图
参考文档
https://www.cnblogs.com/nmap/p/6232969.html
https://www.jianshu.com/p/56ea8b844eb7
https://nmap.org/book/man-port-scanning-techniques.html