web-dev-qa-db-ja.com

実用的なTcpdumpの例?

Tcpdumpの例をできるだけ多く収集したい!

例:eth0でFTPパスワードをフィルタリングする方法。 OR HTTP404エラーなどをフィルタリングする方法。

6
LanceBaynes

フィルタリングは行いませんが、この例では、便利な連続パケットスニファを作成します。

tcpdump -n -C 128 -W 100 -z /home/user/compress_logs.pl -i br0 -w /home/user/packetlogs/packetlog.pcap &
  • -n IPの逆引きを行わない、ポート番号をテキストの説明に変換しない、MACアドレスを名前に変換しないなど。
  • -C 128128,000,000バイトごとにキャプチャファイルをローテーションする
  • -W 100ローテーションされるキャプチャファイルの数を制限します(-Cを参照)。
  • -z /home/user/compress_logs.plスクリプトを実行compress_logs.pl回転されたキャプチャファイルごとに
  • -i br0インターフェースでのキャプチャbr0
  • -w /home/user/packetlogs/packetlog.pcapファイル名を使用/home/user/packetlogs/packetlog.pcap
  • &これはbashによって解析されます。コマンドをバックグラウンドで(非同期に)実行する必要があることを示します

それを/etc/rc.localに入れて、ブート時に実行します。インターフェイスbr0上のすべてのパケットをキャプチャします。これは、タップとしてインラインで2つのインターフェイス、またはパッシブタップにフックされた2つのインターフェイス、またはミラーリングされたスイッチポートにフックされた1つのインターフェイスです(実際には3つすべてを使用しました)。 )

最大128MBのファイルを書き込み、最大100個まで自動的にローテーションします。 128MBのデータをキャプチャすると、ファイルを閉じて新しいファイルを開き、古いファイル名を引数として指定されたコマンドをフォークします。この場合、IDSからすばやく転送するために前のキャプチャファイルを圧縮する小さなPerlスクリプトです。サーバ。

これは、接続を長時間(1日か2日など)監視する必要があり、戻って特定の時間に発生したイベントを見つける必要がある場合に使用します。小さなファイルは、1つの大きなpcapファイルよりもWiresharkで処理する方がはるかに簡単です。

4
shiftycow

HTTPのみをキャプチャPOSTデータ:

tcpdump tcp[2:2] = 80 and \(tcp[20:4] = 1347375956 
or tcp[24:4] = 1347375956 
or tcp[28:4] = 1347375956 
or tcp[32:4] = 1347375956 
or tcp[36:4] = 1347375956 
or tcp[40:4] = 1347375956 
or tcp[44:4] = 1347375956 
or tcp[48:4] = 1347375956 
or tcp[52:4] = 1347375956 
or tcp[56:4] = 1347375956 
or tcp[60:4] = 1347375956\)

少し手に負えないが確かに便利。 tcp[2:2]キャプチャ、TCPヘッダーの位置2から開始、2バイト(ポート、ポート80はHTTPトラフィック用)。

次に、TCPデータの最初の4バイトを 'POST'と比較します。TCPヘッダーは最小20(10進数)バイトですが、= TCPオプションは0から40バイトまでの可変長(32ビット境界に埋め込まれ、から始まる)で、20から60(10進数)まで4バイトごとにテストする必要があります。最後に1347375956は、ASCII text'POST 'のbase10ビッグエンディアンバイナリ表現です。他のHTTPタイプには、以下の値を使用してください。

  • 取得する 1195725856(4バイトと比較しているために必要な「GET」の後のスペースを含む)
  • 役職 1347375956
  • プット1347769376(スペースを含む)
  • 削除1145392197(実際には「DELE」だけ)

他のタイプの場合は、4 ASCII文字を16進数に変換し(正確に4文字を使用する必要があります)、16進数を1つの数値として扱い、10進数に変換します。たとえば、POSTは50 4f 53 54504f535410進数に変換されるのは1347375956

4
Codebling

フィルター作成に関するチートシート:

http://staff.washington.edu/dittrich/talks/core02/tools/tcpdump-filters.txt

1
Codebling

すべてをファイルにキャプチャします(後でWiresharkなどで分析できるようにします)。

Sudo tcpdump -i en0 -s0 -w ~/capture.pcap
  • -i en0インターフェースでのキャプチャen0
  • -s0パケット全体を使用します(切り捨てないでください--snarf 0)
  • -w ~/capture.pcapパケットキャプチャファイルへの書き込み~/capture.pcap
1
Spiff

OpenWRTルーターでクライアントのDNS要求を監視する場合:

tcpdump -n -i br-lan dst port 53
  • -n IPの逆引き参照を実行したり、ポート番号をテキストの説明に変換したり、MACアドレスを名前に変換したりしないでください。
  • -i br-lanインターフェースでのキャプチャbr-lan
  • dst port 53フィルター宛先ポート53、DNSサービスのポート
0
LanceBaynes