Sniffit是由LawrenceBerkeley实验室开发的,运行于Solaris,SGI和Linux等平台的一种免费网络监听软件,具有功能强大且使用方便的特点。使用时,用户可以选择源、目标地址或地址集合,还可以选择监听的端口、协议和网络接口等。这一工具的一些命令行参数如下:
※-t检查发送到的数据包。
※-s检查从发出的数据包。
以上两个参数都可以用@来选择一个IP地址范围,例如:-t199.145.@和-s199.14@
※-p记录连接到的信包,port为0意味着所有的端口。port缺省值是0。
★注重:-t或-s适用于TCP/UDP数据包,对ICMP和IP也进行解释。而-p只用于TCP和UDP数据包。
※-i交互模式,忽略其他参数。如下所示是一些能与除了,-i之外参数组合使用的命令行参数:
※-b等同于同时使用了-t和-s,而不管使用了-t和-s中的哪一个。
※-a以ASCII形式将监听到的结果输出。
※-A在进行记录时,所有不可打印字符都用来代替。
※-Pprotocol选择要检查的协议,缺省为TCP。可能的选择有:IP、TCP、ICMP、UDP或它们的组合。
假设有两台主机在一个子网中,一台正在运行sniffer,另一台主机的IP地址是nnn.nnn.nn.nn,一些例子如下:
想要记录从主机nnn.nnn.nn.nn上的一些用户的口令:
sniffit:~/#sniffit-p23-tnnn.nnn.nn.nn
想要记录到主机nnn.nnn.nn.nn的FTP服务:
sniffit:~/#sniffit-p21-l0-tnnn.nnn.nn.nn
记录所有发出和发往主机nnn.nnn.nn.nn的电子邮件信息:
sniffit:~/#sniffit-p25-l0-b-tnnn.nnn.nn.nn&
或者
sniffit:~/#sniffit-p25-l0-b-snnn.nnn.nn.nn&
想要使用有菜单的界面:
sniffit:~/#sniffit-i
网络出现一些错误,想要查看控制消息:
sniffit:~/#sniffit-picmp-b-snnn.nnn.nn.nn
将口令记录在以nnn开始的文件中,可以用catnnn*来查看:
sniffit:~/#sniffit-p23-A.-tnnn.nnn.nn.nn
或者
sniffit:~/#sniffit-p23-A^-tdummy.net
下面是运行sniffit的一个例子:
#sniffit-a-A.-p23-t11.22.33.@
入口参数的设置非常简单,为:-a接收所有信息;-A将不可打印字符用"."代替;-p监听端口23;-t目标地址在11.22.33子网范围(可以只监听一台主机或者是源主机)。使用-s参数可以指定监听的源主机。网络监听程序的人口参数其实非常简单,只要具有初步的网络知识便可以正确地使用它们。以下是监听到的部分结果:
PacketIDfrom-1P.port-toIP.port):11.22.33.41.1028-11.22.33.14.23
E..35.0......!.(.......K.2.P.”/.:....vt100..
出现vtl00的字样,是使用Telnet服务时,源主机与目标主机进行终端类型协商,在这一阶段源主机告诉目标主机自己使用的终端类型,这是一次远程终端服务的开始。在这之后,很可能就会传输用户的登录名和口令字。这里很清楚,使用端口1028的是客户端,而使用端口23的是服务器端。
PacketID(fromIP·port-toIP·port):11.22.33.41.1028-11.22.33.14.23
E..+6.@......!.............K.2CP.!....
PacketID(fromIP.port-toIP.port):11.22.33.41.1028-11.22.33.14.23
E..+9.0.......!............:K.21P.!...
PacketID(fromIP.port_to_1P.port):11.22.33.41.1028-11.22.33.14.23
E..):.@.......!.............K.21P.!.......1
PacketID(fromIP.port-tO-1P.port):11.22.33.41.1028-11.22.33.14.23
E..(;.@.......!.............K.2JP.!....
PacketID(fromIP.port-tO-1P.port):11.22.33.41.1028-11.22.33.14.23
E..)<.@.......!.............K.2JP.!....
PacketID(fIOmIP.port-to-1P.port)11.22.33.41.1028-11.22.33.14.23-.
E..)<.@.:.....!.............K.2JP.!....x
...
PacketID(fIOmIP.Polt-tO-1P.port卜11.22.33.41.1028-11.22.33.14.23
E..<=.@........!.....:.......K.2KP.!....
PacketID(frolnIP.port-toIP.port):11.22.33.41.1028-11.22.33.14.23
E..)>.@.......!.............K.2KP.!......g
PacketID(fromIP.port-to-1P.port卜11.22.33.41.1028-11.22.33.14.23
E..(?.@.......!.............K.2LP.!....
可以看到,客户端向服务器发送出了几个包,其中有可打印字符,连起来就是“lxg\这很可能就是用户名了。
PacketID(frolnIP.port-toIP.port):11.22.33.41.1028-11.2233.14.23
E..)C.@.......!.............K.2WP.!...7
PacketID(fromIP.port-toIP.port):11.22.33.41.1028-11.22.33.14.23
E..)D.0.......!.............K.2WP.!....
PacketID(frolnIP.port-tO〕P.port):11.22.33.41.1028-11.22.33.14.23
E..)D.0.......!......:......K.2WP.!...2
PacketID(fronIIP.port-toIP.port):11.22.33.41.1028-11.22.33.14.23
E..)E.@.......!............K.2WP.!.....1
PacketID(frOmIP.port-tO-1P.port卜11.22.33.41.1028-11.22.33.14.23
E..)F.@.......!.............K.2WP.!.......2
PacketID(frorrtIP.port-toIP.port):11.22.33.41.1028-11.22.33.14.23
E..)c.@....已..!.............K.2WP.!.......1
Packet=ID(fromIP.port-toIP.port):11.22.33.41.1028-11.22.33.14.23
E..)H.0.......!.............K.2MP.!.......6
PacketID(fromIP.port-toIP.port):11.22.33.41.1028-11.22.33.14.23
E..)1.@.......!.............K.2WP.!....
又得到了一个字串,连起来是“721216”。这应该是用户的口令了。
Packet10(fromIP.port-to-1P.port):11.22.33.41.1028-11.22.33.4`.23
E..)M.@........!.............K.4.P..E.....e
PacBT1D(fromIP.port-tO-1P.port):11.22.33.41.1028-11.22.33.41.1028
E..(N·@........!.............K.4.P..D..
PaCketID(fromIP.port-to-1P.port):11.22.33.41.1028-11.22.33.41.1028
E..)0.@........!.............K.4.P..D.....x
Packet1D(fromIP.port-tO-1P.port):11.22.33.41.1028-11.22.33.41.1028
E..(P.0........!.............K.4.P..C..
PacketID(fromIP.port-to-1P.port):11.22.33.41.1028-11.22.33.14.23
E..)Q.@........!.............K.4.P..C......i
Packet1D(fronlIP.port-to-1P.port):11.22.33.41.1028-11.22.33.41.1028
E、·)R.@........!.............K.4.P..B.....t
Packet1D(frolnIP.port-tO-1P.port):11.22.33.41.1028-11.22.33.41.1028
E..(3.@........!.............K.4.P..A...
可以看到,这个用户执行了一个命令:exit。全部连起来,易知这个连接的有效部分是:
..........vtl00..1xg..........721216..........exit..........
事实上,sniffit完全可以产生这样一个综合的结果,并且在本目录下生成一个类似于xxx.xxx.xxx.xxx.nn-yyy.yyy.yyy.yyy.mm为文件名的文件。其中,
xxx.xxx.xxx.xxx和yyy.yyy.yyy.yyy是两个IP地址,而mm和nn是通信双方的端口号。
另外,这个工具还可以用在交互模式下,在此模式下:
※F1or"1"输入一个主机地址进行监听,该主机发送数据包。
※F2or"2"输入一个主机地址进行监听,该主机接收数据包。
※F3or"3"输入一个端口号进行监听,该主机是发送数据包的。
※F4or"4"输入一个端口号进行监听,该主机是接收数据包的。
※F5or"5"使用参数<frOmIP><frOmport><toIP><toport>来启动一个程序。现在,在sniffit中,可以加入一种称为ToD的程序,英文名字是“TOUChofDeatch”,也叫做“TCP杀手”。当监听到一个TCP连接(这个连接是某两台主机间的TCP连接,与监听程序所在的主机一点关系也没有)时,按下F5键,便可以将这个无辜的TCp连接切断。可以想象,当某一个用户好不轻易连到一台主机,正预备工作时,连接忽然中断,需要重新进行连接,这时候该多丧气呀。这种方法的原理其实很简单,只是向一个TCP连接的其中一台主机发送一个断开连接的IP包(将IP包的RST位设置为1)即可