Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

tcpdumpとtcpreplayとtcprewriteと他。

10,837 views

Published on

Published in: Technology
  • Be the first to comment

tcpdumpとtcpreplayとtcprewriteと他。

  1. 1. tcpdump と tcpreplay とtcprewriteと他。 #ssmjp 2013/03/29 @togakushi
  2. 2. パケット好きですか?● tcpdump ってコマンドで好きなだけみれま す!● 要 root – NIC が promiscuous mode へ – 流れてきたパケットは無差別に拾うモード – 通常は自分宛てのパケットしか処理しない
  3. 3. 切り分けに超役立つ● ちゃんと相手から届いてるかわかる● 誰から送られてきてるかわかる● 暗号化されてるかわかる
  4. 4. インテリジェントなスイッチ● MAC アドレスの学習 – 接続されたポートの先に何が繋がってるか知って いる – tcpdump を動かすマシンから見ると、自分宛のパ ケットしか流れてこない><● 気になるあの子 ( サーバ ) のパケットも見た い! (注:他人の通信を覗くのはダメですよ)
  5. 5. こんなこともあろうかと!● ミラーポート – 超賢いスイッチはパケットをコピーして複数のポ ートに流せる● タップ – 物理的に出力を 2 つに分ける
  6. 6. タップの仕組み1つの送信 (TD) を 2 つの受信 (RD) に繋ぐだけ! 1:TD+ 1:TD+ HOST-BHOST-A 2:TD- 2:TD- 3:RD+ 3:RD+ 6:RD- 6:RD- 3:RD+ 6:RD- 3:RD+ 6:RD- eth0 eth1 HOST-C(tcpdump) 100BASE までなら簡単に自作できる!
  7. 7. ハニーネットで大活躍ですね! 1:TD+ 1:TD+ H 2:TD- 2:TD- Sniffer U B 3:RD+ 3:RD+ 6:RD- 6:RD- 受信専用ケーブル ※ 賢くない HUB に繋いで使います
  8. 8. 自分宛てのが見れれば十分です● 全部見ると大変→フィルタを使う # tcpdump -i any -nn port 80 # tcpdump -i any -nn host 192.168.1.1 and port 80 # tcpdump -i any -nn not port 22 and not port 3389● ペイロードまで見たい # tcpdump -i any -nn -x # tcpdump -i any -nn -X 小文字: Hex ダンプだけ 大文字:アスキー付き
  9. 9. キャプチャサイズがデカいと疲れる● 自動分割(出力先ファイルの切り替え) – サイズ分割 # tcpdump -i eth0 -C 10 -Z root -w tcpdump.pcap -C file_size(MB) -Z root を指定する # ls tcpdump* tcpdump.pcap tcpdump.pcap.1 tcpdump.pcap.2 ... – 時間分割 # tcpdump -i eth0 -G 60 -Z root -w tcpdump_%Y%m%d-%H%M%S.pcap -G rotate_seconds -w strftime の書式文字列を含める # ls tcpdump* tcpdump_20120909-000740.pcap tcpdump_20120909-000840.pcap tcpdump_20120909-000940.pcap ...
  10. 10. 取ったあとに分けたい● tcpslice – 指定時間の範囲で切り出し ● キャプチャされてる時間の確認( 3 種類) % tcpslice -r tcpdump.pcap tcpdump.pcap Wed Mar 27 11:44:11 2013 Wed Mar 27 11:44:23 2013 % tcpslice -t tcpdump.pcap tcpdump.pcap 2013y03m27d11h44m11s817661u 2013y03m27d11h44m23s174956u % tcpslice -R tcpdump.pcap tcpdump.pcap 1364352251.817661 1364352263.174956 ● 開始時間から相対的に指定も可能 % tcpslice 1364352251.817661 +10 -w new.pcap tcpdump.pcap
  11. 11. 別れたけどよりを戻したい● mergecap – くっつけたい pcap を順番に並べて出力ファイル 名を指定するだけ % mergecap -w <outfile> <infile> [<infile> ...]
  12. 12. ペイロードで絞りたい?● そんなときは「 ngrep 」 – 条件にマッチしたパケットだけ表示する grep のネ ットワーク版 – オプションも grep とだいたい共通 ● -i :大文字小文字の無視 ● -w :単語にマッチ ● -v :マッチしないものを表示 ● -X : 16 進数のストリングで指定# ngrep [option] < match expression > < bpf filter ># ngrep -q -d eth0 port 80
  13. 13. ngrep● -K < 回数 > – マッチしたパケットに RST を投げる ( 通信の切 断) – 簡単な L7FW に – リモートのサーバで「 ngrep -K 1 」ってやると死 ぬ
  14. 14. grep があるなら sed だって● netsed – ネットワークストリームエディタ – 条件にマッチしたペイロードの文字列を書き換え # netsed [<proto>] <lport> <rhost> <rport> <rule1> [<rule2> ...] # netsed 8080 192.168.1.1 80 s/google/yahoo →localhost:8080 に繋ぐと 192.168.1.1:80 に転送  双方向のパケットでルールに基いて書き換え
  15. 15. GUI で見たいよね● wireshark の出番
  16. 16. でもやっぱり CLI だよね● tshark の出番 – wireshark に付属 – wireshark の CLI 版 % tshark -r x.pcap 1 0.000000 192.168.100.101 -> 192.168.100.102 TCP 74 49924 > http [SYN] Seq=0 Win=... 2 0.000567 192.168.100.101 -> 192.168.100.102 TCP 66 49924 > http [ACK] Seq=1 Ack=... 3 0.000697 192.168.100.101 -> 192.168.100.102 HTTP 223 GET / HTTP/1.1 4 0.007204 192.168.100.101 -> 192.168.100.102 TCP 66 49924 > http [ACK] Seq=158 Ack=... 5 0.007224 192.168.100.101 -> 192.168.100.102 TCP 66 49924 > http [ACK] Seq=158 Ack=... 6 0.007320 192.168.100.101 -> 192.168.100.102 TCP 66 49924 > http [ACK] Seq=158 Ack=... 7 0.007517 192.168.100.101 -> 192.168.100.102 TCP 66 49924 > http [ACK] Seq=158 Ack=... 8 0.007580 192.168.100.101 -> 192.168.100.102 TCP 66 49924 > http [FIN, ACK] Seq=158 ... 9 0.007625 192.168.100.101 -> 192.168.100.102 TCP 66 49924 > http [ACK] Seq=159 Ack=...
  17. 17. パケット好きですか(再)● あの素晴らしいパケットをもう一度
  18. 18. tcpreplay● tcpdump で取得したパケット (pcap) の内容を ネットワークに流す – FW や IDS のテストで使用 – 全部まとめて流したり、 1 パケットずつ(選択し て)流したり、帯域を絞って流したり、繰り返し 流したり
  19. 19. tcprewrite● pcap の内容を書き換える● tcpreplay の補助ツール – IP アドレスの書き換え(送信/受信) – MAC アドレスの書き換え ( 〃 ) – VLAN タグの書き換え(削除/追加)
  20. 20. 参考文献● http://wiki.wireshark.org/CaptureSetup/Ethernet● man tcpdump● man tcpreplay / tcprewrite

×