ืžืœื›ื•ื“ืช (ื‘ืจื–ื ื˜) ืขื‘ื•ืจ ื—ื™ื‘ื•ืจื™ SSH ื ื›ื ืกื™ื

ื–ื” ืœื ืกื•ื“ ืฉื”ืื™ื ื˜ืจื ื˜ ื”ื•ื ืกื‘ื™ื‘ื” ืžืื•ื“ ืขื•ื™ื ืช. ื‘ืจื’ืข ืฉืืชื” ืžืขืœื” ืฉืจืช, ื”ื•ื ื ืชื•ืŸ ื‘ืื•ืคืŸ ืžื™ื™ื“ื™ ืœื”ืชืงืคื•ืช ืžืกื™ื‘ื™ื•ืช ื•ืœืกืจื™ืงื•ืช ืžืจื•ื‘ื•ืช. ืœื“ื•ื’ืžื” ืกื™ืจ ื“ื‘ืฉ ืฉืœ ืžืื‘ื˜ื—ื™ื ืืชื” ื™ื›ื•ืœ ืœื”ืขืจื™ืš ืืช ื”ื™ืงืฃ ืชื ื•ืขืช ื”ืืฉืคื” ื”ื–ื•. ืœืžืขืฉื”, ื‘ืฉืจืช ื”ืžืžื•ืฆืข, 99% ืžื”ืชื ื•ืขื” ืขืฉื•ื™ื” ืœื”ื™ื•ืช ื–ื“ื•ื ื™ืช.

Tarpit ื”ื•ื ื™ืฆื™ืืช ืžืœื›ื•ื“ืช ื”ืžืฉืžืฉืช ืœื”ืื˜ืช ื—ื™ื‘ื•ืจื™ื ื ื›ื ืกื™ื. ืื ืžืขืจื›ืช ืฆื“ ืฉืœื™ืฉื™ ืžืชื—ื‘ืจืช ืœื™ืฆื™ืื” ื–ื•, ืœื ืชื•ื›ืœ ืœืกื’ื•ืจ ืืช ื”ื—ื™ื‘ื•ืจ ื‘ืžื”ื™ืจื•ืช. ื”ื™ื ืชืฆื˜ืจืš ืœื‘ื–ื‘ื– ืืช ืžืฉืื‘ื™ ื”ืžืขืจื›ืช ืฉืœื” ื•ืœื”ืžืชื™ืŸ ืขื“ ืœืคืกืง ื–ืžืŸ ืฉืœ ื”ื—ื™ื‘ื•ืจ, ืื• ืœืกื™ื™ื ืื•ืชื• ื‘ืื•ืคืŸ ื™ื“ื ื™.

ืœืจื•ื‘, ื‘ืจื–ื ื˜ ืžืฉืžืฉื™ื ืœื”ื’ื ื”. ื”ื˜ื›ื ื™ืงื” ืคื•ืชื—ื” ืœืจืืฉื•ื ื” ื›ื“ื™ ืœื”ื’ืŸ ืžืคื ื™ ืชื•ืœืขื™ ืžื—ืฉื‘. ื•ืขื›ืฉื™ื• ื–ื” ื™ื›ื•ืœ ืœืฉืžืฉ ื›ื“ื™ ืœื”ืจื•ืก ืืช ื—ื™ื™ื”ื ืฉืœ ืฉื•ืœื—ื™ ื“ื•ืืจ ื–ื‘ืœ ื•ื—ื•ืงืจื™ื ืฉืขื•ืกืงื™ื ื‘ืกืจื™ืงื” ืจื—ื‘ื” ืฉืœ ื›ืœ ื›ืชื•ื‘ื•ืช ื”-IP ื‘ืจืฆืฃ (ื“ื•ื’ืžืื•ืช ืขืœ Habrรฉ: ืื•ืกื˜ืจื™ื”, ืื•ืงืจืื™ื ื”).

ืœืื—ื“ ืžืžื ื”ืœื™ ื”ืžืขืจื›ืช ื‘ืฉื ื›ืจื™ืก ื•ืœื•ื ืก ื ืžืืก ื›ื ืจืื” ืœืฆืคื•ืช ื‘ื‘ื™ื–ื™ื•ืŸ ื”ื–ื” - ื•ื”ื•ื ื›ืชื‘ ืชื•ื›ื ื™ืช ืงื˜ื ื” ืื™ื ืกื•ืคื™, ื‘ืจื–ื ื˜ ืœ-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), ื›ืืฉืจ ื”ืœืงื•ื—ื•ืช ื‘ืžืœื›ื•ื“ืช ื›ืžืขื˜ ื•ืœื ืฆื•ืจื›ื™ื ืžืฉืื‘ื™ื ื ื•ืกืคื™ื, ืœื ืกื•ืคืจื™ื ืืช ืื•ื‘ื™ื™ืงื˜ ื”-socket ื‘ืงืจื ืœ ื•ืขื•ื“ 78 ื‘ืชื™ื ืœืžืขืงื‘ ื‘-Endlessh. ื›ื“ื™ ืœื”ื™ืžื ืข ืžื”ืฆื•ืจืš ืœื”ืงืฆื•ืช ืžืื’ืจื™ ืงื‘ืœื” ื•ืฉืœื™ื—ื” ืขื‘ื•ืจ ื›ืœ ืœืงื•ื—, Endlessh ืคื•ืชื—ืช ืฉืงืข ื’ื™ืฉื” ื™ืฉื™ืจื” ื•ืžืชืจื’ืžืช ืžื ื•ืช TCP ื™ืฉื™ืจื•ืช, ืชื•ืš ืขืงื™ืคืช ื›ืžืขื˜ ื›ืœ ืขืจื™ืžืช ื”-TCP/IP ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื”. ื”ืžืื’ืจ ื”ื ื›ื ืก ืื™ื ื• ื ื—ื•ืฅ ื›ืœืœ, ื›ื™ ืื™ื ื ื• ืžืขื•ื ื™ื™ื ื™ื ื‘ื ืชื•ื ื™ื ื”ื ื›ื ืกื™ื.

ื”ืžื—ื‘ืจ ืื•ืžืจ ืืช ื–ื” ื‘ื–ืžืŸ ื”ืชื•ื›ื ื™ืช ืฉืœื• ืœื ื™ื“ืขืชื™ ืขืœ ืงื™ื•ืžื ืฉืœ ืืกื™ืฆื™ื• ืฉืœ ืคื™ื™ืชื•ืŸ ื•ืฉืืจ ื™ืจื™ืขื•ืช. ืื ื”ื•ื ื™ื“ืข ืขืœ 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())

Tarpit ื”ื•ื ื›ืœื™ ื ื”ื“ืจ ืœื”ืขื ืฉืช ื‘ืจื™ื•ื ื™ื ืžืงื•ื•ื ื™ื. ื ื›ื•ืŸ, ื™ืฉ ืกื™ื›ื•ืŸ ืžืกื•ื™ื, ืœื”ื™ืคืš, ื‘ื”ืคื ื™ื™ืช ืชืฉื•ืžืช ืœื‘ื ืœื”ืชื ื”ื’ื•ืช ื™ื•ืฆืืช ื“ื•ืคืŸ ืฉืœ ืฉืจืช ืžืกื•ื™ื. ืžึดื™ืฉืึถื”ื•ึผ ื™ื›ื•ืœ ืœื—ืฉื•ื‘ ืขืœ ื ืงืžื” ื•ื”ืชืงืคืช DDoS ืžืžื•ืงื“ืช ืขืœ ื”-IP ืฉืœืš. ืขื ื–ืืช, ืขื“ ื›ื” ืœื ื”ื™ื• ืžืงืจื™ื ื›ืืœื”, ื•ื”ื™ืจื™ืขื•ืช ืคื•ืขืœื•ืช ืžืฆื•ื™ืŸ.

ืจื›ื–ื•ืช:
Python, ืื‘ื˜ื—ืช ืžื™ื“ืข, ืชื•ื›ื ื”, ื ื™ื”ื•ืœ ืžืขืจื›ืช

ืชื’ื™ื•ืช:
SSH, Endlessh, ื‘ืจื–ื ื˜, ื‘ืจื–ื ื˜, ืžืœื›ื•ื“ืช, asycio
ืžืœื›ื•ื“ืช (ื‘ืจื–ื ื˜) ืขื‘ื•ืจ ื—ื™ื‘ื•ืจื™ SSH ื ื›ื ืกื™ื

ื–ื” ืœื ืกื•ื“ ืฉื”ืื™ื ื˜ืจื ื˜ ื”ื•ื ืกื‘ื™ื‘ื” ืžืื•ื“ ืขื•ื™ื ืช. ื‘ืจื’ืข ืฉืืชื” ืžืขืœื” ืฉืจืช, ื”ื•ื ื ืชื•ืŸ ื‘ืื•ืคืŸ ืžื™ื™ื“ื™ ืœื”ืชืงืคื•ืช ืžืกื™ื‘ื™ื•ืช ื•ืœืกืจื™ืงื•ืช ืžืจื•ื‘ื•ืช. ืœื“ื•ื’ืžื” ืกื™ืจ ื“ื‘ืฉ ืฉืœ ืžืื‘ื˜ื—ื™ื ืืชื” ื™ื›ื•ืœ ืœื”ืขืจื™ืš ืืช ื”ื™ืงืฃ ืชื ื•ืขืช ื”ืืฉืคื” ื”ื–ื•. ืœืžืขืฉื”, ื‘ืฉืจืช ื”ืžืžื•ืฆืข, 99% ืžื”ืชื ื•ืขื” ืขืฉื•ื™ื” ืœื”ื™ื•ืช ื–ื“ื•ื ื™ืช.

Tarpit ื”ื•ื ื™ืฆื™ืืช ืžืœื›ื•ื“ืช ื”ืžืฉืžืฉืช ืœื”ืื˜ืช ื—ื™ื‘ื•ืจื™ื ื ื›ื ืกื™ื. ืื ืžืขืจื›ืช ืฆื“ ืฉืœื™ืฉื™ ืžืชื—ื‘ืจืช ืœื™ืฆื™ืื” ื–ื•, ืœื ืชื•ื›ืœ ืœืกื’ื•ืจ ืืช ื”ื—ื™ื‘ื•ืจ ื‘ืžื”ื™ืจื•ืช. ื”ื™ื ืชืฆื˜ืจืš ืœื‘ื–ื‘ื– ืืช ืžืฉืื‘ื™ ื”ืžืขืจื›ืช ืฉืœื” ื•ืœื”ืžืชื™ืŸ ืขื“ ืœืคืกืง ื–ืžืŸ ืฉืœ ื”ื—ื™ื‘ื•ืจ, ืื• ืœืกื™ื™ื ืื•ืชื• ื‘ืื•ืคืŸ ื™ื“ื ื™.

ืœืจื•ื‘, ื‘ืจื–ื ื˜ ืžืฉืžืฉื™ื ืœื”ื’ื ื”. ื”ื˜ื›ื ื™ืงื” ืคื•ืชื—ื” ืœืจืืฉื•ื ื” ื›ื“ื™ ืœื”ื’ืŸ ืžืคื ื™ ืชื•ืœืขื™ ืžื—ืฉื‘. ื•ืขื›ืฉื™ื• ื–ื” ื™ื›ื•ืœ ืœืฉืžืฉ ื›ื“ื™ ืœื”ืจื•ืก ืืช ื—ื™ื™ื”ื ืฉืœ ืฉื•ืœื—ื™ ื“ื•ืืจ ื–ื‘ืœ ื•ื—ื•ืงืจื™ื ืฉืขื•ืกืงื™ื ื‘ืกืจื™ืงื” ืจื—ื‘ื” ืฉืœ ื›ืœ ื›ืชื•ื‘ื•ืช ื”-IP ื‘ืจืฆืฃ (ื“ื•ื’ืžืื•ืช ืขืœ Habrรฉ: ืื•ืกื˜ืจื™ื”, ืื•ืงืจืื™ื ื”).

ืœืื—ื“ ืžืžื ื”ืœื™ ื”ืžืขืจื›ืช ื‘ืฉื ื›ืจื™ืก ื•ืœื•ื ืก ื ืžืืก ื›ื ืจืื” ืœืฆืคื•ืช ื‘ื‘ื™ื–ื™ื•ืŸ ื”ื–ื” - ื•ื”ื•ื ื›ืชื‘ ืชื•ื›ื ื™ืช ืงื˜ื ื” ืื™ื ืกื•ืคื™, ื‘ืจื–ื ื˜ ืœ-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), ื›ืืฉืจ ื”ืœืงื•ื—ื•ืช ื‘ืžืœื›ื•ื“ืช ื›ืžืขื˜ ื•ืœื ืฆื•ืจื›ื™ื ืžืฉืื‘ื™ื ื ื•ืกืคื™ื, ืœื ืกื•ืคืจื™ื ืืช ืื•ื‘ื™ื™ืงื˜ ื”-socket ื‘ืงืจื ืœ ื•ืขื•ื“ 78 ื‘ืชื™ื ืœืžืขืงื‘ ื‘-Endlessh. ื›ื“ื™ ืœื”ื™ืžื ืข ืžื”ืฆื•ืจืš ืœื”ืงืฆื•ืช ืžืื’ืจื™ ืงื‘ืœื” ื•ืฉืœื™ื—ื” ืขื‘ื•ืจ ื›ืœ ืœืงื•ื—, Endlessh ืคื•ืชื—ืช ืฉืงืข ื’ื™ืฉื” ื™ืฉื™ืจื” ื•ืžืชืจื’ืžืช ืžื ื•ืช TCP ื™ืฉื™ืจื•ืช, ืชื•ืš ืขืงื™ืคืช ื›ืžืขื˜ ื›ืœ ืขืจื™ืžืช ื”-TCP/IP ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื”. ื”ืžืื’ืจ ื”ื ื›ื ืก ืื™ื ื• ื ื—ื•ืฅ ื›ืœืœ, ื›ื™ ืื™ื ื ื• ืžืขื•ื ื™ื™ื ื™ื ื‘ื ืชื•ื ื™ื ื”ื ื›ื ืกื™ื.

ื”ืžื—ื‘ืจ ืื•ืžืจ ืืช ื–ื” ื‘ื–ืžืŸ ื”ืชื•ื›ื ื™ืช ืฉืœื• ืœื ื™ื“ืขืชื™ ืขืœ ืงื™ื•ืžื ืฉืœ ืืกื™ืฆื™ื• ืฉืœ ืคื™ื™ืชื•ืŸ ื•ืฉืืจ ื™ืจื™ืขื•ืช. ืื ื”ื•ื ื™ื“ืข ืขืœ 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())

Tarpit ื”ื•ื ื›ืœื™ ื ื”ื“ืจ ืœื”ืขื ืฉืช ื‘ืจื™ื•ื ื™ื ืžืงื•ื•ื ื™ื. ื ื›ื•ืŸ, ื™ืฉ ืกื™ื›ื•ืŸ ืžืกื•ื™ื, ืœื”ื™ืคืš, ื‘ื”ืคื ื™ื™ืช ืชืฉื•ืžืช ืœื‘ื ืœื”ืชื ื”ื’ื•ืช ื™ื•ืฆืืช ื“ื•ืคืŸ ืฉืœ ืฉืจืช ืžืกื•ื™ื. ืžึดื™ืฉืึถื”ื•ึผ ื™ื›ื•ืœ ืœื—ืฉื•ื‘ ืขืœ ื ืงืžื” ื•ื”ืชืงืคืช DDoS ืžืžื•ืงื“ืช ืขืœ ื”-IP ืฉืœืš. ืขื ื–ืืช, ืขื“ ื›ื” ืœื ื”ื™ื• ืžืงืจื™ื ื›ืืœื”, ื•ื”ื™ืจื™ืขื•ืช ืคื•ืขืœื•ืช ืžืฆื•ื™ืŸ.

ืžืœื›ื•ื“ืช (ื‘ืจื–ื ื˜) ืขื‘ื•ืจ ื—ื™ื‘ื•ืจื™ SSH ื ื›ื ืกื™ื

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”