Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
Marp Tutorial
Rui Watanabe
Redisの特徴と活用方法について
Yuji Otani
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
初心者向けCTFのWeb分野の強化法
kazkiti
1
of
37
Top clipped slide
Scapyで作る・解析するパケット
Sep. 30, 2015
•
0 likes
38 likes
×
Be the first to like this
Show More
•
34,183 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Engineering
第32回「ネットワーク パケットを読む会(仮)」で発表した資料です。 #pakeana https://atnd.org/events/70080
Takaaki Hoyo
Follow
Advertisement
Advertisement
Advertisement
Recommended
Pythonでパケット解析
euphoricwavism
8.5K views
•
44 slides
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
60.4K views
•
63 slides
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
49.3K views
•
139 slides
Linux女子部 systemd徹底入門
Etsuji Nakai
135.9K views
•
50 slides
How to run P4 BMv2
Kentaro Ebisawa
8K views
•
22 slides
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
3.1K views
•
47 slides
More Related Content
Slideshows for you
(20)
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
•
55.7K views
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
•
14.6K views
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
•
22.3K views
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
•
11.8K views
Marp Tutorial
Rui Watanabe
•
2.5K views
Redisの特徴と活用方法について
Yuji Otani
•
98.6K views
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
•
45.9K views
初心者向けCTFのWeb分野の強化法
kazkiti
•
14.8K views
Interrupt Affinityについて
Takuya ASADA
•
13K views
Ethernetの受信処理
Takuya ASADA
•
24.1K views
ARM Trusted FirmwareのBL31を単体で使う!
Mr. Vengineer
•
12.5K views
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
•
13.1K views
ChatGPT 人間のフィードバックから強化学習した対話AI
Shota Imai
•
96.8K views
Dockerからcontainerdへの移行
Akihiro Suda
•
5.7K views
例外設計における大罪
Takuto Wada
•
66.4K views
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
•
39.8K views
Marp入門
Rui Watanabe
•
835 views
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
•
5.5K views
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
•
15.2K views
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
•
31.7K views
Similar to Scapyで作る・解析するパケット
(20)
Subprocess no susume
Makoto Kishimoto
•
1.6K views
Scapy presentation
ashigirl ZareGoto
•
2K views
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
Yuuki Takano
•
1.8K views
サーバー実装いろいろ
kjwtnb
•
1.9K views
Scapy presentation Remake(訂正)
ashigirl ZareGoto
•
2.5K views
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki
•
3K views
OpenStack + Common Lisp
irix_jp
•
4.6K views
らくちん Go言語
株式会社YEBIS.XYZ
•
1.5K views
C-langage
Hiramatsu Ryosuke
•
2.3K views
Trema day 1
ykuga
•
1.5K views
Lisp tutorial for Pythonista : Day 1
Ransui Iso
•
1.7K views
謎の言語Forthが謎なので実装した
t-sin
•
1.8K views
Pdp11 on-fpga
magoroku Yamamoto
•
2.7K views
FD.io VPP事始め
tetsusat
•
2.2K views
PostgreSQLとpython
Soudai Sone
•
14.2K views
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
•
4.8K views
about Tcpreplay
@ otsuka752
•
28.5K views
Lagopus as open flow hybrid switch 実践編
Masaru Oki
•
1K views
VPP事始め
npsg
•
10.9K views
ZFSのソースコードをチラ見してみる
Koichi Suzuki
•
1.2K views
Advertisement
More from Takaaki Hoyo
(6)
Elastic StackでWebサーバのログ解析を始めた件について
Takaaki Hoyo
•
2.6K views
低対話型サーバハニーポットの運用結果及び考察
Takaaki Hoyo
•
2.7K views
CpawCTF 勉強会 Network
Takaaki Hoyo
•
19K views
○○はいいぞ
Takaaki Hoyo
•
921 views
パケットで遊ぼう! #ssmjp 2015/04
Takaaki Hoyo
•
4.9K views
hpingで作るパケット
Takaaki Hoyo
•
14.8K views
Recently uploaded
(20)
はじめてのハッカソン.pptx
rare0b
•
5 views
SPECIALIZED heavy racks.pdf
FernandoRivasCortes1
•
2 views
ChatGPTをもっと使いたい.pptx
TokioMiyaoka
•
23 views
★可查可存档〖制作萨福克大学文凭证书毕业证〗
vvvvv24
•
3 views
mabl - 負荷テストにおけるmablのAPIテスト活用_20230525
Yuki Shimizu
•
27 views
揭秘美国留学:如何获得阿拉斯加大学毕业证?
xefexep
•
2 views
Radio03(1995).pdf
ivan ion
•
7 views
《阳光海岸大学毕业证|学位证书校内仿真版本》
hj123saf
•
2 views
Radio06(1995).pdf
ivan ion
•
4 views
W&B Seminar #4.pdf
Akira Shibata
•
93 views
办皇家墨尔本理工大学毕业证成绩单
JhhhfGffh
•
3 views
★可查可存档〖制作波恩大学文凭证书毕业证〗
tujjj
•
9 views
★可查可存档〖制作思克莱德大学文凭证书毕业证〗
vgfg1
•
3 views
美国:伦斯勒理工学院毕业证办理流程
amdfot
•
2 views
法国:蒙彼利埃大学毕业证办理流程
cyvyvgk
•
0 views
《卡尔顿大学毕业证|学位证书校内仿真版本》
124hdjkhas
•
4 views
《尚贝里大学毕业证|学位证书校内仿真版本》
hj123saf
•
2 views
DBチューニング超入門
VirtualTech Japan Inc./Begi.net Inc.
•
9 views
★可查可存档〖制作俄亥俄大学文凭证书毕业证〗
fgfg45
•
2 views
AI予約サービスのMLOps事例紹介
Takashi Suzuki
•
4 views
Advertisement
Scapyで作る・解析するパケット
@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
Advertisement