Π›ΠΎΠ²ΡƒΡˆΠΊΠ° (Ρ‚Π°Ρ€ΠΏΠΈΡ‚) для входящих SSH-соСдинСний

НС сСкрСт, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ β€” ΠΎΡ‡Π΅Π½ΡŒ враТдСбная срСда. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ сСрвСр, ΠΎΠ½ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ подвСргаСтся массированным Π°Ρ‚Π°ΠΊΠ°ΠΌ ΠΈ мноТСствСнным сканированиям. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ…Π°Π½ΠΈΠΏΠΎΡ‚Π° ΠΎΡ‚ бСзопасников ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π± этого мусорного Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. ЀактичСски, Π½Π° срСднСм сСрвСрС 99% Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ врСдоносным.

Tarpit β€” это ΠΏΠΎΡ€Ρ‚-Π»ΠΎΠ²ΡƒΡˆΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для замСдлСния входящих соСдинСний. Если сторонняя систСма ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ этому ΠΏΠΎΡ€Ρ‚Ρƒ, Ρ‚ΠΎ быстро Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ соСдинСниС Π½Π΅ получится. Π•ΠΉ придётся Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ свои систСмныС рСсурсы ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° соСдинСниС Π½Π΅ прСрвётся ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ, ΠΈΠ»ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

Π§Π°Ρ‰Π΅ всСго Ρ‚Π°Ρ€ΠΏΠΈΡ‚Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹. Π’Π΅Ρ…Π½ΠΈΠΊΡƒ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π²Π΅ΠΉ. А сСйчас Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒ Тизнь спамСрам ΠΈ исслСдоватСлям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ сканированиСм всСх IP-адрСсов подряд (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° Π₯Π°Π±Ρ€Π΅: Австрия, Π£ΠΊΡ€Π°ΠΈΠ½Π°).

ΠžΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· сисадминов ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠšΡ€ΠΈΡ ВСллонс, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π½Π°Π΄ΠΎΠ΅Π»ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° этим Π±Π΅Π·ΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ΠΌ β€” ΠΈ ΠΎΠ½ написал ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΡƒ Endlessh, Ρ‚Π°Ρ€ΠΏΠΈΡ‚ для SSH, Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‰ΠΈΠΉ входящиС соСдинСния. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для тСстирования ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΡ€Ρ‚ 2222) ΠΈ притворяСтся SSH-сСрвСром, Π° Π½Π° самом Π΄Π΅Π»Π΅ устанавливаСт бСсконСчноС соСдинСниС с входящим ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, ΠΏΠΎΠΊΠ° Ρ‚ΠΎΡ‚ Π½Π΅ сдастся. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ нСсколько Π΄Π½Π΅ΠΉ ΠΈΠ»ΠΈ большС, ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ отвалится.

Установка ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹:

$ make
$ ./endlessh &
$ ssh -p2222 localhost

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚Π°Ρ€ΠΏΠΈΡ‚ ΠΎΡ‚Π½ΠΈΠΌΠ΅Ρ‚ Ρƒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° большС рСсурсов, Ρ‡Π΅ΠΌ Ρƒ вас. Но Π΄Π΅Π»ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ Π² рСсурсах. Автор ΠΏΠΈΡˆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Π½ΠΈΠ΅. ΠŸΡ€ΡΠΌΠΎ сСйчас Π² Π΅Π³ΠΎ Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ 27 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ нСдСль. На ΠΏΠΈΠΊΠ΅ активности Π² Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ сидСли 1378 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 20 часов!

Π’ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ сСрвСр Endlessh Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ 22, ΠΊΡƒΠ΄Π° массово стучатся Ρ…ΡƒΠ»ΠΈΠ³Π°Π½Ρ‹. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ бСзопасности всСгда ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ SSH Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ€Ρ‚, Ρ‡Ρ‚ΠΎ сразу Π½Π° порядок сокращаСт Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³ΠΎΠ².

ΠšΡ€ΠΈΡ ВСллонс Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° эксплуатируСт ΠΎΠ΄ΠΈΠ½ Π°Π±Π·Π°Ρ† ΠΈΠ· спСцификации RFC 4253 Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» SSH. НСмСдлСнно послС установлСния соСдинСния TCP, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΎΠ±Π΅ стороны Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ строку. И Ρ‚Π°ΠΌ ΠΆΠ΅ приписка: Β«Π‘Π΅Ρ€Π²Π΅Ρ€ ΠœΠžΠ–Π•Π’ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ строки Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ строки с вСрсиСй». И Π½Π΅Ρ‚ ограничСния Π½Π° ΠΎΠ±ΡŠΡ‘ΠΌ этих Π΄Π°Π½Π½Ρ‹Ρ…, просто ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с SSH-.

ИмСнно этим занимаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Endlessh: ΠΎΠ½Π° отправляСт бСсконСчный ΠΏΠΎΡ‚ΠΎΠΊ случайно сгСнСрированных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ RFC 4253, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ, Π° каТдая строка начинаСтся с SSH- ΠΈ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 255 символов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ символ окончания строки. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, всё ΠΏΠΎ стандарту.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ 10 сСкунд ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ Π²Π΅Ρ‡Π½ΠΎ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… осущСствляСтся Π΄ΠΎ примСнСния ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простая. Π’ Π½Π΅ΠΉ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡˆΠΈΡ„Ρ€ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ мноТСства ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Автор постарался, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° потрСбляла ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ рСсурсов ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π½Π° машинС. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ соврСмСнных антивирусов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… «систСм бСзопасности», ΠΎΠ½Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Π•ΠΌΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти Π·Π° счёт Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ…ΠΈΡ‚Ρ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Если Π±Ρ‹ ΠΎΠ½ просто запускал ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс Π½Π° Π½ΠΎΠ²ΠΎΠ΅ соСдинСниС, Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ провСсти DDoS-Π°Ρ‚Π°ΠΊΡƒ, ΠΎΡ‚ΠΊΡ€Ρ‹Π² мноТСство соСдинСний для исчСрпания рСсурсов Π½Π° машинС. По ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π½Π° соСдинСниС β€” Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ядро Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ рСсурсы Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠšΡ€ΠΈΡ ВСллонс Π²Ρ‹Π±Ρ€Π°Π» для Endlessh самый лСгковСсный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ сСрвСр poll(2), Π³Π΄Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π² Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ практичСски Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… рСсурсов, Π½Π΅ считая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сокСта Π² ядрС ΠΈ Π΅Ρ‰Ρ‘ 78 Π±Π°ΠΉΡ‚ для отслСТивания Π² Endlessh. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€Ρ‹ получСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Endlessh ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ сокСт прямого доступа ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ транслируСт ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ TCP, игнорируя ΠΏΠΎΡ‡Ρ‚ΠΈ вСсь стСк TCP/IP ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Входящий Π±ΡƒΡ„Π΅Ρ€ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ входящиС Π΄Π°Π½Π½Ρ‹Π΅ нас Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚.

Автор Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π·Π½Π°Π» ΠΎ сущСствовании питоновского asycio ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π°Ρ€ΠΏΠΈΡ‚ΠΎΠ². Если Π±Ρ‹ ΠΎΠ½ Π·Π½Π°Π» ΠΎΠ± asycio, Ρ‚ΠΎ свою ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΌΠΎΠ³ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всСго Π² 18-Ρ‚ΠΈ строчках Π½Π° Python:

import asyncio
import random

async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()

asyncio.run(main())

Asyncio идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для написания Ρ‚Π°Ρ€ΠΏΠΈΡ‚ΠΎΠ². НапримСр, такая Π»ΠΎΠ²ΡƒΡˆΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ часов подвСсит Firefox, Chrome ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ HTTP-сСрвСру:

import asyncio
import random

async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()

asyncio.run(main())

Π’Π°Ρ€ΠΏΠΈΡ‚ β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт для наказания ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Ρ…ΡƒΠ»ΠΈΠ³Π°Π½ΠΎΠ². ΠŸΡ€Π°Π²Π΄Π°, Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ риск, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡ΡŒ ΠΈΡ… Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ повСдСнию ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвСра. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ мСсти ΠΈ Π½Π°Ρ†Π΅Π»Π΅Π½Π½ΠΎΠΉ DDoS-Π°Ρ‚Π°ΠΊΠ΅ Π½Π° ваш IP. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΏΠΎΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… случаСв Π½Π΅ Π±Ρ‹Π»ΠΎ, ΠΈ Ρ‚Π°Ρ€ΠΏΠΈΡ‚Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.

Π₯Π°Π±Ρ‹:
Python, Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Π‘ΠΎΡ„Ρ‚, БистСмноС администрированиС

ΠœΠ΅Ρ‚ΠΊΠΈ:
SSH, Endlessh, tarpit, Ρ‚Π°Ρ€ΠΏΠΈΡ‚, Π»ΠΎΠ²ΡƒΡˆΠΊΠ°, asycio
Π›ΠΎΠ²ΡƒΡˆΠΊΠ° (Ρ‚Π°Ρ€ΠΏΠΈΡ‚) для входящих SSH-соСдинСний

НС сСкрСт, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ β€” ΠΎΡ‡Π΅Π½ΡŒ враТдСбная срСда. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ сСрвСр, ΠΎΠ½ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ подвСргаСтся массированным Π°Ρ‚Π°ΠΊΠ°ΠΌ ΠΈ мноТСствСнным сканированиям. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ…Π°Π½ΠΈΠΏΠΎΡ‚Π° ΠΎΡ‚ бСзопасников ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π± этого мусорного Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. ЀактичСски, Π½Π° срСднСм сСрвСрС 99% Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ врСдоносным.

Tarpit β€” это ΠΏΠΎΡ€Ρ‚-Π»ΠΎΠ²ΡƒΡˆΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для замСдлСния входящих соСдинСний. Если сторонняя систСма ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ этому ΠΏΠΎΡ€Ρ‚Ρƒ, Ρ‚ΠΎ быстро Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ соСдинСниС Π½Π΅ получится. Π•ΠΉ придётся Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ свои систСмныС рСсурсы ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° соСдинСниС Π½Π΅ прСрвётся ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ, ΠΈΠ»ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

Π§Π°Ρ‰Π΅ всСго Ρ‚Π°Ρ€ΠΏΠΈΡ‚Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹. Π’Π΅Ρ…Π½ΠΈΠΊΡƒ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π²Π΅ΠΉ. А сСйчас Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒ Тизнь спамСрам ΠΈ исслСдоватСлям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ сканированиСм всСх IP-адрСсов подряд (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° Π₯Π°Π±Ρ€Π΅: Австрия, Π£ΠΊΡ€Π°ΠΈΠ½Π°).

ΠžΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· сисадминов ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠšΡ€ΠΈΡ ВСллонс, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π½Π°Π΄ΠΎΠ΅Π»ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° этим Π±Π΅Π·ΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ΠΌ β€” ΠΈ ΠΎΠ½ написал ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΡƒ Endlessh, Ρ‚Π°Ρ€ΠΏΠΈΡ‚ для SSH, Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‰ΠΈΠΉ входящиС соСдинСния. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для тСстирования ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΡ€Ρ‚ 2222) ΠΈ притворяСтся SSH-сСрвСром, Π° Π½Π° самом Π΄Π΅Π»Π΅ устанавливаСт бСсконСчноС соСдинСниС с входящим ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, ΠΏΠΎΠΊΠ° Ρ‚ΠΎΡ‚ Π½Π΅ сдастся. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ нСсколько Π΄Π½Π΅ΠΉ ΠΈΠ»ΠΈ большС, ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ отвалится.

Установка ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹:

$ make
$ ./endlessh &
$ ssh -p2222 localhost

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚Π°Ρ€ΠΏΠΈΡ‚ ΠΎΡ‚Π½ΠΈΠΌΠ΅Ρ‚ Ρƒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ° большС рСсурсов, Ρ‡Π΅ΠΌ Ρƒ вас. Но Π΄Π΅Π»ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ Π² рСсурсах. Автор ΠΏΠΈΡˆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Π½ΠΈΠ΅. ΠŸΡ€ΡΠΌΠΎ сСйчас Π² Π΅Π³ΠΎ Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ 27 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ нСдСль. На ΠΏΠΈΠΊΠ΅ активности Π² Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ сидСли 1378 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 20 часов!

Π’ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ сСрвСр Endlessh Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ 22, ΠΊΡƒΠ΄Π° массово стучатся Ρ…ΡƒΠ»ΠΈΠ³Π°Π½Ρ‹. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ бСзопасности всСгда ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ SSH Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ€Ρ‚, Ρ‡Ρ‚ΠΎ сразу Π½Π° порядок сокращаСт Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³ΠΎΠ².

ΠšΡ€ΠΈΡ ВСллонс Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° эксплуатируСт ΠΎΠ΄ΠΈΠ½ Π°Π±Π·Π°Ρ† ΠΈΠ· спСцификации RFC 4253 Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» SSH. НСмСдлСнно послС установлСния соСдинСния TCP, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΎΠ±Π΅ стороны Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ строку. И Ρ‚Π°ΠΌ ΠΆΠ΅ приписка: Β«Π‘Π΅Ρ€Π²Π΅Ρ€ ΠœΠžΠ–Π•Π’ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ строки Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ строки с вСрсиСй». И Π½Π΅Ρ‚ ограничСния Π½Π° ΠΎΠ±ΡŠΡ‘ΠΌ этих Π΄Π°Π½Π½Ρ‹Ρ…, просто ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с SSH-.

ИмСнно этим занимаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Endlessh: ΠΎΠ½Π° отправляСт бСсконСчный ΠΏΠΎΡ‚ΠΎΠΊ случайно сгСнСрированных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ RFC 4253, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ, Π° каТдая строка начинаСтся с SSH- ΠΈ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 255 символов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ символ окончания строки. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, всё ΠΏΠΎ стандарту.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ 10 сСкунд ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ Π²Π΅Ρ‡Π½ΠΎ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… осущСствляСтся Π΄ΠΎ примСнСния ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простая. Π’ Π½Π΅ΠΉ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡˆΠΈΡ„Ρ€ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ мноТСства ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Автор постарался, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° потрСбляла ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ рСсурсов ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π½Π° машинС. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ соврСмСнных антивирусов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… «систСм бСзопасности», ΠΎΠ½Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Π•ΠΌΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти Π·Π° счёт Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ…ΠΈΡ‚Ρ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Если Π±Ρ‹ ΠΎΠ½ просто запускал ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс Π½Π° Π½ΠΎΠ²ΠΎΠ΅ соСдинСниС, Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ провСсти DDoS-Π°Ρ‚Π°ΠΊΡƒ, ΠΎΡ‚ΠΊΡ€Ρ‹Π² мноТСство соСдинСний для исчСрпания рСсурсов Π½Π° машинС. По ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π½Π° соСдинСниС β€” Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ядро Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ рСсурсы Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠšΡ€ΠΈΡ ВСллонс Π²Ρ‹Π±Ρ€Π°Π» для Endlessh самый лСгковСсный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ сСрвСр poll(2), Π³Π΄Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π² Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ практичСски Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… рСсурсов, Π½Π΅ считая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сокСта Π² ядрС ΠΈ Π΅Ρ‰Ρ‘ 78 Π±Π°ΠΉΡ‚ для отслСТивания Π² Endlessh. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€Ρ‹ получСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Endlessh ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ сокСт прямого доступа ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ транслируСт ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ TCP, игнорируя ΠΏΠΎΡ‡Ρ‚ΠΈ вСсь стСк TCP/IP ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Входящий Π±ΡƒΡ„Π΅Ρ€ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ входящиС Π΄Π°Π½Π½Ρ‹Π΅ нас Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚.

Автор Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π·Π½Π°Π» ΠΎ сущСствовании питоновского asycio ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π°Ρ€ΠΏΠΈΡ‚ΠΎΠ². Если Π±Ρ‹ ΠΎΠ½ Π·Π½Π°Π» ΠΎΠ± asycio, Ρ‚ΠΎ свою ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ΠΌΠΎΠ³ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всСго Π² 18-Ρ‚ΠΈ строчках Π½Π° Python:

import asyncio
import random

async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()

asyncio.run(main())

Asyncio идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для написания Ρ‚Π°Ρ€ΠΏΠΈΡ‚ΠΎΠ². НапримСр, такая Π»ΠΎΠ²ΡƒΡˆΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ часов подвСсит Firefox, Chrome ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ HTTP-сСрвСру:

import asyncio
import random

async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()

asyncio.run(main())

Π’Π°Ρ€ΠΏΠΈΡ‚ β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт для наказания ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Ρ…ΡƒΠ»ΠΈΠ³Π°Π½ΠΎΠ². ΠŸΡ€Π°Π²Π΄Π°, Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ риск, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡ΡŒ ΠΈΡ… Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ повСдСнию ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвСра. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ мСсти ΠΈ Π½Π°Ρ†Π΅Π»Π΅Π½Π½ΠΎΠΉ DDoS-Π°Ρ‚Π°ΠΊΠ΅ Π½Π° ваш IP. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΏΠΎΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… случаСв Π½Π΅ Π±Ρ‹Π»ΠΎ, ΠΈ Ρ‚Π°Ρ€ΠΏΠΈΡ‚Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.

Π›ΠΎΠ²ΡƒΡˆΠΊΠ° (Ρ‚Π°Ρ€ΠΏΠΈΡ‚) для входящих SSH-соСдинСний

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com