当前位置:Linux教程 - Linux - 荷枪实弹的好警卫Nmap扫描

荷枪实弹的好警卫Nmap扫描

荷枪实弹的好警卫Nmap扫描器
郭军利 周卫民

基于Linux系统的开放的应用软件很多,常常令人眼花缭乱、手足无措,为了让大家在选择应用软件的时候目标明确,本刊特地挑选了一些比较实用的软件进行了安装测试,这次就先把有关Nmap扫描器的测试告诉大家。

1.为什么是Nmap
在黑客发起攻击前,对目标机的相关信息进行收集是必须的,同样,网络管理员需要随时了解服务器的运行状态,及时发现安全隐患。所以对双方来说,一个好的端口扫描器能够帮助你事半功倍。Nmap就是一个非常出色的扫描器,Info World这样评价Nmap:如果你的目的是在40000英尺高度上看看你的网络,那基于Windows的端口扫描工具就足够了,但是如果你真的关心你的网络安全,并努力想找到那些可能被侵入者发现的系统漏洞,那你最好花点时间去安装并使用一个Linux工具——Nmap(见图1)。
Nmap是一个针对大型网络的端口扫描工具,当然对一台主机来说,它也工作得非常好。它的设计指导思想是:TMTOWTDI(Theres More Than One Way To Do It)。有时你需要扫描速度,有时你主要考虑健壮性,可能在有些情况下你希望能够穿过防火墙。你可能希望扫描各种不同的协议(UDP,TCP,ICMP等等)。只要你使用Nmap,所有这些愿望都能得到实现。因为Nmap集成了几乎所有的扫描功能!同时它也是一些著名的安全工具所必须的,如Nessus等。Nmap是在免费软件基金会的GNU General Public License (GPL)下发布的,可从www.insecure.org/Nmap站点上免费下载。

图1

2.测试环境简介
测试者选取了三种不同版本的Linux系统作为操作平台对Nmap扫描器进行测试,这里简单地描述一下这三种版本的Linux系统。
(l)RedHat Linux 6.2
RedHat Linux是全球发行量最大的Linux。 Redhat Linux 6.2在图形化安装方式、X配置、定制工作站和服务类型、RAID等技术方面,全面超越原版本。本产品集成中文环境及工具,全面支持中文显示及输入。同时,在200余页的《使用指南》中详尽地介绍了KDE使用环境及应用工具。
新特征:
*改善的X配置:在安装过程中配置你的X系统的功能作得是更加完善。通过选择正确的显示器类型和参数、显卡自动探测、检测最佳的X配置等功能,Xconfigurator会帮助你很好地完成每一项的工作。
*改善的急救盘:新改善的急救盘比以前的功能更加强大了。改善包括:mtools和RAID工具,并且pico被作为新的缺省编辑器。
*ATAPI压缩驱动器的识别:ATAPI压缩驱动器现在可以由安装程序进行识别,并自动被配置使用SCSI模拟器。如果在安装完成后又安装了硬件识别程序Kudzu,它将会在每次系统重启时对硬件进行一遍检查。
*无需分区的安装方式:这种全新的安装模式允许用户在已存在的经过格式化的DOS文件系统上直接安装Linux,而不用因为Linux分区问题而操心。
(2)SuSE Linux 7.0
欧洲最大的Linux操作系统发布商德国SuSE Linux公司发布的SuSE Linux 7.0包括个人版和专业版。SuSE Linux 7.0的大小为33kB,发行于2000年12月25日,最后更新于2001年2月12日,该软件属开放源码。SuSE可以说也是Linux发布商中的老大,最近一次的文件系统评比中SuSE 7.0可以说独占鳌头。SuSE同时还和ORACLE紧密合作,在网络数据应用服务器方面有着良好的声誉。本次测试采用的是SuSE Linux 7.0个人版系统。
(3)Turbo Linux 6.0
Linux开发商拓林思公司开发的TurboLinux 6.0简体中文版是一个完全符合国际标准的中文Linux系统,在操作系统中集成了大量方便易用的中文应用软件,囊括了办公/文字处理、上网、翻译、图形处理、多媒体处理和播放等方方面面。它采用最新的2.2.13版核心,系统更加稳定,不仅支持了更多的硬件设备,还大幅度提高了各项性能指标。Turbo Linux 6.0更新了PCMCIA的支持,采用最新的基于Xfree86 3.3.5版的X Windows系统,从而保证X Windows下采用多种中文TrueType的字库进行无级缩放的显示,同时还支持Voodoo Banshee、Savage4、TNT2、i740、i810芯片组、SiS6326等显示卡。在安装方面,Turbo Linux 6.0安装程序已经完全中文化,安装程序可以自动探测大多数ISA和PCI的硬件,还支持从并口IDE光驱上安装Turbo Linux,并且允许用户在启动机器前配置X Windows。除此之外,Turbo Linux 6.0采用了最新的Turbo配置工具、最新的C++编译器以及最新的安全控制。

3.测试结果
我们选取了三个不同版本的Linux系统上安装、配置、运行Nmap,对Nmap扫描器进行了测试。测试后的结果记录下来(见表1),希望与读者共享。
表1
安装所选用的系统名称 安装 配置 运行
RedHat Linux 6.2
SuSE Linux 7.0 Professional
Turbo Linux Server 6.0
安装、配置、运行过程顺利无误。
安装、配置、运行过程有一些问题需要特殊处理。
不支持Nmap软件。



4.测试心得
在安装和使用过程中,测试者发现在三种不同版本中Nmap扫描器在编译安装、使用等方面有很大的共通性,现在就用Redhat Linux 6.2系统为例,为大家介绍有关Nmap的安装使用等方面的内容。
(l)编译安装
编译安装Nmap很简单,在Redhat Linux 6.2上,你只需要做:
gzip -cd Nmap-VERSION.tgz
cd Nmap-VERSION
./configure
make
su root
make install
当然你也可以直接去下载它的RPM包,然后用rpm -ivh进行安装。正常情况下,做了如上的工作就可以使用功能强大的Nmap了,图1是终端方式的界面,图2是X状态的界面。
图2
Nmap的使用语法相当简单。Nmap的不同选项和-s标志组成了不同的扫描类型,比如:一个Ping-scan命令就是“-sP”。在确定了目标主机和网络之后,即可进行扫描。最好是以root来运行Nmap,这样将会使Nmap的功能大大地增强,因为超级用户可以创建便于Nmap利用的定制数据包。 在目标机上,Nmap运行灵活。使用Nmap进行单机扫描或是整个网络的扫描很简单,只要将带有“/mask”的目标地址指定给Nmap即可。地址是“victim/24”, 则目标是C类网络,地址是“victim/16”, 则目标是B类网络。另外,Nmap允许你使用各类指定的网络地址,比如 192.168.7.*,是指192.168.7.0/24, 或 192.168.7.1,4,8-12,对所选子网下的主机进行扫描。
(2)一些常用使用方法
*Ping扫描
使用Nmap扫描整个网络寻找目标,已确定目标机是否处于连通状态。通过使用""-sP""命令,进行ping扫描。缺省情况下,Nmap给每个扫描到的主机发送一个ICMP echo和一个TCP ACK, 主机对任何一种的响应都会被Nmap得到,扫描速度非常快,在很短的时间内可以扫描一个很大的网络。
举例:扫描192.168.7.0网络:
# Nmap -sP 192.168.7.0/24
Starting Nmap V. 2.12 by Fyodor ([email protected], www.insecure.org/Nmap/)
Host (192.168.7.11) appears to be up.
Host (192.168.7.12) appears to be up.
Host (192.168.7.76) appears to be up.
Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second
一个TCP""ping""将发送一个ACK到目标网络上的每个主机。网络上的主机如果在线,则会返回一个TCP RST响应。使用带有ping扫描的TCP ping选项,也就是""PT""选项可以对网络上指定端口进行扫描,它将可能通过目标边界路由器甚至是防火墙。并且,值得注意的是,被探测的主机上的目标端口无须打开,关键取决于是否在网络上。
例如:
# Nmap -sP -PT80 192.168.7.0/24
TCP probe port is 80
Starting Nmap V. 2.12 by Fyodor ([email protected], www.insecure.org/Nmap/)
Host (192.168.7.11) appears to be up.
Host (192.168.7.12) appears to be up.
Host (192.168.7.76) appears to be up.
Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second
通过对端口80的指定,被扫描的机器可能没有打开80端口,但仍然会返回一个对ACK标志的响应,所以状态就是up。
*端口扫描
通常情况下,当Nmap的使用者确定了网络上运行的主机处于连通状态,下一步的工作就是进行端口扫描,端口扫描使用-sT参数:
#Nmap -sT 172.16.4.227
Starting Nmap V. 2.2-BETA3 by Fyodor ([email protected], www.insecure.org/Nmap/)
Interesting ports on backup.ccidnet.com (172.16.4.227):
Port State Protocol Service
21 open tcp ftp
22 open tcp ssh
23 open tcp telnet
25 open tcp smtp
111 open tcp sunrpc
1025 open tcp listen
1521 open tcp ncube-lm
2401 open tcp cvspserver
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
通过端口扫描,可以发现目标目前打开的服务和端口,Nmap支持不同类别的端口扫描TCP连接, TCP SYN, Stealth FIN, Xmas Tree,Null和UDP扫描等等。
*隐蔽扫描
一个攻击者使用TCP连接扫描很容易被发现,因为Nmap将使用connect()系统调用打开目标机上相关端口的连接,并完成三次TCP握手,很可能被系统记录下来。如果你不愿意在扫描时使其信息被记录在目标系统日志上,就可以使用Nmap的TCP SYN扫描,它很少会在目标机上留下记录,三次握手的过程从来都不会完全实现。通过发送一个SYN包(是TCP协议中的第一个包)开始一次SYN的扫描。任何开放的端口都将有一个SYN|ACK响应。然而,攻击者发送一个RST替代ACK,连接中止。三次握手得不到实现,也就很少有站点能记录这样的探测。如果是关闭的端口,对最初的SYN信号的响应也会是RST,让Nmap知道该端口不在监听。""-sS""命令将发送一个SYN扫描探测主机或网络
#Nmap -sS 172.16.4.227
Starting Nmap V. 2.2-BETA3 by Fyodor ([email protected], www.insecure.org/Nmap/)
Interesting ports on backup.ccidnet.com (172.16.4.227):
Port State Protocol Service
21 open tcp ftp
22 open tcp ssh
23 open tcp telnet
25 open tcp smtp
111 open tcp sunrpc
1025 open tcp listen
1521 open tcp ncube-lm
2401 open tcp cvspserver
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
虽然SYN扫描可能不被注意,但他们仍会被一些入侵检测系统捕捉。Stealth FIN,Xmas树和Null scans可用于躲避包过滤和可检测进入受限制端口的SYN包。这三个扫描器对关闭的端口返回RST,对开放的端口将吸收包。一个 FIN“-sF”扫描将发送一个FIN包到每个端口。
*UDP扫描
如果一个攻击者寻找一个流行的UDP漏洞,比如 rpc漏洞或Back Orifice。为了查出哪些端口在监听,则进行UDP扫描,即可知哪些端口对UDP是开放的。Nmap将发送一个O字节的UDP包到每个端口。如果主机返回端口不可达,则表示端口是关闭的。
#Nmap -sU 172.16.4.227
WARNING: -sU is now UDP scan -- for TCP FIN scan use -sF
Starting Nmap V. 2.2-BETA3 by Fyodor ([email protected], www.insecure.org/Nmap/)
Interesting ports on backup.ccidnet.com (172.16.4.227):
Port State Protocol Service
111 open udp sunrpc
Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds
*操作系统识别
通常一个入侵者可能对某个操作系统的漏洞很熟悉,能很轻易地进入此操作系统的机器。一个常见的选项是TCP/IP上的指纹,带有""-O""选项决定远程操作系统的类型。这可以和一个端口扫描结合使用,但不能和ping扫描结合使用。Nmap通过向主机发送不同类型的探测信号,缩小查找的操作系统的范围。指纹验证TCP包括使用FIN探测技术发现目标机的响应类型。BOGUS的标志探测,发现远程主机对发送的带有SYN包的不明标志的反应,TCP 初始序列号(ISN)取样发现ISN数值的样式,也可以用另外的方式决定远程操作系统。有一篇权威的关于指纹(fingertprinting)的文章,作者:Fyodor,也是namp的作者,参见地址:http://www.insecure.org/Nmap/Nmap-fingerprinting-article.html
#Nmap -sS -O 172.16.4.227
Starting Nmap V. 2.2-BETA3 by Fyodor ([email protected], www.insecure.org/Nmap/)
Interesting ports on backup.ccidnet.com (172.16.4.227):
Port State Protocol Service
21 open tcp ftp
22 open tcp ssh
23 open tcp telnet
25 open tcp smtp
111 open tcp sunrpc
1025 open tcp listen
1521 open tcp ncube-lm
2401 open tcp cvspserver

TCP Sequence Prediction: Class=random positive increments
Difficulty=2110423 (Good luck!)
Remote operating system guess: Linux 2.1.122 - 2.1.132; 2.2.0-pre1 - 2.2.2
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
在大多数情况下,Nmap对操作系统的检测是很准确也是很有效的。通常来说,工程师对Nmap的认识是一个出色的黑客工具,但实际上,随着网络安全问题越来越专业,网络安全工程师的安全防护手段也在不断增加,道高一尺,魔高一丈,要想在攻防中处于有利地位,首先要研究对手的方式和手段。从这个意义上讲,Nmap也是网络管理员的有力武器。