1.概述
本文對Linux環(huán)境下黑客常常使用的幾種嗅探器進行詳細的分析,這些嗅探器往往被入侵者完成入侵以后種植在受害者服務器當中。這些嗅探器各自有不同的特點,有的只是簡單的用來捕捉用戶名和密碼,有的則非常強大可記錄所有的網絡數據流。本文將對下面幾種嗅探器進行分析:
linsniffer
linuxsniffer
hunt
sniffit
2.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
要運行l(wèi)insniffer,使用下面的命令:
$linsniffer
啟動以后linsniffer將創(chuàng)建一個空文件:tcp.log來存儲嗅探結果。
在測試中我創(chuàng)建一個名為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。
3.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提供了相對更詳細的內容。
4.hunt
hunt在你需要易于讀取的結果室的另外一種選擇。它具有直觀的命令追蹤和會話監(jiān)錄功能。
作者:Pavel Krauz
條件: C, IP頭, Linux 2.0.35+, 支持LinuxThreads的GlibC 2.0.7
配置文件:無
位置:http://www.cri.cz/kra/index.html
安全歷史:無
注:作者提供有動態(tài)鏈接和靜態(tài)連接的二進制發(fā)布。
hunt是以tar.gz的格式發(fā)布的,文件名為hunt-1_3bin.tgz。首先需要解壓縮:
$tar xvfz hunt-1_3bin.tgz
則hunt被解壓縮到新創(chuàng)建的目錄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
靜態(tài)二進制發(fā)布為hunt_static,推薦使用該版本,因為有時候從源代碼編譯可能會出現缺少一些庫的錯誤。使用下面命令來執(zhí)行hunt:
$hunt_static
運行hunt你將驚奇地發(fā)現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:2
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/oth > 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:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:11:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0
perator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/home/ftp:
man:x:15:15:Manuals Owner:/:
majordom:x:16:16:Majordomo:/:/bin/false
postgres:x:17:17
ostgres User:/home/postgres:/bin/bash
nobody:x:65534:65534:Nobody:/:/bin/false
anon:x:100:100:Anonymous:/home/anon:/bin/bash
hapless:x:500:500:Caldera OpenLinux User:/home/hapless:/bin/bash
[hapless@linux2 hapless]$
可以的看到,hunt的輸出非常直觀明了,易于閱讀。然而hunt還提供有以下工具:
允許指定任意一個感興趣的連接,而不是記錄所有的東西。
允許指定任意一個連接,而不僅僅是以SYN剛剛開始的連接。It offers spoofing tools.
提供活動會話劫持。
其特有的特色功能和易于使用的界面,使得它對于linux入門者是一個非常好的選擇。
5.sniffit
sniffit是針對哪些需要了解更多信息的人的。
作者:Brecht Claerhout
條件:C, IP 頭文件
配置文件:見后面的討論
安全歷史:無
注:sniffit功能非常強大,但是不易學習使用。
$tar xvfz sniffit_0_3_7.tar.gz
$./configure (配置命令將檢測系統(tǒng)是否符合要求)
$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協議數據報監(jiān)聽器,其能給出關于這些協議數據報非常詳細的技術信息(SEQ,ACK,TTL,Windows,....)及符合監(jiān)聽條件的數據報的各種不同的格式(hex或純文本)
sniffit缺省的可以處理以太和PPP設備。但是也可以用在其他的設備上(參見README.FIRST和sn_config.h)。sniffit可以進行方便的配置實現對接入的數據報進行過濾。而配置文件允許非常確定地指定需要處理的數據報。 sniffit同樣有一個交互式界面。
選項:
-v
顯示版本信息
-t 目標地址
只處理目的地址為"目標地址"的數據,和 '-s' '-c' '-v' 選項不兼容
源地址
只處理發(fā)送地址為"源地址"的數據,和'-t' '-c' '-v' 選項不兼容
-c 配置文件
在配置文件中對包過濾規(guī)則進行定義,和-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字節(jié)),每次的連接的前sniflen個字節(jié)被記錄下來。
-F device
指定監(jiān)聽某個設備的數據如eth0,eth1等
-D tty
所有的記錄信息都被輸出到指定的tty
舉例:
要監(jiān)聽從192.168.0.233發(fā)往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為一臺運行l(wèi)inux的服務器
如果希望將輸出定向到一個文件,則
[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發(fā)給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捕捉來自、發(fā)往或雙向的指定的主機的數據。
字段 3—host, port, or mhost。指定一個或多個目標主機。mhost可以用來指定多個主機,如192.168.0。
字段 4—hostname, port number, or multiple-host 列表。
字段 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數據。
本文對Linux環(huán)境下黑客常常使用的幾種嗅探器進行詳細的分析,這些嗅探器往往被入侵者完成入侵以后種植在受害者服務器當中。這些嗅探器各自有不同的特點,有的只是簡單的用來捕捉用戶名和密碼,有的則非常強大可記錄所有的網絡數據流。本文將對下面幾種嗅探器進行分析:
linsniffer
linuxsniffer
hunt
sniffit
2.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
要運行l(wèi)insniffer,使用下面的命令:
$linsniffer
啟動以后linsniffer將創(chuàng)建一個空文件:tcp.log來存儲嗅探結果。
在測試中我創(chuàng)建一個名為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。
3.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提供了相對更詳細的內容。
4.hunt
hunt在你需要易于讀取的結果室的另外一種選擇。它具有直觀的命令追蹤和會話監(jiān)錄功能。
作者:Pavel Krauz
條件: C, IP頭, Linux 2.0.35+, 支持LinuxThreads的GlibC 2.0.7
配置文件:無
位置:http://www.cri.cz/kra/index.html
安全歷史:無
注:作者提供有動態(tài)鏈接和靜態(tài)連接的二進制發(fā)布。
hunt是以tar.gz的格式發(fā)布的,文件名為hunt-1_3bin.tgz。首先需要解壓縮:
$tar xvfz hunt-1_3bin.tgz
則hunt被解壓縮到新創(chuàng)建的目錄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
靜態(tài)二進制發(fā)布為hunt_static,推薦使用該版本,因為有時候從源代碼編譯可能會出現缺少一些庫的錯誤。使用下面命令來執(zhí)行hunt:
$hunt_static
運行hunt你將驚奇地發(fā)現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:2
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/oth > 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:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:11:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0

games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/home/ftp:
man:x:15:15:Manuals Owner:/:
majordom:x:16:16:Majordomo:/:/bin/false
postgres:x:17:17

nobody:x:65534:65534:Nobody:/:/bin/false
anon:x:100:100:Anonymous:/home/anon:/bin/bash
hapless:x:500:500:Caldera OpenLinux User:/home/hapless:/bin/bash
[hapless@linux2 hapless]$
可以的看到,hunt的輸出非常直觀明了,易于閱讀。然而hunt還提供有以下工具:
允許指定任意一個感興趣的連接,而不是記錄所有的東西。
允許指定任意一個連接,而不僅僅是以SYN剛剛開始的連接。It offers spoofing tools.
提供活動會話劫持。
其特有的特色功能和易于使用的界面,使得它對于linux入門者是一個非常好的選擇。
5.sniffit
sniffit是針對哪些需要了解更多信息的人的。
作者:Brecht Claerhout
條件:C, IP 頭文件
配置文件:見后面的討論
安全歷史:無
注:sniffit功能非常強大,但是不易學習使用。
$tar xvfz sniffit_0_3_7.tar.gz
$./configure (配置命令將檢測系統(tǒng)是否符合要求)
$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協議數據報監(jiān)聽器,其能給出關于這些協議數據報非常詳細的技術信息(SEQ,ACK,TTL,Windows,....)及符合監(jiān)聽條件的數據報的各種不同的格式(hex或純文本)
sniffit缺省的可以處理以太和PPP設備。但是也可以用在其他的設備上(參見README.FIRST和sn_config.h)。sniffit可以進行方便的配置實現對接入的數據報進行過濾。而配置文件允許非常確定地指定需要處理的數據報。 sniffit同樣有一個交互式界面。
選項:
-v
顯示版本信息
-t 目標地址
只處理目的地址為"目標地址"的數據,和 '-s' '-c' '-v' 選項不兼容
源地址
只處理發(fā)送地址為"源地址"的數據,和'-t' '-c' '-v' 選項不兼容
-c 配置文件
在配置文件中對包過濾規(guī)則進行定義,和-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字節(jié)),每次的連接的前sniflen個字節(jié)被記錄下來。
-F device
指定監(jiān)聽某個設備的數據如eth0,eth1等
-D tty
所有的記錄信息都被輸出到指定的tty
舉例:
要監(jiān)聽從192.168.0.233發(fā)往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為一臺運行l(wèi)inux的服務器
如果希望將輸出定向到一個文件,則
[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發(fā)給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捕捉來自、發(fā)往或雙向的指定的主機的數據。
字段 3—host, port, or mhost。指定一個或多個目標主機。mhost可以用來指定多個主機,如192.168.0。
字段 4—hostname, port number, or multiple-host 列表。
字段 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數據。