ãã±ããäœæãŸãã¯ãã±ããã¯ã©ããã£ã³ã°ã¯ããããã¯ãŒã¯ãšã³ãžãã¢ãŸãã¯ãã¹ãæ åœè ããããã¯ãŒã¯ãæ¢çŽ¢ãããã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«ããã§ãã¯ããè匱æ§ãèŠã€ããããšãå¯èœã«ããæè¡ã§ãã
ããã¯éåžžãæåã§è¡ããããããã¯ãŒã¯äžã®ããŸããŸãªããã€ã¹ã«ãã±ãããéä¿¡ããŸãã
ã¿ãŒã²ããã¯ããã¡ã€ã¢ãŠã©ãŒã«ãäŸµå ¥æ€ç¥ã·ã¹ãã ïŒIDSïŒãã«ãŒã¿ãŒãããã³ãã®ä»ã®ãããã¯ãŒã¯åå è ã§ãã
ããã±ãŒãžãæåã§äœæããŠããé«ã¬ãã«ã®ããã°ã©ãã³ã°èšèªã§ã³ãŒããèšè¿°ããå¿ èŠã¯ãããŸãããScapyãªã©ã®æ¢è£œã®ããŒã«ã䜿çšã§ããŸãã
Scapyã¯ãããã±ãŒãžãæåã§äœæããããã®æè¯ã§ã¯ãªãã«ããŠããæé«ã®ããŒã«ã®1ã€ã§ãã
ãã®ãŠãŒãã£ãªãã£ã¯Pythonèšèªã䜿çšããŠèšè¿°ãããŠãããäœæè ã¯Philippe Biondiã§ãã
ãã®ãŠãŒãã£ãªãã£ã®å¯èœæ§ã¯ã»ãŒç¡éã§ãããã±ããã®ã¢ã»ã³ããªãšããã®åŸã®ãããã¯ãŒã¯ãžã®éä¿¡ããã±ããã®ãã£ããã£ã以åã«ä¿åãããã³ãããã®ãã±ããã®èªã¿åãããããã¯ãŒã¯ã®æ¢çŽ¢ãªã©ã§ãã
ããã¯ãã¹ãŠãã€ã³ã¿ã©ã¯ãã£ãã«å®è¡ããããšããã¹ã¯ãªãããäœæããŠå®è¡ããããšãã§ããŸãã
Scapyã䜿çšãããšããããã¯ãŒã¯äžã®ãã¹ããã¹ãã£ã³ããã¬ãŒã¹ã調æ»ãæ»æãããã³æ€åºã§ããŸãã
Scapyã¯ãWiresharkã«äŒŒãç°å¢ããã¬ãŒã ã¯ãŒã¯ãæäŸããŸãããçŸããã°ã©ãã£ã«ã«ã·ã§ã«ã¯ãããŸããã
ãã®ãŠãŒãã£ãªãã£ã¯UNIXã©ã€ã¯ãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã çšã«éçºãããŠããŸãããããã§ãWindowsç°å¢ã§å®è¡ã§ãããã®ããããŸãã
ãã®ãŠãŒãã£ãªãã£ã¯ãä»ã®ããã°ã©ã ãšå¯Ÿè©±ããããšãã§ããŸãããã±ãããèŠèŠçã«ãã³ãŒãããã«ã¯ãåãWiresharkãæ¥ç¶ããŠãã°ã©ããæç»ã§ããŸã-GnuPlotããã³Vpythonã
åäœããã«ã¯ãã¹ãŒããŒãŠãŒã¶ãŒæš©éïŒrootãUID 0ïŒãå¿ èŠã§ããããã¯ããªãäœã¬ãã«ã®ãŠãŒãã£ãªãã£ã§ããããããã¯ãŒã¯ã«ãŒãã§çŽæ¥åäœããããã§ãã
ãããŠãéèŠãªããšã¯ããã®ãŠãŒãã£ãªãã£ã䜿çšããã®ã«Pythonããã°ã©ãã³ã°ã®æ·±ãç¥èã¯å¿ èŠãªããšããããšã§ãã
éãã
ãããžã§ã¯ãã®å ¬åŒãµã€ã-www.secdev.org/projects/scapy
DebianããŒã¹ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®å Žå ã 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ã®è³æãšãããžã§ã¯ãã®å ¬åŒããã¥ã¡ã³ãã䜿çšãããŸããã