Sniffer是一种常用的收集有用数据方法,它几乎能得到任何以太网上的传送的数据包。这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。这些嗅探器很容易被入侵者完成入侵以后种植在受害者服务器当中,有的只是简单的用来捕捉用户名和密码,有的则非常强大可记录所有的网络数据流。 Linux操作系统下有很多这样的优秀工具,下面,我们来具体看看。
(1)Linux 测试软件tcpdump
这是一个专业的网络管理工具,而且这个工具也留下了不少网络攻击故事。它能把匹配规则的数据包的包头显示出来,使用TCPDump去查找网络问题或者去监视网络上的状况.。tcpdump的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。以rpm 包的形式安装是最简单的安装方法,通过rpm命令可以直接安装。以超级用户登录后,使用命令:#rpm -ivh tcpdump.rpm,就可以顺利安装了。
Tcpdump采用命令行的方式使用,它的命令格式为:
tcpdump [-adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
其中,“-a”表示将网络地址和广播地址转变成名字;“-d”表示将匹配信息包的代码以人们能够理解的汇编格式给出;“-e”表示在输出行打印出数据链路层的头部信息;“-c”表示在收到指定的包的数目后,tcpdump就会停止;“-F”表示从指定的文件中读取表达式,忽略其它的表达式;“-i”表示指定监听的网络接口;“-r”表示从指定的文件中读取包(这些包一般通过-w选项产生);“-w”表示直接将包写入文件中,并不分析和打印出来;“- T” 表示将监听到的包直接解释为指定的类型的报文,常见的类型有远程过程调用和snmp简单网络管理协议。
tcpdump的表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host、net、port等。第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src等,这些关键字指明了传输的方向。第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。除了这三种类型的关键字之外,其他重要的关键字如下:gateway、broadcast、less、 greater,还有三种逻辑运算“或、非、与”,这些关键字可以形成强大的组合条件来满足人们的需要。例如,想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
#tcpdump host 210.27.48.1
想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
下面我们介绍几种典型的tcpdump命令的输出信息。比如,使用如下命令:
#tcpdump --e host ice
其中,ice 是一台装有linux的主机,她的MAC地址是2E:19:24:28:AF:1A。H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 2E:19:24:28:AF:1A ip 60: h219.33357 > ice.telnet 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是显示的时间,847509是ID号,eth0 <表示从网络接口eth0 接受该数据包,eth0 >表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包。2E:19:24:28:AF:1A是主机ICE的 MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60 是数据包的长度, h219.33357 > ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535 表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.
再比如,使用命令:
#tcpdump arp
到的输出结果是:
22:32:42.802509 eth0 > arp who-has route tell ice (2E:19:24:28:AF:1A)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (2E:19:24:28:AF:1A)
分析: 22:32:42是时间戳, 802509是ID号, eth0 >表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 2E:19:24:28:AF:1A是主机ICE的MAC地址。此外,这个软件还可以分析UDP等数据包等,结合LINUX环境熟练使用后,我们就可以充分发挥它的威力。
(2)Linux 测试软件Hunt
Hunt具有直观的命令追踪和会话录制功能,它以tar.gz的格式发布,文件下载后,首先需要解压缩。运行Hunt后,将启动一个很直观的菜单,界面如下:
- --- Main Menu --- rcvpkt 0, free/alloc 63/64 ------
- l/w/r) list/watch/reset connections
- u) host up tests
- a) arp/simple hijack (avoids ack storm if arp used)
- s) simple hijack
- d) daemons rst/arp/sniff/mac
- o) options
- x) exit
- *> w
- 0) 192.168.0.1 [1049] --> 192.168.0.2 [23]
- choose conn> 0
- dump [s]rc/[d]st/oth > b
注:上面的输入(黑色字体部分)指示hunt来记录0号连接,并输出源和目的信息,则hunt将活动信息到终端屏幕上。可以看到,hunt的输出非常直观明了,易于阅读。hunt还提供有以下工具:允许指定任意一个感兴趣的连接,而不是记录所有的东西;允许指定任意一个连接,而不仅仅是以SYN刚刚开始的连接;提供活动会话劫持。
(3)Linux 测试软件Linsniffer
linsniffer是一个简单实用的嗅探器。它主要的功能是捕捉用户名和密码。
软件下载后,使用下面的命令来编译和运行linsniffer:
$cc linsniffer.c -o linsniffer
$linsniffer
启动以后linsniffer将创建一个空文件:tcp.log来存储嗅探结果。在测试中我创建一个名为cndes的用户,密码为123456。然后使用该用户来登录Linux服务器,并进行一些常见的用户操作。这是一个典型的用户操作过程。下面,我们看看linsniffer产生的嗅探结果:
- gnss => linux.test.net [21]
- USER cndes
- PASS 123456
- SYST
- PORT 172,16,0,1,4,192
- LIST -al
- PORT 172,16,0,1,4,193
- LIST
- PORT 172,16,0,1,4,194
- LIST -F
- CWD lg
- PORT 172,16,0,1,4,195
- LIST -F
输出内容十分直观。我们可以分析如下:首先,它记录到Linux主机的FTP连接:gnss => linux.test.net [21]。然后,linsniffer捕获了用户名和密码。最后,linsniffer记录了cndes使用的每一个命令。输出结果非常清楚,非常适合窃听密码及记录常见的活动。不过,这个软件不太适合进行更加复杂的分析。
(4)Linux 测试软件Linux-sniff
linux_sniffer提供相对更复杂的探测结果。首先,使用如下命令编译linux_sniffer
$cc linux_sniffer.c -o linuxsniff
下面是被linux_sniffer记录的一次telnet会话过程:
- GNSS 2# telnet 192.168.0.1
- Connected to 192.168.0.1.
- login: cndes
- password:
- [cndes@linux2 cndes]$ w
- 19:55:29 up 58 min, 4 users, load average: 0.00, 0.00, 0.00
- USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
- root tty1 7:44pm 27.00s 0.17s 0.06s -bash
- root tty2 7:46pm 1:56 0.24s 0.01s linuxsniff
- root tty3 7:44pm 10:43 0.17s 0.07s -bash
- cndes ttyp0 gnss 7:55pm 1.00s 0.26s 0.04s w
- [cndes@linux2 cndes]$ who
- root tty1 May 20 19:44
- root tty2 May 20 19:46
- root tty3 May 20 19:44
- cndes ttyp0 May 20 19:55 (gnss)
- [cndes@linux2 cndes]$ finger -l
- Login: root Name: root
- Directory: /root Shell: /bin/bash
- On since Thu May 20 19:44 (PDT) on tty1 35 seconds idle
- On since Thu May 20 19:46 (PDT) on tty2 2 minutes 4 seconds idle
- On since Thu May 20 19:44 (PDT) on tty3 10 minutes 51 seconds idle
- No mail.
- No Plan.
- Login: cndes Name: Caldera OpenLinux User
- Directory: /home/cndes Shell: /bin/bash
- On since Thu May 20 19:55 (PDT) on ttyp0 from gnss
- No mail.
- No Plan.
- (5)Linux 测试软件Ettercap
Ettercap是一款局域网环境下的网络监视、拦截和记录工具,支持多种主动或被动的协议分析,有数据插入、过滤、保持连接同步等功能,还有一个能支持多种嗅探模式套件,能够检查网络环境是否是交换局域网,并且能使用主动或被动的操作系统指纹识别技术,让本地攻击者充分了解当前局域网的情况。
(6)Linux 测试软件DSniff
DSniff是由Dug Song开发的一个网络审计、测试和嗅探软件套件,其中,dsniff、filesnarf、mailsnarf、msgsnarf、rlsnarf和 webspy可以用于监视网络上我们感兴趣的数据,如口令、e-mail、文件等。arpspoof、dnsspoof和macof则可以很容易地载取到攻击者通常难以获取的网络信息,如二层交换数据。
(7)Linux 测试软件Ethereal
Ethereal是一款免费的网络协议分析程序,支持Unix、Windows。借助这个程序,我们可以直接从网络上抓取数据进行分析,也可以对其他嗅探器抓取的数据进行分析,查看每一个数据包的摘要和详细信息。Ethereal有多种强大的特征,如支持几乎所有的协议、丰富的过滤语言、易于查看 TCP会话经重构后的数据流等。
(8)Linux 测试软件sniffit
sniffit是一个TCP/IP/ICMP协议数据报监听器,它能给出这些协议数据报的详细技术信息及符合监听条件的数据报的各种不同的格式。 sniffit可以进行方便的配置实现对接入的数据报进行过滤。而配置文件允许非常确定地指定需要处理的数据报。缺省情况下,sniffit可以处理以太和PPP设备,也可以用在其他的设备上。
由于Linux系统下嗅探器的优秀功能和强大的杀伤力,因此,新的软件层出不穷,而各个优秀软件的改进版本或增强版也不断涌现,读者朋友可以在实际使用中多多收集。
【编辑推荐】