当前位置:首页 > 技术与方案 > Linux及应用

Linux系统下的扫描器及防范(上)

(2012-09-26 15:37:14)

扫描器是一种自动检测远程或本地主机安全性弱点的程序。使用扫描器,可以获得远程服务器的大量信息,例如:开放端口、提供的服务以及它们的软件版本等。通过这些信息,我们可以了解到远程主机所存在的安全问题,从而能够及时修补系统存在的安全隐患。同时,扫描器也能够为攻击者提供很大的方便,可以大大简化他们的工作。

扫描器一般会先向远程TCP/IP端口发出请求,记录目标给予的回答,然后对应答信息进行分析。通过这种方法,可以搜集到目标主机的各种有用的信息,比如,端口是否开放;能否匿名登录等。另外,扫描器一般不是一个直接的网络漏洞攻击程序,它仅仅能帮助我们发现目标机器的某些内在的弱点。
下面我们将介绍几个Linux系统中常用的扫描器以及防范措施。本文将分上、下两篇,上篇主要介绍一些常用扫描器的功能和使用;下篇将介绍一些比较有效的防范措施。

1. 端口扫描工具nmap
提起端口扫描,我们自然会想到nmap。这是一个强大的端口扫描程序,支持种类繁多的扫描技术,例如:UDP扫描、TCP连接扫描、TCP SYN扫描(半开扫描)、FTP反弹攻击、反向识别、ICMP扫描、FIN扫描、ACK扫描、圣诞树扫描、null扫描等。从扫描技术看,nmap是众多端口扫描器中的极品。此外,它还提供了一些高级的特征,例如:系统指纹特征识别、诱饵扫描、碎片扫描等。

1.1. 下载并安装nmap
nmap的官方站点是http://www.insecure.org/nmap,不知道什么原因,这个地址已经好长时间无法下载nmap软件包了。用户可以在packetstormsecurity.nl下载最新版的nmap。nmap的安装非常简单,下载之后,只要执行如下命令即可:
# tar zxvf  nmap-2.54BETA34.tgz
#cd nmap-2.54BETA34
#./configure&&make&&make install
如果需要图形化nmapfe,还需要GTK+的支持。
1.2. nmap的常用功能
命令行选项
功能
示例
-sT
TCP connect()扫描,这是最基本的TCP扫描方式。
nmap -sT 192.168.0.1
-sS
TCP SYN扫描,这项技术通常称为半开扫描(half-open)。
nmap -sS 192.168.0.1
-sU
UDP扫描,扫描目标系统提供UDP服务的端口。对UNIX系统使用UDP扫描可能非常缓慢,而对Windows系统速度很快。
nmap -sU 192.168.0.1
-O
使用系统识别功能,需要root权限
nmap -sT -O 192.168.0.1
-P0
在扫描之前,不必ping主机。有些网络的防火墙不允许ICMP echo请求通过,使用这个选项可以对这些网络进行扫描。
nmap -sT -P0 -O 192.168.0.1
这些选项只是nmap所有功能的一小部分,详情请参考nmap的手册页。熟练运用nmap提供的功能,可以提高扫描效率、加强扫描的隐蔽性。

1.3. 应用举例
由于nmap的功能非常强大,选项繁多,因此想熟练使用需要一定的经验。下面,我们由浅入深地举例说明如何使用nmap:
* nmap -v target.example.com
扫描主机target.example.com的所有TCP端口。-v打开冗余模式。默认情况下,nmap会使用-sT扫描方式。
* nmap -sS -O target.example.com/24
N扫描方式对target.example.com网络上的所有255个IP地址进行扫描,同时还探测每台主机操作系统的指纹特征。
-randomize_hosts -p 80 '*.*.2.3-5'
只扫描指定的IP范围,一般用于对Internet进行取样分析。nmap将寻找Internet上所有后两个字节是.2.3、.2.4、.2.5的IP地址上是否提供Web服务。

1.4. nmap的图形化
由于nmap的功能强大,而且选项繁多,一般的使用者很难使用,因此现在出现了很多简单易用的GUI控制软件。其中有的软件非常有趣:
* nmapfe
这是nmap软件包中自带的一个nmap图形化,使用gtk编写。
* phpSecurity
一个基于PHP的nmap控制程序,目前基本已经停止开发。下载地址:http://sourceforge.net/projects/phpsecurity/
* NMAP 3d
一个非常有趣的控制软件,运用虚拟现实技术显示nmap的扫描结果。下载地址:http://sourceforge.net/projects/nmap3d/
2. 操作系统被动识别工具p0f
能够正确地识别目标系统的类型,对于网络攻击是非常重要的。在*NIX系统中,比较常用的系统识别工具是nmap和queso。另外,还有一种被动检测的工具,p0f就是其中之一。
p0f是利用SYN数据包实现操作系统被动检测技术的。和nmap不同,它不向目标系统发送任何的数据,只是被动地接受来自目标系统的数据进行分析。因此,几乎无法被检测到。而且p0f是专门系统识别工具,其指纹数据库非常详尽,更新也比较快。据笔者的经验,其识别的准确率比nmap要高些。p0f特别适合于安装在网关中。

2.1. 下载安装p0f
p0f的下载地址是http://freshmeat.net/projects/p0f/。然后执行如下命令编译并安装p0f:
#tar zxvf p0f-1.8.2.tgz
#make&& make install
2.2. 使用p0f进行操作系统检测
p0f的使用非常简单,使用如下命令可以在系统启动时,自动启动p0f进行系统识别,p0f的命令选项请参考man p0f:
#cp p0f.init /etc/init.d/p0f
#chkconfig p0f on  
然后,每隔一段时间可以对p0f的日志进行分析即可。为了便于使用,p0f软件包提供了一个简单的分析脚本p0frep。例如,使用如下命令可以找到运行AIX系统的远程主机地址:
#cd /var/log
#p0frep p0f addr 192.168.0 AIX
3. 网关审计工具Firewalk
Firewalk是一种利用firewalking技术(使用类似于路由跟踪的IP数据包分析方法,来测定特定的数据包是否能够从攻击者的主机传送到位于包过滤设备之后的目标主机,技术细节请参考http://www.packetfactory.net/Projects/firewalk/firewalk-final.html)网络审计工具。它能够测定指定网关允许哪些传输协议的数据包通过。
Firewalk扫描的工作原理是发送IP TTL值比到目标网关跳数(hop)大1的TCP或UDP数据包。如果该网关允许此类网络通信,它将转发此探测包到下一路由器或主机,而此路由器或主机将因为TTL过期而立即向探测主机回送“TTL过期”的消息。如果该网关禁止此类网络通信,则会丢弃该数据包,探测主机将无法得到响应。通过连续发送这种探测数据包和分析监听到的响应,将能够确定该网关上的访问控制列表。

3.1. 下载并安装Firewalk
Firewalk可以从http://www.packetfactory.net/Projects/firewalk/获得。Firewalk提供了一个GTK图形前端,不过,在RedHat系统中编译图形前端将会出现错误。
#tar zxvf firewalk-1.0.tar.gz
#.cd Firewalk-1.0
#./configure -with-gtk=no&&make&&make install
#man firewalk
3.2. 使用Firewalk
Firewalk的探测工作包括了两个阶段:网络探测阶段和扫描阶段。开始,为了得到正确的IP TTL值,需要得到到达网关的跳数(hop)。通过依次递增数据包的TTL值,向目标主机连接发送探测包。一旦得到了到达网关的跳数,将进入下一阶段:实际的扫描。这些扫描其实很简单,Firewalk向目标主机发送带有超时设置的TCP或UDP数据包。如果能够在传输超时前监听到响应,则可以认为该端口是打开的,否则就是关闭的。
#firewalk -n -P1-8 -pTCP 10.0.0.5 10.0.0.20
Firewalking through 10.0.0.5 (towards 10.0.0.20) with a maximum of 25 hops.
Ramping up hopcounts to binding host...
probe: 1 TTL: 1 port 33434: [10.0.0.1]
probe: 2 TTL: 2 port 33434: [10.0.0.2]
probe: 3 TTL: 3 port 33434: [10.0.0.3]
probe: 4 TTL: 4 port 33434: [10.0.0.4]
probe: 5 TTL: 5 port 33434: Bound scan: 5 hops [10.0.0.5]
port 1: open
port 2: open
port 3: open
port 4: open
port 5: open
port 6: open
port 7: *
port 8: open
13 packets sent, 12 replies received
4.网络测绘工具Cheops/cheops-ng
Cheops是一个优秀的网络图形化网络测绘工具,原来由Mark Spencer 开发维护。它能够结合多种工具对网络进行分析(其中包括nmap),然后对扫描结果进行分析,最后以图形方式显示目标网络的拓扑结构以及各个网络节点的信息,因此它被称为网络的瑞士军刀。不过,现在cheops的开发已经停止,基本被cheops-ng所取代。cheops-ng(heops next generation)由Brent Priddy 开发。顾名思义cheops-ng是下一代的cheops,它采用了灵活性更高的客户机/服务器体系,其功能也比cheops有了一些扩展。

4.1. 安装cheops-ng
用户可以从sourceforge.net/projects/cheops-ng获得cheops-ng的源代码。Cheops-ng需要GTK+的支持以及nmap。下载之后,使用如下命令可以完成cheops-ng的安装:
#tar zxvf cheops-ng-0.1.9.tgz
#cd cheops--.1.9
#./configure&& make&& make install
4.2. 使用cheops-ng进行网络测绘
cheops-ng采用了灵活的客户机/服务器体系,真正执行扫描功能的程序是cheops-agent,cheops-ng是图形控制前端。因此,首先要以超级用户的身份运行cheops-agent,然后执行cheops-ng程序:
#/usr/locall/sbin/cheops-agent&
$/usr/loca/bin/cheops-ng
5. CGI扫描工具Whisker
Whisker是一个很好的Web服务器漏洞扫描软件。它由Rain Forest Puppy开发,能够进行大量的CGI漏洞扫描。另外,whisker采用了很多独特的IDS躲避技术,技术细节请参考A look at whisker's anti-IDS tactics(http://www.wiretrip.net/rfp/pages/whitepapers/whiskerids.html)。whisker的当前版本是2.0版,但是这个版本目前基本无法使用,因此在2.1版本推出之前,建议还是使用1.4版本的whisker。
whisker-1.4的下载地址是:http://www.wiretrip.net/rfp/bins/whisker/whisker.tar.gz,从http://www.wiretrip.net/rfp/p/doc.asp/i7/d22.htm,可以获得漏洞数据库。Whisker无须安装,解压缩之后可以直接使用:
#./whisker.pl -h 192.168.1.2 -i -v

6. SQL数据库查询植入攻击(SQL injection)扫描工具Wpoison
目前绝大多数电子商务网站都是SQL数据库驱动的系统,能够提供用户上网填写个人资料、进行资料查询或金融交易等功能。如果网页程序设计者忽略了对用户输入内容的检查,就会造成的安全漏洞被攻击者利用,发起SQL数据库查询植入攻击(SQL injection)。攻击者可以在空白栏位上夹带恶意的SQL查询指令(如select、create、delete等),从而实现非法、未授权的资料查询与修改动作。
SQL Injection既不是数据库本身的漏洞,更不是操作系统和Web服务器的漏洞。它是网页程序设计人员在撰写网页程序,如ASP、PHP、CGI等网页程式时,忽略输入值合法性检查的功能,以及未做好数据库权限的控制,进而使攻击者得以夹带恶意指令闯入,甚至越过防火墙与身份认证等层层安全关卡,直接登堂入室,盗走数据库系统内的客户交易资料、信用卡资料,甚至非法进行转帐等。
Wpoison是一个专门用于检查SQL Injection漏洞的工具,可以用来发现PHP、ASP脚本存在的和潜在的SQL injection漏洞。用户可以从http://sourceforge.net/projects/wpoison下载。下载之后,执行如下命令可以完成安装:
$tar zxvf wpoison-dev.tgz
$cd wposion
$make
然后,可以使用wposion进行SQL injection测试(不带任何参数执行可以获得使用帮助):
$./wposion 192.168.0.1

7. 网络安全评估工具Nessus
Nessus是一个网络安全评估软件,功能强大且更新极快。该系统被设计为客户机/服务器模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。Nessus的服务端采用了plug-in的体系,为了方便用户编写自己的检测插件,nessus还提供了一种叫做nessus攻击脚本语言(Nessus Attack Script Language)的脚本语言。检查的结果可以使用HTML、纯文本、XML、LaTeX等格式保存。

7.1. 安装nessus
Nessus系统由四部分组成:nessus-libraries libnasl nessus-core nessus-plugins。用户可以从http://www.nessus.org/download.html获得其源代码。下载完成后,执行如下命令完成软件的安装(以最新的1.2.3版为例):
$tar zxvf nessus-libraries-1.2.3.tar.gz
$tar zxvf libnasl-1.2.3.tar.gz
$tar zxvf nessus-core-1.2.3.tar.gz
$tar zxvf nessus-plugins-1.2.3.tar.gz
$su
#cd nessus-libraries
#./configure&&make&&make install
#cd ../libnasl
#./configure&&make&&make install
#cd ../nessus-core
#./configure&&make&&make install
#cd ../nessus-plugins
#./configure&&make&&make install
#echo /usr/local/lib>>/etc/ld.so.conf
#/sbin/ldconfig -v

7.2. 使用nessus进行漏洞扫描
nessus采用的是客户机/服务器体系,其服务端有自己的用户资料库,对每个用户都做了约束。用户可以在整个网络范围内通过nessusd服务端进行安全扫描。第一次启动需要加入nessus服务器的用户以及制作用于SSL通讯的证书:
#nessus-mkcert
#nessus-adduser
然后,启动服务器nessusd:
#nessusd -D
最后,在X-Window系统中启动客户端nessus,登录就可以进行漏洞扫描了。

总结
本文简单介绍了Linux系统中常用的一些扫描器:nmap、p0f、firewalk、cheops/cheops-ng、whisker、wpoison和nessus。这只是Linux系统形形色色的扫描器中比较有代表性的几个。你如果感兴趣,还可以从http://packetstromsecurity.nl找到很多。


              本文出自《网管员世界》“系统维护”栏目

 

更多
关闭窗口 打印 
网站首页    -    联系我们    -   收藏本站    -    网站地图                                                               客户服务热线:0571-85023000
本网站所有网页信息已申请知识产权和著作权保护,版权归四海光纤公司所有,未经授权禁止任何人复制或镜像,违者必究。
公司主营:杭州光纤光缆视频会议系统,是专业的通信网络工程、视频会议系统建设专家

中华人民共和国备案号:浙ICP备10018243号