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'と入力してください。
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]
オプション
-H: | gdd はそれぞれのセッションのためにテンポラリファイルを先生します(詳しくは-eオプションの解説を参照してください)。通常は、このテンポラリファイルはセッションがクローズする際に削除されますが、このオプションにより「テンポラリログファイル保持」フラグをセットすると、gddはテンポラリファイルの削除を行いません。 |
-p: | gddはキャプチャ対象パケットのTCPポート番号を指定することができます。例えばtelnetセッションをキャプチャしたい場合はポート23を指定します。全部で65536通りの組み合わせを指定することができます。 (例) gdd -p 23 -p 512-514 この例では、TCPポート23,512,513,514がキャプチャ対象として選択されます。'-'を指定することで、ポート番号のレンジを指定することができます。また、それぞれのポート番号指定にてログフォーマットを指定することができます。現在、gddは以下に示す4つのログファイルフォーマットタイプをサポートしています。
|
-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やソースファイルを参照してください。