Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Scapyで作る・解析するパケット/ network packets craft and an...
Search
takahoyo
September 30, 2015
Programming
2.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Scapyで作る・解析するパケット/ network packets craft and analysis by Scapy
第32回「ネットワーク パケットを読む会(仮)」で発表した資料です。 #pakeana
https://atnd.org/events/70080
takahoyo
September 30, 2015
More Decks by takahoyo
See All by takahoyo
OSEP取るまでにやったこと
takahoyo
3
2.5k
"申" (猿)がつくセキュリティツールを検証してみた
takahoyo
4
1.3k
おうちで出来るセキュリティチャレンジ / cyber security challenge from home
takahoyo
4
1.9k
malspamの情報収集と解析 / malspam information gathering and analysis
takahoyo
0
130
Elastic StackでWebサーバのログ解析を始めた件について / Web server access log analysis using Elastic Stack
takahoyo
0
240
パケットで遊ぼう / let's play using network packet
takahoyo
0
240
hpingで作るパケット / network packet craft by hping
takahoyo
0
460
低対話型サーバハニーポットの運用結果及び考察 / Operation result of low interaction honeypots
takahoyo
0
270
Other Decks in Programming
See All in Programming
contenteditable と日本語入力に向き合う
colorful12
0
190
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
480
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1k
The Rails Doctrine Decade
koic
2
570
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
110
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
980
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
370
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
0
160
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
250
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Faster Mobile Websites
deanohume
310
32k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
740
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
560
So, you think you're a good person
axbom
PRO
2
2.2k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Transcript
@takahoyo
§ Pythonで書かれた対話型のパケット操作プログラム -‐‑‒ Pythonのライブラリとしてimportして使うことも -‐‑‒ ドキュメント(英語)が充実している § http://www.secdev.org/projects/scapy/ § http://www.secdev.org/projects/scapy/doc/index.html
§ 何ができる? -‐‑‒ パケットの⽣生成 -‐‑‒ パケットの送受信 -‐‑‒ pcapファイルの読み込み、書き込み -‐‑‒ など § 読み⽅方は、「すけいぴー」「すきゃっぴー」? -‐‑‒ http://yomikata.org/word/scapy 2015/9/30 2
§ Python 2系がインストールされてる環境で試した -‐‑‒ 3系は⾮非公式で対応してるらしい § Linux -‐‑‒ Kali Linuxならデフォルトでインストール
-‐‑‒ Ubuntu : sudo apt-get install python-scapy § Mac -‐‑‒ brew : brew install libdnet scapy § 他のインストール⽅方法について -‐‑‒ 公式のドキュメントを参照(情報が少し古い -‐‑‒ http://www.secdev.org/projects/scapy/doc/installation.html 2015/9/30 3
2015/9/30 4
§パケットを作る §パケットを送る §パケットを解析する 2015/9/30 5
2015/9/30
§ まずはこういうパケットを作ってみよう 2015/9/30 Ethernet IP TCP
§ プロトコルがクラスとして定義されている -‐‑‒ Ex. Ethernet → Etherクラス § “/”を使うことで、複数のレイヤのパケットを作る -‐‑‒
こういうパケットを作る場合 -‐‑‒ Ether()/IP()/TCP() 2015/9/30 8 Ethernet IP TCP
§ 次は各プロトコルフィールドに値を指定 -‐‑‒ Ethernet § Src MAC Addr: 00:00:00:00:00:00 §
Dst MAC Addr: 11:11:11:11:11:11 -‐‑‒ IP § Src IP Addr: 192.168.1.1 § Dst IP Addr: 192.168.1.2 -‐‑‒ TCP § Src port: 1234 § Dst port: 4321 § Flag: SYN 2015/9/30 9
§ 引数を指定して、フィールドを特定の値で初期化 § フィールドに対応してる変数を調べる -‐‑‒ ls(クラス名) -‐‑‒ Ex. Etherクラス →
ls(Ether) 2015/9/30 10
§ 前述のパケットを作ると次のようになる -‐‑‒ Ether(src="11:11:11:11:11:11", dst="00:00:00:00:00:00”)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=1234, dport=4321, flags="S") 2015/9/30 11
§ 変数packetにパケットを保存 § 変数packetの中⾝身を表⽰示 § 変数packetの中⾝身をWiresharkで表⽰示 -‐‑‒ wireshark(packet) § 変数packetの中⾝身をexample.pcapに書き込み
-‐‑‒ wrpcap(‘example.pcap’, packet) 2015/9/30 12
§ Wiresharkで表⽰示 2015/9/30 13
§ ここまで、”Ether/IP/TCP”のパケットを作った § 他のプロトコルにも対応している -‐‑‒ ls()でどのようなプロトコルが対応しているか表⽰示できる -‐‑‒ L1~L4のプロトコルであればほぼ対応 -‐‑‒ L5~L7は、あまり対応してない雰囲気…
2015/9/30 14
2015/9/30 15
2015/9/30 16 § まずパケットを作る -‐‑‒ “ICMP Echo Request”パケットを作る § そのパケットを送る
-‐‑‒ send()で送信することができる -‐‑‒ send()の場合、L2のプロトコルは⾃自動で調整
§ Wiresharkで⾒見見てみる 2015/9/30 17
§ 送るだけでなく、返ってきたパケットも⾒見見る -‐‑‒ sr()を使う -‐‑‒ sr1()を使うと最初に返ってきた⼀一つのパケットだけ⾒見見る 2015/9/30 18
§ 返ってきたパケットを変数に保存する -‐‑‒ sr()やsr1()の戻り値は、返ってきたパケットの情報 2015/9/30 19
§ 他にもいろいろな送信⽅方法 2015/9/30 20 function (引数は初期値, N:None) 説明 send(pkt, count=1,inter=1,iface=N)
L3レベルでのパケット送信 sendp(pkt, count=1, inter=1, iface=N) L2レベルでのパケット送信 sendfast(pkt, pps=N, mbps=N, iface=N) tcpreplayを使って送るらしい sr(pkt, filter=N, iface=N) : L3 srp(pkt, filter=N,iface=N) : L2 パケット送信 返答をすべて受信 sr1(pkt, filter=N, iface=N) : L3 srp1(pkt, filter=N, iface=N) : L2 パケット送信 返答を1つだけ受信 srflood(pkt, filter=N, iface=N) : L3 srpflood(pkt, filter=N, iface=N): L2 パケットを⼤大量量に送信(Flood) 返答をすべて受信(危なそう)
§ パケット送信の応⽤用例例 § Pythonでデータを処理理して送信する -‐‑‒ JPEGファイルをpythonで読み込む -‐‑‒ 読み込んだファイルを分割する -‐‑‒ ICMPのデータ部に分割したデータを⼊入れたパケットを作る
-‐‑‒ そのパケットを送信する -‐‑‒ https://www.cloudshark.org/captures/48a2a5e3d98e -‐‑‒ このように変なパケットも作ることが出来る § 応⽤用すればもっと変なパケットを作ることも… 2015/9/30 21
2015/9/30 22
2015/9/30 23
§ pcapファイルを読み込む -‐‑‒ rdpcap()を使う -‐‑‒ 変数packetsに、pcapファイル内のパケットが読み込まれる -‐‑‒ packets[n]でn-1番⽬目にあるパケットにアクセスできる 2015/9/30
§ WiresharkとScapyでパケットを⾒見見⽐比べてみる 2015/9/30 25
§ 各フィールドへのアクセス -‐‑‒ 変数packetsにパケットが読み込まれている場合 -‐‑‒ packets[n][‘layername’].fieldname -‐‑‒ 例例1: 1番⽬目のパケットの送信元IPアドレスを表⽰示 -‐‑‒
例例2: 1番⽬目のパケットのICMPデータを表⽰示 2015/9/30 26
§ 処理理を⼯工夫することで様々な処理理が可能 -‐‑‒ for⽂文を使った複数のパケットの処理理 2015/9/30 27
§ これを出来ると何が嬉しい? -‐‑‒ Wiresharkで⼿手が届かない処理理が出来る § 例例. -‐‑‒ https://www.cloudshark.org/captures/20532c9a3305 -‐‑‒ ptunnelのパケット
§ 参考 : http://mrt-k.hateblo.jp/entry/2014/02/02/205332 -‐‑‒ TCPなら、Wiresharkで”Follow TCP Stream”を使える -‐‑‒ ICMPの場合、それに該当する機能がWiresharkにない -‐‑‒ ScapyならICMPのデータ部分を繋げることが出来る -‐‑‒ さらにそのデータを処理理出来る 2015/9/30 28
§ まずWiresharkで⾒見見てみる 2015/9/30 29 28byteのヘッダ 29byte⽬目以降降は HTTPのデータ
§ まずWiresharkで⾒見見てみる 2015/9/30 30 JPEGのヘッダ
§ まずWiresharkで⾒見見てみる(結果) -‐‑‒ ICMPのデータ部分にptunnel使ったデータ -‐‑‒ データの最初の28byteはヘッダ、それ以外はHTTP通信 -‐‑‒ “GET /flag.jpg”からflag.jpgを取得してるパケットと推測 -‐‑‒
複数のパケットを⾒見見ると、JPEGのデータが確認できる § Scapy使って何をやるか -‐‑‒ ICMPのデータを抽出 -‐‑‒ 28byteのヘッダを取り除いて、それ以外のデータをつなげる -‐‑‒ そのデータからJPEGデータを抽出する -‐‑‒ pythonなので、これをすべて⼀一緒にできる 2015/9/30 31
2015/9/30 32
§ ちなみに… § packets[n].timeでタイムスタンプにアクセスできる 2015/9/30 33
2015/9/30 34
§ 対話型であること -‐‑‒ ⼿手軽に使える、試せる § Pythonであること -‐‑‒ 他の便便利利なライブラリと⼀一緒に使える -‐‑‒ Python最⾼高
§ 他のソフトウェアとの連携 -‐‑‒ Wireshark -‐‑‒ nmap -‐‑‒ p0f § 他のツールよりも柔軟に処理理が出来る 2015/9/30 35
§ インストールがやや⾯面倒くさい § Python使えないとつらい § 開発が⽌止まってる? § L5~L7レイヤに対応してくれたらなあ… § Pythonなのでやや遅い
-‐‑‒ その辺りはCで実装されたツールが良良いかも § PcapNgに対応してない -‐‑‒ editcapで変換すれば良良いが… 2015/9/30 36
§ Scapyの公式ドキュメント -‐‑‒ http://www.secdev.org/projects/scapy/doc/index.html § Scapy Cheat Sheet -‐‑‒ http://packetlife.net/media/library/36/scapy.pdf
§ scapy でソケット通信 -‐‑‒ http://nigaky.hatenablog.com/entry/20110716/1310813250 § Scapyでのパケットの扱い⽅方 -‐‑‒ http://mrt- k.github.io/scapy,nw/2015/02/16/Scapy%E3%81%A7%E3%81 %AE%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E3 %81%AE%E6%89%B1%E3%81%84%E6%96%B9/ § Scapy presentation -‐‑‒ http://www.slideshare.net/reonnishimura5/scapy-presentation 2015/9/30 37