
ãã±ããäœæãŸãã¯ãã±ããã¯ã©ããã£ã³ã°ã¯ããããã¯ãŒã¯ãšã³ãžãã¢ãŸãã¯ãã¹ãæ
åœè
ããããã¯ãŒã¯ãæ¢çŽ¢ãããã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«ããã§ãã¯ããè匱æ§ãèŠã€ããããšãå¯èœã«ããæè¡ã§ãã
ããã¯éåžžãæåã§è¡ããããããã¯ãŒã¯äžã®ããŸããŸãªããã€ã¹ã«ãã±ãããéä¿¡ããŸãã
ã¿ãŒã²ããã¯ããã¡ã€ã¢ãŠã©ãŒã«ã䟵å
¥æ€ç¥ã·ã¹ãã ïŒIDSïŒãã«ãŒã¿ãŒãããã³ãã®ä»ã®ãããã¯ãŒã¯åå è
ã§ãã
ããã±ãŒãžãæåã§äœæããŠããé«ã¬ãã«ã®ããã°ã©ãã³ã°èšèªã§ã³ãŒããèšè¿°ããå¿
èŠã¯ãããŸãããScapyãªã©ã®æ¢è£œã®ããŒã«ã䜿çšã§ããŸãã
Scapyã¯ãããã±ãŒãžãæåã§äœæããããã®æè¯ã§ã¯ãªãã«ããŠããæé«ã®ããŒã«ã®1ã€ã§ãã
ãã®ãŠãŒãã£ãªãã£ã¯Pythonèšèªã䜿çšããŠèšè¿°ãããŠãããäœæè
ã¯Philippe Biondiã§ãã
ãã®ãŠãŒãã£ãªãã£ã®å¯èœæ§ã¯ã»ãŒç¡éã§ãããã±ããã®ã¢ã»ã³ããªãšããã®åŸã®ãããã¯ãŒã¯ãžã®éä¿¡ããã±ããã®ãã£ããã£ã以åã«ä¿åãããã³ãããã®ãã±ããã®èªã¿åãããããã¯ãŒã¯ã®æ¢çŽ¢ãªã©ã§ãã
ããã¯ãã¹ãŠãã€ã³ã¿ã©ã¯ãã£ãã«å®è¡ããããšããã¹ã¯ãªãããäœæããŠå®è¡ããããšãã§ããŸãã
Scapyã䜿çšãããšããããã¯ãŒã¯äžã®ãã¹ããã¹ãã£ã³ããã¬ãŒã¹ã調æ»ãæ»æãããã³æ€åºã§ããŸãã
Scapyã¯ãWiresharkã«äŒŒãç°å¢ããã¬ãŒã ã¯ãŒã¯ãæäŸããŸãããçŸããã°ã©ãã£ã«ã«ã·ã§ã«ã¯ãããŸããã
ãã®ãŠãŒãã£ãªãã£ã¯UNIXã©ã€ã¯ãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã çšã«éçºãããŠããŸãããããã§ãWindowsç°å¢ã§å®è¡ã§ãããã®ããããŸãã
ãã®ãŠãŒãã£ãªãã£ã¯ãä»ã®ããã°ã©ã ãšå¯Ÿè©±ããããšãã§ããŸãããã±ãããèŠèŠçã«ãã³ãŒãããã«ã¯ãåãWiresharkãæ¥ç¶ããŠãã°ã©ããæç»ã§ããŸã-GnuPlotããã³Vpythonã
åäœããã«ã¯ãã¹ãŒããŒãŠãŒã¶ãŒæš©éïŒrootãUID 0ïŒãå¿
èŠã§ããããã¯ããªãäœã¬ãã«ã®ãŠãŒãã£ãªãã£ã§ããããããã¯ãŒã¯ã«ãŒãã§çŽæ¥åäœããããã§ãã
ãããŠãéèŠãªããšã¯ããã®ãŠãŒãã£ãªãã£ã䜿çšããã®ã«Pythonããã°ã©ãã³ã°ã®æ·±ãç¥èã¯å¿
èŠãªããšããããšã§ãã
éãã
ãããžã§ã¯ãã®å
¬åŒãµã€ã
-www.secdev.org/projects/scapyDebianããŒã¹ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®
å Žå ã
apt-get install python-scapyãªã© ã
ã€ã³ã¹ããŒã«ããæ¹æ³ã¯å€æ°ãããŸãã
éçºè
ã®Webãµã€ãããææ°ããŒãžã§ã³ãããŠã³ããŒãããããšãã§ããŸãã
# cd /tmp
# wget scapy.net
# unzip scapy-latest.zip
# cd scapy-2.*
# sudo python setup.py install
ãã®åŸãèµ·åã¯
scapyã«ãã£ãŠçŽæ¥è¡ãã
ãŸã ã
ç»é¢ã«ã¯æ¬¡ã®ãããªãã®ã衚瀺ãããŸãã

å
¥åçšã®æšæºããã³ããã衚瀺ããããã¹ãŠã®ã¢ã¯ã·ã§ã³ãã€ã³ã¿ã©ã¯ãã£ãã«å®è¡ãããŸãã
åºåã¯
Ctrl + Dã®çµã¿åããããŸãã¯é¢æ°
exitïŒïŒã®å
¥åã«ãããã®ã§ãã
ããŒã«ãåŠã¶
å®éãScapyã¯éåžžã®ãŠãŒãã£ãªãã£ãšã¯å€§ããç°ãªããŸãã ããã¹ãã¢ãŒãã§åäœããŸããããã¹ãŠã®å¯Ÿè©±ã¯éåžžã®ããŒãšã³ãã³ãã©ã€ã³ãã©ã¡ãŒã¿ãŒã§ã¯ãªããPythonã€ã³ã¿ãŒããªã¿ãŒã«ãã£ãŠå®è¡ãããŸãã
æåã¯ããã®ã¢ãããŒãã¯ããäžå¿«ã§çããããã«èŠãããããããŸããããæéãçµã€ã«ã€ããŠããããæ£ããæ±ºå®ã§ãããæ¬åœã«äŸ¿å©ã§ãããšããçè§£ãçãŸããŸãã
ãŸãããµããŒããããŠãããããã³ã«ãèŠãŠã¿ãŸãããããã®ããã«ã
lsïŒïŒé¢æ°ãåŒã³åºããŸãã

HTTPããã©ã³ã¹ããŒãTCPããã³UDPããããã¯ãŒã¯ã¬ã€ã€ãŒIPv4ããã³IPv6ããªã³ã¯ã¬ã€ã€ãŒã€ãŒãµãŒïŒã€ãŒãµãããïŒãªã©ã®ã¢ããªã±ãŒã·ã§ã³ãããã³ã«ãå«ãã300以äžã®ç°ãªããããã³ã«ã䜿çšã§ããŸãã
倧æåãšå°æåãåºå¥ããããšãéèŠã§ããã»ãšãã©ã®ãããã³ã«ã¯Scapyã§å€§æåã§æžãããŠããŸãã
ç¹å®ã®ãããã³ã«ã®ãã£ãŒã«ãã詳现ã«èª¿ã¹ãããã«ã次ã®ãããã³ã«ã§
lsïŒïŒé¢æ°ãåŒã³åºãããšãã§ããŸãïŒ
lsïŒTCPïŒ
ãã®çµæãããã±ãŒãžã®äœæäžã«å€æŽã§ãããã¹ãŠã®ãã£ãŒã«ãã衚瀺ãããŸãã ããã©ã«ãã§äœ¿çšãããå€ã¯æ¬åŒ§å
ã«ç€ºãããŠããŸããéä¿¡è
ããŒãã¯20ïŒããã¯ftp-dataïŒã§ãããåä¿¡è
ããŒãã¯80ïŒããã¯åœç¶HTTPïŒã§ãããSYNãã©ã°ãèšå®ãããŠããŸãïŒflags = 2ïŒã
ããšãã°ãããŒã¿ãªã³ã¯ã¬ã€ã€ãŒïŒã€ãŒãµãããïŒãæ€èšããå Žåãéžæè¢ã¯å°ãªããªããŸãã
lsïŒïŒé¢æ°ã«å ããŠãã»ãŒãã¹ãŠã®äž»èŠãªScapyæ©èœãåºåãã䟿å©ãª
lscïŒïŒé¢æ°ããããŸãã

å颿°ã«é¢ããããè©³çŽ°ãªæ
å ±ãååŸããã«ã¯ãããšãã°
helpïŒ function_name ïŒã䜿çšã§ããŸãã

Unixã·ã¹ãã ã®MANããŒãžã«äŒŒããã®ã衚瀺ãããŸãã
çµäºããã«ã¯ãLinuxã§éåžžã®
QããŒãå床䜿çšã§ããŸãã
ãããã³ã«ãšæ©èœã«æ³šç®ããŸããããä»ã§ã¯ããžãã¹ã«åãæããããšãã§ããŸã-ããã±ãŒãžãäœæããŸãã
ã¯ã©ããã£ã
ããã«é«ã¬ãã«ã®ãã±ããïŒãããã¯ãŒã¯ããã³ã¢ããªã±ãŒã·ã§ã³ïŒãäœæã§ããŸããScapyã¯èªåçã«äœã¬ãã«ãè£å®ãããããªã³ã¯ã¬ãã«ããæåã§åéã§ããŸãã
OSIã¢ãã«ã¬ãã«ã¯ãã¹ã©ãã·ã¥ïŒ/ïŒã§åºåãããŸãã
Scapyãããã±ãŒãžãå·ŠåŽã®äžäœã¬ãã«ããå³åŽã®äžäœã¬ãã«ã«èªã¿èŸŒãããšã«æ³šæããå¿
èŠããããŸãã æåãããã¯å°ããããã«ãããããããŸããããå°ãç·Žç¿ããã°ããã¹ãŠããªãã¿ã®ãããã®ã«ãªããŸãã
ãšããã§ãScapyã®çšèªã§ã¯ããããã¯ãŒã¯ãã±ããã¯ã¬ã€ã€ãŒã«åå²ãããåã¬ã€ã€ãŒã¯ãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ãšããŠè¡šãããŸãã
ç°¡ç¥åããã圢åŒã§çµã¿ç«ãŠãããããã±ãŒãžã¯æ¬¡ã®ããã«ãªããŸãã
Ether()/IP()/TCP()/âApp Dataâ
ã»ãšãã©ã®å ŽåãL3ã¬ãã«ã®ã¿ã䜿çšãããScapyã¯OSããã®æ
å ±ã«åºã¥ããŠããã£ãã«ã¬ãã«ãåå¥ã«åããããšãã§ããŸãã
åãããã³ã«ã®ãã£ãŒã«ãã®å€ã倿ŽããŠãæšæºå€ã倿ŽããŸãïŒ
lsïŒïŒé¢æ°ã«ãã£ãŠè¡šç€ºãããŸãïŒã
次ã«ãç°¡åãªããã±ãŒãžãäœæããŸãã

ãã¹ãŠãéåžžã«ç°¡åã§ããå®å
ã¢ãã¬ã¹ãããŒããããã³äžè¬çã«ãTESTããšãã圢åŒã§è² è·ãæå®ããŸããã
ããã±ãŒãžèªäœã¯æç¢ºã«
packetãšããååã§ããããæ°ããäœæããããã±ãŒãžãéåžžã«è©³çްã«å±éããŸããã
ãããŠä»ããã§ã«ããªãã¿ã®é¢æ°
lsïŒãã±ããïŒãå®è¡ããŸããïŒ

ãã®äžã®ã¬ãã«ã¯ã-ãæåã§åºåãããŸãã
ããã±ãŒãžãäžåºŠã«äœæãã代ããã«ãéšåçã«äœæã§ããŸãã

ãã®äŸã§ã¯ãOSIã¢ãã«ã®åã¬ãã«ã®å€æ°ãäœæããŸããã
倧æåãšå°æåãå¿ããã«ãæåãšæ°åã倿°åãšããŠäœ¿çšã§ããŸãã
ãããŠä»ããã¹ãŠã1ã€ã®ããã±ãŒãžã«åéããŸãã

çµæã¯äŒŒãŠããããšãããããŸãã
ããã±ãŒãžã«æ·±ãå
¥ããŸã
lsïŒïŒé¢æ°ã®åºåãæ¢ã«èŠãŠããŸããããããã±ãŒãžã«é¢ãããã®ãããªè©³çŽ°ãªæ
å ±ã¯å¿
ãããå¿
èŠã§ã¯ãããŸããã
倿°ã®ååãå
¥åãããšãããã«ç°¡åãªèŠçŽã衚瀺ãããŸãã
summaryïŒïŒã¡ãœããã䜿çšããããšãã§ããŸãïŒ

ããå°ãæ
å ±ãå¿
èŠãªå Žåã¯ã
showïŒïŒã¡ãœããããããŸãã

ããã«ãæå®ããã ãã§ä»»æã®ãã£ãŒã«ãã衚瀺ã§ããŸãã

ãã¡ãããããã¯ããã®ãããªãã£ãŒã«ããããã±ãŒãžå
ã§äžæã§ããå Žåã«ã®ã¿æ©èœããŸãã
ããšãã°ãTCPãšIPã®äž¡æ¹ã«ååšãããã©ã°ãã£ãŒã«ãã䜿çšããå Žåã衚瀺ãããã®ãæå®ããå¿
èŠããããŸãã ããã§ãªãå ŽåãScapyã¯æåã«èŠã€ãã£ããã£ãŒã«ãã®å€ã衚瀺ããŸãïŒãã®äŸã§ã¯IPãã©ã°ïŒã
ãããã³ã«ãè§æ¬åŒ§ã§ç€ºãããšã«ãããæå®ãè¡ãããŸãã

ãšããã§ãããã©ã«ãã§ã¯ãèšå®ããããã©ã°ã¯ããžã¿ã«è¡šçŸã§è¡šç€ºãããŸãã
ãã¹ãŠã®å¶åŸ¡ãããããªã³ã«ãªã£ãŠããïŒ1ã«èšå®ãããŠããïŒå Žåã255ã«çããå€ãååŸããŸãããã®å Žåãå€2ã¯SYNããããèšå®ãããŠããããšãæå³ããŸãã
ããããã·ã³ãã«è¡šç€ºã§å¶åŸ¡ãããã衚瀺ããæ©äŒããããŸãïŒ

ãã§ã«è¿°ã¹ãããã«ããã€ã§ãä»»æã®ãã£ãŒã«ãã®å€ã倿Žã§ããŸãã

ãã£ãŒã«ããäžæã§ãªãå Žåããããã³ã«ãæå®ããå¿
èŠããããŸãã

2çªç®ã®æ¹æ³ã¯ã
ãã€ããŒãæ§é ã䜿çšããããšã§ããããã«ããã1ã€ã®ã¬ãã«ïŒãã®å Žåã¯L3çµç±ïŒããžã£ã³ãã§ããŸãã

ããã§ã¯ãæåã«L3ããäžã®ã¬ã€ã€ãŒã®åºåãèŠãŠãããTCPãã©ã°ã®å€ãèŠãŠããããã«æ°ããå€ãèšå®ããŸãã
ã¡ãªã¿ã«ããã€ããŒããäœåºŠãåŒã³åºãããšãã§ããŸãã

ããã±ãŒãžã®å
容ã16鲿°ã§èŠãããšãã§ããŸããããã«ã¯ã
hexdumpïŒïŒé¢æ°ããããŸãã

ã¢ãã¬ãã·ã³ã°ã«ã€ããŠ
Scapyã¯ãåä¿¡è
ã¢ãã¬ã¹ãæå®ããéã®æè»æ§ãåªããŠããŸãã
å€ãã®ãªãã·ã§ã³-éåžžã®10鲿°åœ¢åŒãšããã¡ã€ã³åãšCIDR衚èšã¯æ¬¡ã®ãšããã§ãã

åŸè
ã®å Žåããã±ããã¯ãµããããäžã®åã¢ãã¬ã¹ã«éä¿¡ãããŸãã
å€ãã®ã¢ãã¬ã¹ã¯ãè§æ¬åŒ§ãå¿ããã«ãã«ã³ãã§åºåã£ãŠæå®ããããšãã§ããŸãã

ãã®æ®µéã§ããå€ãã®ããŒããæå®ããå¿
èŠãããå Žåã¯ã©ããªãã®ãïŒããšããèããçãããããããŸããã
ããã§ãScapyã¯ååãªæ©äŒãæäŸããŸããç¯å²ãæå®ããã ãã§ãªããå€ãããªã¹ãããããšãã§ããŸãã

è§æ¬åŒ§ã®éãã«æ³šæããŠãã ãããç¯å²ã®å Žåã¯äžžããã»ããã®å Žåã¯æ£æ¹åœ¢ã§ãã
ãããŠãç®æšã®æå®ã«é¢ããäŒè©±ãçµäºããå€ãã®ããŒãã«å€ãã®ãã±ãããéä¿¡ããå¿
èŠãããç¶æ³ãèããŠãã ããã
ã©ã®ããã±ãŒãžãéä¿¡ããããã確èªããã«ã¯ã
forã«ãŒãã䜿çšããå¿
èŠããããŸããããã°ã©ãã³ã°èšèªPythonãããããšãå¿ããªãã§ãã ããã
å®éãè€éãªããšã¯ãªãããã¹ãŠãéåžžã«è«ççã§ãã

æåã¯ããµãããããšããŒãç¯å²ãæå®ããããã±ãŒãžããã§ã«ç¿æ
£çã«äœæããŠããŸãã
次ã«ãã«ãŒãã䜿çšããŠãããã±ãŒãžæ§é ã®åèŠçŽ ã倿°ã
a ãã«å²ãåœãŠããããªã¹ããäœæããŸãã Pythonã«ã¯éåžžã®æå³ã§é
åããããŸããã 代ããã«ããªã¹ãã䜿çšããŠãªããžã§ã¯ããä¿åããŸãã
forã«ãŒãã䜿çšããŠãæ§é å
šäœããè§£åãããèŠèŠçãªæ¹æ³ã§è¡šç€ºããŸãã
ãã±ããããã¹ã«éä¿¡ããŸã
ãã±ããã¯åãå¹
ã§éä¿¡ãããŸãïŒ
- sendïŒïŒé¢æ°-å¿çã®åŠçãªãã§ãããã¯ãŒã¯ïŒL3ïŒã¬ãã«ã䜿çšããŠãã±ãããéä¿¡ããŸãã ååã䜿çšãããŸã-éä¿¡ãããå¿ããããŸããã
- sendpïŒïŒé¢æ°-ãã£ãã«ïŒL2ïŒã¬ãã«ã䜿çšããŠãã±ãããéä¿¡ããæå®ããããã©ã¡ãŒã¿ãŒãšã€ãŒãµããããã¬ãŒã ããããŒãèæ
®ãããŸãã å¿çã¯ãŸã äºæãããŠããããåŠçãããŸããã
- srïŒïŒé¢æ°-sendïŒïŒãšäŒŒãŠããŸãããäŸå€ã¯æ¢ã«å¿çãã±ãããäºæããŠããããšã§ãã
- srpïŒïŒé¢æ°-ãã±ããã®éåä¿¡ãã¬ãã«L2
- 颿°sr1ïŒïŒ -3çªç®ã®ã¬ãã«ã®ãã±ãããéä¿¡ããæåã®åçã®ã¿ãåãåããŸããå€ãã®åçã¯æäŸãããŸããã
- 颿°srp1ïŒïŒã¯sr1ïŒïŒã«äŒŒãŠããŸããããã£ãã«ã¬ãã«ã®ã¿ãæ¢ã«ãããŸãã
ãããã®å颿°ã¯ãããã±ãŒãžãå«ã倿°ã®ååãæå®ããã ãã§ã远å ã®ãã©ã¡ãŒã¿ãŒãªãã§åŒã³åºãããšãã§ããŸãã

ãããåæã«ãæã«ã¯åœ¹ã«ç«ã€å€ãã®è¿œå ãªãã·ã§ã³ããããŸãã
ããšãã°ã
ã¿ã€ã ã¢ãŠã -å¿çãã±ãããåä¿¡ããåã«åŸ
æ©ããå¿
èŠãããæéïŒç§åäœïŒã瀺ããŸãã
åè©Šè¡ -å¿çãåä¿¡ããããæãæçšãªãªãã·ã§ã³ã®1ã€ã
filterã§ããå Žåããã±ãããåéä¿¡ããå¿
èŠãããåæ°ã
è¯ãäŸãšããŠããããã¯ãŒã¯ã«ãã±ãããéä¿¡ããŸãããã

ããã§ã¯ãéä¿¡åŸã«å¿çãæåŸ
ãã颿°ã䜿çšãã0.1ç§ã®ã¿ã€ã ã¢ãŠããèšå®ããæå®ãããã«ãŒã«ã«è©²åœããå¿çããã£ã«ã¿ãŒããŸãã
å¿çãã±ãããã©ãããŸããïŒ
çããå«ã倿°ãååŸããŠå²ãåœãŠãããšãã§ããŸãã

ãããŠã
å¿ç倿°ãåŒã³åºãã ãã§ãéåžžã®æ¹æ³ã§èŠãŠãã ããã
åçã2ã€ã®ããŒãžã§ã³-çµæãšæªåçãå¿çãªãã®çµæã§ããããä¿åãããŠããããšãããããŸãã
ãªãã»ãããæå®ãããšãçãã®å¿
èŠãªéšåã®ã¿ã衚瀺ã§ããŸãã

ãŸãã¯è©³çްæ
å ±ïŒ

ãã±ããã倿°ãæå®ããã«ãããã¯ãŒã¯ã«éä¿¡ãããå ŽåïŒããšãã°ãåã«
srïŒïŒé¢æ°ã«ãã£ãŠïŒãããã©ã«ãã§ã¯ããã±ããã¯å€æ°
"_" ïŒã¢ã³ããŒã¹ã³ã¢ïŒã®åŸã«ãªã¹ããããŸãã
ãããããããã®ããã±ãŒãžãååŸããã«ã¯ãæ¬¡ã®æ§æã䜿çšã§ããŸãã

ãã®å Žåãç°ãªãçµæã2ã€ã®ç°ãªã倿°ïŒ
resããã³
unans ïŒã«ä¿åãããŸãã
ãªãã»ãããæå®ããããšã«ããããã詳现ãªçµè«ãåã³éæãããŸãã

å¿çãã±ããããã£ããããŸã
次ã«ãå¿çãããã±ããã倿°ããå Žåã®ç¶æ³ãæ€èšããŸãã

ç§ãã¡ãèŠãã®ã¯ãæ¬è³ªçã«ããŒãã¹ãã£ã³ã§ããã
éããŠããããŒãã«ã¯ãSAïŒSYN / ACKïŒãã©ã°ãä»ããŠããŸããæ¬¡ã«äŸã瀺ããŸãã

ããã±ãŒãžãçªå·ã§èŠããšãã¢ã«ãŠã³ãã¯äŒçµ±çã«ãŒãããå§ãŸããŸãã
ããã«é²ãã§ããã®çµæãè§£åã§ããŸãã

ããã§ã¯ãçµæããéä¿¡ããããã±ããïŒ21çªïŒãšãã®å¿çãæœåºããŸããã
ããããããã¯1ã€ã®ããã±ãŒãžã«ãããŸãããããã¹ãŠã®ããã±ãŒãžãåŠçããå¿
èŠãããå Žåã¯ã©ãã§ããããïŒ
ãã®å Žåãforã«ãŒãã«å床ã¢ã¯ã»ã¹ããå¿
èŠããããŸãã

ãªã¹ã
resã®åèŠçŽ ã
aéšãš
béšã«åå²
ããŸãã æ¬¡ã«ãéšå
ãa ããåãåã ã
ãallsentããªã¹ãã«ãã¹ãŠèšå
¥ããŸãã
åæ§ã«ã
allrecãªã¹ããäœæããä»ã®éšåã¯ãã®ãŸãŸã«ããŸãã
ãã¡ããããã¯ãã¹ãŠè¯ãããšã§ããããã䟿å©ãªåœ¢åŒã§éããŠããããŒããšéããŠããããŒãã®ãªã¹ããååŸããããšæããŸãã
ããäžåºŠã
resãªã¹ãããŸãã¯res [0] [1]ãåä¿¡ããres [0] [0]ã®2ã€ã®éšåã§æ§æãããres [0]èŠçŽ ãèŠãŠã¿ãŸãããã

åçã«ã¯ãIPããããŒïŒres [0] [1] [0]ïŒãTCPããããŒïŒres [0] [1] [1]ïŒãããã³ããŒã¿èªäœïŒres [0] [1] [2]ã®3ã€ã®éšåããããŸãã ]ïŒã
forã«ãŒãã䜿çšããŠãåèŠçŽ res [N]ã倿°
ãaãã«æœåºããŸãã

ããã§ã倿°ãaãã«ã¯åããã±ãŒãžã®çµæãå«ãŸããŸãã ã€ãŸãããaãã¯ans [N]ã衚ããŸãã
[1] [1]ã®å€ã®ã¿ããã§ãã¯ã§ããŸããããã¯ãTCPããããŒã®res [N] [1] [1]ãæå³ããŸãã
ããã«æ£ç¢ºã«ããã«ã¯ã18ã®å€ãå¿
èŠã§ããããã¯ãSYN-ACKãã©ã°ãèšå®ãããŠããããšãæå³ããŸãã

ãã®æ¡ä»¶ãæ©èœããå Žåã§ããTCPããããŒããéä¿¡è
ããŒããååŸããŸãã

ãã®çµæãéããŠããããŒãã®ãªã¹ãã®åœ¢åŒã§çµæãååŸããŸãã
äžèšã®æ§é ã¯ãã¹ãŠäžåºŠã«å
¥åãããŸãããã€ã³ãã³ãïŒéåžžã¯4ã€ã®ã¹ããŒã¹ïŒã«æ³šæããããšãéèŠã§ãã
åçŽãªããŒãã¹ãã£ããŒãæåã§äœæããŸããããªã¹ã1ããŒãã¹ãã£ããŒ>>>ãã±ãã= IPïŒdst = "192.168.10.10"ïŒ/ TCPïŒdport =ïŒ1,100ïŒãflags = "S"ïŒïŒ
>>> resãunans = srïŒãã±ãããã¿ã€ã ã¢ãŠã= 10ïŒ
>>>ã®in resïŒ
... [1] [1] .flags == 18ã®å ŽåïŒ
... [1] .sportãå°å·ããŸã
ã¹ããã¡ãŒããã³ãã®é
Scapyã«ã¯å°ããªã¹ããã¡ãŒãå«ãŸããŠããã
ã¹ããïŒïŒé¢æ°ãæ
åœããŸãã
åœç¶ããã£ã«ã¿ãŒã䜿çšã§ããŸãïŒtcpdumpãã£ã«ã¿ãŒãšåæ§ïŒã
ãã£ã«ã¿ãŒãã©ã¡ãŒã¿ãŒããããæ
åœãã
countãã©ã¡ãŒã¿ãŒã䜿çšããŠãã±ããæ°ãå¶éããããšãã§ããŸãã
ãã€ãã®ããã«ã
ãã«ãïŒã¹ããïŒãåŒã³åºããšããã®é¢æ°ã«é¢ããå®å
šã«è©³çŽ°ãªæ
å ±ã衚瀺ãããŸãã
ããã¯éåžžã«åçŽåãããã¹ããã¡ãŒã§ããããšãå¿ããŠã¯ãªããŸããããŸããé床ã®åäžãæåŸ
ããªãã§ãã ããã
æšæºã®çµã¿åãã
Ctrl + Cã¯ããã©ãã£ãã¯ã®ãã£ããã£ããã»ã¹ãäžæããçµæã衚瀺ããŸãã
æªå®çŸ©ã®å€æ°ãšåæ§ã«ãçµæã¯
"_"ã«åé¡ãããŸãã
summaryïŒïŒã¡ãœãããå®è¡ãããšããã£ããã£ããããã±ããã®çµ±èšãèŠãããšãã§ããŸãïŒ

ãããã¯ãŒã¯ãããã©ãã£ãã¯ããã£ããã£ãã代ããã«ã以åã«ä¿åãããã³ãïŒpcapãã¡ã€ã«ïŒããèªã¿åãããšãã§ããŸãã

ããã«ã
wrpcapïŒïŒé¢æ°ã䜿çšããŠããã£ãããããã±ããããã¡ã€ã«ã«æžã蟌ãããšãã§ããŸãã

ã¹ãããã£ã³ã°ãããã¯ãå®äºãããšãScapyã€ã³ã¿ãŒãã§ãŒã¹ããWiresharkãçŽæ¥åŒã³åºãããšãã§ããŸããããã«ã¯ãåãååã®
wiresharkïŒïŒé¢æ°ã䜿çšã§ããŸãã
Wiresharkã®è©³çްã¯ã以åã®èšäºïŒ
http://linkmeup.ru/blog/115.htmlïŒã«èšèŒãããŠããŸãã
èªåå
ç§ãã¡ãèãããã¹ãŠã¯ã察話ã¢ãŒãã§çŽæ¥èµ·ãããŸããã
ããããåœç¶ãã¹ã¯ãªãããèšè¿°ããããšã§å€ãã®ããšãèªååã§ããŸãã
ãããè¡ãã«ã¯ãã¹ã¯ãªããã®æåã«ç€ºãå¿
èŠããããŸãã
#!/usr/bin/python
LinuxãŠãŒã¶ãŒã«éŠŽæã¿ã®ããshebangã ïŒhttp://en.wikipedia.org/wiki/Shebang_(UnixïŒïŒ
from scapy.all import *
ãã¹ãŠã®Scapyæ©èœãã€ã³ããŒãããŸãã
ãã®åŸãå¿
èŠãªé¢æ°ããã§ã«äœæã§ããŸãã
ã¹ã¯ãªããã§ã«ãŒããèšè¿°ãããšãã¯ã€ã³ãã³ãããããšãéèŠã§ããããããªããšããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããã¹ã¯ãªãããæ©èœããŸããã
äŸãšããŠOSPFã䜿çšããŠãScapyãžã®è¿œå ã¢ãžã¥ãŒã«ã®æ¥ç¶ãããã«æ€èšããŠãã ããã
åœåãScapyã¯OSPFãããã³ã«ã䜿çšã§ããŸããã
load_contribïŒ 'ospf'ïŒãå®è¡ããããšã
ãERRORïŒNo module named contrib.ospfããšãããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
ãŸããã¢ãžã¥ãŒã«ãããŠã³ããŒãããŸãã
ããããå
¥æã§ã
ãŸã ã
次ã«ã
contribãã£ã¬ã¯ããªãäœæããå¿
èŠããããŸãã
# mkdir /usr/lib/python2.7/dist-packages/scapy/contrib
ãããŠãæ°ããäœæãããã£ã¬ã¯ããªã«ã¢ãžã¥ãŒã«ã転éããŸãã
# cp ospf.py /usr/lib/python2.7/dist-packages/scapy/contrib/
ããã§ãScapyã«ã¢ã¯ã»ã¹ããŠãæ¥ç¶ãããŠãããµãŒãããŒãã£ã¢ãžã¥ãŒã«ã®ãªã¹ãã衚瀺ãããšïŒã
æ³åã®ãšãã ã
list_contribïŒïŒé¢æ°ããããæ
åœããŸãïŒïŒ
>>> list_contribïŒïŒ
ospfïŒOSPFã¹ããŒã¿ã¹=ããŒã
>>>
ãã¹ãŠã®æºåãæŽã£ãŠããããã«èŠããŸãããããã«ã¯ãããŸããã§ããã
ospfã¢ãžã¥ãŒã«ãããŒãããæ¬¡ã®è©Šã¿ã§ïŒ
>>> load_contribïŒ 'ospf'ïŒ ãåããšã©ãŒ
ãERRORïŒNo module named contrib.ospfãã¢ãžã¥ãŒã«ãæçµçã«æ©èœããããã«ã¯ãåæåã¹ã¯ãªããïŒç©ºã®ãã¡ã€ã«ïŒãäœæããå¿
èŠããããŸãã
touch /usr/lib/python2.7/dist-packages/scapy/contrib/__init__.py
ãã®åŸããã§ã«OSPFã®ããã±ãŒãžãäœæããããšãå¯èœã«ãªããŸãã
3ã¹ãããã®TCPæ¥ç¶ãäœæãã
ãããè¡ãã«ã¯ãSYN / ACKå¿çããã£ããããããããTCPã·ãŒã±ã³ã¹çªå·ãæœåºããå€ã1ã€å¢ãããå®éã«åä¿¡ããå€ã確èªå¿ççªå·ãã£ãŒã«ãã«å
¥ããå¿
èŠããããŸãã
äžèŠé£ããäœæ¥ã§ãããScapyã¯ããã«å¯ŸåŠã§ããŸãã
ãŸãããã¹ãŠãæåããããã«å¿
èŠãªãã®ãæ€èšããŸãã
1ïŒSYNãåä¿¡åŽã«éä¿¡ããŸãã
- IPããããŒãåéããŸããéä¿¡è
ãšåä¿¡è
ã®ã¢ãã¬ã¹ãå¿ããªãã§ãã ããã
- éä¿¡è
ãšå®å
ã®TCPããŒããæå®ããTCPããããŒãåéããTCPãã©ã°ïŒSYNãããïŒãèšå®ããISNïŒåæã·ãŒã±ã³ã¹çªå·ïŒãçæããŸãã
2ïŒå¿çãã±ããããã£ããããŸãã
- çããä¿åããŸãã
- ããããTCPã·ãŒã±ã³ã¹çªå·ãæœåºãããã®å€ã1ã€å¢ãããŸãã
3ïŒåä¿¡ããå¿çãã±ããã§ç¢ºèªïŒACKïŒãäœæããŸãã
- SYNãã±ããã®å Žåãšåãéä¿¡å
ããã³å®å
ã¢ãã¬ã¹ãå«ãIPããããŒãåéããŸãã
- SYNã»ã°ã¡ã³ããšåãããŒãçªå·ãæã€TCPããããŒãåéããŸãããACKãã©ã°ãèšå®ããISNå€ã1ã€å¢ããã2çªç®ã®ã¹ãããã§æœåºããã³å¢å ããã·ãŒã±ã³ã¹çªå·ã«ç¢ºèªå¿çãèšå®ããŸãã
ããã«æç¢ºã«ããããã«ãä»»æã®å€ã䜿çšããŠããè©³çŽ°ã«æ€èšããŸãã
ããšãã°ãæ¥ç¶ã¯æ¬¡ã®ããã«ãªããŸããã
192.168.10.200 1024> 192.168.10.50 80ãã©ã°= SYN seq = 12345
192.168.10.50 80> 192.168.10.200 1024ãã©ã°= SYNãACK seq = 9998 ack = 12346
192.168.10.200 1024> 192.168.10.50 80ãã©ã°= ACK seq = 12346 ack = 9999
æçµçã«å®è¡ããå¿
èŠããããã®ã
1ïŒSYNãåä¿¡åŽã«éä¿¡ããŸãã
- éä¿¡è
ãšããŠåä¿¡è
ãšããŠ192.168.10.200ããã³192.168.10.50ã瀺ãIPããããŒãåéããŸãã
- éä¿¡å
ããŒãïŒéä¿¡å
ïŒ1024ããã³å®å
ããŒãïŒå®å
ïŒ80ã®TCPããããŒãåéããŸãããŸããSYNãã©ã°ãèšå®ãã12345ã«çããISNãçæããŸãã
2ïŒå¿çãã±ããããã£ããããŸãã
- çããä¿åããŸãã
- TCPã·ãŒã±ã³ã¹çªå·ïŒ9998ïŒãæœåºãããã®å€ã1å¢ãããšã9999ãåŸãããŸãã
3ïŒåä¿¡ããå¿çãã±ããã§ç¢ºèªïŒACKïŒãäœæããŸãã
- éä¿¡è
ãšããŠåä¿¡è
ãšããŠ192.168.10.200ããã³192.168.10.50ã瀺ãIPããããŒãåéããŸãã
- åãéä¿¡å
ããŒããšå®å
ããŒãïŒãããã1024ããã³80ïŒã§TCPããããŒãåéããACKãã©ã°ãèšå®ããISNã1ã€å¢ããïŒ12346ïŒã確èªãããseqçªå·ã®å€ïŒ9999ïŒã«ç¢ºèªå¿çãèšå®ããŸãã
ããã±ãŒãžã®åéãå§ããŸãããïŒ

ããã§ã¯ãã¹ãŠããã§ã«ããªãã¿ã§ããããã±ãŒãžã2ã€ã®éšåã«ãŸãšããTCPãIPã«ã«ãã»ã«åããŸãã
çããã€ã³ã¿ãŒã»ããããããããã·ãŒã±ã³ã¹çªå·ãæœåºããããã1ã€å¢ããå¿
èŠãããããšãæãåºããŠã次ã®ããã«ããŸãã

次ã®ããšãèµ·ãããŸã
-sr1颿°ã¯ä»¥åã«äœæããããã±ããããããã¯ãŒã¯ã«éä¿¡ãã
åä¿¡ããæåã®å¿ç
ã¯SYNACK倿°ã«å
¥ããããŸãã
次ã«ã
SYNACK.seqã³ã³ã¹ãã©ã¯ãã䜿çšããŠãTCPã·ãŒã±ã³ã¹çªå·ãæœåºãã1ãã€å¢ãããŠã
my_ack倿°ã«ä¿åããŸãã
次ãžïŒ

æ°ããTCPããããŒãäœæããACKãšããååãä»ããŸãã å¥ã®ãã©ã°ïŒA-ACKïŒãèšå®ããã·ãŒã±ã³ã¹çªå·ã®å€ãå¢ãããŸãã
ããã«ã倿°
my_ackã確èªå¿çãšããŠæå®ãããŸãã
次ã«ãåéããããã±ããã¯ã
sendã³ãã³ãã«ãã£ãŠãããã¯ãŒã¯ã«ã¹ããŒãããŸãïŒããã¯ãå¿çãããã®ããªãã¹ã³ããªãL3ã³ãã³ãã§ããããšã«æ³šæããŠãã ããïŒã
ãã¹ãŠãæ£ããè¡ãããå ŽåãåŸæ¥ã®TCPæ¥ç¶ãè¡ãããŸããã
ãã©ã°ãªãã§TCPã»ã°ã¡ã³ããäœæãããããã¯ãŒã¯ã«éä¿¡ããã ãã§ãã

ã芧ã®ãšãããTCPããããŒã®ã€ã³ã¹ã¿ã³ã¹ïŒä»åã¯PUSHãšåŒã³ãŸãïŒãããã©ã°ãªãã§ãä»ã®ãã¹ãŠã®äœ¿ãæ
£ããå€ã§äœæããŸããã
ãã®åŸã
ããŒã¿å€æ°ã䜿çšããŠ
ããŒã¿ã远å ããåã
éä¿¡æ©èœã䜿çšããŠãããã¯ãŒã¯ã«éä¿¡ããŸããã
ãããŠãããã«å¿ããŠãåä¿¡è
ã¯ãã®ã»ã°ã¡ã³ãã«å¯Ÿãã確èªå¿çãåä¿¡ããå¿
èŠããããŸãã
ãªã¹ã2 TCPæ¥ç¶>>> ip = IPïŒsrc = "192.168.10.200"ãdst = "192.168.10.50"ïŒ
>>> SYN = TCPïŒsport = 1024ãdport = 80ãflags = "S"ãseq = 12345ïŒ
>>>ãã±ãã= ip / SYN
>>> SYNACK = sr1ïŒãã±ããïŒ
>>> my_ack = SYNACK.seq + 1
>>> ACK = TCPïŒsport = 1024ãdport = 80ãflags = "A"ãseq = 12346ãack = my + ackïŒ
>>>éä¿¡ïŒIP / ACKïŒ
ããããããã€ãã®èœãšã穎ããããŸãã
Wiresharkã§ãã®äº€æãèŠããšãACKãã±ãããéä¿¡ãããåã«ãRSTãçªç¶éä¿¡ãããããšãããããŸãã

å®éãScapyã¯OSã®TCP / IPã¹ã¿ãã¯ãè¶
ããŠå®è¡ãããŸãã ããã¯ãScapyããã±ãããéä¿¡ããŠããããšãOSãèªèããŠããªãããšãæå³ããŸãã
ãããã£ãŠãOSã¯SYN / ACKãã±ããã®åºçŸãæåŸ
ããŸããããããã£ãŠãæ¥ç¶ã¯ããã«ãªã»ãããããŸããæããã«ãããã¯ç§ãã¡ãå¿
èŠãšããçµæã§ã¯ãããŸããããã®åé¡ã®è§£æ±ºçã®1ã€ã¯ãçºä¿¡RSTãã±ããããããã¯ã§ãããã±ãããã£ã«ã¿ãŒãç¹ã«iptablesã®æ©èœã䜿çšããããšã§ããããšãã°ã次ã®ããã«ãªããŸãããã®ãã# iptables -A OUTPUT -p tcp -d 192.168.10.50 -s 192.168.10.200 --dport 80 --tcp-flags RST RST -j DROP
ãªèšèšãå®è¡ãããšãRSTãã©ã°ãèšå®ãããããŒã80ã®å®å
ã¢ãã¬ã¹ã192.168.10.50ãéä¿¡è
ã¢ãã¬ã¹ã192.168.10.200ã®ãã¹ãŠã®éä¿¡ãã±ãããç Žæ£ãããŸããããã±ãŒãžã¯åŒãç¶ãOSã«ãã£ãŠçæãããŸãããããã±ãŒãžããé£ã³åºãããšã¯ãããŸããããã®çµæãScapyãæ¬æ ŒçãªTCPã»ãã·ã§ã³ãäœæããããšã劚ãããã®ã¯äœããããŸããã
ç ç©¶ãç¶ãã
Scapyã䜿çšãããšãæå®ãããã¢ãã¬ã¹ã»ããã®äžãããããã¯ãŒã¯äžã®ãã¹ããèŠã€ããããšãã§ããŸã
ããã®å ŽåãICMPãããã³ã«ã䜿çšããããç¥ãããææ³ã䜿çšããŠåä¿¡ããå¿çãåé¢ããŸãã
ããã©ã«ãã§ã¯ãICMPã®8çªç®ã®ã¿ã€ããèšå®ãããŠããŸããããã¯å€å
žçãªãšã³ãŒèŠæ±ã§ããæ
å ±ã»ãã¥ãªãã£ã®ãããã¯ãããã«æ·±ãæãäžããŠãScapyãšnmapã䜿çšããŠOSã®ããŒãžã§ã³ã確èªããŠã¿ãŸãããã
ãããã£ãŠãäœãè¡ãããããæ€èšããŠãã ããããŸããå€éšã¢ãžã¥ãŒã«ããã®å Žåã¯nmapãæ¥ç¶ãããŸãããæ¬¡ã«ãããŸããŸãªOSã®ããªã³ããå«ããã¡ã€ã«ïŒnmap-os-fingerprintsïŒãããããšã確èªããŸãããããŠããªã¢ãŒããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®å®çŸ©ãçŽæ¥éå§ããŸããnmap_fp颿°ããããæ
åœããŸããããã§ãç®çèªäœã«å ããŠããã©ã¡ãŒã¿ãéããïŒoportïŒããŒããšéããïŒcportïŒããŒããšããŠæå®ã§ããŸããæ£ããæå®ãããããŒãã¯ãOSã®æ±ºå®ã®ç²ŸåºŠã倧å¹
ã«åäžãããã®ã«åœ¹ç«ã¡ãŸããããã±ãŒãžãèŠèŠåãã
ããã¹ãåºåãèŠããã³ã«ãç䌌ã°ã©ãã£ãã¯ãååšããå Žæã§ãScapyã¯ããã€ãã®çµæãã°ã©ãã£ãã¯åœ¢åŒã§è¡šç€ºã§ããŸããç§ãã¡ã«æäŸãããŠãããã®ãèŠãŠã¿ãŸããããæãç°¡åãª-ã®æ¹æ³äŒè©±ïŒïŒ ïŒ
ãã®å®è£
ã¯ããã±ããã®ç§ãã¡ã®äº€æµã®æ¹åŒã§ã¯ãªããæãçŸããããéåžžã«æç¢ºã«ã¬ã³ããªã³ã°ãããImageMagickã®ãŠã£ã³ããŠãèµ·åããŸãããã®æ¹æ³ã¯ããããããã©ãã£ãã¯ãã³ãã®èŠèŠåã«æé©ã§ãã2çªç®ã®æ¹æ³ã¯ã2Dã°ã©ããäœæããŠãããpdfãã¡ã€ã«ã«ãšã¯ã¹ããŒãããããšã§ããpdfdumpïŒïŒ
颿°ã¯ãã§ã«ãããæ
åœããŠããŸããçµæã¯æ¬¡ã®ããã«ãªããŸãããã®å Žåããã§ã«ããªãè¯å¥œã§ããæ©èœã
graphïŒïŒã¯åã³ImageMagickãŠã£ã³ããŠãéããŸããã詳现ãªå³é¢ã衚瀺ãããŸãã
ããã§ã¯ããã¬ãŒã¹çµæã衚瀺ãããèªåŸã·ã¹ãã ã®è©³çŽ°è¡šç€ºããã®ä»ã®èŠèŠåã衚瀺ãããŸãããããŠãèŠèŠåã®ãããã¯ã宿ããããããšãšãã«èšäºã§ããã©ãã¯ã®3D衚瀺ãèŠãŠã¿ãŸããããããã«ã¯ãVPythonãštrace3DïŒïŒã³ãã³ããå¿
èŠã§ãã
åã®ãã£ãŒãã®ãã©ãã¯ãããã«è¡šç€ºãããŸãããã ã
ããã®ãããªãªãã·ã§ã³ãååšããå ŽåããããŸãããã®äŸã§ã¯ãè€æ°ã®ïŒ80ã443ïŒTCPããŒãã䜿çšããŠãè€æ°ã®ã¿ãŒã²ãããäžåºŠã«ãã¬ãŒã¹ãããŸããããªããžã§ã¯ããå·Šã¯ãªãã¯ãããšããã®äžã«IPã¢ãã¬ã¹ã衚瀺ãããCtrlããŒãæŒããªããå·Šã¯ãªãã¯ãããšããã®å Žåã®ããã«ããŒãã«é¢ãã詳现æ
å ±ã衚瀺ãããŸãããšãããŒã°
ãã®ãããScapyãŠãŒãã£ãªãã£ã®ããäžéšã®ã¿ã調æ»ããŸããããããã¯ãã§ã«å°è±¡çã§ããæäŸãããæ©äŒã¯æ¬åœã«éåžžã«å€§ããã§ãããã®èšäºã¯ããããã¯ãŒã¯ãããã³ã«ã®ç ç©¶ã«èªè
ã®é¢å¿ãåèµ·ããããšãç®çãšããŠãããScapyããŒã«ã®å
æ¬çãªã¬ã€ãã§ã¯ãããŸãããèè
ã¯ãéæ³ãªç®çã§ãã®ãŠãŒãã£ãªãã£ã䜿çšãã責任ãè² ããŸããã
èšäºãæžãéçšã§ãSANS Instituteã®è³æãšãããžã§ã¯ãã®å
¬åŒããã¥ã¡ã³ãã䜿çšãããŸããã