Nmap使用
Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp。
Nmap可以完成以下任务:
- 主机探测
- 端口扫描
- 版本检测
- 系统检测
- 支持探测脚本的编写
- Nmap在实际中应用场合如下:
- 通过对设备或者防火墙的探测来审计它的安全性
- 探测目标主机所开放的端口
- 通过识别新的服务器审计网络的安全性
- 探测网络上的主机
简要回顾Nmap简单的扫描方式:
全面扫描:nmap-T4 -A targetip
主机发现:nmap-T4 -sn targetip
端口扫描:nmap-T4 targetip
服务扫描:nmap-T4 -sV targetip
操作系统扫描:nmap-T4 -O targetip
1.2 指定网口与IP地址
在Nmap可指定用哪个网口发送数据,-e <interface>选项。接口的详细信息可以参考–iflist选项输出结果。
示例:
nmap -e eth0 targetip
Nmap也可以显式地指定发送的源端IP地址。使用-S <spoofip>选项,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 www.fakefirewall.com
1. All 997 ports are filtered
2. PORT STATE SERVICE
3. 80/tcp open http
4. 113/tcp closed auth
5. 507/tcp open crs
我们可以看到SYN方式探测到3个端口开放,而有997个端口被过滤。Nmap默认扫描只扫描1000个最可能开放的端口,如果想扫描全部的端口,使用命令nmap -sS -T4-p- www.fakefirewall.com
FIN扫描
然后可以利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态。
nmap -sF -T4 www.fakefirewall.com
扫描输出为:
1. PORT STATE SERVICE
2. 7/tcp open|filtered echo
3. 9/tcp open|filtered discard
4. 11/tcp open|filtered systat
5. 13/tcp open|filtered daytime
6. 23/tcp open|filtered telnet
7. 25/tcp open|filtered smtp
8. 37/tcp open|filtered time
9. 79/tcp open|filtered finger
10. 80/tcp open|filtered http
11. 更多端口,此处省略
ACK扫描
然后利用ACK扫描判断端口是否被过滤。针对ACK探测包,未被过滤的端口(无论打开、关闭)会回复RST包。
nmap -sA -T4 www.fakefirewall.com
1. Not shown: 997 unfiltered ports
2. PORT STATE SERVICE
3. 135/tcp filtered msrpc
4. 1434/tcp filtered ms-sql-m
5. 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
输出结果:
1. PORT STATE SERVICE
2. 7/tcp open echo
3. 9/tcp open discard
4. 11/tcp open systat
5. 13/tcp open daytime
6. 更多端口,此处省略
在采用多种方式获取出防火墙状态后,可以进一步进行应用程序与版本侦测及OS侦测。