Sniffer的一些资料

zt371 发布于 2009/05/05 14:56
阅读 703
收藏 0

看很多朋友问起这个,就把我知道的一些转出来。

Sniffer 常见问题集(FAQ)

发布日期: 2000-1-15 
内容: 
--------------------------------------------------------------------------------
 

By backend ;
http://www.nsfocus.com/


    本文是ISS公司在几年前发布的一份Sniffer FAQ。虽然里面涉及的技术可能相对陈旧了一些,但仍然可作为入门级文档。希望这份Sniffer FAQ能够帮助管理员们对网络监听及解决方法有一个较为清楚的认识。Sniffer已成为当今互联网上最常见的主机入侵手段之一。
    在绿盟网络安全月刊中,我还将陆续介绍Sniffer、Sniffer的克星——Anti-Sniffer和Anti-Sniffer的克星——Anti Anti-Sniffer。希望对这方面有兴趣的朋友如果有些什么好资料或建议,请与我联系。


FAQ目录:

   *  什么是sniffer及其工作原理
   *  哪里可以得到sniffer
   *  如何监测主机正在窃听(sniffed)
   *  阻止sniffer
        o  主动集线器
        o  加密
        o  Kerberos
        o  一次性口令技术
        o  非混杂模式网络接口设备

-------------------------------------------------------------------------------

什么是sniffer及其工作原理

    与电话电路不同,计算机网络是共享通讯通道的。支持每对通讯计算机独占通道的交换机/集线器仍然过于昂贵。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。

    以太网是现在应用最广泛的计算机连网方式。以太网协议是在同一回路向所有主机发送数据包信息。数据包头包含有目标主机的正确地址。一般情况下只有具有该地址的主机会接受这个数据包。如果一台主机能够接收所有数据包,而不理会数据包头内容,这种方式通常称为“混杂”模式。

    由于在一个普通的网络环境中,帐号和口令信息以明文方式在以太网中传输,一旦入侵者获得其中一台主机的root权限,并将其置于混杂模式以窃听网络数据,从而有可能入侵网络中的所有计算机。

-------------------------------------------------------------------

哪里可以得到sniffer

    Sniffer是黑客们最常用的入侵手段之一。例如Esniff.c,是一个小巧的工具,运行在SunOS平台,可捕获所有telnet、ftp、rloing会话的前300个字节内容。这个由Phrack开发的程序已成为在黑客中传播最广泛的工具之一。

    你可以在经过允许的网络中运行Esniff.c,了解它是如何有效地危及本地机器安全。

    以下是一些也被广泛用于调试网络故障的sniffer工具:

      *  Etherfind on SunOs
      *  Snoop on Solaris 2.x and SunOs
      *  Tcpdump
      *  Packetman, Interman, Etherman, Loadman

    商用sniffer:

      *  Network General.

          Network General开发了多种产品。最重要的是Expert Sniffer,
          它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数
          据包,帮助诊断故障。还有一个增强产品"Distrbuted Sniffer 
          System"可以将UNIX工作站作为sniffer控制台,而将sniffer 
          agents(代理)分布到远程主机上。

   *  Microsoft's Net Monitor

          对于某些商业站点,可能同时需要运行多种协议——NetBEUI、
          IPX/SPX、TCP/IP、802.3和SNA等。这时很难找到一种sniffer帮助
          解决网络问题,因为许多sniffer往往将某些正确的协议数据包当
          成了错误数据包。Microsoft的Net Monitor(以前叫Bloodhound)
          可以解决这个难题。它能够正确区分诸如Netware控制数据包、NT 
          NetBios名字服务广播等独特的数据包。(etherfind只会将这些数
          据包标识为类型0000的广播数据包。)这个工具运行在MS Windows
          平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话
          信息监视。只需简单地单击某个会话即可获得tcpdump标准的输出。
          过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的
          主机即可。

--------------------------------------------------------------------

如何监测主机正在窃听(sniffed)

    要监测只采集数据而不对任何信息进行响应的窃听设备,需要逐个仔细检查以太网上所有物理连接。

    不可能通过远程发送数据包或ping就可以检查计算机是否正在窃听。

    一个主机上的sniffer会将网络接口置为混杂模式以接收所有数据包。对于某些UNIX系统,通过监测到混杂模式的网络接口。虽然可以在非混杂模式下运行sniffer,但这样将只能捕获本机会话。入侵者也可能通过在诸如sh、telnet、rlogin、in.telnetd等程序中捕获会话,并将用户操作记录到其它文件中。这些都可能通过监视tty和kmem等设备轻易发现。只有混杂模式下的sniffing才能捕获以太网中的所有会话,其它模式只能捕获本机会话。

    对于SunOS、NetBSD和其它BSD Unix系统,如下命令:

     "ifconfig -a"

    会显示所有网络接口信息和是否在混杂模式。DEC OSF/1和IRIX等系统需要指定设备。要找到系统中有什么网络接口,可以运行如下命令:

     # netstat -r
     Routing tables

     Internet:
     Destination      Gateway            Flags     Refs     Use  Interface
     default          iss.net            UG          1    24949  le0
     localhost        localhost          UH          2       83  lo0

    然后通过如下命令检查每个网络接口:

     #ifconfig le0
     le0: flags=8863
             inet 127.0.0.1 netmask 0xffffff00 broadcast 255.0.0.1

    入侵者经常会替换ifconfig等命令来避开检查,因此一定要检查命令程序的校验值。

    在ftp.cert.org:/pub/tools/的cpm程序(SunOS平台)可以检查接口是否有混杂模式标记。

    对于Ultrix系统,使用pfstat和pfconfig命令也可能监测是否有sniffer运行。

        pfconfig指定谁有权限运行sniffer。
        pfstat显示网络接口是否处于混杂模式。

    这些命令只在sniffer与内核存在链接时有效。而在缺省情况,sniffer是没有与内核链接的。大多数的Unix系统,例如Irix、Solaris、SCO等,都没有任何标记来指示是否处于混杂模式,因此入侵者能够窃听整个网络而却无法监测到它。

    通常一个sniffer的记录文件会很快增大并填满文件空间。在一个大型网络中,sniffer明显加重机器负荷。这些警告信息往往能够帮助管理员发现sniffer。建议使用lsof程序搜索访问数据包设备(如SunOS的/dev/nit)的程序和记录文件。

------------------------------------------------------------------

阻止sniffer

    主动式集线器只向目标地址主机发送数据包,从而使混杂模式sniffer失效。它仅适用于10Base-T以太网。(注:这种现在已在计算机市场消失。)

    只有两家厂商曾生产过主动式集线器:

   *  3Com
   *  HP

随着交换机的成本和价格的大幅度降低,交换机已成为非常有效的使sniffer失效的设备。目前最常见的交换机在第三层(网络层)根据数据包目标地址进行转发,而不太采取集线器的广播方式,从而使sniffer失去了用武之地。

------------------------------------------------------------------

加密

    目前有许多软件包可用于加密连接,从而使入侵者即使捕获到数据,但无法将数据解密而失去窃听的意义。

    以下是以前常用的一些软件包

   *  deslogin
      coast.cs.purdue.edu:/pub/tools/unix/deslogin .

   * swIPe
     ftp.csua.berkeley.edu:/pub/cypherpunks/swIPe/

   * Netlock

-----------------------------------------------------------------

Kerberos

    Kerberos是另一个加密网络中帐号信息的软件包。它的缺点是所有帐号信息都存放在一台主机中,如果该主机被入侵,则会危及整个网络安全。另外配置它也不是一件简单的事情。Kerberos包括流加密rlogind和流加密telnetd等,它可以防止入侵者捕获用户在登录完成后所进行的操作。

    Kerberos FAQ可从ftp站点rtfm.mit.edu中得到:
/pub/usenet/comp.protocols/kerberos/Kerberos_Users__Frequently_Asked_Questions_1.11

------------------------------------------------------------------

一次性口令技术

    S/key和其它一次性口令技术一样,使窃听帐号信息失去意义。S/key的原理是远程主机已得到一个口令(这个口令不会在不安全的网络中传输),当用户连接时会获得一个“挑战”(challenge)信息,用户将这个信息和口令经过某个算法运算,产生正确的“响应”(response)信息(如果通讯双方口令正确的话)。这种验证方式无需在网络中传输口令,而且相同的“挑战/响应”也不会出现两次。S/key可从以下网址得到:ftp://thumper.bellcore.com/pub/nmh/skey

    还有一种一次性口令技术是ID卡系统。每个授权用户都有一个产生用于访问各自帐号的数字号码的ID卡。如果没有这个ID卡,不可能猜出这个数字号码。

    以下是提供这类解决方案的公司资料:

Secure Net Key (SNK)

Digital Pathways, Inc.
201 Ravendale Dr. Mountainview, Ca.
97703-5216 USA

Phone: 415-964-0707 Fax: (415) 961-7487

Secure ID

Security Dynamics,
One Alewife Center
Cambridge, MA 02140-2312
USA Phone: 617-547-7820
Fax: (617) 354-8836
Secure ID uses time slots as authenication rather than challenge/response.

ArKey and OneTime Pass

Management Analytics
PO Box 1480
Hudson, OH 44236
Email: fc@all.net
Tel:US+216-686-0090 Fax: US+216-686-0092

WatchWord and WatchWord II

Racal-Guardata
480 Spring Park Place
Herndon, VA 22070
703-471-0892
1-800-521-6261 ext 217

CRYPTOCard

Arnold Consulting, Inc.
2530 Targhee Street, Madison, Wisconsin
53711-5491 U.S.A.
Phone : 608-278-7700 Fax: 608-278-7701
Email: Stephen.L.Arnold@Arnold.Com
CRYPTOCard is a modern, SecureID-sized, SNK-compatible device.

SafeWord

Enigma Logic, Inc.
2151 Salvio #301
Concord, CA 94520
510-827-5707 Fax: (510)827-2593
For information about Enigma ftp to: ftp.netcom.com in directory
/pub/sa/safeword

Secure Computing Corporation:

2675 Long Lake Road
Roseville, MN 55113
Tel: (612) 628-2700
Fax: (612) 628-2701
debernar@sctc.com

----------------------------------------------------------------

非混杂模式网络接口设备

    以前,大多数IBM DOS兼容机器的网卡都不支持混杂模式,所以无法进行sniffing。但DOS已退出计算机网络舞台,对于现在计算机市场中的网络接口设备,请向供应商查询是否为非混杂模式设备(即不支持混杂模式)。


<< 完 >;>;

------------------------------------
资料来源:
     Internet Security Systems, Inc.
------------------------------------ 


Linux环境下黑客常用嗅探器分析

发布日期: 2001-8-23 
内容: 
--------------------------------------------------------------------------------
 

作者:<>;
来源:http://Linuxaid.com.cn
--------------------------------------------------------------------------------


概述
    本文对Linux环境下黑客常常使用的几种嗅探器进行详细的分析,这些嗅探器往往被入侵者完成入侵以后种植在受害者服务器当中。这些嗅探器各自有不同的特点,有的只是简单的用来捕捉用户名和密码,有的则非常强大可记录所有的网络数据流。本文将对下面几种嗅探器进行分析:

        *linsniffer
        
        *linuxsniffer

*hunt

*sniffit

linsniffer

linsniffer是一个简单实用的嗅探器。它主要的功能特点是用来捕捉用户名和密码,它在这方面非常出色。

作者:Mike Edulla
条件: C和IP头文件
配置文件:无
位置: http://agape.trilidun.org/hack/network-sniffers/linsnifferc
安全历史: 无
注: 易于使用。但是lnsniffer需要完整的IP头文件,包括常常存储在/usr/include/net和 /usr/include/netinet的头文件,在编译前确保PATH变量包含/usr/include。

使用下面的命令来编译lnsniffer:

$cc linsniffer.c -o linsniffer
要运行linsniffer,使用下面的命令:

$linsniffer

启动以后linsniffer将创建一个空文件:tcp.log来存储嗅探结果。

在测试中我创建一个名为hapless的用户,密码为unaware。然后使用该用户来登录Linux服务器,并进行一些常见的用户操作。下面是进行的一次ftp过程:

GNSS $ ftp 192.168.0.2
Connected to 192.168.0.2.

220 linux.test.net FTP server Wed Aug 19 02:55:52 MST 1998) ready.

Name (192.168.0.2:root): hapless
331 Password required for hapless.
Password:
230 User hapless 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 hapless hapless 1024 May 20 19:35 .
drwxr-xr-x 6 root root 1024 May 20 19:28 ..
-rw-rw-r-- 1 hapless hapless 96 May 20 19:56 .bash_history
-rw-r--r-- 1 hapless hapless 49 Nov 25 1997 .bash_logout
-rw-r--r-- 1 hapless hapless 913 Nov 24 1997 .bashrc
-rw-r--r-- 1 hapless hapless 650 Nov 24 1997 .cshrc
-rw-r--r-- 1 hapless hapless 111 Nov 3 1997 .inputrc
-rwxr-xr-x 1 hapless hapless 186 Sep 1 1998 .kshrc
-rw-r--r-- 1 hapless hapless 392 Jan 7 1998 .login
-rw-r--r-- 1 hapless hapless 51 Nov 25 1997 .logout
-rw-r--r-- 1 hapless hapless 341 Oct 13 1997 .profile
-rwxr-xr-x 1 hapless hapless 182 Sep 1 1998 .profile.ksh
drwxr-xr-x 2 hapless hapless 1024 May 14 12:16 .seyon
drwxr-xr-x 3 hapless hapless 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 hapless hapless 1024 May 20 19:35 .
drwxr-xr-x 6 root root 1024 May 20 19:28 ..
-rw-rw-r-- 1 hapless hapless 96 May 20 19:56 .bash_history
-rw-r--r-- 1 hapless hapless 49 Nov 25 1997 .bash_logout
-rw-r--r-- 1 hapless hapless 913 Nov 24 1997 .bashrc
-rw-r--r-- 1 hapless hapless 650 Nov 24 1997 .cshrc
-rw-r--r-- 1 hapless hapless 111 Nov 3 1997 .inputrc
-rwxr-xr-x 1 hapless hapless 186 Sep 1 1998 .kshrc
-rw-r--r-- 1 hapless hapless 392 Jan 7 1998 .login
-rw-r--r-- 1 hapless hapless 51 Nov 25 1997 .logout
-rw-r--r-- 1 hapless hapless 341 Oct 13 1997 .profile
-rwxr-xr-x 1 hapless hapless 182 Sep 1 1998 .profile.ksh
drwxr-xr-x 2 hapless hapless 1024 May 14 12:16 .seyon
drwxr-xr-x 3 hapless hapless 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 hapless hapless 1024 May 20 19:35 ./
drwxr-xr-x 6 root root 1024 May 20 19:28 ../rw-rw-r-- 1 hapless hapless 96 May 20 19:56 .bash_history
-rw-r--r-- 1 hapless hapless 49 Nov 25 1997 .bash_logout
-rw-r--r-- 1 hapless hapless 913 Nov 24 1997 .bashrc
-rw-r--r-- 1 hapless hapless 650 Nov 24 1997 .cshrc
-rw-r--r-- 1 hapless hapless 111 Nov 3 1997 .inputrc
-rwxr-xr-x 1 hapless hapless 186 Sep 1 1998 .kshrc*
-rw-r--r-- 1 hapless hapless 392 Jan 7 1998 .login
-rw-r--r-- 1 hapless hapless 51 Nov 25 1997 .logout
-rw-r--r-- 1 hapless hapless 341 Oct 13 1997 .profile
-rwxr-xr-x 1 hapless hapless 182 Sep 1 1998 .profile.ksh*
drwxr-xr-x 2 hapless hapless 1024 May 14 12:16 .seyon/
drwxr-xr-x 3 hapless hapless 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 hapless hapless 1024 May 14 12:15 ./
drwxrwxr-x 4 hapless hapless 1024 May 20 19:35 ../rw-r--r-- 1 hapless hapless 70 Aug 22 1998 lg3_colors
-rw-r--r-- 1 hapless hapless 629 Aug 22 1998 lg3_prefs
-rw-r--r-- 1 hapless hapless 728 Aug 22 1998 lg3_soundPref
-rw-r--r-- 1 hapless hapless 2024 Aug 22 1998 lg3_startup
drwxr-xr-x 2 hapless hapless 1024 May 14 12:15 lg_layouts/
226 Transfer complete.
ftp>; cd lg_layouts
250 CWD command successful.

这是一个典型的用户操作过程。现在我们看看linsniffer产生的嗅探结果:

gnss =>; linux.test.net [21]
USER hapless
PASS unaware
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

输出的内容是很直观的。首先它记录这是从GNSS到Linux主机的FTP连接:

gnss =>; linux.test.net [21]

然后,linsniffer捕获了hapless的用户名和密码。

USER hapless
PASS unaware

最后,linsniffer记录了hapless使用的每一个命令:

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_sniffe。

linux_sniffer

linux_sniffer提供相对更复杂的探测结果。

作者:loq
要求:C和IP头文件
配置文件:无
下载位置: http://www.ryanspc.com/sniffers/linux_sniffer.c.
安全历史:无
注意:linux_sniffer易于使用,但是需要完全的IP头文件。

使用下面命令编译linux_sniffer:

$cc linux_sniffer.c -o linuxsniff

下面是一次telnet会话过程,同时被linux_sniffer记录:

GNSS 2# telnet 192.168.0.1
Connected to 192.168.0.1.
login: hapless
password:
[hapless@linux2 hapless]$ 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
hapless ttyp0 gnss 7:55pm 1.00s 0.26s 0.04s w
[hapless@linux2 hapless]$ who
root tty1 May 20 19:44
root tty2 May 20 19:46
root tty3 May 20 19:44
hapless ttyp0 May 20 19:55 (gnss)
[hapless@linux2 hapless]$ 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: hapless Name: Caldera OpenLinux User
Directory: /home/hapless Shell: /bin/bash
On since Thu May 20 19:55 (PDT) on ttyp0 from gnss
No mail.
No Plan.

同样这是一次典型的登录过程:用户登录,检测哪些用户在登录等等。linux_sniffer记录额外的地址数据,但是同样记录了一些重要的数据。首先它记录了连接:

eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23] 
0000 ff fc 27 - ..' 
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23] 
0000 ff fa 1f 00 50 00 28 ff - f0 ....P.(.. 
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23] 
0000 ff fa 20 00 33 38 34 30 - 30 2c 33 38 34 30 30 ff .. .38400,38400.
0010 f0 ff fa 23 00 47 4e 53 - 53 3a 30 2e 30 ff f0 ff ...#.GNSS:0.0...
0020 fa 18 00 49 52 49 53 2d - 41 4e 53 49 2d 4e 45 54 ...IRIS-ANSI-NET
0030 ff f0 - .. 
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 ff fc 01 - ...
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 ff fd 01 - ...
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]

随后,linux_sniffer记录了登录过程,下面用黑体表示:

eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 68 - h
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 61 - a
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 70 - p
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 6c - l
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 65 - e
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 73 - s
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 73 - s
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 0d 00 - ..
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 75 - u
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 6e - n
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 61 - a
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 77 - w
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 61 - a
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 72 - r
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 65 - e
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]

最后,linux_sniffer记录了所有的命令:

eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 77 - w
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 0d 00 - ..
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 77 - w
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 68 - h
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 6f - o
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 0d 00 - ..
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 66 - f
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 69 - i
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 6e - n
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 67 - g
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 65 - e
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]
0000 72 - r
eth
proto: 080008:00:69:07:3e:db->;00:e0:29:19:4a:68 192.168.0.1[1239] ->;192.168.0.2[23]

可以看到,linux_sniffer提供了相对更详细的内容。

hunt

hunt在你需要易于读取的结果室的另外一种选择。它具有直观的命令追踪和会话监录功能。

作者:Pavel Krauz
条件: C, IP头, Linux 2.0.35+, 支持LinuxThreads的GlibC 2.0.7
配置文件:无
位置:http://www.cri.cz/kra/index.html
安全历史:无
注:作者提供有动态链接和静态连接的二进制发布。

hunt是以tar.gz的格式发布的,文件名为hunt-1_3bin.tgz。首先需要解压缩:

$tar xvfz hunt-1_3bin.tgz

则hunt被解压缩到新创建的目录hunt-1.3种,包括以下内容:

-rw-r--r-- 1 206 users 1616 Apr 2 03:54 CHANGES
-rw-r--r-- 1 206 users 17983 Oct 25 1998 COPYING
-rw-r--r-- 1 206 users 312 Jan 16 04:54 INSTALL
-rw-r--r-- 1 206 users 727 Feb 21 11:22 Makefile
-rw-r--r-- 1 206 users 27373 Feb 15 12:44 README
-rw-r--r-- 1 206 users 167 Dec 4 14:29 TODO
-rw-r--r-- 1 206 users 5067 Feb 13 04:23 addpolicy.c
-rw-r--r-- 1 206 users 7141 Feb 21 23:44 arphijack.c
-rw-r--r-- 1 206 users 25029 Apr 2 03:26 arpspoof.c
drwxr-xr-x 2 206 users 1024 Apr 9 02:03 c
-rw-r--r-- 1 206 users 7857 Nov 9  1998 hijack.c
-rw-r--r-- 1 206 users 5066 Dec 2 12:55 hostup.c
-rwxr-xr-x 1 206 users 84572 Apr 9 02:03 hunt
-rw-r--r-- 1 206 users 24435 Apr 2 03:26 hunt.c
-rw-r--r-- 1 206 users 16342 Mar 30 01:56 hunt.h
-rwxr-xr-x 1 206 users 316040 Apr 9 02:03 hunt_static
-rw-r--r-- 1 root root 265 May 20 22:22 huntdir.txt
-rw-r--r-- 1 root root 2517 May 20 22:19 huntlog.txt
-rw-r--r-- 1 206 users 6249 Feb 21 11:21 macdisc.c
-rw-r--r-- 1 206 users 12105 Feb 21 11:35 main.c
-rw-r--r-- 1 206 users 12000 Feb 6 02:27 menu.c
-rw-r--r-- 1 206 users 7432 Apr 2 03:53 net.c
-rw-r--r-- 1 206 users 5799 Feb 11 04:21 options.c
-rw-r--r-- 1 206 users 11986 Feb 14 04:59 resolv.c
-rw-r--r-- 1 206 users 1948 Oct 25 1998 rst.c
-rw-r--r-- 1 206 users 9545 Mar 30 01:48 rstd.c
-rw-r--r-- 1 206 users 21590 Apr 2 03:58 sniff.c
-rw-r--r-- 1 206 users 14466 Feb 21 12:04 synchijack.c
-rw-r--r-- 1 206 users 2692 Feb 19 00:10 tap.c
-rw-r--r-- 1 206 users 4078 Feb 15 05:31 timer.c
-rw-r--r-- 1 206 users 2023 Oct 25 1998 tty.c
-rw-r--r-- 1 206 users 7871 Feb 11 02:58 util.c

静态二进制发布为hunt_static,推荐使用该版本,因为有时候从源代码编译可能会出现缺少一些库的错误。使用下面命令来执行hunt:

$hunt_static

运行hunt你将惊奇地发现hunt是基于curse的,因此有非常友好的交互界面。启动以后菜单如下所示:

--- 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
* >;

在整个例子中,我将从GNSS登录到linux.test.net中进行测试。

GNSS 3% telnet 192.168.0.2
Trying 192.168.0.2...
Connected to 192.168.0.2.
Escape character is '^]'.

Caldera OpenLinux(TM)
Version 1.3
Copyright 1996-1998 Caldera Systems, Inc.

login:
[hapless@linux hapless]$ finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Thu May 20 21:57 (PDT) on tty1 1 minute idle
On since Thu May 20 22:02 (PDT) on tty2 7 minutes 19 seconds idle
On since Thu May 20 21:59 (PDT) on tty3 15 seconds idle
No mail.
No Plan.
[hapless@linux hapless]$ last root
root tty2 Thu May 20 22:02 still logged in
root tty3 Thu May 20 21:59 still logged in
root tty1 Thu May 20 21:57 still logged in
root tty2 Thu May 20 19:46 - down (00:26)
root tty1 Thu May 20 19:44 - 20:12 (00:27)
root tty3 Thu May 20 19:44 - down (00:28)
root tty3 Thu May 20 19:42 - 19:44 (00:01)
root tty1 Thu May 20 19:41 - 19:42 (00:00)
root tty3            Thu May 20 19:28 - 19:41 (00:12)
root tty2 Thu May 20 19:11 - 19:42 (00:31)
root tty1 Thu May 20 19:07 - 19:40 (00:32)
root tty1 Thu May 20 18:57 - 19:07 (00:09)
root tty1 Mon May 17 22:32 - down (00:29)

最后检查了/etc/passwd,在整个过程中都运行有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/[ b]oth [ b]>; b

注:上面的输入(黑色字体部分)指示hunt来记录0号连接,并输出源和目的信息。
则hunt将显示hapless的所有活动信息到终端屏幕上:

22:18:43 up 21 min, 4 users, load average: 0.00, 0.01, 0.00
TRL-C to break
hhaapplleessss
Password: unaware
[hapless@linux2 hapless]$ cclleeaarr
[hapless@linux2 hapless]$ wwhhoo
root tty1 May 20 21:57
ww
22:18:43 up 21 min, 4 users, load average: 0.00, 0.01, 0.00

[hapless@linux2 hapless]$ mmoorree //eettcc//ppaasssswwdd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:
daemon❌2:2:daemon:/sbin:
adm❌3:4:adm:/var/adm:
lp❌4:7:lp:/var/spool/lpd:
sync❌5:0:sync:/sbin:/bin/sync
shutdown❌6:11:shutdown:/sbin:/sbin/shutdown
halt❌7:0:halt:/sbin:/sbin/halt
mail❌8:12:mail:/var/spool/mail:
news❌9:13:news:/var/spool/news:
uucp❌10:14:uucp:/var/spool/uucp:
operator❌11:0:operator:/root:
games❌12💯games:/usr/games:
gopher❌13:30:gopher:/usr/lib/gopher-data:
ftp❌14:50:FTP User:/home/ftp:
man❌15:15:Manuals Owner:/:
majordom❌16:16:Majordomo:/:/bin/false
postgres❌17:17:Postgres User:/home/postgres:/bin/bash
nobody❌65534:65534:Nobody:/:/bin/false
anon❌100💯Anonymous:/home/anon:/bin/bash
hapless❌500:500:Caldera OpenLinux User:/home/hapless:/bin/bash
[hapless@linux2 hapless]$

可以的看到,hunt的输出非常直观明了,易于阅读。然而hunt还提供有以下工具:

允许指定任意一个感兴趣的连接,而不是记录所有的东西。

允许指定任意一个连接,而不仅仅是以SYN刚刚开始的连接。It offers spoofing tools.

提供活动会话劫持。

其特有的特色功能和易于使用的界面,使得它对于linux入门者是一个非常好的选择。 

sniffit

sniffit是针对哪些需要了解更多信息的人的。

作者:Brecht Claerhout
条件:C, IP 头文件
配置文件:见后面的讨论
安全历史:无
注:sniffit功能非常强大,但是不易学习使用。

$tar xvfz sniffit_0_3_7.tar.gz
$./configure (配置命令将检测系统是否符合要求)
$make (编译源代码)
strip sniffit (精简二进制代码的大小)
现在就可以使用sniffit了(sniffit的配置我们最后讨论)。

语法:

       sniffit [-xdabvnN] [-P proto ] [-A char ] [-p port ]

                      [(-r|-R) recordfile ] [-l sniflen ] [-L logparam ] [-F

                      snifdevice ] [-D tty ] [-M plugin ] [(-t Target-IP | -s

                      Source-IP ) | (-i|-I) | -c config-file ]

sniffit是一个TCP/IP/ICMP协议数据报监听器,其能给出关于这些协议数据报非常详细的技术信息(SEQ,ACK,TTL,Windows,....)及符合监听条件的数据报的各种不同的格式(hex或纯文本)

       sniffit缺省的可以处理以太和PPP设备。但是也可以用在其他的设备上(参见README.FIRST和sn_config.h)。sniffit可以进行方便的配置实现对接入的数据报进行过滤。而配置文件允许非常确定地指定需要处理的数据报。 sniffit同样有一个交互式界面。

  

选项: 

-v 显示版本信息 

-t 目标地址

    只处理目的地址为"目标地址"的数据,和 '-s' '-c' '-v' 选项不兼容

-s 源地址

    只处理发送地址为"源地址"的数据,和'-t' '-c' '-v' 选项不兼容

-c 配置文件

        在配置文件中对包过滤规则进行定义,和-t' '-s' '-v'不兼容

-R 文件

     将输出结果记录到"文件"中(和'-v'不兼容)

-n 关闭IP数据报校验,使伪造的数据也可以显示出来

-x 打印TCP数据报的扩展信息到标准输出中((SEQ,ACK, Flags等),往往用来跟踪欺骗,包丢失及实现其他的网络调试测试任务。和'-i' 'I' '-v'不兼容

-d 输出到缺省的文件中,一般文件名为源目的地址的组合如:192.168.0.232.1120-192.168.0.231.80

-a    输出ascII码格式,不可打印的字符用”.”表示

-P 协议

        指定需要处理的数据的协议类型,IP,TCP,ICMP,UDP等。

-p 端口

        只处理目的端口为"端口"的数据。

-l sniflen

        在正常模式下,记录的数据的总和(缺省为300字节),每次的连接的前sniflen个字节被记录下来。

-F device

     指定监听某个设备的数据如eth0,eth1等

-D tty

     所有的记录信息都被输出到指定的tty


举例: 

? 要监听从192.168.0.233发往192.168.0.231的访问WWW请求数据:

       [root@lix /tmp]#/usr/sbin/sniffit -p 80 -P TCP -s 192.168.0.233 -d ttyp1

       Packet ID (from_IP.port-to_IP.port): 192.168.0.233.1060-192.168.0.231.80

45 00 00 2C 6D 0B 40 00 80 06 0A A0 C0 A8 00 E9 C0 A8 00 E7 04 24 00 50 00 4E

89 2A 00 00 00 00 60 02 20 00 67 19 00 00 02 04 05 B4

注:192.168.0.231为一台运行linux的服务器

? 如果希望将输出定向到一个文件,则

[root@lix /tmp]# /usr/sbin/sniffit -p 80 -P TCP -s 192.168.0.233 -R /tmp/wwwlog

? 如果希望查看从192.168.0.231返回给192.168.0.225的www页面数据,并且将数据存储在一个文件/tmp/wwwlog中:

[root@lix /tmp]# /usr/sbin/sniffit -P TCP -t 192.168.0.225 -R /tmp/wwwlog

注:在225上不要开别的到231的连接,如telnet 否则 数据就回混杂在一起。 
  

? 如果希望查看从192.168.0.233发给192.168.0.231的ICMP数据,并且将其显示到控制台上:

    [root@lix /tmp]# /usr/sbin/sniffit -P ICMP -t 192.168.0.233 -d ttyp1

sniffit支持配置文件,通过配置文件可以提供更强大的嗅探控制。配置文件格式包含五个不同的字段,意义分别如下:

字段 1—select 或 deselect。指示sniffit捕捉后面条件指定的数据或者不捕捉。

字段 2—from, to, 或 both。 H指示sniffit捕捉来自、发往或双向的指定的主机的数据。

字段 3—host, port, or mhost。指定一个或多个目标主机。mhost可以用来指定多个主机,如192.168.0。

字段 4—hostname, port number, or multiple-host 列表。

Field 5—端口号。

例如:

select from host 192.168.0.1
select from host 192.168.0.1 80
select both port 23
sniffit将捕捉来自两个主机的telnet和www的所有信息。

select both mhosts 100.100.12.
deselect both port 80
select both host 100.100.12.2

sniffit将捕捉100.100.12.*相关除www以外的所有数据,但是显示100.100.12.2的www数据 








加载中
返回顶部
顶部