SlideShare 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 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年
あまりアップデートはない
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, filter: icmp )

  tshark -s 512 -w file.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 IDがないので、単一IFの場合にのみ利用可能
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を見てみましょう
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

PDF
Wireshark だけに頼らない! パケット解析ツールの紹介
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
PPTX
VyOSで作るIPv4 Router/IPv6 Bridge
PDF
Scapyで作る・解析するパケット
PPTX
HLSについて知っていることを話します
PDF
SFUの話
PDF
SAT/SMTソルバの仕組み
PPTX
分散システムについて語らせてくれ
Wireshark だけに頼らない! パケット解析ツールの紹介
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
VyOSで作るIPv4 Router/IPv6 Bridge
Scapyで作る・解析するパケット
HLSについて知っていることを話します
SFUの話
SAT/SMTソルバの仕組み
分散システムについて語らせてくれ

What's hot (20)

PDF
目grep入門 +解説
PDF
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
ODP
Format string Attack
PDF
噛み砕いてKafka Streams #kafkajp
PDF
WebSocket / WebRTCの技術紹介
PDF
ワタシはSingletonがキライだ
PDF
分散システムの限界について知ろう
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
Protocol Buffers 入門
PDF
パケットキャプチャの勘どころ Ssmjp 201501
PDF
機械学習モデルのサービングとは?
PDF
オントロジーとは?
PDF
何となく勉強した気分になれるパーサ入門
PDF
Rustに触れて私のPythonはどう変わったか
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
PDF
Pythonによる黒魔術入門
PPTX
冬のLock free祭り safe
PDF
人生がときめくAPIテスト自動化 with Karate
PPTX
本当は恐ろしい分散システムの話
PDF
推薦アルゴリズムの今までとこれから
目grep入門 +解説
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
Format string Attack
噛み砕いてKafka Streams #kafkajp
WebSocket / WebRTCの技術紹介
ワタシはSingletonがキライだ
分散システムの限界について知ろう
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Protocol Buffers 入門
パケットキャプチャの勘どころ Ssmjp 201501
機械学習モデルのサービングとは?
オントロジーとは?
何となく勉強した気分になれるパーサ入門
Rustに触れて私のPythonはどう変わったか
Apache Arrow - データ処理ツールの次世代プラットフォーム
Pythonによる黒魔術入門
冬のLock free祭り safe
人生がときめくAPIテスト自動化 with Karate
本当は恐ろしい分散システムの話
推薦アルゴリズムの今までとこれから
Ad

Similar to Pcapngを読んでみる (20)

PDF
High performance python computing for data science
PDF
Rdkitの紹介
PDF
Pythonでパケット解析
PDF
import dpkt したよ #ssmjp 2014/02/28
PPTX
Seurity Camp Award 2016
PDF
FPGAX6_hayashi
PDF
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
PPT
Gr sakuraでtinet
PDF
深層学習フレームワークChainerの特徴
PPTX
Fpgax20170924
PDF
CTF for ビギナーズ ネットワーク講習資料
PDF
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
PDF
libpgenでパケット操作
PDF
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
PDF
Seccamp 2016 チューター成果報告
PPTX
PPTPの仕組みと接続時の注意点
PDF
Singularityで分散深層学習
PDF
Chainer でのプロファイリングをちょっと楽にする話
PDF
dkanのご紹介-150704CMSどうでしょう夏の陣
KEY
ゆるかわPhp
High performance python computing for data science
Rdkitの紹介
Pythonでパケット解析
import dpkt したよ #ssmjp 2014/02/28
Seurity Camp Award 2016
FPGAX6_hayashi
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
Gr sakuraでtinet
深層学習フレームワークChainerの特徴
Fpgax20170924
CTF for ビギナーズ ネットワーク講習資料
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
libpgenでパケット操作
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
Seccamp 2016 チューター成果報告
PPTPの仕組みと接続時の注意点
Singularityで分散深層学習
Chainer でのプロファイリングをちょっと楽にする話
dkanのご紹介-150704CMSどうでしょう夏の陣
ゆるかわPhp
Ad

Pcapngを読んでみる