Security Tips
 

Network Grepで手軽なパケットキャプチャ

宮本 久仁男
2004/6/16

 パケットキャプチャのツールとしては、tcpdumpやEtherealなどがよく使われるが、パケットに含まれるテキストデータの内容を基にキャプチャしたいなどの場合は、これらのツールよりも Network Grep(ngrep)と呼ばれるツールを用いる方が効率的な場合がある。

●ソースコードの入手、コンパイル

 ngrepの公式サイトからアーカイブを入手し、コンパイルを行う。最新版は、5月9日時点で1.42である。

Network Grep
http://ngrep.sourceforge.net/

 コンパイルに当たっては、libpcapが必要だが、パケットキャプチャにtcpdumpやEtherealを活用している環境であれば、すでにlibpcapは入っていると考えて差し支えない。必要であれば、UNIX版はtcpdump公式サイトから、Win32版はWinPcap公式サイトから入手可能だ。

tcpdump
http://www.tcpdump.org/

WinPcap
http://winpcap.polito.it/

 Debian GNU/Linux 3.0を使っている場合、apt-get install libpcap-devを実行して、開発用ライブラリを導入しておこう。なお、Debianの場合、ngrepは普通にapt-get install ngrepとしてインストールできるが、バージョンが若干古い。

 コンパイルは通常どおりにアーカイブを展開した後、./configure + makeで可能だ。また、Win32版バイナリもngrepの公式サイトから入手可能だが、WinPcapをあらかじめインストールしておく必要があるので注意が必要だ。

●使用可能な機能

 ngrepは、ネットワークキャプチャプログラムとして基本的な機能を備えている。特徴的な機能は以下に挙げるものだろう。

and/or/notによるポートなどの条件指定

 ngrep not port 80とすることで、80番ポートに対するもの「以外」のパケットをキャプチャ、表示することが可能である。

正規表現によるパケット内のデータマッチングおよび表示

 ngrep [a-zA-Z] port 23とすることで、パケット内にアルファベットが入る場合にパケットを表示する。

表示の形式を選べる

 ngrep v1.42で使用可能になった機能だ。ngrep -W byline port 80と記述することで、HTTPリクエストやリプライの内容(特にヘッダなど)を見やすくすることが可能になる。以下に例を示す。

#########
T 192.168.0.2:2350 -> 192.168.0.1:80 [AP]
GET /doc/apache/ HTTP/1.0.
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwav
e-flash, */*.
Referer: http://kid.todo.gr.jp/.
Accept-Language: ja.
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1).
Via: 1.0 proxy.example.net:8080 (Squid/2.4.STABLE7).
X-Forwarded-For: 192.168.0.2.
Host: kid.todo.gr.jp.
Cache-Control: max-age=259200.
Connection: keep-alive.
.

##
T 192.168.0.1:80 -> 192.168.0.2:2350 [AP]
HTTP/1.1 403 Forbidden.
Date: Sat, 08 May 2004 21:43:40 GMT.
Server: Apache/1.3.26 (Unix) Debian GNU/Linux PHP/4.1.2.
Connection: close.
Content-Type: text/html; charset=iso-8859-1.
.
<!Document HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>403 Forbidden</TITLE>
</HEAD><BODY>
<H1>Forbidden</H1>
You don't have permission to access /doc/apache/
on this server.<P>
<HR>
<ADDRESS>Apache/1.3.26 Server at kid.todo.gr.jp Port 80</ADDRESS>
</BODY></HTML>

####


Security Tips Index



Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間