最普遍的安全威胁来自内部,同时这些威胁通常都是致命的,其破坏性也远大于外部威胁。其中网络嗅探对于安全防护一般的网络来说,操作简单的同时威胁巨大,很多黑客也使用嗅探器进行网络入侵的渗透.. 网络嗅探器对信息安全的威胁来自其被动性和非干扰性,使得网络嗅探具有很强的隐蔽性,往往让网络信息泄密变得不容易被发现。本文分析了网络嗅探的原理,分析了一些实例,提出解决方案和介绍实践经验。
一、 嗅探器攻击原理
嗅探器(sniffer) 是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种技术。它工作在网络的底层,把网络传输的全部数据记录下来. 嗅探器可以帮助网络管理员查找网络漏洞和检测网络性能.嗅探器可以分析网络的流量,以便找出所关心的网络中潜在的问题。
不同传输介质的网络的可监听性是不同的。一般来说,以太网被监听的可能性比较高,因为以太网是一个广播型的网络;FDDI Token被监听的可能性也比较高,尽管它并不是一个广播型网络,但带有令牌的那些数据包在传输过程中,平均要经过网络上一半的计算机;微波和无线网被监听的可能性同样比较高,因为无线电本身是一个广播型的传输媒介,弥散在空中的无线电信号可以被很轻易的截获。一般情况下,大多数的嗅探器至少能够分析下面的协议:
标准以太网
TCP/IP
IPX
DECNET
FDDI Token
微波和无线网。
实际应用中的嗅探器分软、硬两种。软件嗅探器便宜易于使用,缺点是往往无法抓取网络上所有的传输数据(比如碎片),也就可能无法全面了解网络的故障和运行情况;硬件嗅探器的通常称为协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,但是价格昂贵。目前主要使用的嗅探器是软件的。
嗅探器捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的--例如将以太网卡设置成杂收模式。数据在网络上是以帧(Frame)的单位传输的。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以"听"到通过的流量,但对不属于自己的报文则不予响应。如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。这也是嗅探器会造成安全方面的问题的原因。通常使用嗅探器的入侵者,都必须拥有基点用来放置嗅探器。对于外部入侵者来说,能通过入侵外网服务器、往内部工作站发送木马等获得需要,然后放置其嗅探器,而内部破坏者就能够直接获得嗅探器的放置点,比如使用附加的物理设备作为嗅探器(例如,他们可以将嗅探器接在网络的某个点上,而这个点通常用肉眼不容易发现。除非人为地对网络中的每一段网线进行检测,没有其他容易方法能够识别出这种连接(当然,网络拓扑映射工具能够检测到额外的IP地址)。
嗅探器可能造成的危害:
嗅探器能够捕获口令.
能够捕获专用的或者机密的信息.
可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限.
分析网络结构,进行网络渗透。
二.嗅探器攻击实例
Linux、Unix环境下的嗅探器有:Tcpdump、Nmap、Linuxsniffer、hunt、sniffit 等。Linsniffer是一个简单实用的嗅探器。它主要的功能特点是用来捕捉用户名和密码,它在也这方面非常出色。注:编译该软件需要所在的Linux系统上必须的网络包含文件(tvp.h、ip.h、inet.hif_t、her.h)。 虽然这个工具易于使用,但是Linsniffer需要完整的IP头文件,包括常常存储在/usr/include/net和 /usr/include/netinet的头文件,在编译前确保PATH变量包含/usr/include。
获得这个软件后,进入src目录,使用下面的命令来编译Linsniffer: $ cc linsniffer.c -o linsniffer
要运行Linsniffer,使用下面的命令:$ linsniffer
启动以后linsniffer将创建一个空文件:tcp.log来存储嗅探结果。
举例说明,在一台测试的Linux服务器中创建一个名为"goodcjh"的用户,密码为"fad"。然后在主机CJH上使用该用户来登录这台Linux服务器,并进行一些常见的用户操作。下面是进行的一次ftp过程:
CJH$ ftp
Connected to .
220 FTP server Wed Aug 19 02:55:52 MST 2002) ready.
Name (:root): goodcjh
331 Password required for goodcjh.
Password:
230 User goodcjh logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -al
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 14
drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 .
drwxr-xr-x 6 root root 1024 May 20 19:28 ..
-rw-rw-r-- 1 goodcjh goodcjh 96 May 20 19:56 .bash_history
-rw-r--r-- 1 goodcjh goodcjh 49 Nov 25 2002 .bash_logout
-rw-r--r-- 1 goodcjh goodcjh 913 Nov 24 2002 .bashrc
-rw-r--r-- 1 goodcjh goodcjh 650 Nov 24 2002 .cshrc
-rw-r--r-- 1 goodcjh goodcjh 111 Nov 3 2002 .inputrc
-rwxr-xr-x 1 goodcjh goodcjh 186 Sep 1 2002 .kshrc
-rw-r--r-- 1 goodcjh goodcjh 392 Jan 7 2002 .login
-rw-r--r-- 1 goodcjh goodcjh 51 Nov 25 2002 .logout
-rw-r--r-- 1 goodcjh goodcjh 341 Oct 13 2002 .profile
-rwxr-xr-x 1 goodcjh goodcjh 182 Sep 1 2002 .profile.ksh
drwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:16 .seyon
drwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 lg
226 Transfer complete.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 14
drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 .
drwxr-xr-x 6 root root 1024 May 20 19:28 ..
-rw-rw-r-- 1 goodcjh goodcjh 96 May 20 19:56 .bash_history
-rw-r--r-- 1 goodcjh goodcjh 49 Nov 25 2002 .bash_logout
-rw-r--r-- 1 goodcjh goodcjh 913 Nov 24 2002 .bashrc
-rw-r--r-- 1 goodcjh goodcjh 650 Nov 24 2002 .cshrc
-rw-r--r-- 1 goodcjh goodcjh 111 Nov 3 2002 .inputrc
-rwxr-xr-x 1 goodcjh goodcjh 186 Sep 1 2002 .kshrc
-rw-r--r-- 1 goodcjh goodcjh 392 Jan 7 2002 .login
-rw-r--r-- 1 goodcjh goodcjh 51 Nov 25 2002 .logout
-rw-r--r-- 1 goodcjh goodcjh 341 Oct 13 2002 .profile
-rwxr-xr-x 1 goodcjh goodcjh 182 Sep 1 2002 .profile.ksh
drwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:16 .seyon
drwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 lg
226 Transfer complete.
ftp> ls -F
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 14
drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 ./
drwxr-xr-x 6 root root 1024 May 20 19:28 ../rw-rw-r-- 1 goodcjh goodcjh 96 May 20 19:56 .bash_history
-rw-r--r-- 1 goodcjh goodcjh 49 Nov 25 2002 .bash_logout
-rw-r--r-- 1 goodcjh goodcjh 913 Nov 24 2002 .bashrc
-rw-r--r-- 1 goodcjh goodcjh 650 Nov 24 2002 .cshrc
-rw-r--r-- 1 goodcjh goodcjh 111 Nov 3 2002 .inputrc
-rwxr-xr-x 1 goodcjh goodcjh 186 Sep 1 2002 .kshrc*
-rw-r--r-- 1 goodcjh goodcjh 392 Jan 7 2002 .login
-rw-r--r-- 1 goodcjh goodcjh 51 Nov 25 2002 .logout
-rw-r--r-- 1 goodcjh goodcjh 341 Oct 13 2002 .profile
-rwxr-xr-x 1 goodcjh goodcjh 182 Sep 1 2002 .profile.ksh*
drwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:16 .seyon/
drwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 lg/
226 Transfer complete.
ftp> cd lg
250 CWD command successful.
ftp> ls -F
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 8
drwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 ./
drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 ../rw-r--r-- 1 goodcjh goodcjh 70 Aug 22 2002 lg3_colors
-rw-r--r-- 1 goodcjh goodcjh 629 Aug 22