เปƒเบชเปˆเบเบฑเบšเบ”เบฑเบ (tarpit) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ SSH เบ‚เบฒเป€เบ‚เบปเป‰เบฒ

เบกเบฑเบ™เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบฅเบฑเบšเบงเปˆเบฒเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เปเบกเปˆเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เบชเบฑเบ”เบ•เบนเบซเบผเบฒเบ. เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบเบปเบเป€เบŠเบตเบšเป€เบงเบต, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเป‚เบˆเบกเบ•เบตเบ„เบฑเป‰เบ‡เปƒเบซเบเปˆ เปเบฅเบฐเบชเบฐเปเบเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เบ—เบฑเบ™เบ—เบต. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡ honeypot เบˆเบฒเบเบเบญเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เบ„เบฐเป€เบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ™เบตเป‰. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเบฐเป€เบฅเปˆเบ, 99% เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ.

Tarpit เป€เบ›เบฑเบ™เบžเบญเบ”เปƒเบชเปˆเบเบฑเบšเบ”เบฑเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบŠเป‰เบฒเบฅเบปเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฒเป€เบ‚เบปเป‰เบฒ. เบ–เป‰เบฒเบฅเบฐเบšเบปเบšเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบžเบญเบ”เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบดเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบ”เป‰เป„เบง. เบ™เบฒเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เป€เบชเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ™เบฒเบ‡ เปเบฅเบฐเบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบปเบ”เป€เบงเบฅเบฒ, เบซเบผเบทเบ›เบดเบ”เบกเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบ, เบœเป‰เบฒเบเบฑเบ™เป€เบ›เบทเป‰เบญเบ™เปเบกเปˆเบ™เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™. เป€เบ•เบฑเบเบ™เบดเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เปเบกเปˆเบ—เป‰เบญเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบต. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ—เปเบฒเบฅเบฒเบเบŠเบตเบงเบดเบ”เบ‚เบญเบ‡ spammers เปเบฅเบฐเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเบฐเปเบเบ™เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆ IP เบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบดเบ”เบ•เปเปˆเบเบฑเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™Habrรฉ: เบญโ€‹เบญโ€‹เบชโ€‹เป€เบ•เบตเบ, Ukraine).

เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบฅเบฐเบšเบปเบšเบ„เบปเบ™เบ™เบถเปˆเบ‡เบŠเบทเปˆ Chris Wellons เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบกเบทเปˆเบญเบเบเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เบงเบฒเบกเบญเบฑเบšเบญเบฒเบเบ™เบตเป‰ - เปเบฅเบฐเบฅเบฒเบงเป„เบ”เป‰เบ‚เบฝเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ™เป‰เบญเบเป†. เบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”, tarpit เบชเปเบฒเบฅเบฑเบš SSH เบ—เบตเปˆเบŠเป‰เบฒเบฅเบปเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฒเป€เบ‚เบปเป‰เบฒ. เป‚เบ›เบฅเปเบเบฅเบกเป€เบ›เบตเบ”เบžเบญเบ” (เบžเบญเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™ 2222) เปเบฅเบฐเบ—เปเบฒเบ—เปˆเบฒเบงเปˆเบฒเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ SSH, เปเบ•เปˆเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เปเบฅเป‰เบงเบกเบฑเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเบˆเบปเบ™เบเปˆเบงเบฒเบกเบฑเบ™เปƒเบซเป‰เป€เบ–เบดเบ‡. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบชเบทเบšเบ•เปเปˆเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบซเบผเบฒเบเบกเบทเป‰เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™เบˆเบปเบ™เบเปˆเบงเบฒเบฅเบนเบเบ„เป‰เบฒเบฅเบปเป‰เบกเบฅเบปเบ‡.

เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบเบฒเบ™โ€‹:

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

A tarpit เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบˆเบฒเบเบœเบนเป‰เป‚เบˆเบกเบ•เบตเบซเบผเบฒเบเบเปˆเบงเบฒเบ—เปˆเบฒเบ™. เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เบœเบนเป‰เบ‚เบฝเบ™ เบžเบฃเบฐเบญเบปเบ‡เป„เบ”เป‰เบ‚เบฝเบ™เบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ•เบดเบ”. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เบกเบต 27 เบฅเบนเบเบ„เป‰เบฒเบ•เบดเบ”เบขเบนเปˆ, เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเปเบฒเบฅเบฑเบšเบญเบฒเบ—เบดเบ”. เปƒเบ™เบˆเบธเบ”เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบดเบ”เบˆเบฐเบเปเบฒ, เบฅเบนเบเบ„เป‰เบฒ 1378 เบ„เบปเบ™เบ–เบทเบเบ•เบดเบ”เบขเบนเปˆเปƒเบ™ 20 เบŠเบปเปˆเบงเป‚เบกเบ‡!

เปƒเบ™เป‚เบซเบกเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Endlessh เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบžเบญเบ”เบ›เบปเบเบเบฐเบ•เบด 22, เบšเปˆเบญเบ™เบ—เบตเปˆ hooligans เป€เบ„เบฒเบฐเบเบนเบ‡เบŠเบปเบ™. เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบฐเป€เบซเบกเบตเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบเป‰เบฒเบ SSH เป„เบ›เบซเบฒเบžเบญเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบŠเบดเปˆเบ‡เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”.

Chris Wellons เป€เบงเบปเป‰เบฒเบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบฅเบฒเบงเป„เบ”เป‰เบ‚เบธเบ”เบ„เบปเป‰เบ™เบงเบฑเบเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบเปเบฒเบ™เบปเบ” RFC 4253 เบเบฑเบšเบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒ SSH. เบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™, เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบš, เบ—เบฑเบ‡เบชเบญเบ‡เบเปˆเบฒเบเบ•เป‰เบญเบ‡เบชเบปเปˆเบ‡เบชเบฒเบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบ•เบปเบ™. เปเบฅเบฐเบเบฑเบ‡เบกเบตเบšเบฑเบ™เบ—เบถเบ: "เป€เบŠเบตเบšเป€เบงเบตเบญเบฒเบ”เบˆเบฐเบชเบปเปˆเบ‡เปเบ–เบงเบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เปเบ–เบงเบฅเบธเป‰เบ™"เบ—เบตเปˆเบขเบนเปˆ เปเบฅเบฐ เบšเปเปˆเบˆเปเบฒเบเบฑเบ” เบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบ•เปˆเบฅเบฐเป€เบชเบฑเป‰เบ™เบ”เป‰เบงเบ SSH-.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™ Endlessh เป€เบฎเบฑเบ”: เบกเบฑเบ™ เบชเบปเปˆเบ‡ เบšเปเปˆเบกเบตเบชเบดเป‰เบ™เบชเบธเบ” เบเบฐเปเบชเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบšเบšเบชเบธเปˆเบก, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก RFC 4253, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบชเบปเปˆเบ‡เบเปˆเบญเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบš, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบชเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ SSH- เปเบฅเบฐเบšเปเปˆเป€เบเบตเบ™ 255 เบ•เบปเบงเบญเบฑเบเบชเบญเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบชเบดเป‰เบ™เบชเบธเบ”เปเบ–เบง. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป„เบ›เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป‚เบ„เบ‡เบเบฒเบ™เบฅเปเบ–เป‰เบฒ 10 เบงเบดเบ™เบฒเบ—เบตเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ”. เบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒเบซเบกเบปเบ”เป€เบงเบฅเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบนเบเบ„เป‰เบฒเบˆเบฐเบ–เบทเบเบ•เบดเบ”เบขเบนเปˆเบ•เบฐเบซเบผเบญเบ”เป„เบ›.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบš, เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”. เบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบฅเบฐเบซเบฑเบ”เปƒเบ”เป†เปเบฅเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบซเบผเบฒเบเป‚เบ›เป‚เบ•เบ„เบญเบ™.

เบœเบนเป‰เบ‚เบฝเบ™เป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปƒเบŠเป‰เบˆเบฐเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปœเป‰เบญเบเบ—เบตเปˆเบชเบธเบ” เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡. เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบš antivirus เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปเบฅเบฐ "เบฅเบฐเบšเบปเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž" เบญเบทเปˆเบ™เป†, เบกเบฑเบ™เบšเปเปˆเบ„เบงเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบŠเป‰เบฒเบฅเบปเบ‡. เบฅเบฒเบงเป„เบ”เป‰เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบฅเบปเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบŠเบญเบšเปเบงเบ—เบตเปˆเบชเบฐเบซเบฅเบฒเบ”เบเบงเปˆเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ. เบ–เป‰เบฒเบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบตเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบซเบกเปˆ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบนเป‰เป‚เบˆเบกเบ•เบตเบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบ•เบปเบงเบเบฒเบ™เป‚เบˆเบกเบ•เบต DDoS เป‚เบ”เบเบเบฒเบ™เป€เบ›เบตเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบซเบผเบฒเบเป€เบžเบทเปˆเบญเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡. เบซเบ™เบถเปˆเบ‡ thread เบ•เปเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเปเปˆเบšเปเปˆเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ kernel เบˆเบฐเป€เบชเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฐเบ—เบนเป‰.

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆ Chris Wellons เป€เบฅเบทเบญเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบš Endlessh: เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเบเบฐเบ—เบนเป‰เบ”เบฝเบง poll(2), เบšเปˆเบญเบ™เบ—เบตเปˆเบฅเบนเบเบ„เป‰เบฒเปƒเบ™เบˆเบฑเปˆเบ™เบˆเบฑเบšเป„เบ”เป‰เบšเปเบฅเบดเป‚เบžเบเป€เบเบทเบญเบšเบšเปเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบดเป€เบชเบ”, เบšเปเปˆเป„เบ”เป‰เบ™เบฑเบšเบงเบฑเบ”เบ–เบธ socket เปƒเบ™ kernel เปเบฅเบฐเบญเบตเบ 78 bytes เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปƒเบ™ Endlessh. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฎเบฑเบšเปเบฅเบฐเบชเบปเปˆเบ‡ buffers เบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒเปเบ•เปˆเบฅเบฐเบ„เบปเบ™, Endlessh เป€เบ›เบตเบ”เป€เบ•เบปเป‰เบฒเบฎเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบเบปเบ‡เปเบฅเบฐเปเบ›เปเบžเบฑเบเป€เบเบฑเบ” TCP เป‚เบ”เบเบเบปเบ‡, เบ‚เป‰เบฒเบกเป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ TCP / IP stack. buffer เบ‚เบฒเป€เบ‚เบปเป‰เบฒเปเบกเปˆเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบฅเบตเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒ.

เบœเบนเป‰โ€‹เบ‚เบฝเบ™โ€‹เบงเปˆเบฒโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ‚เบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹ เบšเปเปˆเบฎเบนเป‰ เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡ asycio เบ‚เบญเบ‡ Python เปเบฅเบฐ tarpits เบญเบทเปˆเบ™เป†. เบ–เป‰เบฒเบฅเบฒเบงเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบš 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 เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™ tarpits. เบ•เบปเบงเบขเปˆเบฒเบ‡, hook เบ™เบตเป‰เบˆเบฐ freeze 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())

Tarpit เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบ”เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เป‚เบ—เบ”เบเบฒเบ™เบ‚เบปเปˆเบกเป€เบซเบฑเบ‡เบญเบญเบ™เป„เบฅเบ™เปŒ. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบเบฒเบ™เบ”เบถเบ‡เบ”เบนเบ”เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ•เปเปˆเบเบฑเบšเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเบฐเป€เบžเบฒเบฐ. เบšเบฒเบ‡เบ„เบปเบ™ เบญเบฒเบ”เบˆเบฐเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบเป‰เปเบ„เป‰เบ™ เปเบฅเบฐเบเบฒเบ™เป‚เบˆเบกเบ•เบต DDoS เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบชเปˆ IP เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฒเบฎเบญเบ”เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบšเปเปˆเบกเบตเบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบฅเบฐ tarpits เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต.

เบชเบนเบ™เบเบฒเบ‡:
Python, เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เบŠเบญเบšเปเบง, เบเบฒเบ™เบšเปเบฅเบดเบซเบฒเบ™เบฅเบฐเบšเบปเบš

Tagsโ€‹:
SSH, Endlessh, tarpit, tarpit, trap, asycio
เปƒเบชเปˆเบเบฑเบšเบ”เบฑเบ (tarpit) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ SSH เบ‚เบฒเป€เบ‚เบปเป‰เบฒ

เบกเบฑเบ™เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบฅเบฑเบšเบงเปˆเบฒเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เปเบกเปˆเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เบชเบฑเบ”เบ•เบนเบซเบผเบฒเบ. เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบเบปเบเป€เบŠเบตเบšเป€เบงเบต, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเป‚เบˆเบกเบ•เบตเบ„เบฑเป‰เบ‡เปƒเบซเบเปˆ เปเบฅเบฐเบชเบฐเปเบเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เบ—เบฑเบ™เบ—เบต. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡ honeypot เบˆเบฒเบเบเบญเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เบ„เบฐเป€เบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ™เบตเป‰. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเบฐเป€เบฅเปˆเบ, 99% เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ.

Tarpit เป€เบ›เบฑเบ™เบžเบญเบ”เปƒเบชเปˆเบเบฑเบšเบ”เบฑเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบŠเป‰เบฒเบฅเบปเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฒเป€เบ‚เบปเป‰เบฒ. เบ–เป‰เบฒเบฅเบฐเบšเบปเบšเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบžเบญเบ”เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบดเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบ”เป‰เป„เบง. เบ™เบฒเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เป€เบชเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ™เบฒเบ‡ เปเบฅเบฐเบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบปเบ”เป€เบงเบฅเบฒ, เบซเบผเบทเบ›เบดเบ”เบกเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบ, เบœเป‰เบฒเบเบฑเบ™เป€เบ›เบทเป‰เบญเบ™เปเบกเปˆเบ™เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™. เป€เบ•เบฑเบเบ™เบดเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เปเบกเปˆเบ—เป‰เบญเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบต. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ—เปเบฒเบฅเบฒเบเบŠเบตเบงเบดเบ”เบ‚เบญเบ‡ spammers เปเบฅเบฐเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเบฐเปเบเบ™เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆ IP เบ—เบฑเบ‡เบซเบกเบปเบ”เบ•เบดเบ”เบ•เปเปˆเบเบฑเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบ™Habrรฉ: เบญโ€‹เบญโ€‹เบชโ€‹เป€เบ•เบตเบ, Ukraine).

เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบฅเบฐเบšเบปเบšเบ„เบปเบ™เบ™เบถเปˆเบ‡เบŠเบทเปˆ Chris Wellons เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบกเบทเปˆเบญเบเบเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เบงเบฒเบกเบญเบฑเบšเบญเบฒเบเบ™เบตเป‰ - เปเบฅเบฐเบฅเบฒเบงเป„เบ”เป‰เบ‚เบฝเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ™เป‰เบญเบเป†. เบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”, tarpit เบชเปเบฒเบฅเบฑเบš SSH เบ—เบตเปˆเบŠเป‰เบฒเบฅเบปเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฒเป€เบ‚เบปเป‰เบฒ. เป‚เบ›เบฅเปเบเบฅเบกเป€เบ›เบตเบ”เบžเบญเบ” (เบžเบญเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™ 2222) เปเบฅเบฐเบ—เปเบฒเบ—เปˆเบฒเบงเปˆเบฒเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ SSH, เปเบ•เปˆเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เปเบฅเป‰เบงเบกเบฑเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเบˆเบปเบ™เบเปˆเบงเบฒเบกเบฑเบ™เปƒเบซเป‰เป€เบ–เบดเบ‡. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบชเบทเบšเบ•เปเปˆเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบซเบผเบฒเบเบกเบทเป‰เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™เบˆเบปเบ™เบเปˆเบงเบฒเบฅเบนเบเบ„เป‰เบฒเบฅเบปเป‰เบกเบฅเบปเบ‡.

เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบเบฒเบ™โ€‹:

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

A tarpit เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบˆเบฒเบเบœเบนเป‰เป‚เบˆเบกเบ•เบตเบซเบผเบฒเบเบเปˆเบงเบฒเบ—เปˆเบฒเบ™. เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เบœเบนเป‰เบ‚เบฝเบ™ เบžเบฃเบฐเบญเบปเบ‡เป„เบ”เป‰เบ‚เบฝเบ™เบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ•เบดเบ”. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เบกเบต 27 เบฅเบนเบเบ„เป‰เบฒเบ•เบดเบ”เบขเบนเปˆ, เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเปเบฒเบฅเบฑเบšเบญเบฒเบ—เบดเบ”. เปƒเบ™เบˆเบธเบ”เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบดเบ”เบˆเบฐเบเปเบฒ, เบฅเบนเบเบ„เป‰เบฒ 1378 เบ„เบปเบ™เบ–เบทเบเบ•เบดเบ”เบขเบนเปˆเปƒเบ™ 20 เบŠเบปเปˆเบงเป‚เบกเบ‡!

เปƒเบ™เป‚เบซเบกเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Endlessh เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบžเบญเบ”เบ›เบปเบเบเบฐเบ•เบด 22, เบšเปˆเบญเบ™เบ—เบตเปˆ hooligans เป€เบ„เบฒเบฐเบเบนเบ‡เบŠเบปเบ™. เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบฐเป€เบซเบกเบตเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบเป‰เบฒเบ SSH เป„เบ›เบซเบฒเบžเบญเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบŠเบดเปˆเบ‡เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”.

Chris Wellons เป€เบงเบปเป‰เบฒเบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบฅเบฒเบงเป„เบ”เป‰เบ‚เบธเบ”เบ„เบปเป‰เบ™เบงเบฑเบเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบเปเบฒเบ™เบปเบ” RFC 4253 เบเบฑเบšเบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒ SSH. เบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™, เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบš, เบ—เบฑเบ‡เบชเบญเบ‡เบเปˆเบฒเบเบ•เป‰เบญเบ‡เบชเบปเปˆเบ‡เบชเบฒเบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบ•เบปเบ™. เปเบฅเบฐเบเบฑเบ‡เบกเบตเบšเบฑเบ™เบ—เบถเบ: "เป€เบŠเบตเบšเป€เบงเบตเบญเบฒเบ”เบˆเบฐเบชเบปเปˆเบ‡เปเบ–เบงเบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เปเบ–เบงเบฅเบธเป‰เบ™"เบ—เบตเปˆเบขเบนเปˆ เปเบฅเบฐ เบšเปเปˆเบˆเปเบฒเบเบฑเบ” เบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบ•เปˆเบฅเบฐเป€เบชเบฑเป‰เบ™เบ”เป‰เบงเบ SSH-.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™ Endlessh เป€เบฎเบฑเบ”: เบกเบฑเบ™ เบชเบปเปˆเบ‡ เบšเปเปˆเบกเบตเบชเบดเป‰เบ™เบชเบธเบ” เบเบฐเปเบชเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปเบšเบšเบชเบธเปˆเบก, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก RFC 4253, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบชเบปเปˆเบ‡เบเปˆเบญเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบš, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบชเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ SSH- เปเบฅเบฐเบšเปเปˆเป€เบเบตเบ™ 255 เบ•เบปเบงเบญเบฑเบเบชเบญเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบชเบดเป‰เบ™เบชเบธเบ”เปเบ–เบง. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป„เบ›เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป‚เบ„เบ‡เบเบฒเบ™เบฅเปเบ–เป‰เบฒ 10 เบงเบดเบ™เบฒเบ—เบตเบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ”. เบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒเบซเบกเบปเบ”เป€เบงเบฅเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบนเบเบ„เป‰เบฒเบˆเบฐเบ–เบทเบเบ•เบดเบ”เบขเบนเปˆเบ•เบฐเบซเบผเบญเบ”เป„เบ›.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบš, เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”. เบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบฅเบฐเบซเบฑเบ”เปƒเบ”เป†เปเบฅเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบซเบผเบฒเบเป‚เบ›เป‚เบ•เบ„เบญเบ™.

เบœเบนเป‰เบ‚เบฝเบ™เป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปƒเบŠเป‰เบˆเบฐเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปœเป‰เบญเบเบ—เบตเปˆเบชเบธเบ” เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡. เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบš antivirus เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปเบฅเบฐ "เบฅเบฐเบšเบปเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž" เบญเบทเปˆเบ™เป†, เบกเบฑเบ™เบšเปเปˆเบ„เบงเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบŠเป‰เบฒเบฅเบปเบ‡. เบฅเบฒเบงเป„เบ”เป‰เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบฅเบปเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบŠเบญเบšเปเบงเบ—เบตเปˆเบชเบฐเบซเบฅเบฒเบ”เบเบงเปˆเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ. เบ–เป‰เบฒเบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบตเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบซเบกเปˆ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบนเป‰เป‚เบˆเบกเบ•เบตเบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบ•เบปเบงเบเบฒเบ™เป‚เบˆเบกเบ•เบต DDoS เป‚เบ”เบเบเบฒเบ™เป€เบ›เบตเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบซเบผเบฒเบเป€เบžเบทเปˆเบญเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡. เบซเบ™เบถเปˆเบ‡ thread เบ•เปเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเปเปˆเบšเปเปˆเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ kernel เบˆเบฐเป€เบชเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฐเบ—เบนเป‰.

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆ Chris Wellons เป€เบฅเบทเบญเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบš Endlessh: เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเบเบฐเบ—เบนเป‰เบ”เบฝเบง poll(2), เบšเปˆเบญเบ™เบ—เบตเปˆเบฅเบนเบเบ„เป‰เบฒเปƒเบ™เบˆเบฑเปˆเบ™เบˆเบฑเบšเป„เบ”เป‰เบšเปเบฅเบดเป‚เบžเบเป€เบเบทเบญเบšเบšเปเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบดเป€เบชเบ”, เบšเปเปˆเป„เบ”เป‰เบ™เบฑเบšเบงเบฑเบ”เบ–เบธ socket เปƒเบ™ kernel เปเบฅเบฐเบญเบตเบ 78 bytes เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปƒเบ™ Endlessh. เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบฎเบฑเบšเปเบฅเบฐเบชเบปเปˆเบ‡ buffers เบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒเปเบ•เปˆเบฅเบฐเบ„เบปเบ™, Endlessh เป€เบ›เบตเบ”เป€เบ•เบปเป‰เบฒเบฎเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบเบปเบ‡เปเบฅเบฐเปเบ›เปเบžเบฑเบเป€เบเบฑเบ” TCP เป‚เบ”เบเบเบปเบ‡, เบ‚เป‰เบฒเบกเป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ TCP / IP stack. buffer เบ‚เบฒเป€เบ‚เบปเป‰เบฒเปเบกเปˆเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบฅเบตเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒ.

เบœเบนเป‰โ€‹เบ‚เบฝเบ™โ€‹เบงเปˆเบฒโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ‚เบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹ เบšเปเปˆเบฎเบนเป‰ เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡ asycio เบ‚เบญเบ‡ Python เปเบฅเบฐ tarpits เบญเบทเปˆเบ™เป†. เบ–เป‰เบฒเบฅเบฒเบงเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบš 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 เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™ tarpits. เบ•เบปเบงเบขเปˆเบฒเบ‡, hook เบ™เบตเป‰เบˆเบฐ freeze 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())

Tarpit เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบ”เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เป‚เบ—เบ”เบเบฒเบ™เบ‚เบปเปˆเบกเป€เบซเบฑเบ‡เบญเบญเบ™เป„เบฅเบ™เปŒ. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบเบฒเบ™เบ”เบถเบ‡เบ”เบนเบ”เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ•เปเปˆเบเบฑเบšเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเบฐเป€เบžเบฒเบฐ. เบšเบฒเบ‡เบ„เบปเบ™ เบญเบฒเบ”เบˆเบฐเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบเป‰เปเบ„เป‰เบ™ เปเบฅเบฐเบเบฒเบ™เป‚เบˆเบกเบ•เบต DDoS เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบชเปˆ IP เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฒเบฎเบญเบ”เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบšเปเปˆเบกเบตเบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบฅเบฐ tarpits เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต.

เปƒเบชเปˆเบเบฑเบšเบ”เบฑเบ (tarpit) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ SSH เบ‚เบฒเป€เบ‚เบปเป‰เบฒ

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™