Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Pcapngを読んでみる

  1. 1. pcapngを読んでみる 27. Apr. 2015 Shinnosuke Yagi @ネットワークパケットを読む会
  2. 2. 自己紹介 Shinnosuke Yagi twitter: @linus404 電話系SIでWi-Fi関連の案件 CTFでnetwork問題を担当
 team: ctpm
  3. 3. はじめに pcapng 
 つかってますか?
  4. 4. はじめに 1. pcapng? 何それ食えるの?
 2. あえてpcap使います
 3. Wiresharkのデフォルトなので一応。。。。
 4. バリバリ使ってます。pcapには戻れない。
  5. 5. pcap-ngとは? PCAP-NextGeneration 何が変わったのか 複数デバイスのキャプチャ結果を
 1ファイルに纏められる コメント他、メタ情報が付けられる キャプチャ環境での名前解決結果を保持できる その他、解析ツール独自の拡張が可能 ほか、細かいところで解析に便利な工夫が多数。。。
  6. 6. しかし・・・・
  7. 7. pcapngの現状 ツールの対応状況が追いついていない Wiresharkの現状 https://wiki.wireshark.org/Development/PcapNg The current limitations for pcapng format are: Only a single section Only blocks SHB, IDB, PB, EPB, SPB (others will be ignored) Lots of Options not implemented Writing files is mostly untested When merging files, mergecap doesn't retain each IDB's snaplen mergecap won't merge pcapng files with different encapsulations and intermixed timestamps というか放置状態・・・? defaultになったのは2012年 あまりアップデートはない
  8. 8. pcapngの現状 世間でも冷遇されている http://pcapng.com のトップは pcapng→pcapのコンバート・・・
  9. 9. pcapngの現状 世間でも冷遇されている http://pcapng.com のトップは pcapng→pcapのコンバート・・・
  10. 10. そんな pcapng を読んでみましょう 案外、新たな発見があるかも?
  11. 11. 基本フォーマット 「ブロック」 単位で構成される Block Type: ブロックの種類(後述) Block Total Length: ブロックの長さ。 Block Body: ブロックの中身(32bit単位にパディング) Block Total Length:ブロック末尾にもブロック長。ファイル末尾から探索するのに便利
  12. 12. ブロックの種類 ブロック名 説明 Section Header Block セクション全体を規定する情報を格納 Interface Description Block NWインターフェースの情報を格納 Enhanced Packet Block 個々のパケットに関する情報を格納 Simple Packet Block 個々のパケットに関する最低限の情報を格納 Name Resolution Block アドレスとホスト名の対応関係を格納 Interface Statistic Block 統計データを格納
  13. 13. ファイル全体の構成 ファイルは1∼nのセクションからなる 各セクションの先頭はSession Header Block(SHB) ただし、現状Wiresharkでは1セクションのみ対応。
  14. 14. Section Header Block Sectionの先頭にある必須ブロック ファイルの先頭に必ずある Block Type: 0x0A0D0D0A エンディアンに依存せず同じ! Byte Order Magic: 0x1A2B3C4D リトル・ビッグエンディアンを判別 Section Length: セクションごとスキップする場合に使用。
  15. 15. SHBの実例 以降すべて、Wiresharkでpcapngファイルを作った場合の例 現状Wireshark以外にpcapngを扱える(有名な)ツールがないので、
 一般的なpcapngファイルと思ってたぶんOK Block Type Byte Order Magic Options Block Length
  16. 16. Interface Description Block NW interfaceの情報を格納 1セクションに複数のIDBを格納できる リンクタイプ、キャプチャ長は必須 オプションフィールドでデバイス名などを格納可能 https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionidb
  17. 17. IDBの実例 IF名はOSによってまちまち 実行コマンド ( snaplen: 0x200, filter: icmp )
   tshark -s 512 -w file.pcapng icmp Snaplen Ifname Block Length Link Type Block Type Filter
  18. 18. Enhanced Packet Block パケット本体を格納 InterfaceID、オプションフィールド以外はpcapと大差なし コメント等をオプションでつけられる
 https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionepb
  19. 19. EPBの実例 Wireshark で保存するとEPBで格納される 取得環境: snaplen 255(0xff) で、1066(0x042A) octet のパケットをキャプチャ Block Type Block Length PacketData Capture Len Packet Len
  20. 20. Simple Packet Block EPBよりも情報が少ない → 速度、サイズを重視する場合に使用 EBPとSPBは同一ファイル中で切り替え可能 Interface IDがないので、単一IFの場合にのみ利用可能
  21. 21. Name Resolution Block 名前解決結果を格納 解決にかかる時間を節約 キャプチャ環境と解析環境の名前空間が異なる場合もOK https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionnrb
  22. 22. NRBの実例 NRBを含むキャプチャ(Wiresharkで名前解決すると付与される) 54.65.213.54 Block Type ホスト名
  23. 23. Interface Statistics Block Interfaceごとの統計情報 https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionisb キャプチャ開始、終了時刻 受信、Dropパケット、フィルタ適合パケット
  24. 24. 生のpcapngを見てみましょう
  25. 25. pcapngを読むときのコツ 1.まずセッションの先頭を見つける(0A0D0D0Aを探す。たいていは先頭のみ。) 2.次にエンディアンを把握する(1A2B3C4Dか、4D3C2B1Aか) 3.ブロックの始まりと終わりを見つける(冒頭と末尾にあるLengthを目印に) 4.末尾から読むほうが楽な場合もあり(ブロック末尾のLengthがすごく便利)
  26. 26. DEMO
  27. 27. Case Study
  28. 28. エンディアン リトルエンディアンのSHB ビッグエンディアンSHB
  29. 29. OSの違い∼Windows∼ Windows 8.1 のSHBとIDB Option 03:SHB_OS SHB IDB Option 02:IF_NAME Option 0C:IF_OS Option 04:SHB_UserAppl
  30. 30. OSの違い∼MacOS∼ MacOS Yosemite のSHBとIDB Option 03:SHB_OS Option 04:SHB_UserAppl SHB IDB Option 02:IF_NAME Option 0C:IF_OS
  31. 31. OSの違い∼Linux∼ Ubuntu 13.10 のSHBとIDB Option 03:SHB_OS Option 04:SHB_UserAppl SHB IDB Option 02:IF_NAME Option 0C:IF_OS
  32. 32. 複数IF 複数IFキャプチャした場合のIDB
  33. 33. 複数IF 複数IFキャプチャした場合のEPB Interface ID が0x00000000 Interface ID が0x00000002
  34. 34. おわりに pcapよりも読みやすい ブロック単位でまとめられているので情報を探しやすい 慣れるとブロックの開始、終了がすぐわかるので情報を把握しやすい 特に後ろから3番目のパケットとかはすぐ見つけられる パケットの中身の解釈はpcapと同じ 扱えるライブラリは? libpcapは対応とうたっているが、リファレンスでは未言及 NTAR -Network Trace Archival and Retrieval Library-
  https://www.winpcap.org/ntar/ Python Pcap-ng 
  https://github.com/rshk/python-pcapng
 読み出しのみ対応。書き出しは不可。 情報を隠すならpcapng CTF向け? Wiresharkが識別できない部分にフラグを挿入されたら気づけないかも
  35. 35. omake pcapNGでCTF Level1 http://goo.gl/uITkTU Level2 http://goo.gl/2Qio7s Level3 http://goo.gl/QNopW2

×