2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

linsnifferでTCP/IP通信を盗聴する!

dsniff に続きSniffer編で行こうと思う。このlinsnifferはCのソースでおっこちてるので、gccでコンパイルが必要だ。盗聴できるプロトコルは、ソースから眺めると以下のように、
if(ntohs(tcp->dest)==21) p=1; /* ftp / if(ntohs(tcp->dest)==23) p=1; / telnet / / if(ntohs(tcp->dest)==110) p=1; pop3 / / if(ntohs(tcp->dest)==109) p=1; pop2 / if(ntohs(tcp->dest)==143) p=1; / imap2 / if(ntohs(tcp->dest)==513) p=1; / rlogin / / if(ntohs(tcp->dest)==106) p=1; poppasswd */
7つのプロトコルが盗聴可能のようだ。ソース自体、短いC言語のプログラムなので初心者が解読すれば勉強になりそうだ。何回も言うが、この手のツールの紹介の目的は初心者鯖管理人にSnifferの怖さを解ってもらうために、あえてインストールや使い方を説明している。決して悪用してはならない!

インストール・テスト環境:
wirehork:~# more /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 7
model name : Pentium III (Katmai)
stepping : 3
cpu MHz : 598.663
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov p
at pse36 mmx fxsr sse up
bogomips : 1198.45
clflush size : 32

wirehork:~# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX – 82443BX/ZX/DX Host bridge (rev 03)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX – 82443BX/ZX/DX AGP bridge (rev 03)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02)
00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
01:00.0 VGA compatible controller: nVidia Corporation NV5 [RIVA TNT2/TNT2 Pro] (rev 11)

wirehork:~# uname -a
Linux wirehork 2.6.21-2-686 #1 Debian GNU/Linux


1.linsnifferのゲット
linsnifferは、 ここ でゲットする。ここでは、/tmpディレクトリをワーク領域とする。

wirehork:~/# cd /tmp

wirehork:/tmp# wget http://www.kozupon.com/download/linsniffer.c


2.コンパイルする
gccを使ってコンパイルする。
wirehork:/tmp# gcc -o linsniffer linsniffer.c
標準ライブラリを使っているので、ワーニングは出てもエラーは出ないと思う。

コンパイル後のファイルを確認してみる。
wirehork:/tmp# ls -al
total 36
drwxrwxrwt 2 root root 4096 2007-11-20 15:10 .
drwxr-xr-x 22 root root 4096 2007-11-14 11:00 ..
-rwxr-xr-x 1 root root 11144 2007-11-20 15:01 linsniffer
-rw-r–r– 1 root root 5920 2001-01-25 09:58 linsniffer.c
-rw-r–r– 1 root root 6 2007-11-20 15:02 sniff.pid
-rw-r–r– 1 root root 322 2007-11-20 15:06 tcp.log

盗聴用のlinsnifferの出力ファイルは、tcp.logだ。


3.動かす
常駐させる。
wirehork:/tmp# ./linsniffer &

プロセスを確認してみる。
wirehork:/tmp# ps -ef
省略
root 25554 25520 0 15:02 pts/0 00:00:00 ./linsniffer
root 25629 25520 0 15:23 pts/0 00:00:00 ps -ef


4.実際にネットワークに流れるパケットを盗聴してみる
■ linsnifferを動かすとetherカードのI/Fが Promiscモード (ネットワーク上のパケットを自分宛以外のものも受け取ってしまうお構いなしモード、 ここ に詳しく書いてある)となり非常に物騒なI/F状態となる。以下に、実際にPromiscモードとなるところを確認してみる。

linsnifferの起動前状態のI/F。
wirehork:/tmp# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:90:CC:07:B0:49
inet addr:192.168.0.9 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::290:ccff:fe07:b049/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11206932 errors:8 dropped:0 overruns:0 frame:0
TX packets:3800702 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1471609003 (1.3 GiB) TX bytes:2967353062 (2.7 GiB)
Interrupt:10 Base address:0x1000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3342427 errors:0 dropped:0 overruns:0 frame:0
TX packets:3342427 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22483616 (21.4 MiB) TX bytes:22483616 (21.4 MiB)

linsnifferを起動する。
wirehork:/tmp# ./linsniffer &
[1] 25342

起動後のI/F状態。
wirehork:/tmp# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:90:CC:07:B0:49
inet addr:192.168.0.9 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::290:ccff:fe07:b049/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:11207073 errors:8 dropped:0 overruns:0 frame:0
TX packets:3800746 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1471625306 (1.3 GiB) TX bytes:2967358760 (2.7 GiB)
Interrupt:10 Base address:0x1000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3342427 errors:0 dropped:0 overruns:0 frame:0
TX packets:3342427 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22483616 (21.4 MiB) TX bytes:22483616 (21.4 MiB)
上記の赤字のごとくPromiscモードとなっている。

このPromiscモードを解除するには、
wirehork:/tmp# ifconfig eth0 -promisc

wirehork:/tmp# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:90:CC:07:B0:49
inet addr:192.168.0.9 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::290:ccff:fe07:b049/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11207175 errors:8 dropped:0 overruns:0 frame:0
TX packets:3800778 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1471636488 (1.3 GiB) TX bytes:2967363244 (2.7 GiB)
Interrupt:10 Base address:0x1000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3342427 errors:0 dropped:0 overruns:0 frame:0
TX packets:3342427 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22483616 (21.4 MiB) TX bytes:22483616 (21.4 MiB)

注:上記のように、盗聴する上で、linsnifferが稼働中はPromiscモードとなる必要があるが、linsnifferを停止させた場合はPromiscモードも解除しなくてはならない、しかし、linsnifferを停止させてもPromiscモードは解除されない。したがって、上記のような解除コマンドで解除すること。

■ linsnifferの盗聴記録を読む。
この盗聴記録は、linsnifferを仕掛けたホストwirehorkへWindowsクライアント(192.168.0.25)からtelnet通信を仕掛けてコネクトした時の記録である。
但し、telnetに関しては仕掛けたホストにWindowsクライアントからloginしたときのみに、パケットの盗聴が可能。

wirehork:/tmp# more tcp.log
Exiting…
192.168.0.25 => wirehork.xxxxxxxxx.co.jp [23]
#’PANSI!hoge         ←これがユーザ
hogeabcd           ←これがパスワード

—– [Timed Out]
Exiting…

192.168.255.2 => wirehork.xxxxxxxxx.co.jp [21]
USER hoge
PASS hogeabcd
QUIT

—– [FIN]

192.168.255.6 => wirehork.xxxxxxxxx.co.jp [21]
%%)X%)\%s)\USER hoge
%t)%j)PASS hogeabcd
%n)%n)SYST
%x)%-)QUIT
%-)

Port23はtelnetでPort21はFTPである。全て、恐ろしいことに、はっきりと認証データが盗めている。

以上

コメント