Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

tcpdumpとtcpreplayとtcprewriteと他。

11 357 vues

Publié le

Publié dans : Technologie
  • Soyez le premier à commenter

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

×