DDoS рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЧрдиреЗрдХреНрд╕ рдореЙрдбреНрдпреВрд▓, рдлреНрд▓реИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХреБрдХреА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ

рдмреЙрдЯреНрд╕ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдирдЧрдиреЗрдХреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдмрд╣реБрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реА рдЬрд┐рд╕рдореЗрдВ рд▓реЛрдЧреЛрдВ рдиреЗ рдлреНрд▓реИрд╢ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ред
рдореБрдЭреЗ рдпрдХреАрди рдерд╛ рдХрд┐ рдЙрдЪрд┐рдд рдкрд░рд┐рд╢реНрд░рдо рдХреЗ рд╕рд╛рде, рд╣рд░ рдХреЛрдИ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдмрд┐рдирд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрдб рдХреЛ рдмрджрд▓реЗ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ PoC рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВ рдореЙрдбреНрдпреВрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдкреНрд░рдкрддреНрд░ рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдерд╛, рдФрд░ KISS рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд, рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдпрд╣ рддреАрд╕рд░реЗ рджрд▓ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Nginx рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рд╕реЗ рдареАрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ HTTP рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реИред
рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:


рдореБрдЭреЗ рдЬреЛ рдЬреЛрдбрд╝рдирд╛ рдерд╛


Testcookie- рдлрд┐рд▓реНрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдореБрдЦреНрдп рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП, рдкреБрд░рд╛рдиреЗ "рдСрди" рдФрд░ "рдСрдл" рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдм рдПрдХ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ - "var"ред рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ var рдореЛрдб рдореЗрдВ рд╣реИ, рддреЛ рджрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП:


рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ?


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдм рдЖрдк HTTP рд╣реЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдХреБрдХреА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХреБрдХреА рдорд╛рди рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
location = /testcookie.swf { testcookie var; proxy_pass http://127.0.0.1:1234/; proxy_set_header Testcookie-Value $testcookie_set; proxy_set_header Testcookie-Valid $testcookie_ok; proxy_set_header Testcookie-Name "BPC"; } 

рд╣реЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдлреНрд▓реИрд╢ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ?
рдЪреВрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдореЗрдВ рдорд╛рди рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ regexp рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдлрд┐рд░ рднреА, рдлреНрд▓реИрд╢?


рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдлреНрд▓реИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдХреАрдЬрд╝ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕рдмрд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВ рдирд╣реАрдВред
рдПрдХ рд╕реНрдерд┐рд░ рдПрд╕рдбрдмреНрд▓реНрдпреВрдПрдл рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░, рдЬреИрд╕рд╛ рдХрд┐ рд░реЛрдмреВ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ - рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЖрджрд┐ред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЕрд╡рд╕рд░ рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 2 рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ:
cookie_encoder.py (рдкрд╛рдпрдерди):
 def encode_cookie(cookie_value): key = 42 res = '' for x in cookie_value: res += chr(ord(x) ^ key) return res 

рдХреБрдХреА_рдбреЙрдХрд░реЛрдб (рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ):
 function flash_cookie_crypt_routine(str) { var result; for (var i = 0; i < str.length; i++) { result += String.fromCharCode(str.charCodeAt(i) ^ 42); } return result; } getURL("javascript:void(document.cookie='#TESTCOOKIE_NAME#=" + flash_cookie_crypt_routine("#TESTCOOKIE_VALUE#") + "');void(location.href='" + nexturl + "');"); 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓рд╛ рдПрдХ рдореВрд▓реНрдп рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рекреи рдкрд░ xorim), рджреВрд╕рд░рд╛ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП (рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рекреи рдкрд░ xorim)ред

рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд░рд┐рд╢реНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SWF рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд╡реИрд╕реЗ, рдореБрдЭреЗ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рдкреИрдЪ рдХрд░рдирд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХрдо рд╕реЗ рдХрдо рдЬрдм рддрдХ рдореЗрдВрдЯреЗрдирд░реНрд╕ рдлрдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреЛ рдЪреБрдирдирд╛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдкреБрд▓ рдХреЛ рдордВрдЬреВрд░реА рджреЗрддрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдврд╛рдВрдЪреЗ рдореЗрдВ рдлреЗрдкреНрд╕ 3 , рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рддреЗрдЬ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рднреА рдПрдХ рд╕рд╛рде рдПрдХ рдкреБрд░рд╛рдиреЗ coreduo рдкрд░, рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреБрдХреВрд▓рди рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ, рдЕрдкрдиреА 1k req / concurency 1k рдкрд░ рджреЗрддрд╛ рд╣реИред рдЙрддреНрдкрд╛рджрди рдореЗрдВ, рдЖрдк nginx рдкреНрд░реЙрдХреНрд╕реА рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП SWF рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛, рдЗрд╕реЗ nginx рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рд╕реЗрд╡рд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдбрд╛рд▓рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред

рд╕рднреА рдПрдХ рд╕рд╛рде


рд╡рд┐рдиреНрдпрд╛рд╕ рдЙрджрд╛рд╣рд░рдг:
 server { listen 80; server_name domain.com; testcookie off; testcookie_name BPC; testcookie_secret keepmescret; testcookie_session $remote_addr; testcookie_arg attempt; testcookie_max_attempts 3; testcookie_fallback /cookies.html?backurl=http://$host$request_uri; testcookie_get_only on; testcookie_redirect_via_refresh on; 

# рдХрдиреЗрдХреНрдЯ testcookie.swf swfobject рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рд╣рд╛рдБ, рдореИрдВ рдЖрд▓рд╕реА рд╣реВрдБ)
# testcookie_refresh_template рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ,
# рдкрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ $ testcookie_nexturl рдХрд╛ рдорд╛рди рдкрд╛рд╕ рдХрд░реЗрдВ
  testcookie_refresh_template '<html><body><script type="text/javascript" src="/swfobject.js"></script><script type="text/javascript">swfobject.embedSWF("/testcookie.swf", "cookie_installer", "100", "100", "9.0.0", "/expressInstall.swf", {"nexturl":"$testcookie_nexturl"});</script><div id="cookie_installer">welcome screen</div></body></html>'; 

# рдХреБрдХреА рдЬрд╛рдБрдЪ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
# рдлрд╝реЙрд▓рдмреИрдХ URL рдХреЗ рд▓рд┐рдП, swfobject.js рдФрд░ expressInstall.swf
  location = /cookies.html { root /var/www/public_html; } location = /swfobject.js { gzip on; gzip_min_length 1000; gzip_types text/plain; root /usr/local/nginx/root; } location = /expressInstall.swf { testcookie off; gzip on; gzip_min_length 1000; gzip_types text/plain; root /usr/local/nginx/root; } 

# рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рд╕реЗрд╡рд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ SWF рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ
  location = /testcookie.swf { #  testcookie   var testcookie var; #  testcookie-flash-processor proxy_pass http://127.0.0.1:1234/; #    cookies proxy_set_header Testcookie-Value $testcookie_set; #    ? #    SWF  , #      cookie proxy_set_header Testcookie-Valid $testcookie_ok; #  cookie -     #   testcookie_name proxy_set_header Testcookie-Name "BPC"; } 

# рдмреИрдХрдПрдВрдб рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕реНрдерд╛рди
  location / { testcookie on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:8080; } } 

рдХреИрдкреНрдЪрд╛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЦрд░рд╛рдм рд╣реИред

рд╕реНрд░реЛрдд рдХреЛрдб


рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рд╡рд╛рд▓реЗ рд╕реНрд░реЛрдд рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдкреИрдЪ, рдРрдб-рдСрди, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

Source: https://habr.com/ru/post/In141989/


All Articles