Nmap提供了四项基本功能(主机发现、端口扫描、服务与版本侦测、OS侦测)及丰富的脚本库。Nmap既能应用于简单的网络信息扫描,也能用在高级、复杂、特定的环境中:例如扫描互联网上大量的主机;绕开防火墙/IDS/IPS;扫描Web站点;扫描路由器等等。
简要回顾Nmap简单的扫描方式:
全面扫描:nmap-T4 -A targetip
主机发现:nmap-T4 -sn targetip
端口扫描:nmap-T4 targetip
服务扫描:nmap-T4 -sV targetip
操作系统扫描:nmap-T4 -O targetip
上述的扫描方式能满足一般的信息搜集需求。而若想利用Nmap探索出特定的场景中更详细的信息,则需仔细地设计Nmap命令行参数,以便精确地控制Nmap的扫描行为。
下面列举比较实用的高级应用场景和技巧。
1 Nmap高级选项
1.1 查看本地路由与接口
Nmap中提供了--iflist选项来查看本地主机的接口信息与路由信息。当遇到无法达到目标主机或想选择从多块网卡中某一特定网卡访问目标主机时,可以查看nmap --iflist中提供的网络接口信息。
nmap --iflist |
1.2 指定网口与IP地址
在Nmap可指定用哪个网口发送数据,-e 选项。接口的详细信息可以参考--iflist选项输出结果。
示例:
nmap -e eth0 targetip |
Nmap也可以显式地指定发送的源端IP地址。使用-S 选项,nmap将用指定的spoofip作为源端IP来发送探测包。
另外可以使用Decoy(诱骗)方式来掩盖真实的扫描地址,例如-D ip1,ip2,ip3,ip4,ME,这样就会产生多个虚假的ip同时对目标机进行探测,其中ME代表本机的真实地址,这样对方的防火墙不容易识别出是扫描者的身份。
nmap -T4 -F -n -Pn -D192.168.1.100,192.168.1.101,192.168.1.102,ME 192.168.1.1 |
1.3 定制探测包
Nmap提供--scanflags选项,用户可以对需要发送的TCP探测包的标志位进行完全的控制。可以使用数字或符号指定TCP标志位:URG, ACK, PSH,RST, SYN,and FIN。
例如,
nmap -sX -T4 --scanflags URGACKPSHRSTSYNFINtargetip |
此命令设置全部的TCP标志位为1,可以用于某些特殊场景的探测。
另外使用--ip-options可以定制IP包的options字段。
使用-S指定虚假的IP地址,-D指定一组诱骗IP地址(ME代表真实地址)。-e指定发送探测包的网络接口,-g(--source-port)指定源端口,-f指定使用IP分片方式发送探测包,--spoof-mac指定使用欺骗的MAC地址。--ttl指定生存时间。
2 扫描防火墙
防火墙在今天网络安全中扮演着重要的角色,如果能对防火墙系统进行详细的探测,那么绕开防火墙或渗透防火墙就更加容易。所以,此处讲解利用Nmap获取防火墙基本信息典型的用法。
为了获取防火墙全面的信息,需尽可能多地结合不同扫描方式来探测其状态。在设计命令行参数时,可以综合网络环境来微调时序参数,以便加快扫描速度。
SYN扫描
首先可以利用基本的SYN扫描方式探测其端口开放状态。
nmap -sS -T4 |
扫描输出为:
All 997 ports are filtered PORT STATE SERVICE 80/tcp open http 113/tcp closed auth 507/tcp open crs |