16
Wiresharkc言語による パケット解析入門 Hiroki SHIROKURA @slankdev 国立セキュリティ・キャンプ同窓会

OSC2017Hokkaido

Embed Size (px)

Citation preview

Page 1: OSC2017Hokkaido

Wiresharkとc言語によるパケット解析入門

Hiroki SHIROKURA @slankdev国立セキュリティ・キャンプ同窓会

Page 2: OSC2017Hokkaido

Wiresharkに負けないc言語での

パケット解析ツール開発入門

Hiroki SHIROKURA @slankdev国立セキュリティ・キャンプ同窓会

Page 3: OSC2017Hokkaido

準備

$ sudo apt install -y git wireshark$ git clone http://github.com/slankdev/packet_asobi

Page 4: OSC2017Hokkaido

セキュリティ・キャンプ

次代を担う世界に通用する若手そうの情報セキュリティ人材を発掘育成

産業,教育界を結集した講師による合宿形式の勉強会

世界トップのエンジニアや同世代の若手から刺激がもらえる

U22, 事前審査あり

Page 5: OSC2017Hokkaido

城倉 弘樹 SHIROKURA Hiroki

- SNS: slankdev- Web: http://slankdev.net

活動

- セキュリティキャンプ 2015,2016,2017 (16からチューター)- サイボウズラボユース 5th 「拡張可能なパケット解析C++ライブラリ」

- サイボウズラボユース 6th 「高性能ネットワークスタックon DPDK」- IIJ研究所 アルバイト研究員「高性能パケット処理」

- 2017年 未踏事業 採択「環境に対して自動最適化する高性能通信基盤」

- DPDKコントリビュータ

Page 6: OSC2017Hokkaido

概要

目的: ツールの使い方でなく、本質的なパケット解析方法

内容: c言語を用いたパケット操作ツールを簡単に作ってハック

前提とする知識

- 基本的なC言語の知識

- ネットワークパケットの概念(超あっさり)を把握しているとなおよし

難易度は高くありません。手を動かして、感覚でみにつけるのが趣旨です!!!

Page 7: OSC2017Hokkaido

なんでこんなことするの?

wiresharkに頼ればいいじゃん

いやいやSDN/NFV時代, 自分で作れてなんぼ

どんどんルータは使う時代から作る時代になります

Page 8: OSC2017Hokkaido

DPDK (Data Plane Development Kit)性能維持のためにkernelとは関わらない (もちろん連携可)

- ルータ (ex, Brocade Vyatta)- Openflowスイッチ

2017.6時点のアカデミアでの最速はBGP full route 145Gbps

特徴

- CPUの論理コアを1つのスレッドで占有

- ユーザランド上で

独自のポーリング専用NICドライバ

- Hugepagesを用いた独自のメモリ管理

Page 9: OSC2017Hokkaido

目次

1. 基本編

a. パケットで遊んでみる, Wiresharkで見てみる

2. 実践編

a. パケット送信

b. パケット受信

c. Wiresharkよりクールな

パケットアナライザをつくる!!!

Page 10: OSC2017Hokkaido

パケットで遊んでみる, Wiresharkで見てみる

$ ping slankdev.net$ nslookup slankdev.net$ wget slankdev.net

それぞれWiresharkでどのように見られるかを確認

nslookupコマンド -> DNSの名前問い合わせをする

wgetコマンド -> HTTPリクエストを投げる

Page 11: OSC2017Hokkaido

パケット遊び (予習)

準備 int fd = open_socket(“eth0”); // enp3s0とか,wlan0とかでも

送信 send_packet(fd, pack, packlen);

受信 size_t recvlen = recv_packet(fd, packbuf, packbufsize);

HEX表示 hexdump(pack, len);

Page 12: OSC2017Hokkaido

本題!Wiresharkよりクールな

パケットアナライザをつくる!

Page 13: OSC2017Hokkaido

Ethernet Frame

Page 14: OSC2017Hokkaido

IPv4 Header

Page 15: OSC2017Hokkaido

ARP Header

Page 16: OSC2017Hokkaido