現役ペンテスト技術者が選ぶ 使えるセキュリティツール(22) 「パケットモニタリングツールの王道 −tcpdump」
このコーナーでは、現役のペネトレーションテスト技術者が、使えるセキュリティツールを、ペンテストの現場の視点から紹介します。
特集
特集
◆名称: tcpdump
◆配布制限: フリーウェア
◆商用版の有無: 無
◆類似ツール: windump
◆DL URL: http://www.tcpdump.org/
◆対応OS: Unix系OS、OSX
◆分野 パケットモニタリング
◆コマンド一覧:
(1) 基本項目と概要
tcpdumpは、コマンドライン上で利用することのできるパケットモニタリングツールである。Unix系OSには標準でインストールされていることも多いため、ご存知の方も多いのではないだろうか。パケットモニタリングツールの王道といっても過言ではないだろう。動作には、Linux系OSでは「libpcap」Windows系OSでは「Winpcap」が必要である。
Winpcapについては、下記URLからダウンロードしGUIのインストーラにしたがって進めるだけなので割愛させていただき、Libpcapのインストールを紹介させていただく。
Winpcap配布サイト
http://www.winpcap.org/
Libpcapはtcpdumpと同じサイトで配布されている。
Libpcap配布サイト
http://www.tcpdump.org/
公式サイトからダウンロードし、いきなりインストール。
といきたいところだが、予めOSのインストール時にlibpcapがインストールされている可能性があるため、まずは、libpcapがインストールされているかどうか、また、インストールされていればバージョンは何かということを調べておこう。
下記はlibpcapがインストールされている環境で実行した結果である。
# rpm -q libpcap
libpcap-0.8.3-10.RHEL4
上記では、libpcap-0.8.3-10.RHEL4がインストールされているということが分かる。
最新版をインストールしたい場合は、一旦rpmをアンインストールするか、パッケージのアップデートを行うと良いだろう。以下に、ソース(公式サイト配布)からのインストールとyumコマンドによるアップデートを示す。
【ソースからのインストール】
tar zxvf libpcap-0.9.8.tar.gz
cd libpcap-0.9.8
./configure
make
make install
【rpmコマンドによるアップデート】
# yum update libpcap
〜略〜
=============================================================================
Package Arch Version Repository Size
=============================================================================
Updating:
libpcap i386 14:0.8.3-12.el4_6.1 update 182 k
Transaction Summary
=============================================================================
Install 0 Package(s)
Update 1 Package(s)
Remove 0 Package(s)
Total download size: 182 k
Is this ok [y/N]: y
〜略〜
Updated: libpcap.i386 14:0.8.3-12.el4_6.1
Complete!
(2) コマンドサンプル
tcpdumpは、単純に実行するだけであれば以下の書式のように実行すればよい。
tcpdump -i モニタリングするNIC(Network Interface Card)
以下は、eth0を使用したパケットのモニタリングである
# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:11:54.470360 IP 10.100.0.143.ssh > 10.100.0.114.2065: P 4100698772:4100698888(116) ack 4199426591 win 7504
15:11:54.522279 IP 10.100.0.143.ssh > 10.100.0.114.2065: P 116:232(116) ack 1 win 7504
15:11:54.524329 IP 10.100.0.114.2065 > 10.100.0.143.ssh: . ack 232 win 63176
(注)使用可能なNICを調べたい場合は、「-D」オプションを用いればよい
# tcpdump -D
1.eth0
2.any (Pseudo-device that captures on all interfaces)
3.lo
詳しいコマンドやフィルタについては
http://grin.flagbind.jp/archives/2005/04/tcpdump.html
を参照いただきたい。
(3)使用例とTIPS、検査者の視点から
かなり、多くのオプションがあることがお分かりいただけたかと思う。初めのうちは、オプションの多さに戸惑うかと思うが、パケットを見たり、保存する程度であれば少ないオプションでも利用可能であることを考えると、初心者から熟練者まで幅広く使うことのできるツールではないだろうか。ちなみに、筆者が初めて触ったパケットモニタリングのツールはこの「tcpdump」だったが、今でも愛用している。
コマンドラインということで取っ付きにくい部分もあるかもしれないが、その分、安定した動作をしてくれる。後にこのツールを使っていて良かったと思う日がくることだと思う。
また、「tcpdump」のManpage(マニュアルページ)の説明には以下のように書かれている。
tcpdump は真偽値の 条件式 に一致するネットワークインターフェイス上のパケットのヘッダを表示する。
( http://www.linux.or.jp/JM/html/tcpdump/man1/tcpdump.1.html より引用)
Webアクセスのパケットを一度でも見たことがあれば分かるのだが、一度のアクセスでかなりの数のパケットを受信することになる。すべてログを残し、全てを見るといった場合には、問題ないのだが、CUI環境で調査したい目的のパケットがある場合には、多くの関係のないパケットは、ノイズ以外の何者でもない。
tcpdumpは、真偽値や条件式を駆使することで本来の力を発揮するといったも過言ではないだろう。
実際に使っていく上で学ぶことも多いと筆者は考えている。「習うより慣れろ」を体言しているツールではないだろうか。おそらく、このツールは非常に有用なツールだと認識することができたときが、慣れ始めなのではないだろうか。
筆者は過去に
tcpdump -i eth0 host www.yahoo.com and dst port 80
と実行し、「www.yahoo.co.jp」にアクセスしても一切、パケットの表示がされないが「www.yahoo.com」にアクセスしたときには…
【執筆:NTTデータ・セキュリティ株式会社 辻 伸弘】
【関連記事】
現役ペンテスト技術者が選ぶ 使えるセキュリティツール(21)
「パケットには真実がある − パケットモニタリング系ツール」
https://www.netsecurity.ne.jp/3_11732.html
──
※ この記事は Scan購読会員向け記事をダイジェスト掲載しました
購読会員登録案内 http://www.ns-research.jp/cgi-bin/ct/p.cgi?w02_ssw
《ScanNetSecurity》