Upload
slankdev
View
133
Download
0
Embed Size (px)
Citation preview
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