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.
pcapngを読んでみる
27. Apr. 2015
Shinnosuke Yagi
@ネットワークパケットを読む会
自己紹介
Shinnosuke Yagi
twitter: @linus404
電話系SIでWi-Fi関連の案件
CTFでnetwork問題を担当

team: ctpm
はじめに
pcapng 

つかってますか?
はじめに
1. pcapng? 何それ食えるの?

2. あえてpcap使います

3. Wiresharkのデフォルトなので一応。。。。

4. バリバリ使ってます。pcapには戻れない。
pcap-ngとは?
PCAP-NextGeneration
何が変わったのか
複数デバイスのキャプチャ結果を

1ファイルに纏められる
コメント他、メタ情報が付けられる
キャプチャ環境での名前解決結果を保持できる
その他、解析ツール独自の拡張...
しかし・・・・
pcapngの現状
ツールの対応状況が追いついていない
Wiresharkの現状
https://wiki.wireshark.org/Development/PcapNg
The current limitations for pcapng ...
pcapngの現状
世間でも冷遇されている
http://pcapng.com のトップは pcapng→pcapのコンバート・・・
pcapngの現状
世間でも冷遇されている
http://pcapng.com のトップは pcapng→pcapのコンバート・・・
そんな pcapng を読んでみましょう
案外、新たな発見があるかも?
基本フォーマット
「ブロック」 単位で構成される
Block Type: ブロックの種類(後述)
Block Total Length: ブロックの長さ。
Block Body: ブロックの中身(32bit単位にパディング)
Block Tot...
ブロックの種類
ブロック名 説明
Section Header Block セクション全体を規定する情報を格納
Interface Description Block NWインターフェースの情報を格納
Enhanced Packet Block...
ファイル全体の構成
ファイルは1∼nのセクションからなる
各セクションの先頭はSession Header Block(SHB)
ただし、現状Wiresharkでは1セクションのみ対応。
Section Header Block
Sectionの先頭にある必須ブロック
ファイルの先頭に必ずある
Block Type: 0x0A0D0D0A エンディアンに依存せず同じ!
Byte Order Magic: 0x1A2B3C4D リ...
SHBの実例
以降すべて、Wiresharkでpcapngファイルを作った場合の例
現状Wireshark以外にpcapngを扱える(有名な)ツールがないので、

一般的なpcapngファイルと思ってたぶんOK
Block Type Byte ...
Interface Description Block
NW interfaceの情報を格納
1セクションに複数のIDBを格納できる
リンクタイプ、キャプチャ長は必須
オプションフィールドでデバイス名などを格納可能
https://www.wi...
IDBの実例
IF名はOSによってまちまち
実行コマンド ( snaplen: 0x200, filter: icmp )

  tshark -s 512 -w file.pcapng icmp
Snaplen
Ifname
Block Leng...
Enhanced Packet Block
パケット本体を格納
InterfaceID、オプションフィールド以外はpcapと大差なし
コメント等をオプションでつけられる

https://www.winpcap.org/ntar/draft/P...
EPBの実例
Wireshark で保存するとEPBで格納される
取得環境: snaplen 255(0xff) で、1066(0x042A) octet のパケットをキャプチャ
Block Type
Block Length
PacketDa...
Simple Packet Block
EPBよりも情報が少ない → 速度、サイズを重視する場合に使用
EBPとSPBは同一ファイル中で切り替え可能
Interface IDがないので、単一IFの場合にのみ利用可能
Name Resolution Block
名前解決結果を格納
解決にかかる時間を節約
キャプチャ環境と解析環境の名前空間が異なる場合もOK
https://www.winpcap.org/ntar/draft/PCAP-DumpFileFor...
NRBの実例
NRBを含むキャプチャ(Wiresharkで名前解決すると付与される)
54.65.213.54
Block Type
ホスト名
Interface Statistics Block
Interfaceごとの統計情報
https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionisb
キャプチャ開始...
生のpcapngを見てみましょう
pcapngを読むときのコツ
1.まずセッションの先頭を見つける(0A0D0D0Aを探す。たいていは先頭のみ。)
2.次にエンディアンを把握する(1A2B3C4Dか、4D3C2B1Aか)
3.ブロックの始まりと終わりを見つける(冒頭と末尾にある...
DEMO
Case Study
エンディアン
リトルエンディアンのSHB
ビッグエンディアンSHB
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
OSの違い∼MacOS∼
MacOS Yosemite のSHBとIDB Option 03:SHB_OS
Option 04:SHB_UserAppl
SHB
IDB Option 02:IF_NAME
Option 0C:IF_OS
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
複数IF
複数IFキャプチャした場合のIDB
複数IF
複数IFキャプチャした場合のEPB
Interface ID が0x00000000
Interface ID が0x00000002
おわりに
pcapよりも読みやすい
ブロック単位でまとめられているので情報を探しやすい
慣れるとブロックの開始、終了がすぐわかるので情報を把握しやすい
特に後ろから3番目のパケットとかはすぐ見つけられる
パケットの中身の解釈はpcapと同じ
扱...
omake
pcapNGでCTF
Level1
http://goo.gl/uITkTU
Level2
http://goo.gl/2Qio7s
Level3
http://goo.gl/QNopW2
Upcoming SlideShare
Loading in …5
×

Pcapngを読んでみる

8,676 views

Published on

pcap-ngのファイル形式と実例

Published in: Engineering
  • Be the first to comment

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

×