狠狠撸

狠狠撸Share a Scribd company logo
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 format are:
Only a single section
Only blocks SHB, IDB, PB, EPB, SPB (others will be ignored)
Lots of Options not implemented
Writing ?les is mostly untested
When merging ?les, mergecap doesn't retain each IDB's snaplen
mergecap won't merge pcapng ?les with different encapsulations and
intermixed timestamps
というか放置状態????
defaultになったのは2012年
あまりアップデートはない
pcapngの現状
世間でも冷遇されている
http://pcapng.com のトップは pcapng→pcapのコンバート???
pcapngの現状
世間でも冷遇されている
http://pcapng.com のトップは pcapng→pcapのコンバート???
そんな pcapng を読んでみましょう
案外、新たな発見があるかも?
基本フォーマット
「ブロック」?単位で構成される
Block Type:?ブロックの種類(後述)
Block Total Length:?ブロックの長さ。
Block Body:?ブロックの中身(32bit単位にパディング)
Block Total Length:ブロック末尾にもブロック長。ファイル末尾から探索するのに便利
ブロックの種類
ブロック名 説明
Section Header Block セクション全体を規定する情報を格納
Interface Description Block NWインターフェースの情報を格納
Enhanced Packet Block 個々のパケットに関する情報を格納
Simple Packet Block 個々のパケットに関する最低限の情報を格納
Name Resolution Block アドレスとホスト名の対応関係を格納
Interface Statistic Block 統計データを格納
ファイル全体の構成
ファイルは1~nのセクションからなる
各セクションの先頭はSession Header Block(SHB)
ただし、現状Wiresharkでは1セクションのみ対応。
Section Header Block
Sectionの先頭にある必須ブロック
ファイルの先頭に必ずある
Block Type: 0x0A0D0D0A?エンディアンに依存せず同じ!
Byte Order Magic: 0x1A2B3C4D?リトル?ビッグエンディアンを判別
Section Length: セクションごとスキップする場合に使用。
SHBの実例
以降すべて、Wiresharkでpcapngファイルを作った場合の例
現状Wireshark以外にpcapngを扱える(有名な)ツールがないので、?
一般的なpcapngファイルと思ってたぶんOK
Block Type Byte Order Magic
Options
Block Length
Interface Description Block
NW interfaceの情報を格納
1セクションに複数のIDBを格納できる
リンクタイプ、キャプチャ長は必須
オプションフィールドでデバイス名などを格納可能
https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionidb
IDBの実例
IF名はOSによってまちまち
実行コマンド ( snaplen: 0x200, ?lter: icmp )?
??tshark -s 512 -w ?le.pcapng icmp
Snaplen
Ifname
Block Length
Link Type Block Type
Filter
Enhanced Packet Block
パケット本体を格納
InterfaceID、オプションフィールド以外はpcapと大差なし
コメント等をオプションでつけられる?
https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionepb
EPBの実例
Wireshark で保存するとEPBで格納される
取得環境: snaplen 255(0xff) で、1066(0x042A) octet のパケットをキャプチャ
Block Type
Block Length
PacketData
Capture Len
Packet Len
Simple Packet Block
EPBよりも情報が少ない?→?速度、サイズを重視する場合に使用
EBPとSPBは同一ファイル中で切り替え可能
Interface 滨顿がないので、単一滨贵の场合にのみ利用可能
Name Resolution Block
名前解決結果を格納
解決にかかる時間を節約
キャプチャ環境と解析環境の名前空間が異なる場合もOK
https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionnrb
NRBの実例
NRBを含むキャプチャ(Wiresharkで名前解決すると付与される)
54.65.213.54
Block Type
ホスト名
Interface Statistics Block
Interfaceごとの統計情報
https://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html#sectionisb
キャプチャ開始、終了時刻
受信、Dropパケット、フィルタ適合パケット
生の辫肠补辫苍驳を见てみましょう
pcapngを読むときのコツ
1.まずセッションの先頭を見つける(0A0D0D0Aを探す。たいていは先頭のみ。)
2.次にエンディアンを把握する(1A2B3C4Dか、4D3C2B1Aか)
3.ブロックの始まりと終わりを見つける(冒頭と末尾にあるLengthを目印に)
4.末尾から読むほうが楽な場合もあり(ブロック末尾のLengthがすごく便利)
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と同じ
扱えるライブラリは?
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が識別できない部分にフラグを挿入されたら気づけないかも
omake
pcapNGでCTF
Level1
http://goo.gl/uITkTU
Level2
http://goo.gl/2Qio7s
Level3
http://goo.gl/QNopW2

More Related Content

笔肠补辫苍驳を読んでみる