[English]


Ethernet packet sniffer

GreedyDog2.4 Online Manual

UNYUN <unyun@shadowpenguin.org>
Shadow Penguin Security <http://www.shadowpenguin.org>


1. はじめに

 GreedyDog (gdd) はLinux、FreeBSD、NetBSD、OpenBSD、Solaris2、SunOS4、AIX、HP-UX、IRIX、MacOSX、およびWin32用イーサーネットパケットスニファです。gddはそれぞれのTCPセッションのストリームを維持し、ログファイルに書き込みます。このため、セッションストリームを作成するために細切れになったパケットを再構築する必要がなく、ログを簡単に分析することができます。このため、telnetなど比較的大きいセッションをロギングする場合有効となるでしょう。システム管理者はリモートユーザーのtelnetセッションをコネクション終了までのストリーム単位で見ることができ、管理下のネットワークから他のネットワークにクラッカーがtelnetした場合もgddは他のネットワークを含む全ての行動を一ストリームとしてロギングすることができます。また、「grep&アクション機能」により"cat /etc/shadow"などの怪しい行動をストリーム単位で監視し、指定されたアクションを実行させることができるIDS機能を有します。

2. ダウンロードとインストール

 GreedyDogは、Shadow Penguin Securiy のwebページより入手することができます。

現在、以下に示すプラットフォームでその動作が確認されています。

 ソースディレクトリ上で以下を実行するとgddの実行ファイルとmanpageを作成することができます

#./configure
#make
#make install

※ 実行ファイルは/usr/local/binに作成されます。
※ manpageは/usr/local/man/man1に作成されます。

 システムにlibpcapがインストールされている場合、以下に示すメッセージがconfigure実行時に表示されます。

libpcap is detected on this system.
Do you use libpcap to capture packet? (y/n)
 gddはパケットキャプチャルーチンを内蔵していますが、libpcapもサポートしています。libpcapを利用する場合は、'y'と入力してください。

 もしコンパイル中にエラーが出力された場合はコンパイラ出力のログファイルをwebmaster@shadowpenguin.orgにお送りください。

[Win32]
Visual C++6.0にてビルド可能です。

[HP-UX 10.20]
gddの動作するホストから送信されるパケットがキャプチャできない場合は、PHNE_18173を適用し以下のコマンドを実行してください。
echo 'lanc_outbound_promisc_flag/W1' | /usr/bin/adb -w /stand/vmunix /dev/kmem
上記を/sbin/init.d/lan等に指定することもできます。

3. 利用法

 gddはrawソケットを利用するため実行にはroot権限が必要です。
 gddはオプション無しで起動することができます。オプション無しで起動した場合はデフォルト設定で実行されます。他のポートや他のインタフェースをキャプチャ対象とする場合はオプションをコマンドライン引数で指定する必要があります(ポート番号、インタフェース、ログファイル、ログフォーマットなどを指定することができます)。オプションの利用法の概要は、"-h"オプションを指定することにより表示されます。

# ./gdd -h
Ethernet Packet Sniffer - GreedyDog 2.4
Developed by Shadow Penguin Security
http://www.shadowpenguin.org

Usage: gdd [options]

Options:
  -h               : print this help message
  -v               : show version
  -x               : disable startup message
  -H <on/off>      : hold temporary log
  -p <port>        : destination and source port
  -d <IPaddress>   : destination IP address
  -s <IPaddress>   : source IP address
  -N <nic_name>    : nic_name
  -D <nit_dev>     : nit_device
  -l <log_file>    : logfile
  -t <tmp_logdir>  : temporary log directory
  -e <err_logfile> : error logfile
  -a <action>      : set action
  -m <mode>        : set mode
  -f <config_file> : read configuration file

* If you don't specify any options, gdd reads configuration
  written in "/usr/local/etc/gdd/gdd.conf".
* If configuration file is read by "-f" option, all options
  which are specified at commandline are ignored.
[Win32]
gddをオプション無しで実行した場合、GUIモードで起動します。詳しくは、win32gui-ja.htmlを参照してください。
[Win32]
実行にはAdministrator権限が必要です。

オプション

-H: gdd はそれぞれのセッションのためにテンポラリファイルを先生します(詳しくは-eオプションの解説を参照してください)。通常は、このテンポラリファイルはセッションがクローズする際に削除されますが、このオプションにより「テンポラリログファイル保持」フラグをセットすると、gddはテンポラリファイルの削除を行いません。
-p: gddはキャプチャ対象パケットのTCPポート番号を指定することができます。例えばtelnetセッションをキャプチャしたい場合はポート23を指定します。全部で65536通りの組み合わせを指定することができます。

(例) gdd -p 23 -p 512-514

 この例では、TCPポート23,512,513,514がキャプチャ対象として選択されます。'-'を指定することで、ポート番号のレンジを指定することができます。また、それぞれのポート番号指定にてログフォーマットを指定することができます。現在、gddは以下に示す4つのログファイルフォーマットタイプをサポートしています。
  • テキストモード
     ログフォーマットが指定されていない場合、このモードがデフォルトとなります。このログフォーマットは以前のバージョンであるGreedyDog1.xと互換であり、キャプチャされたパケットはクリアテキスト(表示不可能な文字はロギングされない)でロギングされます。このモードはポート番号の先頭に't'を付加した場合に選択されます。
    (例) gdd -p t23

  • タグテキストモード
     このモードを指定するとXML調フォーマットのログを出力します。テキストモードではパケットの方向に関する情報(クライアント→サーバ、クライアント←サーバ)はロギングされませんが、このモードではタグとして方向情報をロギングします。表示不可能な文字は文字参照(16進数文字列)としてロギングされます。このモードはポート番号の先頭に'g'を付加した場合に選択されます。
    (例) gdd -p g512-514

  • HTMLモード
     このモードでは、HTMLファイルがログファイルとして生成されます。方向情報はbold、もしくはnon-noldで表されます。入力パケット(クライアントから送信されたパケット)はboldとなります。また、表示不可能な文字はロギングされません。このモードはポート番号の先頭に'h'を付加した場合に選択されます。
    (例) gdd -p h23

  • バイナリモード
     16進数ダンプテキストファイルフォーマットです。方向情報はそれぞれのログのヘッダにロギングされ、全てのパケットバイトは16進数ダンプ文字列としてロギングされます。このモードはポート番号の先頭に'b'を付加した場合に選択されます。
    (例) gdd -p b22

  • ノンフィルタモード
     RAWファイルフォーマットです。全てのキャラクタはフィルタされることなくログファイルに記録されます。
    (例) gdd -p n80
-d,-s: gddはキャプチャ対象パケットの送信元IPアドレスと送信先IPアドレスを指定することができます。例えば、"192.168.0.3"から送信されるパケットのみをキャプチャしたい場合は発信元IPアドレス(-s)を"192.168.0.3/32"と指定します。IPアドレス指定のフォーマットを以下に示します。

"aaa.bbb.ccc.ddd/mask"

"192.168.0.*" (*は「全て」を意味する)から送信されるパケットをキャプチャしたい場合は、発信元IPアドレスを"192.168.0.0/24"と指定します。
(例) gdd -s 192.168.0.*/24
-N: ネットワークインタフェースを指定します。このオプションが指定されていない場合は、デフォルトネットワークインタフェースが自動的に選択されます。他のインタフェースを制定したい場合は、-Nオプションにてインタフェースを指定します。
[Win32] ネットワークインタフェースに割り当てられているIPアドレスを指定してください。
(例)
gdd -N eth1
-D: ネットワークインタフェースタップを指定します。"/dev/bpf"がデフォルトで選択されますが、他のインタフェースタップを制定したい場合は、-Dオプションにてインタフェースを指定します。Linuxではこのオプションは無視されます。
-l: ログファイルのファイル名、ディレクトリを指定します。デフォルトでは"/var/log/gdd/log"が選択されますが、このパスを変更する場合、-lオプションにてパスを指定してください。
(例)
gdd -l /var/log/gddlog

注意: 非rootユーザーが読み書き可能など、ログファイルのパーミッションが不適切である場合、gddはエラーメッセージを出力し、停止します。ログファイルのパーミッションは600(-rw-------) owner=root である必要があります。
-t: gddは、それぞれのセッションのテンポラリログファイルをテンポラリディレクトリに格納します。デフォルトでは"/var/log/gdd/tmp"が選択されますが、このディレクトリを変更する場合、-tオプションにてディレクトリパスを指定してください。
(例)
gdd -t /var/log/gddtemp

注意: 非rootユーザーがテンポラリディレクトリ上のファイルを読み書き可能であるなど、ディレクトリのパーミッションが不適切である場合、gddはエラーメッセージを出力し、停止します。
-e: エラーログファイルのファイル名、ディレクトリを指定します。デフォルトでは"/var/log/gdd/errlog"が選択されますが、このパスを変更する場合、-eオプションにてパスを指定してください。
(例)
gdd -l /var/log/gdderrlog

注意: 非rootユーザーが読み書き可能など、エラーログファイルのパーミッションが不適切である場合、gddはエラーメッセージを出力し、停止します。エラーログファイルのパーミッションは600(-rw-------) owner=root である必要があります。
-a "action"を指定することができます。gddは指定されたパターンがセッションストリーム中に存在した場合に指定されたアクションを実行することができます。"action"は、指定されたパターンが含まれる場合に実行される"実行ファイル"、およびegrepに指定するための"パターン"から構成されています。"action"のフォーマットを以下に示します。

実行ファイル:パターン

gddは指定された"パターン"でテンポラリセッションファイルに対しegrepを行います。egrepが指定されたパターンを見つけた場合、gddは指定された実行ファイルを実行します。このオプションの指定例については/usr/local/etc/gdd/gdd.conf.sample を参照してください。
[Win32] Win32にてこの機能を利用する場合、Win32用grepを予め入手する必要があります。詳細は「4. Win32での注意事項」を参照してください。
-m gddの動作モードを決定します。現在、gddは3つのモードをサポートしています。dump modeでは、gddは条件を満たす全てのパケットダンプをコンソールに出力します。debug modeでは、gdd開発者やテスター用にデバッグ情報をコンソールに出力します。secure modeでは、gddはsniffした全てのパケットのシーケンス番号を分析します。spoofされたIPアドレスを含むパケットをsniffした場合、gddはシーケンス番号チェックによりそのパケットを破棄します。もしこの機能を利用しなかった場合、gddはspoofされたパケットに騙されることになり、偽造ログ問題や偽セッションクローズ問題といったセキュリティ問題が発生します。しかし、この機能は現在開発途上であり、secureオプションによりこの機能を有効にするとgddが不安定になる可能性があります。もしgddをセキュリティ用途に利用する場合はこのオプションを有効にすることをお勧めします。個人的な実験やペネトレーションテストといった用途で利用する場合はこのオプションを無効にすると良いでしょう。

(例 : debug,secure,dumpモードを有効にする)
gdd -m debug,seucre,dump
-f 指定された設定ファイルにてgddのパラメータを指定することができます。オプションが指定されなかった場合、gddは /usr/local/etc/gdd/gdd.conf を読み込みます。
[Win32]カレントディレクトリのgdd_win32.confが読み込まれます。
設定ファイルが -f オプションで読み込まれた場合、コマンドラインにて指定されたパラメータは全て無視されます。詳細は、/usr/local/etc/gdd/gdd.conf.sample を参照してください。

4. Win32での注意事項

 gddはWindows2000、WindowsXpにて動作します。
 Win32の場合、デフォルトディレクトリ(/usr/local/gddディレクトリ)は、カレントディレクトリとなります。Win32版gddは、ディレクトリ、ファイルのパーミッションチェックは行われません。また、ディレクトリ指定において'/'文字は指定できません。'\'文字を指定してください。
 -Nオプションにてネットワークインタフェースを指定する場合はネットワークインタフェースに割り当てられているIPアドレスを指定してください。
 gddをオプション無しで実行した場合、GUIモードで起動します。

5. 注意事項

 現在、おそらくこのプログラムにはいくつかのバグが存在します。gddを動作させることによりリモート、あるいはローカルから何らかの攻撃が成功するという可能性(特にDoSアタック等)があります。このプログラムは自己責任において利用してください。このプログラムによって引き起こされるあらゆる結果に対して我々は責任を負いません。
 もしバグを発見したり改善提案等をお持ちの場合はwebmaster@shadowpenguin.orgまでご連絡ください。
 また、我々は、このプログラムはその性質上システムクラッキング目的で利用することができることを認識しています。本プログラムの公開を維持するためにも、くれぐれもシステムクラッキング目的で利用しないでください。

6. ライセンス

 本プログラムはフリー・ソフトウェアです。あなたは、Free Software Foundation が公表したGNU 一般公有使用許諾の「バージョン2」或いはそれ以降の各バージョンの中からいずれかを選択し、そのバージョンが定める条項に従って本プログラムを再頒布または変更することができます。本プログラムは有用とは思いますが、頒布にあたっては、市場性及び特定目的適合性についての暗黙の保証を含めて、いかなる保証も行ないません。詳細についてはGNU一般公有使用許諾書をお読みください。

7. 謝辞

GreedyDog2開発にご協力頂いた以下の方々に感謝致します。

gddのパッケージには以下に示すソフトウエアが含まれています。各ソフトウエアのreadmeやソースファイルを参照してください。


Copyright(C)1998-2002 The Shadow Penguin Security
Wembaster <webmaster@shadowpenguin.org>
http://www.shadowpenguin.org