24. アーキテクチャ
Mar 4 2016 Security Camp Forum 24
IO Controller
Address Controller
Module
Packet Controller
25. 3つのコンポーネントに分割
o IO Controller
◦ データの入出力を担当
◦ ネットワークインターフェースに送受信
◦ PCAP, PCAPNGファイルに書き込み
o Address Controller
◦ アドレス処理などを担当
◦ 文字列からアドレスなど
o Packet Controller
◦ 様々なプロトコルのパケットを解析、作成などを担当
o Module
◦ 上の三つを使って書かれたモジュール群
Mar 4 2016 Security Camp Forum 25
26. Packet, Address Controller
o パケットやアドレスのバイナリの生成や、解析などを行う
o 簡単なインターフェースでパケットのデータを編集などを
可能にします
o 例えばARPパケットならこんな感じ
Mar 4 2016 Security Camp Forum 26
27. Packet, Address class
o Packet class
◦ 各プロトコルに対応したパケットクラスがある
◦ TCPパケットなら pgen::tcp クラス
◦ (まだないけど) HTTPパケットなら pgen::http クラス
o Address class
◦ MACアドレスとIPアドレスがある
◦ pgen::macaddress クラス
◦ pgen::ipaddressクラス
Mar 4 2016 Security Camp Forum 27
28. IO Controller
o データの入出力を管理するクラス
◦ ネットワークインターフェース
◦ pcapファイル
◦ pcapNgファイル
o 既存のstreamクラスと使い方は全く一緒
o 以下以外の方法もあります
Mar 4 2016 Security Camp Forum 28
31. ユーザのミスを知らせる
Mar 4 2016 Security Camp Forum 31
o lengthに問題がある場合
◦ こんな感じに依存しあう値があると…
o 実装は…
◦ 高レイヤのフィールドから設定させる
(カプセル化の基本)
◦ パケット通信の基本どうりに作るぜ
E
T
H
I
P
U
D
P
D
a
t
a
データ長
UDPlength
IPtotallength
パケット長
35. 鮫ができないFollow ICMP Stream
o 現実的なメリットとかは気にせず Let’s パケット解析
o WiresharkのFollow TCP Streamは最高にクール
でもFollow ICMP Streamはない (ある必要は別に…)
o パケット解析の遊びです
o Special Thanks: イケメンパケリスト
Mar 4 2016 Security Camp Forum 35
36. 鮫ができないFollow ICMP Stream
o 問題
◦ icmpパケットに対して画像データを分割してデータ部に
くっつけられたパケットが与えられる
◦ そこから元の画像にもどす
◦ パケットは以下を使います
https://www.cloudshark.org/captures/97e668880ded
Mar 4 2016 Security Camp Forum 36