SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
Wiresharkとc言語による
パケット解析入門
Hiroki SHIROKURA @slankdev
国立セキュリティ・キャンプ同窓会
Wiresharkに負けない
c言語での
パケット解析ツール
開発入門
Hiroki SHIROKURA @slankdev
国立セキュリティ・キャンプ同窓会
準備
$ sudo apt install -y git wireshark
$ git clone http://github.com/slankdev/packet_asobi
セキュリティ・キャンプ
次代を担う世界に通用する若手そうの情報セキュリティ人材を発掘育成
産業,教育界を結集した講師による合宿形式の勉強会
世界トップのエンジニアや同世代の若手から刺激がもらえる
U22, 事前審査あり
城倉 弘樹 SHIROKURA Hiroki
- SNS: slankdev
- Web: http://slankdev.net
活動
- セキュリティキャンプ 2015,2016,2017 (16からチューター)
- サイボウズラボユース 5th 「拡張可能なパケット解析C++ライブラリ」
- サイボウズラボユース 6th 「高性能ネットワークスタックon DPDK」
- IIJ研究所 アルバイト研究員「高性能パケット処理」
- 2017年 未踏事業 採択「環境に対して自動最適化する高性能通信基盤」
- DPDKコントリビュータ
概要
目的: ツールの使い方でなく、本質的なパケット解析方法
内容: c言語を用いたパケット操作ツールを簡単に作ってハック
前提とする知識
- 基本的なC言語の知識
- ネットワークパケットの概念(超あっさり)を把握しているとなおよし
難易度は高くありません。手を動かして、感覚でみにつけるのが趣旨です!!!
なんでこんなことするの?
wiresharkに頼ればいいじゃん
いやいやSDN/NFV時代, 自分で作れてなんぼ
どんどんルータは使う時代から作る時代になります
DPDK (Data Plane Development Kit)
性能維持のためにkernelとは関わらない (もちろん連携可)
- ルータ (ex, Brocade Vyatta)
- Openflowスイッチ
2017.6時点のアカデミアでの最速はBGP full route 145Gbps
特徴
- CPUの論理コアを1つのスレッドで占有
- ユーザランド上で
独自のポーリング専用NICドライバ
- Hugepagesを用いた独自のメモリ管理
目次
1. 基本編
a. パケットで遊んでみる, Wiresharkで見てみる
2. 実践編
a. パケット送信
b. パケット受信
c. Wiresharkよりクールな
パケットアナライザをつくる!!!
パケットで遊んでみる, Wiresharkで見てみる
$ ping slankdev.net
$ nslookup slankdev.net
$ wget slankdev.net
それぞれWiresharkでどのように見られるかを確認
nslookupコマンド -> DNSの名前問い合わせをする
wgetコマンド -> HTTPリクエストを投げる
パケット遊び (予習)
準備 int fd = open_socket(“eth0”); // enp3s0とか,wlan0とかでも
送信 send_packet(fd, pack, packlen);
受信 size_t recvlen = recv_packet(fd, packbuf, packbufsize);
HEX表示 hexdump(pack, len);
本題!
Wiresharkよりクールな
パケットアナライザをつくる!
Ethernet Frame
IPv4 Header
ARP Header
OSC2017Hokkaido

Mais conteúdo relacionado

Mais procurados

M5StackをRustで動かす
M5StackをRustで動かすM5StackをRustで動かす
M5StackをRustで動かすKenta IDA
 
H.264で相互接続 - WebRTC Meetup Tokyo #10
H.264で相互接続 - WebRTC Meetup Tokyo #10H.264で相互接続 - WebRTC Meetup Tokyo #10
H.264で相互接続 - WebRTC Meetup Tokyo #10goforbroke
 
Pcapngを読んでみる
Pcapngを読んでみるPcapngを読んでみる
Pcapngを読んでみるYagi Shinnosuke
 
2017年のFPGA Community活動について
2017年のFPGA Community活動について2017年のFPGA Community活動について
2017年のFPGA Community活動についてMr. Vengineer
 
CSRを自動生成する!
CSRを自動生成する!CSRを自動生成する!
CSRを自動生成する!Taichi Ishitani
 
nadoka さんの m17n 対応のベストプラクティス
nadoka さんの m17n 対応のベストプラクティスnadoka さんの m17n 対応のベストプラクティス
nadoka さんの m17n 対応のベストプラクティスKazuhiro Nishiyama
 
IPv6冗長で差をつけよう 2011年夏の思い出作り VRRP編
IPv6冗長で差をつけよう  2011年夏の思い出作り VRRP編IPv6冗長で差をつけよう  2011年夏の思い出作り VRRP編
IPv6冗長で差をつけよう 2011年夏の思い出作り VRRP編@ otsuka752
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04Kenichiro MATOHARA
 
ブラウザで動く準同型暗号
ブラウザで動く準同型暗号ブラウザで動く準同型暗号
ブラウザで動く準同型暗号MITSUNARI Shigeo
 
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!debug-ito
 
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法shigeki_ohtsu
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話yaegashi
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Yoshiyuki Nakamura
 

Mais procurados (20)

Riscv+fpga200606
Riscv+fpga200606Riscv+fpga200606
Riscv+fpga200606
 
M5StackをRustで動かす
M5StackをRustで動かすM5StackをRustで動かす
M5StackをRustで動かす
 
H.264で相互接続 - WebRTC Meetup Tokyo #10
H.264で相互接続 - WebRTC Meetup Tokyo #10H.264で相互接続 - WebRTC Meetup Tokyo #10
H.264で相互接続 - WebRTC Meetup Tokyo #10
 
Pcapngを読んでみる
Pcapngを読んでみるPcapngを読んでみる
Pcapngを読んでみる
 
2017年のFPGA Community活動について
2017年のFPGA Community活動について2017年のFPGA Community活動について
2017年のFPGA Community活動について
 
ZynqMP勉強会
ZynqMP勉強会ZynqMP勉強会
ZynqMP勉強会
 
CSRを自動生成する!
CSRを自動生成する!CSRを自動生成する!
CSRを自動生成する!
 
nadoka さんの m17n 対応のベストプラクティス
nadoka さんの m17n 対応のベストプラクティスnadoka さんの m17n 対応のベストプラクティス
nadoka さんの m17n 対応のベストプラクティス
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
IPv6冗長で差をつけよう 2011年夏の思い出作り VRRP編
IPv6冗長で差をつけよう  2011年夏の思い出作り VRRP編IPv6冗長で差をつけよう  2011年夏の思い出作り VRRP編
IPv6冗長で差をつけよう 2011年夏の思い出作り VRRP編
 
Takep lpc1114-190614
Takep lpc1114-190614Takep lpc1114-190614
Takep lpc1114-190614
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04鹿児島Linux勉強会2016.04
鹿児島Linux勉強会2016.04
 
ブラウザで動く準同型暗号
ブラウザで動く準同型暗号ブラウザで動く準同型暗号
ブラウザで動く準同型暗号
 
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
 
暗号技術入門
暗号技術入門暗号技術入門
暗号技術入門
 
Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法Node-v0.12のTLSを256倍使いこなす方法
Node-v0.12のTLSを256倍使いこなす方法
 
Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
 
RISC-V User level ISA
RISC-V User level ISARISC-V User level ISA
RISC-V User level ISA
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
 

Semelhante a OSC2017Hokkaido

Raspberrypitraining20171027
Raspberrypitraining20171027Raspberrypitraining20171027
Raspberrypitraining20171027Kiyoshi Ogawa
 
IoT Cyber Security Counter Measurement
IoT Cyber Security Counter MeasurementIoT Cyber Security Counter Measurement
IoT Cyber Security Counter MeasurementKiyoshi Ogawa
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Hideki Takase
 
20201028 Visual IoTLT vol.5 kitazaki
20201028 Visual IoTLT vol.5 kitazaki20201028 Visual IoTLT vol.5 kitazaki
20201028 Visual IoTLT vol.5 kitazakiAyachika Kitazaki
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMFAtomu Hidaka
 
さくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるものさくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるもの法林浩之
 
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプトRichie Shellshoccar
 
OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17Tatsuo Kudo
 
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...SORACOM,INC
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習Hitoshi Sato
 
SORACOM UG 信州 #5 | SORACOM Conference "Discovery" 2018 SORACOM UG Explorer それ...
SORACOM UG 信州 #5 | SORACOM Conference "Discovery" 2018 SORACOM UG Explorer それ...SORACOM UG 信州 #5 | SORACOM Conference "Discovery" 2018 SORACOM UG Explorer それ...
SORACOM UG 信州 #5 | SORACOM Conference "Discovery" 2018 SORACOM UG Explorer それ...SORACOM,INC
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?Masamitsu Maehara
 
Signature & Model Hybrid Platform
Signature & Model Hybrid PlatformSignature & Model Hybrid Platform
Signature & Model Hybrid PlatformYOJI WATANABE
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析euphoricwavism
 

Semelhante a OSC2017Hokkaido (20)

Raspberrypitraining20171027
Raspberrypitraining20171027Raspberrypitraining20171027
Raspberrypitraining20171027
 
IoT Cyber Security Counter Measurement
IoT Cyber Security Counter MeasurementIoT Cyber Security Counter Measurement
IoT Cyber Security Counter Measurement
 
DAS_202109
DAS_202109DAS_202109
DAS_202109
 
FIT-HAC CTF
FIT-HAC CTFFIT-HAC CTF
FIT-HAC CTF
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 
20201028 Visual IoTLT vol.5 kitazaki
20201028 Visual IoTLT vol.5 kitazaki20201028 Visual IoTLT vol.5 kitazaki
20201028 Visual IoTLT vol.5 kitazaki
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
 
さくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるものさくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるもの
 
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
 
Cybozu lt2017
Cybozu lt2017Cybozu lt2017
Cybozu lt2017
 
SecHack365の紹介
SecHack365の紹介SecHack365の紹介
SecHack365の紹介
 
OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17
 
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習
 
Pycon mini20190511 pub
Pycon mini20190511 pubPycon mini20190511 pub
Pycon mini20190511 pub
 
SORACOM UG 信州 #5 | SORACOM Conference "Discovery" 2018 SORACOM UG Explorer それ...
SORACOM UG 信州 #5 | SORACOM Conference "Discovery" 2018 SORACOM UG Explorer それ...SORACOM UG 信州 #5 | SORACOM Conference "Discovery" 2018 SORACOM UG Explorer それ...
SORACOM UG 信州 #5 | SORACOM Conference "Discovery" 2018 SORACOM UG Explorer それ...
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
 
20160717 csc sec_bd
20160717 csc sec_bd20160717 csc sec_bd
20160717 csc sec_bd
 
Signature & Model Hybrid Platform
Signature & Model Hybrid PlatformSignature & Model Hybrid Platform
Signature & Model Hybrid Platform
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析
 

Mais de slankdev

動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発slankdev
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発slankdev
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Coreslankdev
 
Offloading BPF Implementation to FPGA-NIC したいねって話
Offloading BPF Implementation to FPGA-NIC したいねって話Offloading BPF Implementation to FPGA-NIC したいねって話
Offloading BPF Implementation to FPGA-NIC したいねって話slankdev
 
Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告slankdev
 
サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会slankdev
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料slankdev
 
OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT slankdev
 
LibPGEN 1st Step Guide
LibPGEN 1st Step GuideLibPGEN 1st Step Guide
LibPGEN 1st Step Guideslankdev
 
libpgenでパケット操作
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作slankdev
 
ARPSpoofing攻撃によるMITM攻撃
ARPSpoofing攻撃によるMITM攻撃ARPSpoofing攻撃によるMITM攻撃
ARPSpoofing攻撃によるMITM攻撃slankdev
 

Mais de slankdev (11)

動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
 
Offloading BPF Implementation to FPGA-NIC したいねって話
Offloading BPF Implementation to FPGA-NIC したいねって話Offloading BPF Implementation to FPGA-NIC したいねって話
Offloading BPF Implementation to FPGA-NIC したいねって話
 
Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告Seccamp 2016 チューター成果報告
Seccamp 2016 チューター成果報告
 
サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会サイボウズ・ラボユース中間報告会
サイボウズ・ラボユース中間報告会
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
 
OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT OSC2016 Tokyo/Spring LT
OSC2016 Tokyo/Spring LT
 
LibPGEN 1st Step Guide
LibPGEN 1st Step GuideLibPGEN 1st Step Guide
LibPGEN 1st Step Guide
 
libpgenでパケット操作
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作
 
ARPSpoofing攻撃によるMITM攻撃
ARPSpoofing攻撃によるMITM攻撃ARPSpoofing攻撃によるMITM攻撃
ARPSpoofing攻撃によるMITM攻撃
 

OSC2017Hokkaido