Soumettre la recherche
Mettre en ligne
LibPGEN 1st Step Guide
•
0 j'aime
•
736 vues
slankdev
Suivre
libpgen version 1.0 の簡単な使用方法を紹介しています。
Lire moins
Lire la suite
Internet
Signaler
Partager
Signaler
Partager
1 sur 41
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Seurity Camp Award 2016
Seurity Camp Award 2016
slankdev
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料
slankdev
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
slankdev
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
slankdev
libpgenでパケット操作
libpgenでパケット操作
slankdev
Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告
slankdev
サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会
slankdev
OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT
slankdev
Recommandé
Seurity Camp Award 2016
Seurity Camp Award 2016
slankdev
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料
slankdev
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
slankdev
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
slankdev
libpgenでパケット操作
libpgenでパケット操作
slankdev
Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告
slankdev
サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会
slankdev
OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT
slankdev
Kernel vm13lt
Kernel vm13lt
slankdev
OSC2017Hokkaido
OSC2017Hokkaido
slankdev
Rdkitの紹介
Rdkitの紹介
Takayuki Serizawa
Mishimasyk 3 20140705
Mishimasyk 3 20140705
Takayuki Serizawa
CSRを自動生成する!
CSRを自動生成する!
Taichi Ishitani
Mishimasyk6 iwatobipen
Mishimasyk6 iwatobipen
Takayuki Serizawa
最近のrubyのインストール方法
最近のrubyのインストール方法
Kazuhiro Nishiyama
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
20090124shibuya Trac
20090124shibuya Trac
Kazuya Hirobe
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
Tetsuyuki Kobayashi
140607 lib o-mini_con-ryoon
140607 lib o-mini_con-ryoon
Ryo ONODERA
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Uehara Junji
Turnip
Turnip
Yoichi Toyota
LibreOfficeの品質向上活動について
LibreOfficeの品質向上活動について
Masataka Kondo
自分的pkgsrcの課題
自分的pkgsrcの課題
Ryo ONODERA
RgGen ご紹介
RgGen ご紹介
Taichi Ishitani
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-
boropon
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境
Tadahiro Ishisaka
SDSoC 2016.3+yocto project
SDSoC 2016.3+yocto project
Hidemi Ishihara
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
Contenu connexe
Tendances
Kernel vm13lt
Kernel vm13lt
slankdev
OSC2017Hokkaido
OSC2017Hokkaido
slankdev
Rdkitの紹介
Rdkitの紹介
Takayuki Serizawa
Mishimasyk 3 20140705
Mishimasyk 3 20140705
Takayuki Serizawa
CSRを自動生成する!
CSRを自動生成する!
Taichi Ishitani
Mishimasyk6 iwatobipen
Mishimasyk6 iwatobipen
Takayuki Serizawa
最近のrubyのインストール方法
最近のrubyのインストール方法
Kazuhiro Nishiyama
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
20090124shibuya Trac
20090124shibuya Trac
Kazuya Hirobe
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
Tetsuyuki Kobayashi
140607 lib o-mini_con-ryoon
140607 lib o-mini_con-ryoon
Ryo ONODERA
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Uehara Junji
Turnip
Turnip
Yoichi Toyota
LibreOfficeの品質向上活動について
LibreOfficeの品質向上活動について
Masataka Kondo
自分的pkgsrcの課題
自分的pkgsrcの課題
Ryo ONODERA
RgGen ご紹介
RgGen ご紹介
Taichi Ishitani
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-
boropon
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境
Tadahiro Ishisaka
Tendances
(20)
Kernel vm13lt
Kernel vm13lt
OSC2017Hokkaido
OSC2017Hokkaido
Rdkitの紹介
Rdkitの紹介
Mishimasyk 3 20140705
Mishimasyk 3 20140705
CSRを自動生成する!
CSRを自動生成する!
Mishimasyk6 iwatobipen
Mishimasyk6 iwatobipen
最近のrubyのインストール方法
最近のrubyのインストール方法
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
20090124shibuya Trac
20090124shibuya Trac
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
140607 lib o-mini_con-ryoon
140607 lib o-mini_con-ryoon
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Turnip
Turnip
LibreOfficeの品質向上活動について
LibreOfficeの品質向上活動について
自分的pkgsrcの課題
自分的pkgsrcの課題
RgGen ご紹介
RgGen ご紹介
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境
Similaire à LibPGEN 1st Step Guide
SDSoC 2016.3+yocto project
SDSoC 2016.3+yocto project
Hidemi Ishihara
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
Kei IWASAKI
Lagopus, raw socket build
Lagopus, raw socket build
Masaru Oki
Go言語ハンズオン資料flagパッケージを使ってみる
Go言語ハンズオン資料flagパッケージを使ってみる
yoshito funayose
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Reo Yamada
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
OpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメ
Masaki Otsuki
SDNアプローチによるBGP経路監視の提案
SDNアプローチによるBGP経路監視の提案
Toshiki Tsuboi
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Yasuhiro Yoshimura
Scikit
Scikit
卓馬 三浦
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
Yasuhiro Yoshimura
Hannari python#27
Hannari python#27
hiroya akita
CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
SwaggerとAPIのデザイン
SwaggerとAPIのデザイン
Kazuhiro Hara
Clean Architectureで設計してRxJSを使った話
Clean Architectureで設計してRxJSを使った話
_kondei
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
Similaire à LibPGEN 1st Step Guide
(20)
SDSoC 2016.3+yocto project
SDSoC 2016.3+yocto project
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
Lagopus, raw socket build
Lagopus, raw socket build
Go言語ハンズオン資料flagパッケージを使ってみる
Go言語ハンズオン資料flagパッケージを使ってみる
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
AIの力で障害検知・解析をサポート!Loom(ログ解析ソリューション)のご紹介 - OpenStack最新情報セミナー 2017年7月
OpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメ
SDNアプローチによるBGP経路監視の提案
SDNアプローチによるBGP経路監視の提案
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Scikit
Scikit
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
Hannari python#27
Hannari python#27
CodingTips+ 基礎編
CodingTips+ 基礎編
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
SwaggerとAPIのデザイン
SwaggerとAPIのデザイン
Clean Architectureで設計してRxJSを使った話
Clean Architectureで設計してRxJSを使った話
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
LibPGEN 1st Step Guide
1.
LibPGEN version 1.0 1st
ステップガイド Slank [@slankdev, http://slankdev.net] libpgen.org 1
2.
Who is Slank
? oパケットが好きな大学生 oLibPGEN開発者 oIPA Security Camp 2015 卒業生 o学生の間はパケット屋さんになりたいです。 libpgen.org 2
3.
What Is LibPGEN
? ◦http://libpgen.org ◦パケット解析を簡単に行うためのライブラリ ◦C++で開発している ◦Linux, BSDで動作します(もちろんOSXも) ◦ネットワークインターフェースを使わないなら windowsでも動くはず。。(まだ試していない) ◦プロトコル対応数はまだ少ない ◦その代わりに拡張しやすい設計を libpgen.org 3
4.
Agenda 1. LibPGENの使用例 2. 設計について 3.
LibPGENの機能紹介 libpgen.org 4
5.
libpgen.org 5
6.
Sample Codes with
LibPGEN ◦詳細な使用方法を説明する前に簡単なサンプ ルコードで感じ取ってください。。。 libpgen.org 6
7.
Easy Packet Capture ◦簡単なパケットキャプチャプログラム ◦ネットワークインターフェースから受信したパケッ トを簡単にLibPGENで解析します ◦プログラムの流れ 1.
パケットを受信待機 2. 受信したら情報表示 libpgen.org 7
8.
Sample Code libpgen.org 8
9.
Execution Result libpgen.org 9
10.
ARP Scan Program ◦ARPパケットを送ってIPアドレスからMACアドレス を調べるプログラム ◦プログラムの流れ 1.
ARPパケット作成、送信 2. パケット受信待機 3. 送信先からのARPパケットならそのパケットを表示 libpgen.org 10
11.
Sample Code libpgen.org 11
12.
Execution Result libpgen.org 12
13.
Could You Feel
? ◦なんとなくわかってもらえればとても幸せです。 ◦ここからは詳しくLibPGENの構造と使いかたを説 明していきます。 libpgen.org 13
14.
libpgen.org 14
15.
LibPGENのアーキテクチャ libpgen.org 15
16.
3 Big Components ◦LibPGENは大きく3つに分けられる。 ◦
PGEN-‐IO 入出力関数群 ◦ PGEN-‐Core アドレスやパケットのバイナリを解析 ◦ PGEN-‐Module PGEN-‐IO,PGEN-‐Coreを使ったモジュール群 libpgen.org 16
17.
PGEN-‐IO ◦バイナリの入出力用の関数群 ◦入出力先はネットワークインターフェース、pcap ファイルに対応しています。(NGは現在実装中) ◦ライブラリのコアの開発に参加しない場合はほと んど意識しなくて構わないので、詳しい説明は公 式ドキュメントを参考にしてください ◦http://libpgen.org/documentation/pgen-‐io ◦よく使う関数だけ紹介します libpgen.org 17
18.
pgen_open() in PGEN-‐IO ◦pgen_t*
pgen_open(const char* if, void* nouse) ◦ネットワークインターフェースを指定してパケット の送受信用のディスクリプタを確保 ◦第二引数は予約用でまだ使わない ◦成功すると、ディスクリプタのポインタ、失敗する とNULLを返す libpgen.org 18
19.
pgen_open_offline() in PGEN-‐IO ◦pgen_t*
pgen_open_offline( const char* f, int mode) ◦pgen_open()のpcapファイル版。 ◦pcapファイルの読み書き用のディスクリプタを確 保 ◦第一引数にファイル名、第二引数にモードを指 定する。 ◦成功すればディスクリプタのポインタ、失敗すれ はNULLを返す libpgen.org 19
20.
pgen_close() in PGEN-‐IO ◦void
pgen_close(pgen_t* handle) ◦確保したディスクリプタを開放する。 ◦マナーとして libpgen.org 20
21.
pgen_perror() in PGEN-‐IO ◦void
pgen_perror(const char* msg) ◦標準ライブラリ関数のperror関数のLibPGEN版 ◦内部でエラー番号を持っているので、それを利 用して情報出力する。 libpgen.org 21
22.
That’s a PGEN-‐IO ◦こんな感じの基本関数から、細かいとこまで手を 伸ばす関数までいろいろあります。 ◦さらに詳しい情報は公式ドキュメント ◦http://libpgen.org/documentation/pgen-‐io/ libpgen.org
22
23.
PGEN-‐Core ◦最も重要で機能豊富なコンポーネント ◦パケット解析を担当 ◦PGEN-‐PacketとPGEN-‐Addressの二つを子に持つ コンポーネント ◦さらに詳しい情報は公式ドキュメントを参照 ◦http://libpgen.org/documentation/pgen-‐core/ libpgen.org 23
24.
PGEN-‐Address in PGEN-‐Core ◦アドレス操作を簡単に行えるようにするクラス群 ◦以降のPGEN-‐Packetでさんざん出てくるので、こ こでの説明は省略します ◦簡単に説明すると、アドレス操作をNULLポインタ 文字列で操作できるようにしました。 libpgen.org
24
25.
PGEN-‐Packet in PGEN-‐Core ◦パケット解析を行うLibPGENの核 ◦プロトコルごとに様々なクラスがたくさんある ◦標準でサポートしているのは Ethernet,
ARP, IP, ICMP, TCP, UDP (2015/12/07現在) libpgen.org 25
26.
PGEN-‐Packet in PEGN-‐Core libpgen.org
26 ◦クラスの継承関係は以下のようになっている。
27.
PGEN-‐Packet in PGEN-‐Core ◦それぞれのクラスは親クラスのメンバも保持する ◦ex)
pgen_ipクラスは pgen_packet, pgen_ethのメンバも保持する libpgen.org 27
28.
PGEN-‐Packet in PGEN-‐Core ◦よく使うメンバ関数 ◦
send(pgen_t* handle) , send_dev(const char* if) パケット送信 ◦ cast(const void* buf, int buflen) バイナリ解析 ◦ hex(), info(), summary(), help() 情報出力 ◦ clear() 要素値リセット ◦たまに使うメンバ関数 ◦ byte() パケット先頭ポインタ ◦ length() パケット長 libpgen.org 28
29.
send(), send_dev() in
PGEN-‐Packet ◦void send(pgen_t* handle) ◦ PGENディスクリプタを指定してパケットを送信 ◦ 引数のディスクリプタはpgen_open()やpgen_open_offline()などで 確保したものを指定する。 ◦void send(const char* if) ◦ ネットワークインターフェースを指定してパケットを送信 ◦ 引数にはインターフェース名を指定(ex. “wlan0”など) libpgen.org 29
30.
cast() in PGEN-‐Packet ◦void
cast(const void* buf, int buflen) ◦ バイナリを解析してメンバ変数に格納する ◦ buf, buflenにはバイナリの先頭ポインタ、バイナリ長を指定する。 libpgen.org 30
31.
hex(), info(), summary(),
help() in PGEN-‐Packet ◦情報出力用関数 ◦void hex() ◦ パケットのhexdumpを出力 ◦void info() ◦ 詳細情報を出力 ◦void summary() ◦ 簡易情報を一行で出力 ◦void help() ◦ メンバ変数の使い方を出力 libpgen.org 31
32.
Protocols of PGEN-‐Packet ◦PGEN-‐Packetは標準でEthernet,
ARP, IP, ICMP, TCP, UDPをサポート ◦プロトコルごとのクラスの簡単な使い方は後述 libpgen.org 32
33.
PGEN-‐Module ◦PGEN-‐IO, PGEN-‐Coreを使って作られたモジュー ル群 ◦現在安定版なのはsniff()のみ ◦sniff()はパケット受信で使用 libpgen.org 33
34.
sniff() in PGEN-‐Module ◦void
sniff(pgen_t* handle, bool (*callback)(const u_char* buf, int buflen)) ◦handleで指定されたインターフェースからパケッ トを一つ受信し、そのパケットを第二引数の callback()に渡す。 ◦callback()がtrueを返す間パケットを受信し続ける libpgen.org 34
35.
libpgen.org 35
36.
For Analyze Protocols ◦先ほど飛ばした
PGEN-‐Packetの派生クラスにつ いて説明します ◦作者お気に入りのプロトコルのクラスをいくつか 紹介します libpgen.org 36
37.
pgen_arp class ◦お気に入りプロトコル ◦メンバ変数 ◦ ETH.src ◦
ETH.dst ◦ ETH.type ◦ ARP.operation ◦ ARP.hwsrc ◦ ARP.psrc ◦ ARP.hwdst ◦ ARP.pdst libpgen.org 37
38.
pgen_tcp class ◦ メンバ変数 ◦
ETH…(省略) ◦ IP.hlen ◦ IP.tos ◦ IP.tot_len ◦ IP.id ◦ IP.frag_off ◦ IP.ttl ◦ IP.protocol ◦ IP.src ◦ IP.dst libpgen.org 38 ◦ TCP.src ◦ TCP.dst ◦ TCP.seq ◦ TCP.ack ◦ TCP.doff ◦ TCP.flags.fin ◦ TCP.flags.syn ◦ TCP.flags.rst ◦ TCP.flags.psh ◦ TCP.fgags.ack ◦ TCP.flags.urg ◦ TCP.window
39.
That’s a PGEN-‐Packet ◦このようにして、プロトコルごとのパケットを詳しく 簡単に解析します。 ◦他のプロトコルに関する情報は公式ドキュメント を参照してください。 ◦http://libpgen.org/pgen-‐core/packet-‐class libpgen.org
39
40.
How Do You
Think ? ◦これで基本的な使用方法は説明しました。 ◦LibPGENの構造、使い方の基本は以上です ◦ぜひ使って文句をたくさん ◦これで楽しくパケット解析をするだけ…… libpgen.org 40
41.
What is Next… ◦今回はLibPGENの簡単な使い方を紹介しました。 ◦次回はLibPGENの「拡張しやすい設計」 について紹介します ◦ライブラリの詳しい情報は http://libpgen.orgを参照してください libpgen.org
41
Télécharger maintenant