How to Use Scapy              AshiGirl96( ๑・ิ‫ิ・ټ‬๑) from ZareGoto13年2月27日水曜日
Self - Introduction          HandleName:AshiGirl96          SEX:男。          OS: Mac, BT5          Work:高専一年生。          Tea...
What is Scapy??              Scapyはツール。(Pythonで作れたCUI              自分の思いのままにパケットが作れちゃう!              通信の仕組みがわかるかも??       ...
プロトコルの              基本知ってますよね?13年2月27日水曜日
通信プロトコルとは?              ネットワークを介してコンピュータ同士が通信を行う上で、相互に決められた約束事の              集合。通信手順、通信規約などと呼ばれることもある。              英語しか使え...
Scapyの話に              戻ります。13年2月27日水曜日
How to INSTALL!!!              さすがに Python はインストールしてるって前提で行きます               $   cd /tmp               $   wget scapy.net ...
STARTING USAGE!!!!                                              “On Python”              $ sudo scapy              Welcome...
AT FIRST STEPS!!!!              Let’s building some packets!!                            $ sudo scapy                     ...
Other                    5.このように 『/』でプロトコルを区切ることで、2つのレイヤを構成することが出来る                    6.IPの引数で src=”送信元” dst=”送信先”       ...
After that                    9.パケットを機械語にすることができる               >>>b = str(a)               >>> b               x00PVxe3xd...
READING .PCAP FILE!!!!          1 from scapy.all import *          2          3 a = rdpcap("/root/Desktop/q9.pcap")       ...
LET’S SEND PACKETS!!!!              11.パケットを送る関数は send() と sendp() です              send() : レイヤ3に向かってパケットを送ります。           ...
パケットを送ったらその答えが返ってくる関数sr(),srp()      sr() : レイヤ3に向かってパケットを送り、レスポンスが変数に入る     srp() : レイヤ2に向かってパケットを送り、レスポンスが変数に入る         ...
他に何が出来るか?13年2月27日水曜日
TCP traceroute          res,unans= traceroute([‘目的地’],ttl=,dport=どのポートか)          のように指定すると出来ます。成功した後に          res.graph(...
Use Wireshark          下の図のように パケットを作り、 wireshark(パケット)で          wiresharkが開いて、パケットを見ることが出来ます。13年2月27日水曜日
例えば、      PortScanって知ってますか?13年2月27日水曜日
SYNスキャンとは?                サーバにログを残さずにポートスキャン出来る『ステルススキャンの一種』です。                普通にポートスキャンをすると、ログが残ってしまうため、それを回避するため、      ...
For Example:              >>> sr(IP(dst="192.168.1.1")/              TCP(sport=RandShort(),dport=[22,80,443],flags="S"))  ...
sprintf()関数を使って、レスポンスのフラグがどのようになっているか見ると、        www(HTTP)と HTTPSはポートが閉まっていること(RA)がわかります。        SSHはどうやら、開いているようなので後で閉じよう...
最後に…。13年2月27日水曜日
僕が好きな分野。13年2月27日水曜日
(多分)DDos攻撃                                        次の図から説明すると、              1. IPアドレスが172.16.247.144のパソコンがwiresharkを       ...
2(続き).のようなソースを送ることで、ターゲットの1つのポート         が大変なことになる。 左に出てくるのは『ネットワーク通信』        を監視するためのツール。        3.Enterキーを推すと、1つのパソコンに向か...
軽く図で説明します。13年2月27日水曜日
ある、穏やかな暮らしをしている               OS(Ubuntu)がいました。13年2月27日水曜日
Scapy(を使ってる主)が悪さを企んでいます…。               このパケットを送ったら(多分)大変なことに!!                  ←こいつ、              ネットワークを見るための者。13年2月27日...
PoChitt       ona13年2月27日水曜日
in 1 min...13年2月27日水曜日
13年2月27日水曜日
1分で47.2MBなので、         23分で1038.4MB(約1.038GB)となり、       354時間後で1002528MG(約1.003TB)となる       特に重くしたパケットで無くてもこれぐらいになる…。13年2月2...
良い子は真似しない                DENE!!13年2月27日水曜日
Summary!!!!              パケットとネットワークについて知らないと               ほとんど何も出来ない。              パケットが死ぬほど簡単に出来る。              パケットをGU...
みんなも              パケット系男子に               なろう!!13年2月27日水曜日
ご清聴              ありがとうございました。13年2月27日水曜日
Upcoming SlideShare
Loading in …5
×

Scapy presentation Remake(訂正)

1,967 views
1,882 views

Published on

こっちのほうは訂正版。

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,967
On SlideShare
0
From Embeds
0
Number of Embeds
251
Actions
Shares
0
Downloads
2
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Scapy presentation Remake(訂正)

  1. 1. How to Use Scapy AshiGirl96( ๑・ิ‫ิ・ټ‬๑) from ZareGoto13年2月27日水曜日
  2. 2. Self - Introduction HandleName:AshiGirl96 SEX:男。 OS: Mac, BT5 Work:高専一年生。 Team: ZareGoto Twitter: @ashigirl96 Language: Python/Asm Interest:Security/Network HomePage:reonreon3reon.hatenablog.com13年2月27日水曜日
  3. 3. What is Scapy?? Scapyはツール。(Pythonで作れたCUI 自分の思いのままにパケットが作れちゃう! 通信の仕組みがわかるかも?? .pcapが見れちゃう!← ネットワークが見れちゃう   快適な暮らしをあなたの生活に!13年2月27日水曜日
  4. 4. プロトコルの 基本知ってますよね?13年2月27日水曜日
  5. 5. 通信プロトコルとは? ネットワークを介してコンピュータ同士が通信を行う上で、相互に決められた約束事の 集合。通信手順、通信規約などと呼ばれることもある。 英語しか使えない人と日本語しか使えない人では会話ができないように、対応している プロトコルが異なると通信することができない。人間同士が意思疎通を行う場合に、 どの言語を使うか(日本語か英語か)、どんな媒体を使って伝達するか(電話か手紙か)、 というように2つの階層に分けて考えることができるが、コンピュータ通信においても、 プロトコルの役割を複数の階層に分けて考える。 階層化することによって、上位のプロトコル(を実装したソフトウェア)は自分のすぐ下の プロトコルの使い方(インターフェース)さえ知っていれば、それより下で何が起きているかを まったく気にすることなく通信を行うことができる。電話機の操作法さえ知っていれば、 電話会社の交換局で何が起きているか知らなくても電話が使えるのと同じである。 現在インターネットで標準となっているIPは第3層(ネットワーク層)の、TCPやUDPは第4層 (トランスポート層)のプロトコルであり、HTTPやFTP、SMTP、POPなどは第5層(セッション層) 以上のプロトコルである。 http://e-words.jp/w/E38397E383ADE38388E382B3E383AB.html 参照13年2月27日水曜日
  6. 6. Scapyの話に 戻ります。13年2月27日水曜日
  7. 7. How to INSTALL!!! さすがに Python はインストールしてるって前提で行きます $ cd /tmp $ wget scapy.net $ unzip scapy-latest.zip $ cd scapy-2.* For UNIX like $ sudo python setup.py install For Windows http://www.secdev.org/projects/scapy/doc/installation.html Windows知らない(;*´Д`)。13年2月27日水曜日
  8. 8. STARTING USAGE!!!! “On Python” $ sudo scapy Welcome to Scapy (2.0.1-dev) >>> Pythonをベースとしてる インタプリタ ➡ファイルの場合 python ***.py from scapy.all import *13年2月27日水曜日
  9. 9. AT FIRST STEPS!!!! Let’s building some packets!! $ sudo scapy  1 >>> ping  = IP(dst=192.168.1.13)/ICMP() 1.pingとは  2 >>> ping.show() 2.IPプロトコル: ネットワークが  3 ###[ IP ]###  4   version= 4 データグラムや 疎通しているか  5   ihl= None パケットを 確認するための  6   tos= 0x0  7   len= None 中断するのに コマンド  8   id= 1 使われる主要 (この場合パケット)  9   flags=  な通信プロトコル 10   frag= 0 11   ttl= 64 3.ICMPプロトコル: ping は,ICMPのechoコ 12   proto= icmp 4.作ったパケットの IPのデータグラム処理に マンドを利用して、 13   chksum= 0x0 中身を おける誤りの 14   src= 172.16.247.139 指定した相手先 15   dst= ***.***.**.*** 見るための関数 通知や通信に (IPアドレス)に 16   options=  Packet.show() 関する情報の 『全く一緒の文字列 17 ###[ ICMP ]### そしてその下が 通知などの 18   type= echo-request 返して!』という感じ 19   code= 0 パケットの構造に プロトコル で疎通をはかる。 20   chksum= 0x0 なっている 21   id= 0x0 22   seq= 0x013年2月27日水曜日
  10. 10. Other 5.このように 『/』でプロトコルを区切ることで、2つのレイヤを構成することが出来る 6.IPの引数で src=”送信元” dst=”送信先” TCPは主にport番号や FLAGを指定することが出来る。 >>> ex=Ether()/IP(dst=”reon3.rosx.net”)/TCP()/"GET /profile3.html HTTP/1.0 nn" >>> hexdump(ex) 00 02 15 37 A2 44 00 AE F3 52 AA D1 08 00 45 00 ...7.D...R....E. 00 43 00 01 00 00 40 06 78 3C C0 A8 05 15 42 23 .C....@.x<....B# FA 97 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 20 00 BB 39 00 00 47 45 54 20 2F 69 6E 64 65 78 ..9..GET /index 2E 68 74 6D 6C 20 48 54 54 50 2F 31 2E 30 20 0A .html HTTP/1.0 . 0A 7. hexdump(引数)で パケットexを16進数で見る事が出来る。 8.『/』で文字列も一緒に書くと、一緒に入ることが出来る。13年2月27日水曜日
  11. 11. After that 9.パケットを機械語にすることができる >>>b = str(a) >>> b x00PVxe3xd5<x00x0c)C>xfdx08x00Ex00x00Fx00x01x00x00@ x06x80x89xacx10xf7x8bx1b`;,x00x14x00P x00x00x00x00x00x00x00x00Px02 x00Kxf1x00x00GET /profile3.html HTTP/ 1.0 nn 10.詳細に知ることも出来る。 >>> c = Ether(b) >>> c <Ether dst=00:50:56:e3:d5:3c src=00:0c:29:43:3e:fd type=0x800 |<IP version=4L ihl=5L tos=0x0 len=70 id=1 flags= frag=0L ttl=64 proto=tcp chksum=0x8089 src=172.16.247.139 dst=27.96.59.44 options= |<TCP sport=ftp_data dport=www seq=0 ack=0 dataofs=5L reserved=0L flags=S window=8192 chksum=0x4bf1 urgptr=0 options=[] |<Raw load=GET / profile3.html HTTP/1.0 nn |>>>>13年2月27日水曜日
  12. 12. READING .PCAP FILE!!!! 1 from scapy.all import * 2 3 a = rdpcap("/root/Desktop/q9.pcap") 4 a[45].pdfdump(layer_shift=1) 5 a[45].psdump("/root/Desktop/q9.eps",layer_shift=1) このように.pcapのファイルが開けました。 そして右の図のように.pcapの中身を 具体的(GUI)に見るようにすることも できます。他にも, a.show2() などの関数で、パケットの中身をCUIで わかりやすく見ることが可能です。 他にも a.summary() a.sprintf a.command() などなどたくさんあります。13年2月27日水曜日
  13. 13. LET’S SEND PACKETS!!!! 11.パケットを送る関数は send() と sendp() です send() : レイヤ3に向かってパケットを送ります。 sendp() : レイヤ2に向かってパケットを送ります。 send() sendp() >>> send(IP(dst="1.2.3.4")/ICMP()) >>> sendp( Ether() / IP ( dst= "1.2.3.4" , ttl = (1,4)), iface ="eth1") . .... Sent 1 packets. Sent 4 packets.13年2月27日水曜日
  14. 14. パケットを送ったらその答えが返ってくる関数sr(),srp() sr() : レイヤ3に向かってパケットを送り、レスポンスが変数に入る srp() : レイヤ2に向かってパケットを送り、レスポンスが変数に入る sr() >>> ping = IP(dst="192.168.1.6")/ICMP()/"PLEASE RESPONSE" >>> a = sr1(ping) 同じ文字列が Begin emission: 返ってきてるので、 .*Finished to send 1 packets. 成功したことが わかる(*‘ω‘ *) Received 2 packets, got 1 answers, remaining 0 packets >>> hexdump(a) 0000 45 00 00 2B 0A 58 00 00 80 01 CB 2F C0 A8 01 06 E..+.X...../.... 0010 AC 10 F7 8B 00 00 CD E4 00 00 00 00 50 4C 45 41 ............PLEA 0020 53 45 20 52 45 53 50 4F 4E 53 45 00 00 00 SE RESPONSE... >>>13年2月27日水曜日
  15. 15. 他に何が出来るか?13年2月27日水曜日
  16. 16. TCP traceroute res,unans= traceroute([‘目的地’],ttl=,dport=どのポートか) のように指定すると出来ます。成功した後に res.graph() と指定すると、図のように具体的に見れる。13年2月27日水曜日
  17. 17. Use Wireshark 下の図のように パケットを作り、 wireshark(パケット)で wiresharkが開いて、パケットを見ることが出来ます。13年2月27日水曜日
  18. 18. 例えば、 PortScanって知ってますか?13年2月27日水曜日
  19. 19. SYNスキャンとは? サーバにログを残さずにポートスキャン出来る『ステルススキャンの一種』です。 普通にポートスキャンをすると、ログが残ってしまうため、それを回避するため、 通信の手順の最後にキャンセルを意味するパケットを送ることにより手順を 中断させ、ログを残さないようにする。 一般的(3ウェアハンドシェイク) SYN スキャン RST   http://e-words.jp/w/E38397E383ADE38388E382B3E383AB.html , http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Tcp_normal.svg 参照13年2月27日水曜日
  20. 20. For Example: >>> sr(IP(dst="192.168.1.1")/ TCP(sport=RandShort(),dport=[22,80,443],flags="S")) Explanation: ターゲットを”192.168.1.1”として、 送信元のポートはランダムなものにして、 送信先のポートは 22(SSH)、80(HTTP)か443(HTTPS) にして、FLAGは”S”(SYNフラグ)を送る。 どのような反応になるか見ましょう。13年2月27日水曜日
  21. 21. sprintf()関数を使って、レスポンスのフラグがどのようになっているか見ると、 www(HTTP)と HTTPSはポートが閉まっていること(RA)がわかります。 SSHはどうやら、開いているようなので後で閉じようと思います← >>> ans,unans=_ >>> ans.summary(lambda(s,r): r.sprintf("%TCP.sport% -> %TCP.dport% : %TCP.flags%")) ssh -> 12936 : SA www -> 12044 : RA https -> 13527 : RA >>> root@bt:~$ nmap -p 22 80 443 192.168.1.1 Starting Nmap 6.25 ( http://nmap.org ) at 2013-02-26 10:33 EST Invalid target host specification: 80 Invalid target host specification: 443 Nmap scan report for 192.168.1.1 Host is up (0.00044s latency). PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds 念のために、本当に合ってるか nmapで調べた所、 22/tcp open ssh とsshだけポートが開いてることが確認出来ました。13年2月27日水曜日
  22. 22. 最後に…。13年2月27日水曜日
  23. 23. 僕が好きな分野。13年2月27日水曜日
  24. 24. (多分)DDos攻撃 次の図から説明すると、 1. IPアドレスが172.16.247.144のパソコンがwiresharkを   開いて、パケットの受信量を見ています。 2. send(IP(dst="172.16.247.144",src=RandIP("78.0.0.0/16"))/ 送信元はClassAのIPア TCP(sport=RandShort(),dport=51487),loop=True,verbose=True) ドレス(Random)送信元のポートも ランダム 送信元はClassAのIPア loop=無限に送る ドレス(Random) verbose=詳細に送る13年2月27日水曜日
  25. 25. 2(続き).のようなソースを送ることで、ターゲットの1つのポート  が大変なことになる。 左に出てくるのは『ネットワーク通信』 を監視するためのツール。 3.Enterキーを推すと、1つのパソコンに向かってパケットが投げ られ続ける。左のネットワーク監視のツールが具体的に見える ようにしてる。 4. (1.)に出てきたパソコンがどれくらいパケットが送られてきた か見た所、約1分間で47.2MBのパケットが送られていることが わかる。CPUの処理が大変そう。あまり重くないパケットでもこ れぐらいにはなる。13年2月27日水曜日
  26. 26. 軽く図で説明します。13年2月27日水曜日
  27. 27. ある、穏やかな暮らしをしている OS(Ubuntu)がいました。13年2月27日水曜日
  28. 28. Scapy(を使ってる主)が悪さを企んでいます…。 このパケットを送ったら(多分)大変なことに!! ←こいつ、 ネットワークを見るための者。13年2月27日水曜日
  29. 29. PoChitt ona13年2月27日水曜日
  30. 30. in 1 min...13年2月27日水曜日
  31. 31. 13年2月27日水曜日
  32. 32. 1分で47.2MBなので、 23分で1038.4MB(約1.038GB)となり、 354時間後で1002528MG(約1.003TB)となる 特に重くしたパケットで無くてもこれぐらいになる…。13年2月27日水曜日
  33. 33. 良い子は真似しない DENE!!13年2月27日水曜日
  34. 34. Summary!!!! パケットとネットワークについて知らないと  ほとんど何も出来ない。 パケットが死ぬほど簡単に出来る。 パケットをGUIとしてみれるので見やすい! port,flag,送信元先,が超簡単に設定出来る。 Scapyの可能性が無限大に…。13年2月27日水曜日
  35. 35. みんなも パケット系男子に なろう!!13年2月27日水曜日
  36. 36. ご清聴 ありがとうございました。13年2月27日水曜日

×