最普遍的安全威胁来自内部,同时这些威胁通常都是致命的,其破坏性也远大于外部威胁。其中网络嗅探对于安全防护一般的网络来说,操作简单的同时威胁巨大,很多黑客也使用嗅探器进行网络入侵的渗透.. 网络嗅探器对信息安全的威胁来自其被动性和非干扰性,使得网络嗅探具有很强的隐蔽性,往往让网络信息泄密变得不轻易被发现。本文分析了网络嗅探的原理,分析了一些实例,提出解决方案和介绍实践经验。
一、 嗅探器攻击原理
嗅探器(sniffer) 是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种技术。它工作在网络的底层,把网络传输的全部数据记录下来. 嗅探器可以帮助网络治理员查找网络漏洞和检测网络性能.嗅探器可以分析网络的流量,以便找出所关心的网络中潜在的问题。不同传输介质的网络的可监听性是不同的。一般来说,以太网被监听的可能性比较高,因为以太网是一个广播型的网络;FDDI Token被监听的可能性也比较高,尽管它并不是一个广播型网络,但带有令牌的那些数据包在传输过程中,平均要经过网络上一半的计算机;微波和无线网被监听的可能性同样比较高,因为无线电本身是一个广播型的传输媒介,弥散在空中的无线电信号可以被很轻易的截获。一般情况下,大多数的嗅探器至少能够分析下面的协议:
1、标准以太网
2、TCP/ip
3、IPX
4、DECNET
5、FDDI Token
6、微波和无线网。
实际应用中的嗅探器分软、硬两种。软件嗅探器便宜易于使用,缺点是往往无法抓取网络上所有的传输数据(比如碎片),也就可能无法全面了解网络的故障和运行情况;硬件嗅探器的通常称为协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,但是价格昂贵。目前主要使用的嗅探器是软件的。
嗅探器捕捉真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的--例如将以太网卡设置成杂收模式。数据在网络上是以帧(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来存储嗅探结果。
CJH$ ftp www.red.netConnected to www.red.net.220 www.red.net FTP server Wed Aug 19 02:55:52 MST 2002) ready.Name (www.red.net:root): goodcjh331 PassWord required for goodcjh.Password:230 User goodcjh logged in.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls -al200 PORT command sUCcessful.150 Opening ASCII mode data connection for /bin/ls.total 14drwxrwxr-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.kshdrwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:16 .seyondrwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 lg226 Transfer complete.ftp> ls200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.total 14drwxrwxr-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.kshdrwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:16 .seyondrwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 lg226 Transfer complete.ftp> ls -F200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.total 14drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 ./drwxr-xr-x 6 root root 1024 May 20 19:28 ../rw-rw-r-- -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 lg250 CWD command successful.ftp> ls -F200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.total 8drwxr-xr-x 3 goodcjh goodcjh 1024 May 14 12:15 ./drwxrwxr-x 4 goodcjh goodcjh 1024 May 20 19:35 ../rw-r--r-- -rw-r--r-- 1 goodcjh goodcjh 629 Aug 22 2002 lg3_prefs-rw-r--r-- 1 goodcjh goodcjh 728 Aug 22 2002 lg3_soundPref-rw-r--r-- 1 goodcjh goodcjh 2024 Aug 22 2002 lg3_startupdrwxr-xr-x 2 goodcjh goodcjh 1024 May 14 12:15 lg_layouts/226 Transfer complete.ftp> cd lg_layouts250 CWD command successful.
CJH => www.red.net [21]USER goodcjhPASS fadSYSTPORT 172,16,0,1,4,192LIST -alPORT 172,16,0,1,4,193LISTPORT 172,16,0,1,4,194LIST -FCWD lgPORT 172,16,0,1,4,195LIST -F
SYSTPORT 172,16,0,1,4,192LIST -alPORT 172,16,0,1,4,193LISTPORT 172,16,0,1,4,194LIST -FCWD lgPORT 172,16,0,1,4,195LIST -F
#/usr/sbin/lsof >test#vi test 或 grep [打开的端口号]
2、将数据隐藏,使嗅探器无法发现。
嗅探器非常难以被发现, 因为它们是被动的程序一个老练的攻击者可以轻易通过破坏日志文件来掩盖信息。它们并不会给别人留下进行核查的尾巴.。完全主动的解决方案很难找到,我们可以采用一些被动的防御措施:
1.安全的拓扑结构。
2.会话加密。
3.用静态的ARP或者IP-MAC对应表代替动态的。
安全的拓扑结构:
嗅探器只能在当前网络段上进行数据捕捉。这就意味着,将网络分段工作进行得越细,嗅探器能够收集的信息就越少。但是,除非你的公司是一个ISP,或者资源相对不受限制,否则这样的解决方案需要很大的代价。网络分段需要昂贵的硬件设备。有三种网络设备是嗅探器不可能跨过的:交换机、路由器、网桥。我们可以通过灵活的运用这些设备来进行网络分段。大多数早期建立的内部网络都使用HUB集线器来连接多台工作站,这就为网络中数据的泛播(数据向所有工作站流通),让嗅探器能顺利地工作提供了便利。普通的嗅探器程序只是简单地进行数据的捕捉,因此需要杜绝网络数据的泛播。 随着交换机的价格下降,网络改造变得可行且很必要了。不使用HUB而用交换机来连接网络,就能有效地避免数据进行泛播,也就是避免让一个工作站接收任何非与之相关的数据。 对网络进行分段,比如在交换机上设置VLAN,使得网络隔离不必要的数据传送。一般可以采用20个工作站为一组,这是一个比较合理的数字。然后,每个月人为地对每段进行检测(也可以每个月采用md5随机地对某个段进行检测)。网络分段只适应于中小的网络。假如有一个500个工作站的网络,分布在50个以上的部门中,那么完全的分段的成本上是很高的。
会话加密。
会话加密提供了另外一种解决方案。不用非凡地担心数据被嗅探,而是要想办法使得嗅探器不熟悉嗅探到的数据。这种方法的优点是明显的:即使攻击者嗅探到了数据,这些数据对他也是没有用的。S/key和其它一次性口令技术一样,使窃听帐号信息失去意义。S/key的原理是远程主机已得到一个口令(这个口令不会在不安全的网络中传输),当用户连接时会获得一个"挑战"(challenge)信息,用户将这个信息和口令经过某个算法运算,产生正确的"响应"(response)信息(假如通讯双方口令正确的话)。这种验证方式无需在网络中传输口令,而且相同的"挑战/响应"也不会出现两次。S/key可从以下网址得到: ftp://thumper.bellcore.com/pub/nmh/skey。它的缺点是所有帐号信息都存放在一台主机中,假如该主机被入侵,则会危及整个网络安全。另外配置它也不是一件简单的事情。Kerberos包括流加密rlogind和流加密telnetd等,它可以防止入侵者捕捉用户在登录完成后所进行的操作。 在加密时有两个主要的问题:一个是技术问题,一个是人为问题。
技术是指加密能力是否高。例如,64位的加密就可能不够,而且并不是所有的应用程序都集成了加密支持。而且,跨平台的加密方案还比较少见,一般只在一些非凡的应用之中才有。人为问题是指,有些用户可能不喜欢加密,他们觉得这太麻烦。用户可能开始会使用加密,但他们很少能够坚持下。总之我们必须寻找一种友好的媒介-使用支持强大这样的应用程序,还要具有一定的用户友好性。使用secure shell、secure copy或者IPV6协议都可以使得信息安全的传输。传统的网络服务程序,SMTP、HTTP、FTP、POP3和Telnet等在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,嗅探器非常轻易就可以截获这些口令和数据.SSH的英文全称是Secure Shell。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间服务器"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的"通道"。SSH绑定在端口22上,其连接采用协商方式使用RSA加密。身份鉴别完成之后,后面的所有流量都使用IDEA进行加密。SSH(Secure Shell)程序可以通过网络登录到远程主机并执行命令。SSH的加密隧道保护的只是中间传输的安全性,使得任何通常的嗅探工具软件无法获取发送的内容。它提供了很强的安全验证可以在不安全的网络中进行安全的通信.所以它是防范嗅探器的一种方法。
用静态的ARP或者IP-MAC对应表代替动态的ARP或者IP-MAC对应表。
该措施主要是进行渗透嗅探的防范,采用诸如ARP欺骗手段能够让入侵者在交换网络中顺利完成嗅探。网络治理员需要对各种欺骗手段进行深入了解,比如嗅探中通常使用的ARP欺骗,主要是通过欺骗进行ARP动态缓存表的修改。在重要的主机或者工作站上设置静态的ARP对应表,比如win2K系统使用arp命令设置,在交换机上设置静态的IP-MAC对应表等,防止利用欺骗手段进行嗅探的手法。
除了以上三点另外还要重视重点区域的安全防范 。这里说的重点区域,主要是针对嗅探器的放置位置而言。入侵者要让嗅探器发挥较大功效,通常会把嗅探器放置在数据交汇集中区域,比如网关、交换机、路由器等四周,以便能够捕捉更多的数据。因此,对于这些区域就应该加强防范,防止在这些区域存在嗅探器。
# tar -zxvf ssh2-2.4.0.tar.gz# cd ssh2-2.4.0# ./configure ;# make ;#make install
# rm /etc/ssh2/hostkey*# ssh-keygen2 -P /etc/ssh2/hostkey
# sshd# ps x
# ssh cjh@red.forge.net
# scp my.php cjh@cjh.org:/usr/local/apache/htdocs/
#scp servername:/home/ftp/pub/file1./
新闻热点
疑难解答