Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
@takahoyo
§ Pythonで書かれた対話型のパケット操作プログラム
-‐‑‒ Pythonのライブラリとしてimportして使うことも
-‐‑‒ ドキュメント(英語)が充実している
§ http://www.secdev.org/projects/s...
§ Python 2系がインストールされてる環境で試した
-‐‑‒ 3系は⾮非公式で対応してるらしい
§ Linux
-‐‑‒ Kali Linuxならデフォルトでインストール
-‐‑‒ Ubuntu : sudo apt-get inst...
2015/9/30 4
§パケットを作る
§パケットを送る
§パケットを解析する
2015/9/30 5
2015/9/30
§ まずはこういうパケットを作ってみよう
2015/9/30
Ethernet IP TCP
§ プロトコルがクラスとして定義されている
-‐‑‒ Ex. Ethernet → Etherクラス
§ “/”を使うことで、複数のレイヤのパケットを作る
-‐‑‒ こういうパケットを作る場合
-‐‑‒ Ether()/IP()/TCP()...
§ 次は各プロトコルフィールドに値を指定
-‐‑‒ Ethernet
§ Src MAC Addr: 00:00:00:00:00:00
§ Dst MAC Addr: 11:11:11:11:11:11
-‐‑‒ IP
§ Src I...
§ 引数を指定して、フィールドを特定の値で初期化
§ フィールドに対応してる変数を調べる
-‐‑‒ 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"...
§ 変数packetにパケットを保存
§ 変数packetの中⾝身を表⽰示
§ 変数packetの中⾝身をWiresharkで表⽰示
-‐‑‒ wireshark(packet)
§ 変数packetの中⾝身をexample.pcapに...
§ Wiresharkで表⽰示
2015/9/30 13
§ ここまで、”Ether/IP/TCP”のパケットを作った
§ 他のプロトコルにも対応している
-‐‑‒ ls()でどのようなプロトコルが対応しているか表⽰示できる
-‐‑‒ L1~L4のプロトコルであればほぼ対応
-‐‑‒ L5~L7は...
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, co...
§ パケット送信の応⽤用例例
§ Pythonでデータを処理理して送信する
-‐‑‒ JPEGファイルをpythonで読み込む
-‐‑‒ 読み込んだファイルを分割する
-‐‑‒ ICMPのデータ部に分割したデータを⼊入れたパケットを作る
-...
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アドレスを表⽰示
-‐...
§ 処理理を⼯工夫することで様々な処理理が可能
-‐‑‒ for⽂文を使った複数のパケットの処理理
2015/9/30 27
§ これを出来ると何が嬉しい?
-‐‑‒ Wiresharkで⼿手が届かない処理理が出来る
§ 例例.
-‐‑‒ https://www.cloudshark.org/captures/20532c9a3305
-‐‑‒ ptunnelのパ...
§ まずWiresharkで⾒見見てみる
2015/9/30 29
28byteのヘッダ
29byte⽬目以降降は
HTTPのデータ
§ まずWiresharkで⾒見見てみる
2015/9/30 30
JPEGのヘッダ
§ まずWiresharkで⾒見見てみる(結果)
-‐‑‒ ICMPのデータ部分にptunnel使ったデータ
-‐‑‒ データの最初の28byteはヘッダ、それ以外はHTTP通信
-‐‑‒ “GET /flag.jpg”からflag.jpgを...
2015/9/30 32
§ ちなみに…
§ packets[n].timeでタイムスタンプにアクセスできる
2015/9/30 33
2015/9/30 34
§ 対話型であること
-‐‑‒ ⼿手軽に使える、試せる
§ Pythonであること
-‐‑‒ 他の便便利利なライブラリと⼀一緒に使える
-‐‑‒ Python最⾼高
§ 他のソフトウェアとの連携
-‐‑‒ Wireshark
-‐‑‒ n...
§ インストールがやや⾯面倒くさい
§ Python使えないとつらい
§ 開発が⽌止まってる?
§ L5~L7レイヤに対応してくれたらなあ…
§ Pythonなのでやや遅い
-‐‑‒ その辺りはCで実装されたツールが良良いかも
§ ...
§ Scapyの公式ドキュメント
-‐‑‒ http://www.secdev.org/projects/scapy/doc/index.html
§ Scapy Cheat Sheet
-‐‑‒ http://packetlife.net...
Upcoming SlideShare
Loading in …5
×

Scapyで作る・解析するパケット

0 views

Published on

第32回「ネットワーク パケットを読む会(仮)」で発表した資料です。 #pakeana
https://atnd.org/events/70080

Published in: Engineering
  • Here's just how easy it is to make money with our service: 1, Look for an email each morning from the pro Race Consultants. 2, Place your bets as advised. 3, Collect your winnings! learn more.... ☀☀☀ https://url.cn/05AQZAqy
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ❶❶❶ http://bit.ly/39sFWPG ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ❶❶❶ http://bit.ly/39sFWPG ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Scapyで作る・解析するパケット

  1. 1. @takahoyo
  2. 2. § 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
  3. 3. § 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
  4. 4. 2015/9/30 4
  5. 5. §パケットを作る §パケットを送る §パケットを解析する 2015/9/30 5
  6. 6. 2015/9/30
  7. 7. § まずはこういうパケットを作ってみよう 2015/9/30 Ethernet IP TCP
  8. 8. § プロトコルがクラスとして定義されている -‐‑‒ Ex. Ethernet → Etherクラス § “/”を使うことで、複数のレイヤのパケットを作る -‐‑‒ こういうパケットを作る場合 -‐‑‒ Ether()/IP()/TCP() 2015/9/30 8 Ethernet IP TCP
  9. 9. § 次は各プロトコルフィールドに値を指定 -‐‑‒ 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
  10. 10. § 引数を指定して、フィールドを特定の値で初期化 § フィールドに対応してる変数を調べる -‐‑‒ ls(クラス名) -‐‑‒ Ex. Etherクラス → ls(Ether) 2015/9/30 10
  11. 11. § 前述のパケットを作ると次のようになる -‐‑‒ 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
  12. 12. § 変数packetにパケットを保存 § 変数packetの中⾝身を表⽰示 § 変数packetの中⾝身をWiresharkで表⽰示 -‐‑‒ wireshark(packet) § 変数packetの中⾝身をexample.pcapに書き込み -‐‑‒ wrpcap(‘example.pcap’,packet) 2015/9/30 12
  13. 13. § Wiresharkで表⽰示 2015/9/30 13
  14. 14. § ここまで、”Ether/IP/TCP”のパケットを作った § 他のプロトコルにも対応している -‐‑‒ ls()でどのようなプロトコルが対応しているか表⽰示できる -‐‑‒ L1~L4のプロトコルであればほぼ対応 -‐‑‒ L5~L7は、あまり対応してない雰囲気… 2015/9/30 14
  15. 15. 2015/9/30 15
  16. 16. 2015/9/30 16 § まずパケットを作る -‐‑‒ “ICMP Echo Request”パケットを作る § そのパケットを送る -‐‑‒ send()で送信することができる -‐‑‒ send()の場合、L2のプロトコルは⾃自動で調整
  17. 17. § Wiresharkで⾒見見てみる 2015/9/30 17
  18. 18. § 送るだけでなく、返ってきたパケットも⾒見見る -‐‑‒ sr()を使う -‐‑‒ sr1()を使うと最初に返ってきた⼀一つのパケットだけ⾒見見る 2015/9/30 18
  19. 19. § 返ってきたパケットを変数に保存する -‐‑‒ sr()やsr1()の戻り値は、返ってきたパケットの情報 2015/9/30 19
  20. 20. § 他にもいろいろな送信⽅方法 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) 返答をすべて受信(危なそう)
  21. 21. § パケット送信の応⽤用例例 § Pythonでデータを処理理して送信する -‐‑‒ JPEGファイルをpythonで読み込む -‐‑‒ 読み込んだファイルを分割する -‐‑‒ ICMPのデータ部に分割したデータを⼊入れたパケットを作る -‐‑‒ そのパケットを送信する -‐‑‒ https://www.cloudshark.org/captures/48a2a5e3d98e -‐‑‒ このように変なパケットも作ることが出来る § 応⽤用すればもっと変なパケットを作ることも… 2015/9/30 21
  22. 22. 2015/9/30 22
  23. 23. 2015/9/30 23
  24. 24. § pcapファイルを読み込む -‐‑‒ rdpcap()を使う -‐‑‒ 変数packetsに、pcapファイル内のパケットが読み込まれる -‐‑‒ packets[n]でn-1番⽬目にあるパケットにアクセスできる 2015/9/30
  25. 25. § WiresharkとScapyでパケットを⾒見見⽐比べてみる 2015/9/30 25
  26. 26. § 各フィールドへのアクセス -‐‑‒ 変数packetsにパケットが読み込まれている場合 -‐‑‒ packets[n][‘layername’].fieldname -‐‑‒ 例例1: 1番⽬目のパケットの送信元IPアドレスを表⽰示 -‐‑‒ 例例2: 1番⽬目のパケットのICMPデータを表⽰示 2015/9/30 26
  27. 27. § 処理理を⼯工夫することで様々な処理理が可能 -‐‑‒ for⽂文を使った複数のパケットの処理理 2015/9/30 27
  28. 28. § これを出来ると何が嬉しい? -‐‑‒ 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
  29. 29. § まずWiresharkで⾒見見てみる 2015/9/30 29 28byteのヘッダ 29byte⽬目以降降は HTTPのデータ
  30. 30. § まずWiresharkで⾒見見てみる 2015/9/30 30 JPEGのヘッダ
  31. 31. § まずWiresharkで⾒見見てみる(結果) -‐‑‒ ICMPのデータ部分にptunnel使ったデータ -‐‑‒ データの最初の28byteはヘッダ、それ以外はHTTP通信 -‐‑‒ “GET /flag.jpg”からflag.jpgを取得してるパケットと推測 -‐‑‒ 複数のパケットを⾒見見ると、JPEGのデータが確認できる § Scapy使って何をやるか -‐‑‒ ICMPのデータを抽出 -‐‑‒ 28byteのヘッダを取り除いて、それ以外のデータをつなげる -‐‑‒ そのデータからJPEGデータを抽出する -‐‑‒ pythonなので、これをすべて⼀一緒にできる 2015/9/30 31
  32. 32. 2015/9/30 32
  33. 33. § ちなみに… § packets[n].timeでタイムスタンプにアクセスできる 2015/9/30 33
  34. 34. 2015/9/30 34
  35. 35. § 対話型であること -‐‑‒ ⼿手軽に使える、試せる § Pythonであること -‐‑‒ 他の便便利利なライブラリと⼀一緒に使える -‐‑‒ Python最⾼高 § 他のソフトウェアとの連携 -‐‑‒ Wireshark -‐‑‒ nmap -‐‑‒ p0f § 他のツールよりも柔軟に処理理が出来る 2015/9/30 35
  36. 36. § インストールがやや⾯面倒くさい § Python使えないとつらい § 開発が⽌止まってる? § L5~L7レイヤに対応してくれたらなあ… § Pythonなのでやや遅い -‐‑‒ その辺りはCで実装されたツールが良良いかも § PcapNgに対応してない -‐‑‒ editcapで変換すれば良良いが… 2015/9/30 36
  37. 37. § 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

×