ãã©ãã£ãã¯ã®æ¥å¢ãšDDoSã®æåã®çã
åææ¥ã®å€æ¹é ãã«ããµãŒããŒã®1ã€ãããŠã³ããŸããã ãã®ãããžã§ã¯ãã®ã¯ã©ã¹ã¿ãŒå šäœã¯3 + 3åã§æ§æãããããããã3åã®è² è·å šäœããã«ããããã1åã®æ倱ããµãŒãã¹ãè ããããšã¯ãããŸããã§ããã ãããããµãŒããŒããããŸã§æ¯ç§10 + Kã®http-requestsã®ç·çä¿¡ãã©ãã£ãã¯ãéãã«åãå ¥ããŠãããããã©ãŒãã³ã¹ã«å€å°ã®ããŒãžã³ãããããã«æããããããµãŒããŒãçªç¶ããã»ã©å®å®ããŠããªãããšãéåžžã«äžå¿«ã§ããã RAID1ãåæ§ç¯ãããPostgreSQLãã¬ããªã±ãŒã·ã§ã³ã«è¿œãã€ããŠããéããµãŒããŒã®æ®ãã®éšåãèŠãæéããããŸããã
ãã®ã¯ã©ã¹ã¿ãŒãã©ã®ããã«æ©èœããããäºåã«èª¬æãã䟡å€ããããŸãã ãµãŒããŒã¯ããšãŒãããã®2ã€ãšç±³åœã®4ã€ã®ç°ãªãå Žæã«ãããŸãã ãããã¯ããªãã«ã«åå²ãããIPã°ã«ãŒãã«ãµãŒãã¹ãæäŸããŸãïŒã€ãŸããããªãã«ããšã«ãšãŒãããã®1ã€ã®ãµãŒããŒãšã¢ã¡ãªã«ã®2ã€ã®ãµãŒããŒïŒã ãã©ãã£ãã¯ã¯ãšããŒãã£ã¹ãæ段ã«ãã£ãŠé ä¿¡ãããŸã-3ã€ã®ãµãŒããŒãã¹ãŠã«åãIPã¢ãã¬ã¹ãç»é²ãããçŽæ¥ã«ãŒã¿ãŒãšã®BGPã»ãã·ã§ã³ãçºçããŸãã ãµãŒããŒãããŠã³ããå Žåã察å¿ããã«ãŒã¿ãŒã¯ã€ã³ã¿ãŒãããäžã®ãããã¯ãŒã¯ã®ã¢ããŠã³ã¹ãåæ¢ãããã©ãã£ãã¯ã¯èªåçã«æ®ãã®ãµãŒããŒã«éãããŸãã
èŠããã®ã¯äœããããŸããã§ããã ç£èŠããŒã¿ã«ãããšãç§ã®çŽåã«ãäž¡æ¹ã®ãšãŒãããã®ãµãŒããŒãžã®çä¿¡ããã³çºä¿¡ãã©ãã£ãã¯ãæ¥å¢ãïŒãã®ãã¡ã®1ã€ãããŠã³ããŸããïŒã垯åå¹ ã2åã«ãªã£ãå Žåã1ç§ãããã®ãã±ããæ°ã¯ãã§ã«10åã«å¢å ããåæ¹åã«ãªããŸããã ã€ãŸã ããã±ãŒãžã¯å°ãããå€æ°ïŒæ¯ç§200KæªæºïŒã§ããã
HighLoadãµãŒãã¹ã§ã¯ãç¹ã«ãã®ãããªãµã€ãºã§ã¯ããã©ãã£ãã¯ã¯å€åããŸããã DDoSã«ãã䌌ãŠããŸãããïŒ èšããŸã§ããªããå€ãã®ç°ãªãçš®é¡ã®DDoSãèŠãå¿ èŠããã£ãããšã¯éåžžã«é©ãã§ãããããããŸã§ã®ãšããããããã€ããŒã®ãããã¯ãŒã¯æ©åšããµãŒããŒãžã®æ倱ãªããã©ãã£ãã¯ãé ä¿¡ããããšãèš±å¯ããå Žåããããã¯åžžã«ãããããããã¯ããããšãã§ããŸããã ãã©ãã£ãã¯ã®æ¥å¢ã¯ãšãŒãããã®ãµãŒããŒã§ã®ã¿çºçããããšãèŠåããŠããŸãããçµå±ããããããããåæ£ãããŠããå Žåããã©ãã£ãã¯ã¯ã¯ã©ã¹ã¿ãŒå šäœã«åæ£ãããã¯ãã§ãã
ãã±ããæ倱ãšã¢ã¯ãã£ããªTCPã»ãã·ã§ã³ã®å¢å
ãµãŒããŒã皌åãããåŸããtopãããnloadããèµ·åããè² è·ã®ç£èŠãéå§ããŸããã ãŸããªãããã©ãã£ãã¯ã¯åã³åå¢ããsshã»ãã·ã§ã³ã¯å€§å¹ ã«é ãå§ããŸããã ãã±ããæ倱ãããããmtr -ni 0.1 8.8.8.8ãã¯ãã®ä»®èª¬ãå³åº§ã«ç¢ºèªãããtop -SHãã¯OSã®ã³ã¢ã¯çä¿¡ãããã¯ãŒã¯ãã±ããã®ããã»ããµã«ååãªCPUããªãããšã§ããããšã瀺ããŸããã ããŠãä»ã§ã¯ãµãŒããŒãåçµãããŠããçç±ãæããã§ã-ãã±ããæ倱ã¯æ»ã«äŒŒãŠããŸãã
ãã®æçš¿ãæžããŠããæç¹ã§ãFreeBSDã«ã¯ãããã¯ãŒã¯ã¹ã¿ãã¯ã«éåžžã«äžæå¿«ãªæ©èœã1ã€ãããŸãããTCPã»ãã·ã§ã³ã®æ°ã«é¢ããŠã¯ååã«æ¡åŒµã§ããŸããã TCPã»ãã·ã§ã³ã®æ°ãæ°åã«å¢ãããšãCPUæ¶è²»ãäžåè¡¡ã«å€§ãããªããŸãã ã»ãã·ã§ã³ã¯ã»ãšãã©ãããŸããããåé¡ã¯ãããŸããã ããããæ°äžã®ã¢ã¯ãã£ããªTCPã»ãã·ã§ã³ããå§ãŸãçä¿¡ãã±ãããã³ãã©ãŒã¯ãCPUäžè¶³ãçµéšãå§ãããã±ãããããããããå¿ èŠããããŸãã ãããŠãããã¯é£éåå¿ã«ã€ãªãããŸã-ãã±ããæ倱ã«ãããã¢ã¯ãã£ããªTCPã»ãã·ã§ã³ã¯ãã£ãããšåŠçããå§ããããã§ã»ãã·ã§ã³æ°ãå¢å ãå§ããããã«ããCPUäžè¶³ãå¢å ãããã±ããæ倱ã¬ãã«ãããã«äžæããŸãã
ãµãŒããŒãå®å šã«ãã³ã°ããŠããããã§ã¯ãããŸããããç§ã¯ç·æ¥ã«BGPã»ãã·ã§ã³ãçµäºãã䞊è¡ããŠããšãŒãããã®ãã©ãã£ãã¯ãåŒãç¶ãã ãµãŒããŒã§ãã±ããæ倱ãã§ãã¯ãå®è¡ããŸãã ããã¯ãã匷åãªéãæã£ãŠããŸã-ã€ãŸã ã¢ã¡ãªã«ã§ã¯äœãæªãããšãèµ·ãããªãå¯èœæ§ããããŸãã åé¡ã®ãããµãŒããŒã§äœããè¡ãå¿ èŠããããŸããHTTPããŒãã¢ã©ã€ãããªãã«ããæåã®ããšã¯ãTCPã»ãã·ã§ã³ãæ©ãéå§ãããåèšã§å°ãªããªãããšã§ãã ãããã¯ãŒã¯ã«ãŒãã®èšå®ã®èª¿æŽã«ã¯æ°ååããããæ¯åBGPã»ãã·ã§ã³ãäžæçã«äžããããšã§ãã±ããæ倱ã確èªããŸãã-ããŒãªã³ã°ã¢ãŒããçµäºããå¿ èŠããããŸãããidlepollãã¢ã¯ãã£ãã«ããŸãã-çŸåšãããã»ããµã®1ã€ã®ã³ã¢ããããã¯ãŒã¯ã«ãŒãã«ãã£ãŠå æãããŠããŸããããã±ããæ倱ã¯åæ¢ããŸããã
ç解ã§ããªãç¬éããŸã ãããŸãã-ããšãã°ãæ»æäžããã³éåžžã®åäœã¢ãŒãã§ã®TCPã»ãã·ã§ã³ã®æ°ã¯ããã»ã©å€ãããŸããã§ãããã€ãŸããåé¡ã¯ãã®æ°ã®å€§å¹ ãªå¢å ã§ã¯ãããŸããã§ããã ããããå®å šã«ç解äžèœãªã®ã¯ããã®æ»æãã¢ã¡ãªã«ã®ãµãŒããŒã§ãŸã£ããèŠããªãã£ãçç±ã§ãïŒ ãšãŒãããã®ãµãŒããŒã®åæäžãå®éã®çšŒåãã©ãã£ãã¯ã®ã¿ãShtatovskieãµãŒããŒã«å°éããŸããããè¿œå ã®ãã©ãã£ãã¯ã¯ãããŸããã§ããïŒ ãããããšãŒãããã«ãã©ãã£ãã¯ãæ»ã£ãåŸããã°ããã®éäœæ¥ã¬ãã«ã«ãšã©ãŸãããã®åŸãå¥ã®æ¥å¢ãå§ãŸããŸããã
æã®1æã§ãããããã±ããæ倱ãåæ¢ããããã«æããããããã®ãããã¯ãŒã¯ã®ç°åžžã«æ°é®®ãªå¿ã§å¯ŸåŠã§ããŸãã ãã®ãããªèãã§ãç§ã¯ãããã«æ»ããŸããããæ°æéåŸã«åã³ç®ãèŠããŸãã-ä»åã¯äž¡æ¹ã®ãšãŒãããã®ãµãŒããŒããã§ã«åãã€ããŠããŸããã ããã¯ããã®ã±ãŒã¹ã®è²¡åã«å¥ã®å¥åŠãããããããŸãã-æéããã§ã«é ããŠãããããŒã¯ãã©ãã£ãã¯ãããªãé ããŠããããã§ãã ãã ããDDoSæ»æã«é¢ããŠã¯ãããã¯æ£åžžã§ããã»ãšãã©ã®å°é家ãç ã£ãŠæ»æã«åŸäºããŠãããããååãšããŠã誰ãæ»æããŸããã ããã«äž¡æ¹ã®ãµãŒããŒãèµ·åãããŸãããããã®åŸã®ç¶æ³ã®ç£èŠã§ã¯äœãæ°ãããã®ã¯åŸãããŸããã§ããããã®æ¥ã®æ»æã¯ç¹°ãè¿ãããŸããã§ããã
çæçãªè§£æ±ºç
æ¥ææ¥ã«ç§ã¯å°ãä»äºãããªããã°ãªããŸããã§ããã å¥ã®ã¹ã¯ãªãããTCPã»ãã·ã§ã³ã®æ°ãæ¢ã«ç£èŠããŠãããè² è·ãå¢å ããå Žåã«ãã©ãã£ãã¯ãäžæçã«åé€ïŒã€ãŸãããã©ãã£ãã¯ãç¶æ ã«è»¢éïŒããŠãçµæãšããŠçããæ害ãæžãããŸããã ãããŸã§ã®ãšãããç±³åœã®ãµãŒããŒã¯åé¡ãªãæ©èœããŸããããããã§ããã®ãã©ãã£ãã¯ã«å¯ŸåŠãããããã¯ããæ¹æ³ãåŠã¶å¿ èŠããããŸããã httpãã°ã«ç°åžžã¯ãªããnetstatãªã©ã®ãŠãŒãã£ãªãã£ãçããããã®ã¯äœããããŸããã§ããã ãã ãããããã¯ãŒã¯ã«ãŒãã®ãã©ãã£ãã¯ãå¢å ããŠããå Žåã¯ãtcpdumpã䜿çšããŠèª¿æ»ã§ããŸãã
倧éã®ãããã¯ãŒã¯ãã±ãããã³ããã¹ã¯ããŒã«ããã®ã¯é£ããå ŽåããããŸãããä»åã¯é·ãéæ€çŽ¢ããå¿ èŠã¯ãããŸããã§ãããéåžžã®HTTP / HTTPS亀æã§ã¯ãç°åžžã«å€ãã®ç©ºã®TCPãã±ããã衚瀺ãããŸããã IPããã³TCPããããŒã¯æ£ããããããŒã¿ã¯ãªãæ£åœãªãã±ããã HTTPããªãã®å ŽåãããŒãã¢ã©ã€ãã®ç©ºã®ãã±ããã¯ãã§ã«å€æ°ã§ããæ¥ç¶ã確ç«ããããã«ç©ºã®3ã€ã次ã«2ã€ã®ããŒã¿äº€æãã±ããïŒèŠæ±/å¿çïŒããããŠåã³ç©ºã®ãã±ãããæ¥ç¶ãéããŸãã ããã«ãHTTPSã䜿çšããå ŽåãTLSã»ãã·ã§ã³ãã»ããã¢ããããããã®ããŒã¿ãã±ããããããŸãã
åã ã®TCPã»ãã·ã§ã³ã®éžæãã¹ãã«ãããäžéšã®ã»ãã·ã§ã³ã§ã¯å®éã«ç©ºã®TCPãã±ããã®éåžžã«æ¿ãã亀æãè¡ãããããšã瀺ãããŸããã ãããã®ã»ãã·ã§ã³ã®ã»ãšãã©ãã¹ãŠãã€ã³ãããã®ãã®ã§ããïŒ ã¯ãŠã§ãŒããšãµãŠãžã¢ã©ãã¢ãå°ããããŸããã ã©ããªunningãªããããããã§ããããèšãã®ã¯é£ããã§ããããŸã ãããŸããã ç§ã¯ãæ¯ç§3äžãã±ããããšã«tcpdumpãå®è¡ãã空ã®ãã±ããã®é£ç¶çãªäº€æã®æ°ãæå®ãããå¶éãè¶ ããèŠã€ãã£ãIPãããã«ãããã¯ãããã»ãã·ã§ã³ãæ¢ã2çªç®ã®ç°¡åãªã¹ã¯ãªãããæžããŠããŸãã çµæã¯ããã»ã©é·ãã¯ãããŸããã§ãã-5ã€ã®IPãã©ãã£ãã¯ã®ã¿ããããã¯ãããšãããã«2åããããããŸãã æ¯åã1ã€ãŸãã¯2ã€ã®æ°ããIPããããã¯ãããŸããã åå©ïŒ
çç¶åæãšåé¡ã®ç¹å®
Advanced Hostingã®ååãšãã®ã±ãŒã¹ã«ã€ããŠè°è«ããåŸããã¹ãŠãããã»ã©ãã©è²ã§ã¯ãªãããšãå€æããŸããã 第äžã«ãæ°ããIPã®ããããã³ã°åŒ·åºŠãå¢å€§ããŠããŸãã-ãã§ã«ãã©ãã£ãã¯ã®ããŒã¯æã«ãããããã³ã°é床ã¯æ¯åæ°ååã«éããŸããã 第äºã«ããããã®ãµãŒããŒã ãã§ãªããä»ã®å€ãã®ãµãŒããŒãä»ã®ã¯ã©ã€ã¢ã³ãã圱é¿ãåããŸããã éåžžããšãŒãããã®ãã¹ãŠãšFreeBSDã®ãã¹ãŠã ããã¯DDOSæ»æã§ã¯ãªãããšãæããã«ãªããŸããã
ãããã¯ãããIPã解æŸããå¿ èŠããããTCPã»ãã·ã§ã³èªäœããããã¯ãã代ããã«ãçŸåšããããããŠããŸããïŒFreeBSDã«ã¯ããã®ããã®tcpdropãŠãŒãã£ãªãã£ããããŸãïŒã ãŸããè² è·ãå¹æçã«å¶åŸ¡ããHTTPããŒãã¢ã©ã€ããæå¹ã«ããŸããã
åã³tcpdumpãéžæããŠããã©ãã£ãã¯ãããã«èª¿ã¹ãå¿ èŠããããŸãã ããŒã¿ã®ç°åžžããã¿ãŒã³ã®æ€çŽ¢ã«è²»ããããæéã«ã€ããŠã¯è©³ãã説æããŸããã TCPã»ãã·ã§ã³ã¯ç°ãªã£ãŠããŸããã å®å šã«ç©ºã§ããããããŒã¿äº€æãããã空ã®ãã±ããã亀æãããµã€ã¯ã«ã«å ¥ããŸããã
ããããæãããããããŸããã 空ã®ãã±ãã亀æãµã€ã¯ã«ãé¢ããåã«ãFINãã±ããããªã¢ãŒãåŽããæ¥ãŸããïŒFINãã©ã°ãä»ãããã±ããã¯ããŒã¿ããªãã»ãã·ã§ã³ãéããå¿ èŠãããããšãéç¥ããŸãïŒãæã«ã¯1ã€ã§ã¯ãããŸããããRSTãã±ãããçºçããŸããïŒRSTãã©ã°ãä»ãããã±ããã¯ã»ãã·ã§ã³ã瀺ããŸãæ¢ã«ééãããŠãããæå¹ã§ã¯ãããŸããïŒã
èå³æ·±ãããšã«ãFINããã³RSTãã±ãããååšããã«ãããããããããŒã¿ãã±ããããµãŒããŒã«å±ãããšããããŸããã TCPã¹ã¿ãã¯ãéåžžã«æ²ããããã£ãŠå®è£ ãããŠããå¯èœæ§ãäœãããTCPã»ãã·ã§ã³ã«å€§ãŸããªä»å ¥ãè¡ãããŠããå Žæã®ããããã§ãããããã¯ãã§ã«ããªãããããã§ãïŒç¹ã«ã¢ãã€ã«ãªãã¬ãŒã¿ãŒã¯ããã«ãµããã®ã奜ããªã®ã§ãæããããŸããïŒã 2çªç®ã®ããŒãžã§ã³ã¯ãæ€åºãããæªæã®ããTCPã»ãã·ã§ã³ã®http-logãã§ãã¯ã«ããããããã®ã»ãšãã©ãã¹ãŠã«AndroidãšiOSã®äž¡æ¹ã®ã¢ãã€ã«ãã©ãŠã¶ãŒãããããšã瀺ããããšããäºå®ã«ãã£ãŠã確èªãããŸããã
FINãŸãã¯RSTãã±ãããTCPã»ãã·ã§ã³ãéããç¶æ ã«ããTCPã¹ã¿ãã¯ããã±ããã®åä¿¡ãåçŽã«ç¢ºèªãããšä»®å®ããããšã¯è«ççã§ããã ã©ã®TCPç¶æ ãé¢çœãã£ã
tcp_fsm.h
#define TCP_NSTATES 11 #define TCPS_CLOSED 0 /* closed */ #define TCPS_LISTEN 1 /* listening for connection */ #define TCPS_SYN_SENT 2 /* active, have sent syn */ #define TCPS_SYN_RECEIVED 3 /* have sent and received syn */ /* states < TCPS_ESTABLISHED are those where connections not established */ #define TCPS_ESTABLISHED 4 /* established */ #define TCPS_CLOSE_WAIT 5 /* rcvd fin, waiting for close */ /* states > TCPS_CLOSE_WAIT are those where user has closed */ #define TCPS_FIN_WAIT_1 6 /* have closed, sent fin */ #define TCPS_CLOSING 7 /* closed xchd FIN; await FIN ACK */ #define TCPS_LAST_ACK 8 /* had fin and close; await FIN ACK */ /* states > TCPS_CLOSE_WAIT && < TCPS_FIN_WAIT_2 await ACK of FIN */ #define TCPS_FIN_WAIT_2 9 /* have closed, fin is acked */ #define TCPS_TIME_WAIT 10 /* in 2*msl quiet wait after close */
ããããã®åäœã§ããtcpdropãåŒã³åºãåã«ãnetstat -anã®åºåã«åé€ãããTCPã»ãã·ã§ã³ã®æ€çŽ¢ãè¿œå ããŸããã çµæã¯å°ããã£ãããããããŸãã-ãããã¯ãã¹ãŠç¢ºç«ãããŸããïŒ ããã¯ãã§ã«éåžžã«ãã°ã«äŒŒãŠããŸãã-éããããTCPã»ãã·ã§ã³ã¯ESTABLISHEDç¶æ ã«æ»ãããšãã§ããŸããããã®ãªãã·ã§ã³ã¯æäŸãããŠããŸããã ç§ã¯ããã«ãœãŒã¹ãšã«ãŒãã«ã®ãã§ãã¯ãéå§ããäºåºŠãšèœèãããããŸããã
tp->t_state = TCPS_ESTABLISHED
ããã¯ã³ãŒãã§æ£ç¢ºã«2ååŒã³åºããããã®çŽåã«äž¡æ¹ãšãçŸåšã®t_stateå€ããã§ãã¯ãããŸã-1ã€ã®å Žåã¯TCPS_SYN_SENTïŒãµãŒããŒã¯SYNãã±ãããéä¿¡ããŠç¢ºèªãåä¿¡ïŒã«çããã2çªç®ã¯TCPS_SYN_RECEIVEDïŒãµãŒããŒãSYNãåä¿¡ããSYN / ACKãéä¿¡ããŠåä¿¡ããŸãïŒ ACKã®ç¢ºèªïŒã ããããã®çµè«ã¯éåžžã«å ·äœçã§ã-FINãšRSTãã±ããã¯ãµãŒããŒã«ãã£ãŠç¡èŠãããTCPã¹ã¿ãã¯ã«ãã°ã¯ãããŸããïŒå°ãªããšããããç¶æ ããå¥ã®ç¶æ ãžã®èª€ã£ãé·ç§»ã䌎ããã°ããããŸãïŒã
ããã§ãããµãŒããŒãåä¿¡ãããã¹ãŠã®TCPãã±ããã«å¿çããå¿ èŠãããçç±ã¯æããã§ã¯ãããŸããã§ããã éåžžãããã¯äžèŠã§ãããTCPã¹ã¿ãã¯ã®åäœã¯ç°ãªããŸããè€æ°ã®ãã±ãããåä¿¡ããäžåºŠã«1ã€ã®ãã±ãã確èªãéä¿¡ããŸã-ããã¯ããçµæžçã§ãã ãã±ããã®å 容ãç¹ã«32ãããTCPã«ãŠã³ã¿ãŒã®æ³šææ·±ã調æ»-ã·ãŒã±ã³ã¹ïŒSEQïŒããã³è¯å®å¿çïŒACKïŒã¯ãç¶æ³ãæããã«ããã®ã«åœ¹ç«ã¡ãŸããã tcpdumpã®ããã©ã«ãã®åäœ-絶察å€ã®ä»£ããã«ãã±ããéã®seq / ackã®éãã衚瀺ãã-ãã®å ŽåãæªããµãŒãã¹ãæãããŸããã
16:03:21.931367 IP (tos 0x28, ttl 47, id 44771, offset 0, flags [DF], proto TCP (6), length 60)
46.153.19.182.54645 > 88.208.9.111.80: Flags [S], cksum 0x181c (correct), seq 3834615051, win 65535, options [mss 1460,sackOK,TS val 932840 ecr 0,nop,wscale 6], length 0
16:03:21.931387 IP (tos 0x0, ttl 64, id 1432, offset 0, flags [DF], proto TCP (6), length 60)
88.208.9.111.80 > 46.153.19.182.54645: Flags [S.], cksum 0xa4bc (incorrect -> 0xf9a4), seq 1594895211, ack 3834615052, win 8192, options [mss 1460,nop,wscale 6,sackOK,TS val 2509954639 ecr 932840], length 0
16:03:22.049434 IP (tos 0x28, ttl 47, id 44772, offset 0, flags [DF], proto TCP (6), length 52)
46.153.19.182.54645 > 88.208.9.111.80: Flags [.], cksum 0x430b (correct), seq 3834615052, ack 1594895212, win 1369, options [nop,nop,TS val 932852 ecr 2509954639], length 0
16:03:22.053697 IP (tos 0x28, ttl 47, id 44773, offset 0, flags [DF], proto TCP (6), length 40)
46.153.19.182.54645 > 88.208.9.111.80: Flags [R], cksum 0x93ba (correct), seq 211128292, win 1369, length 0
16:03:22.059913 IP (tos 0x28, ttl 48, id 0, offset 0, flags [DF], proto TCP (6), length 40)
46.153.19.182.54645 > 88.208.9.111.80: Flags [R.], cksum 0xa03f (correct), seq 0, ack 1594897965, win 0, length 0
16:03:22.060700 IP (tos 0x28, ttl 47, id 44774, offset 0, flags [DF], proto TCP (6), length 52)
46.153.19.182.54645 > 88.208.9.111.80: Flags [.], cksum 0x3a48 (correct), seq 3834615953, ack 1594896512, win 1410, options [nop,nop,TS val 932853 ecr 2509954639], length 0
16:03:22.060706 IP (tos 0x0, ttl 64, id 3974, offset 0, flags [DF], proto TCP (6), length 52)
88.208.9.111.80 > 46.153.19.182.54645: Flags [.], cksum 0xa4b4 (incorrect -> 0x475c), seq 1594895212, ack 3834615052, win 135, options [nop,nop,TS val 2509954768 ecr 932852], length 0
絶察å€ã詳ãã調ã¹ãŸãã æåã®ãã±ããã«ã¯ããµãŒããŒãžã®å¿çãšããŠseq 3834615051ãå«ãŸãããã±ããseq 1594895211ãéä¿¡ãããŸãããack3834615052ïŒout-ack goes in-seq + 1ïŒã
ãã®åŸãããã€ãã®RSTãã±ãããæ¥ãŸãããããããã¯ç§ãã¡ã«ãšã£ãŠã¯é¢çœããªããã®ã§ãã
ãããã次ã®ãã±ããã«ã¯èå³æ·±ããã®ããããŸããçªå·seq 3834615953ãack 1594896512ãå«ãŸããŸãããããã®çªå·ã¯äž¡æ¹ãšãåæseq / ackãããããªã倧ããããããªã¢ãŒãåŽã¯ãã§ã«3834615953-3834615052 = 901ãã€ããéä¿¡ããããã«1594896512-1594895212ãååŸããããšãã§ããŸãã= 1300ãã€ãã
ãã¡ããããããã®ããŒã¿ãã±ããã¯è¡šç€ºãããã衚瀺ãããŸãã-ãã®äº€æã¯MiTMã·ã¹ãã ã§è¡ãããŸããã ãããããµãŒããŒã¯ãããç¥ããŸããã 圌ã¯seq 3834615953ã®ãã±ãããèŠãŠããããã£ãŠ901ãã€ãã®ããŒã¿ãåä¿¡ããªãã£ããšçµè«ä»ãããããã£ãŠåœŒãseq 1594895212ãack 3834615052ã§ãããšç¥ã£ãŠããæåŸã®æå¹ãªseq / ackçªå·ãæã€ãã±ãããéãè¿ããŸããé çªã«ã圌女ã¯ãã¹ãŠãæ£åžžã§ãããšå ±åãã1300ãã€ãã®ããŒã¿ãæ£åžžã«åä¿¡ãããŸããã ããã«ã«ãŒãããããŸãã
ãŸããç±³åœã®ãµãŒããŒããã®ãã©ãã£ãã¯ãèªèããªãã£ãçç±ãæããã«ãªããŸãããå®éã¯ããã§ãããã€ã³ãããã¢ã¡ãªã«ãžã®pingãã€ã³ããããšãŒããããžã®pingããã倧ããã£ãã®ã§ãã
æçµããã
å®éããã®ãã°ãä¿®æ£ããæ¹æ³ãèŠã€ããããšã¯æ®ã£ãŠããŸãã åã³ãœãŒã¹ã³ãŒããååŸããŸããèå³ã®ããã³ãŒãã¯tcp_input.cãã¡ã€ã«ã«ãããŸãã tcp_inputïŒïŒé¢æ°ãTCPãã±ããã®ãã©ã€ããªåŠçã«é¢äžããŠãããããé£ãããããŸããã§ããã é¢æ°ã¢ã«ãŽãªãºã ã¯ããã±ããããã¹ãŠã®ãã§ãã¯ã«åæ ŒããTCPæ¥ç¶ãESTABLISHEDç¶æ ã«ãªã£ããšãã«ãæåŸã«åŠçããããã«tcp_do_segmentïŒïŒé¢æ°ã«éä¿¡ãããããã«é 眮ãããŸãã
ãã1ã€ãã§ãã¯ãè¿œå ããå¿ èŠããããŸã-çžæåŽããã®ackã«ãŠã³ã¿ãŒãããµãŒããŒãéä¿¡ããªãã£ãããŒã¿ãåä¿¡ããããšã瀺ããŠããå Žåããã±ãããç¡èŠããå¿ èŠããããŸãã ããã«æ¥ç¶ãåæããããšã¯ã§ããŸãã-ããããªããšãæ»æè ã«å¯ŸããŠä»ã®äººã®TCPæ¥ç¶ãçµäºããç°¡åãªæ¹æ³ãæäŸããŸãã
ãããããã¹ããããšãackå€ããŒãã®ãã±ãããTCPãã©ãã£ãã¯ã«ååšããããšã瀺ãããŸãããããããç¡èŠããå¿ èŠã¯ãªããªããŸããã æåŸã®ãããã¯3è¡ã§ããïŒã³ã¡ã³ããé€ãïŒïŒ
+ if(SEQ_GT(th->th_ack, tp->snd_max) && th->th_ack != 0) { + goto dropunlock; + }
PRïŒåé¡å ±åïŒãåãæ¥ã« FreeBSDéçºè ã«éãããŸãã ã
PS LinuxãšWindowsã®ç¶æ³ã¯ã©ãã§ããïŒ ããã§ã¯ãã¹ãŠåé¡ãããŸããããã®ãããªããã±ãŒãžã¯ç¡èŠãããŸãïŒãã¹ãæžã¿ã®Windows 10ããã³Linux 3.10ïŒã