管理状态越来越严格,不会轻易开放,并且通信监视严格。UDP扫描可以用来确定主机上哪些UDP端口处于开放状态,其原理是通过发送零字节的UDP信息包到目标机器的各个端口,如果收到一个ICMP端口无法到达的回应,那么该端口是关闭的,否则可以认为它是开放的。该方式的优点是利用UDP端口关闭时返回的ICMP信息,不包含标准的TCP三次握手协议的任何部分,因此隐蔽性好。其缺点是由于UDP是不面向连接的,这种扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息,所以整个精度会比较低;同时,由于不同操作系统在实现ICMP协议的时候为了避免广播风暴都会有峰值速率的限制,因此扫描速度比较慢。这一扫描方法命令行格式为:nmap –sU IP地址,如nmap –sU 192.168.0.5,则可对目标主机192.168.0.5进行UDP扫描,输出结果如图3.1.4所示。
图3.1.4 UDP扫描
5、秘密扫描
1)TCP SYN扫描
这种方式是半开放式的TCP同步扫描,扫描程序不打开完整的TCP连接,发送一个SYN信息包并等待对方的回应。扫描原理参见“实验预习提示”中的“TCP SYN扫描”。这种扫描的的最大好处是可以进行更加隐蔽的扫描,防止被目标主机监测到,只有极少的站点会对它作出记录,但是需要有root权限来定制这些SYN包。命令行格式为:nmap –sS IP地址,如nmap –sS 192.168.0.5,则可对目标主机192.168.0.5进行TCP SYN扫描,输出结果如图3.1.5所示。将TCP SYN扫描与前面的TCP connect扫描进行对比,可以看出TCP SYN扫描的速度明显比TCP connect扫描快,扫描结果略有不同。
图3.1.5 TCP SYN扫描
SYN扫描在有些情况下仍不够隐蔽,一些防火墙及信息包过滤装置会在重要端口守护,只要安装了过滤和日志软件来检测同步空闲字符SYN,则-sS的隐蔽作用就失效了,SYN包在此时便会被截获,一些应用软件如Synlogger以及Courtney对侦测这种类型的扫描都是行家。所以,需要有更进一步的隐蔽扫描方式。
2)FIN扫描、Xmas Tree扫描和Null扫描
由于关闭的端口会对发送的探测信息返回一个RST,而打开的端口则对其忽略不理。所以,FIN扫描使用空的FIN信息包作为探针,Xmas Tree使用FIN、URG、PUSH标记,Null扫描则不用任何标记。需要注意的是此方法与系统的实现有一定的关系,由于微软的坚持和独特,对于运行Windows 95/98或NT的机器不管端口是否打开都会回复RST,因此FIN、Xmas Tree和Null扫描的结果都是端口关闭。命令行格式分别为:nmap –sF IP地址,nmap –sX IP地址,nmap –sN IP地址,如nmap –sF 192.168.0.5,则可对目标主机192.168.0.5进行FIN扫描,输出结果如图3.1.6所示;nmap –sX 192.168.0.5,则可对目标主机192.168.0.5进行Xmas Tree扫描,输出结果如图3.1.7所示;nmap –sN 192.168.0.5,则可对目标主机192.168.0.5进行Null扫描,输出结果如图3.1.8所示。
按照上述原理,这其实也是一个很好的区分Windows和Unix/Linux两种平台的方法,如果扫描发现了打开的端口,那就能知道目标主机运行的不是Windows;如果-sF、-sX、-sN的扫描显示所有端口都是关闭的,但一个SYN扫描却显示有打开端口,则能大致推断目标主机是Windows平台。当然,这只是一个简单应用,nmap有更彻底的操作系统辨别方法。
6、操作系统指纹识别
该方法经由TCP/IP来获取“指纹”,从而判别目标主机的操作系统类型,其原理是用一连串的信息包探测出所扫描的主机位于操作系统有关堆栈的信息,并区分其精细差异,以此判别操作系统。它用搜集到的信息建立一个“指纹”,用来同已知的操作系统的指纹相比较,这样判定操作系统就有了依据。命令行格式为:nmap –O IP地址,如nmap –O 192.168.0.5,则可对目标主机192.168.0.5进行操作系统类型探测,输出结果如图3.1.9所示。
图3.1.6 FIN扫描
图3.1.7 Xmas Tree扫描
图3.1.8 Null扫描
图3.1.9 操作系统指纹识别
注意,nmap的这种方式有时也会得到错误的诊断信息,比如系统有端口开放。但nmap返回不可识别的操作系统,这也是有可能的,这时可以用nmap的-d参数来测试,详见nmap参考文档。 7、其他应用
(1)扫描主机群
除了扫描单个目标主机,还可以同时扫描一个主机群,如:nmap –sT –O 192.168.0.1-10就可以同时扫描并探测IP地址在192.168.0.1-192.168.0.10之间的每一台主机。当然这需要更多的时间,耗费更多的系统资源和网络带宽,输出结果页可能会很长。此时可以用下面的命令将结果重定向输送到一个文件中:nmap –sT –O –oN scan_result.txt 192.168.0.1-10,输出结果如图3.1.10所示。
(2)其他常用参数
1)-I:进行TCP反向用户认证扫描,可以透露扫描用户信息。其原理是利用了Ident协议(RFC1413),Ident协议允许看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由该进程发起的。例如可以连接到一个http端口,然后通过ident来发现服务器是否正在以root权限运行。但这种扫描方式只能在和目标端口建立了一个完整的TCP全连接之后才有效,并且实际上很多主机都会关闭ident服务,因此在高版本Nmap中已不再支持这种扫描方式。命令行格式为:nmap –I IP地址,如nmap –I 192.168.0.5,则可对目标主机192.168.0.5进行TCP反向用户认证扫描,输出结果如图3.1.11所示。
图3.1.10 扫描主机群
图3.1.11 TCP反向用户认证扫描