我们可以看到SYN方式探测到3个端口开放,而有997个端口被过滤。Nmap默认扫描只扫描1000个最可能开放的端口,如果想扫描全部的端口,使用命令nmap -sS -T4-p-
FIN扫描
然后可以利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态。
nmap -sF -T4 |
扫描输出为:
PORT STATE SERVICE 7/tcp open|filtered echo 9/tcp open|filtered discard 11/tcp open|filtered systat 13/tcp open|filtered daytime 23/tcp open|filtered telnet 25/tcp open|filtered smtp 37/tcp open|filtered time 79/tcp open|filtered finger 80/tcp open|filtered http |
更多端口,此处省略
ACK扫描
然后利用ACK扫描判断端口是否被过滤。针对ACK探测包,未被过滤的端口(无论打开、关闭)会回复RST包。
nmap -sA -T4 Not shown: 997 unfiltered ports PORT STATE SERVICE 135/tcp filtered msrpc 1434/tcp filtered ms-sql-m 32777/tcp filtered sometimes-rpc17 |
从结果可以997个端口是未被过滤的(unfiltered),而3个(135/1434/32777)被过滤了。所以,将ACK与FIN扫描的结果结合分析,我们可以找到很多开放的端口。例如7号端口,FIN中得出的状态是:open或filtered,从ACK中得出的状态是unfiltered,那么该端口只能是open的。
Window扫描
当然也可以利用Window扫描方式,得出一些端口信息,可以与之前扫描分析的结果相互补充。Window扫描方式只对某些TCPIP协议栈才有效。
window扫描原理与ACK类似,发送ACK包探测目标端口,对回复的RST包中的Window size进行解析。在某些TCPIP协议栈实现中,关闭的端口在RST中会将Window size设置为0;而开放的端口将Window size设置成非0的值。
nmap -sW -p- -T4 docsrv.caldera.com |
输出结果:
PORT STATE SERVICE 7/tcp open echo 9/tcp open discard 11/tcp open systat 13/tcp open daytime |
更多端口,此处省略
在采用多种方式获取出防火墙状态后,可以进一步进行应用程序与版本侦测及OS侦测。
此处不再赘述!
3 扫描路由器
Nmap内部维护了一份系统与设备的数据库(nmap-os-db),能够识别数千种不同系统与设备。所以,可以用来扫描主流的路由器设备。
3.1 扫描思科路由器
nmap -p1-25,80,512-515,2001,4001,6001,9001 10.20.0.1/16 |
思科路由器会在上述端口中运行了常见的服务。列举出上述端口开放的主机,可以定位到路由器设备可能的IP地址及端口状态。
3.2 扫描路由器TFTP
nmap –sU –p69 –nvv target |
大多数的路由器都支持TFTP协议(简单文件传输协议),该协议常用于备份和恢复路由器的配置文件,运行在UDP 69端口上。使用上述命令可以探测出路由器是否开放TFTP。