1、Nmap
Nmap是一个网络探测和安全扫描程序,使用这个软件可以扫描大型的网络,以获取那台主机正在运行及提供什么服务等信息。Nmap支持很多扫描技术,例如UDP、TCPconnect()、TCP SYN(半开扫描)、FTP代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。Nmap还提供了一些高级的特征,例如,通过TCP/IP协议栈特征探测操作系统类型、秘密扫描、动态延时、重传计算和并行扫描,通过并行ping扫描探测关闭的主机、诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射)、碎片扫描,以及灵活的目标和端口设定。
(1)安装
Nmap的安装很简单,Linux各发行版本上通常都已经安装了Namp。这里首先用“nmap-v”查看当前系统所安装的nmap版本号:
# nmap -v
Starting nmap V. 4.00.(www.insecure.org/nmap/)
……
由于目前系统所安装的Nmap为4.00,不是最新版本,因此要首先从http://www.insecure.org/nmap/下载最新版本的源代码。目前最新版本为Nmap-5.5.tar.bz2,该文件为源代码压缩包,需要用bzip2进行解压缩。我们将该文件下载并保存在/root/nmap下,以root用户进行安装。
# bzip2 –cd nmap-5.5.tar.bz2∣tar xvf-
该命令将Nmap源代码解压缩至目录nmap-5.5。
进入该目录进行配置:
# ./configure
配置结束后用make命令进行编译:
# make
编译结束后用make install进行安装:
# make install
(2)使用
◆各种扫描模式与参数
首先需要输入要探测的主机IP地址作为参数。假设一个LAN中有两个节点:192.168.12.1和192.168.12.2
# nmap 192.168.12. 1
Starting nmap 5.5(http://www.insecure.org/nmap/) at 2010-01-24 15:24 CST
Interesting ports on 192.168.12. 1: (The 1651 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open Microsoft-ds
1025/tcp open NFS-or-IIS
1033/tcp open netinfo
1521/tcp open oracle
2030/tcp open device2
3372/tcp open msdtc
8080/tcp open http-proxy
MAC Address: 00:E0:4C:12:FA:4B (Realtek Semiconductor)
Nmap run completed – 1 IP address (1 host up)
Scanned in 22.882 seconds
上面是对目标主机进行全面TCP扫描的结果,显示了监听端口的服务情况,这一基本操作不需要任何参数。但是, 由于在扫描过程中建立了完整的TCP连接,主机可以很容易地监测到这类扫描。该命令是参数开关-sT的缺省。
-sS选项可以进行更加隐蔽地扫描,并防止被目标主机检测到,但此方式需要用户拥有root权限。-sF、-sX和-sN则可以进行一些超常的扫描。假如目标主机安装了过滤和日志软件来检测同步空闲字符SYN,那么-sS的隐蔽作用就失效了,此时可以采用-sF(隐蔽FIN)、-sX(Xmas Tree)及-sN(Null)方式扫描。
这里需要注意的是,由于微软的实现方式不同,对于运行Win 2003,Vista等NT的机器FIN 、Xmas或Null的扫描结果都是将端口关闭,由此可作为推断目标主机运行Windows操作系统的一种方法。以上命令都需要有root权限。-sU选项是监听目标主机的UDP,而不是默认的TCP端口。尽管在Linux机器上有时慢一些,比如,输入上面的例子:
# nmap -sU 192.168.12.1
Starting nmap 5.5 (http://www.insecure.org/nmap/) at 2010-01-24 15:28 CST
Interesting ports on 192.168.12.1:
(The 1472 ports scanned but not shown below are in state:closed)
PORT STATE SERVICE
135/udp open msrpc
137/udp open∣filtered netbios-ns
138/udp open∣filtered netbios-dgm
445/udp open∣filtered microsoft-ds
500/udp open∣filtered isakmp
3456/udp open∣filtered IISrpc-or-vat
MAC Address: 00:E0:4C:12:FA:44 (Realtek Semiconductor)
Nmap run completed – 1 IP address (1 host up) scanned in 4.381 seconds
◆操作系统探测
使用-O选项可推断目标主机的操作系统,既可与上述的命令参数联合使用,也可单独调用。Nmap利用TCP/IP“指纹”技术来推测目标主机的操作系统。还使用前面的例子:
#nmap -O 192.168.12. 1
Starting nmap 5.5(http://www.insecure.org/nmap/)at 2010-01-24 16:03 CST
Interesting ports on 192.168.12. 1:
(The 1651 ports scanned but not shown below are in state:closed)
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open Microsoft-ds
1025/tcp open NFS-or-IIS
1033/tcp open netinfo
1521/tcp open oracle
2030/tcp open device2
3372/tcp open msdtc
8080/tcp open http-proxy
MAC Address: 00:E0:4C:12:FA:44 (Realtek Semiconductor)
Device type: general purpose
Running:Microsoft Windows 95/98/ME∣NT/2K/XP
OS details:Microsoft Windows Millennium Edition(Me),Windows 2000 Pro or Advanced Server,or Windows XP
Nmap run completed – 1 IP address(1 host up) scanned in 3.398 seconds
Nmap提供了一个OS数据库,上例中检测到了该主机运行的操作系统为Windows系列操作系统,可能为Windows 98、Windows 2000 Pro,或者为Windews vista/Windows 7等。
◆更进一步的应用
除了一次只扫描一个目标主机外,还可以同时扫描一个主机群,比如“nmap –sT –O 203.187.1.1-50”就可以同时扫描并探测IP地址在203.187.1.1到203.187.1.50之间的每一台主机。当然这需要更多的时间,耗费更多的系统资源和网络带宽,输出结果也可能很长。所以,可以使用下面命令将结果重定向输送到一个文件中:
#nmap -sT -O -oN test.txt 202.96.1.1-50
另外的一些命令参数选项如下:
-I 进行TCP反向用户认证扫描,可以透露扫描用户信息;
-iR 进行随机主机扫描;
-p 扫描特定的端口范围;
-v 长数据显示,“-v -v”是最长数据显示;
-h 快捷帮助。
下面给一个综合了上述参数的例子:
#nmap -sS -p 23,80 -oN ftphttpscan.txt 203.187.53.50-100
◆Nmap图形用户界面
Nmap有一些图形用户前端,比如,NmapFE(GTK界面)网址为
http://codebox.net/nmapfe.html;Kmap(Qt/KDE前端)网址为
http://www.edotorg.org/kde/kmap/;KNmap(KDE前端)网址为
http://pages.infinit.net/rewind/。