Pcapngを読んでみる

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
1 of 35

Recommended

CTF for ビギナーズ ネットワーク講習資料 by
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料SECCON Beginners
44.5K views108 slides
初心者向けCTFのWeb分野の強化法 by
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法kazkiti
15.8K views38 slides
CTF for ビギナーズ バイナリ講習資料 by
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料SECCON Beginners
25.8K views90 slides
Scapyで作る・解析するパケット by
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケットTakaaki Hoyo
35.1K views37 slides
目grep入門 +解説 by
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
89.4K views83 slides
Wireshark入門(2) by
Wireshark入門(2)Wireshark入門(2)
Wireshark入門(2)彰 村地
19.8K views52 slides

More Related Content

What's hot

ネットワークOS野郎 ~ インフラ野郎Night 20160414 by
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414Kentaro Ebisawa
13.6K views39 slides
実践イカパケット解析α by
実践イカパケット解析α実践イカパケット解析α
実践イカパケット解析αYuki Mizuno
5.7K views33 slides
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2 by
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2Preferred Networks
1.5K views46 slides
分散システムについて語らせてくれ by
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
119.5K views45 slides
10GbE時代のネットワークI/O高速化 by
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
59.4K views67 slides

What's hot(20)

ネットワークOS野郎 ~ インフラ野郎Night 20160414 by Kentaro Ebisawa
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa13.6K views
実践イカパケット解析α by Yuki Mizuno
実践イカパケット解析α実践イカパケット解析α
実践イカパケット解析α
Yuki Mizuno5.7K views
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2 by Preferred Networks
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks1.5K views
分散システムについて語らせてくれ by Kumazaki Hiroki
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki119.5K views
10GbE時代のネットワークI/O高速化 by Takuya ASADA
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
Takuya ASADA59.4K views
フロー技術によるネットワーク管理 by Motonori Shindo
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
Motonori Shindo10.7K views
Hokkaido.cap#1 Wiresharkの使い方(基礎編) by Panda Yamaki
Hokkaido.cap#1 Wiresharkの使い方(基礎編)Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Panda Yamaki56.6K views
Ethernetの受信処理 by Takuya ASADA
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
Takuya ASADA24.5K views
Prometheus入門から運用まで徹底解説 by 貴仁 大和屋
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋34.8K views
Deflate by 7shi
DeflateDeflate
Deflate
7shi 16.4K views
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi... by ksk_ha
VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...VirtualBox と Rocky Linux 8 で始める Pacemaker  ~ VirtualBox でも STONITH 機能が試せる! Vi...
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
ksk_ha496 views
コンテナネットワーキング(CNI)最前線 by Motonori Shindo
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo31.6K views
本当は恐ろしい分散システムの話 by Kumazaki Hiroki
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki686.2K views
Pythonでパケット解析 by euphoricwavism
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析
euphoricwavism8.7K views
CTF超入門 (for 第12回セキュリティさくら) by kikuchan98
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
kikuchan9881.3K views
ロードバランスへの長い道 by Jun Kato
ロードバランスへの長い道ロードバランスへの長い道
ロードバランスへの長い道
Jun Kato13.6K views
IoT時代におけるストリームデータ処理と急成長の Apache Flink by Takanori Suzuki
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki28K views

Similar to Pcapngを読んでみる

High performance python computing for data science by
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data scienceTakami Sato
20K views71 slides
Rdkitの紹介 by
Rdkitの紹介Rdkitの紹介
Rdkitの紹介Takayuki Serizawa
4.3K views42 slides
import dpkt したよ #ssmjp 2014/02/28 by
import dpkt したよ #ssmjp 2014/02/28import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28th0x0472
3.4K views20 slides
Seurity Camp Award 2016 by
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016 slankdev
1.1K views41 slides
FPGAX6_hayashi by
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi愛美 林
6.6K views34 slides
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver by
サーバ擬人化ユーザ会キックオフ資料 Slideshare verサーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare verSeiichiro Ishida
1.2K views16 slides

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

High performance python computing for data science by Takami Sato
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
Takami Sato20K views
import dpkt したよ #ssmjp 2014/02/28 by th0x0472
import dpkt したよ #ssmjp 2014/02/28import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28
th0x04723.4K views
Seurity Camp Award 2016 by slankdev
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016
slankdev1.1K views
FPGAX6_hayashi by 愛美 林
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi
愛美 林6.6K views
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver by Seiichiro Ishida
サーバ擬人化ユーザ会キックオフ資料 Slideshare verサーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
Seiichiro Ishida1.2K views
深層学習フレームワークChainerの特徴 by Yuya Unno
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴
Yuya Unno59.4K views
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ) by NVIDIA Japan
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
NVIDIA Japan3.1K views
libpgenでパケット操作 by slankdev
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作
slankdev5.4K views
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜 by Akira Nakagawa
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
Akira Nakagawa13.1K views
Seccamp 2016 チューター成果報告 by slankdev
Seccamp 2016 チューター成果報告Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告
slankdev3.1K views
PPTPの仕組みと接続時の注意点 by Rintaro Sekino
PPTPの仕組みと接続時の注意点PPTPの仕組みと接続時の注意点
PPTPの仕組みと接続時の注意点
Rintaro Sekino2.2K views
Singularityで分散深層学習 by Hitoshi Sato
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習
Hitoshi Sato9.4K views
Chainer でのプロファイリングをちょっと楽にする話 by NVIDIA Japan
Chainer でのプロファイリングをちょっと楽にする話Chainer でのプロファイリングをちょっと楽にする話
Chainer でのプロファイリングをちょっと楽にする話
NVIDIA Japan3.1K views
dkanのご紹介-150704CMSどうでしょう夏の陣 by Kyoko Ohtagaki
dkanのご紹介-150704CMSどうでしょう夏の陣dkanのご紹介-150704CMSどうでしょう夏の陣
dkanのご紹介-150704CMSどうでしょう夏の陣
Kyoko Ohtagaki1.2K views
WebRTC mediasoup on raspberrypi3 by mganeko
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
mganeko2.3K views
OSS奨励賞受賞プレゼン 活動紹介 by Hiromu Yakura
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
Hiromu Yakura21.2K views

Recently uploaded

システム概要.pdf by
システム概要.pdfシステム概要.pdf
システム概要.pdfTaira Shimizu
44 views1 slide
ウォーターフォール開発で生 産性を測る指標 by
ウォーターフォール開発で生 産性を測る指標ウォーターフォール開発で生 産性を測る指標
ウォーターフォール開発で生 産性を測る指標Kouhei Aoyagi
58 views13 slides
概要.pdf by
概要.pdf概要.pdf
概要.pdfTaira Shimizu
6 views1 slide
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私修治 松浦
211 views36 slides
Najah Matsuo Self Introduction by
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self IntroductionNajahMatsuo
16 views29 slides
onewedge_companyguide1 by
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1ONEWEDGE1
81 views22 slides

Recently uploaded(6)

ウォーターフォール開発で生 産性を測る指標 by Kouhei Aoyagi
ウォーターフォール開発で生 産性を測る指標ウォーターフォール開発で生 産性を測る指標
ウォーターフォール開発で生 産性を測る指標
Kouhei Aoyagi58 views
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦211 views
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self Introduction
NajahMatsuo16 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1
ONEWEDGE181 views

Pcapngを読んでみる