Henteu aya rusiah yén Internét mangrupikeun lingkungan anu parah pisan. Pas anjeun ngangkat server a, éta instan subjected kana serangan masif sarta sababaraha scan. Salaku conto
Tarpit mangrupikeun port bubu anu dianggo pikeun ngalambatkeun sambungan anu asup. Lamun sistem pihak katilu nyambung ka port ieu, anjeun moal bisa gancang nutup sambungan. Anjeunna kedah nyéépkeun sumber daya sistemna sareng ngantosan dugi ka waktos sambunganna, atanapi ngeureunkeunana sacara manual.
Paling sering, tarpits dipaké pikeun panangtayungan. Téhnik munggaran dikembangkeun pikeun ngajagaan tina cacing komputer. Sareng ayeuna éta tiasa dianggo pikeun ngarusak kahirupan spammers sareng peneliti anu kalibet dina scanning lega sadaya alamat IP sakaligus (conto dina Habré:
Salah sahiji pangurus sistem anu namina Chris Wellons katingalina bosen ningali aib ieu - sareng anjeunna nyerat program leutik.
Pamasangan utiliti:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Tarpit anu dilaksanakeun leres bakal nyandak langkung seueur sumber daya ti panyerang tibatan anjeun. Tapi éta sanés masalah sumber daya. Pangarang
Dina modeu operasi, server Endlessh kudu dipasang dina port dawam 22, dimana hooligans sambel en masse. Rekomendasi kaamanan standar salawasna mamatahan mindahkeun SSH ka port béda, nu langsung ngurangan ukuran log ku urutan gedena.
Chris Wellons nyebutkeun program na exploitasi hiji paragraf spésifikasi nu SSH-
.
Ieu persis naon program Endlessh teu: eta ngirim sajajalan aliran data dihasilkeun acak, nu sasuai jeung RFC 4253, nyaeta, ngirim saméméh auténtikasi, sarta unggal baris dimimitian ku SSH-
sarta henteu ngaleuwihan 255 karakter, kaasup karakter tungtung garis. Sacara umum, sagalana geus nurutkeun standar.
Sacara standar, program ngantosan 10 detik antara ngirim pakét. Ieu nyegah klien ti keur timed kaluar, jadi klien bakal trapped salawasna.
Kusabab data dikirim sateuacan kriptografi diterapkeun, programna saderhana pisan. Henteu kedah nerapkeun ciphers sareng ngadukung sababaraha protokol.
Panulis ngusahakeun pikeun mastikeun yén utilitas ngonsumsi sumber daya minimum sareng tiasa dianggo leres-leres dina mesin. Beda sareng antipirus modern sareng "sistem kaamanan" sanés, éta henteu kedah ngalambatkeun komputer anjeun. Anjeunna junun ngaleutikan duanana lalulintas sarta konsumsi memori alatan palaksanaan software rada licik. Upami éta ngan saukur ngaluncurkeun prosés anu misah dina sambungan énggal, maka panyerang poténsial tiasa ngaluncurkeun serangan DDoS ku cara muka sababaraha sambungan pikeun ngaleungitkeun sumber daya dina mesin. Hiji thread per sambungan oge sanes pilihan pangalusna, sabab kernel bakal runtah sumberdaya ngatur threads.
Éta sababna Chris Wellons milih pilihan anu paling enteng pikeun Endlessh: server single-threaded poll(2)
, dimana klien dina bubu meakeun ampir euweuh sumberdaya tambahan, teu kaétang objék stop kontak dina kernel jeung bait 78 séjén pikeun tracking di Endlessh. Pikeun ngahindarkeun kudu allocate narima jeung ngirim panyangga pikeun tiap klien, Endlessh muka stop kontak langsung jeung narjamahkeun pakét TCP langsung, bypassing ampir sakabéh sistem operasi TCP/IP tumpukan. The panyangga asup teu diperlukeun pisan, sabab kami henteu kabetot dina data asup.
Nu nulis nyebutkeun yén dina waktu program-Na
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 idéal pikeun nulis tarpits. Contona, hook ieu bakal freeze Firefox, Chrome, atawa klien sejenna nu nyoba nyambung ka server HTTP anjeun sababaraha jam:
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 mangrupikeun alat anu saé pikeun ngahukum pembuli online. Leres, aya sababaraha résiko, sabalikna, ngagambar perhatian kana paripolah anu teu biasa tina server anu tangtu. batur
Hub:
Python, Kaamanan inpormasi, Parangkat lunak, Administrasi sistem
tags:
SSH, Endlessh, tarpit, tarpit, bubu, asycio
bubu (tarpit) pikeun sambungan SSH asup
Henteu aya rusiah yén Internét mangrupikeun lingkungan anu parah pisan. Pas anjeun ngangkat server a, éta instan subjected kana serangan masif sarta sababaraha scan. Salaku conto
Tarpit mangrupikeun port bubu anu dianggo pikeun ngalambatkeun sambungan anu asup. Lamun sistem pihak katilu nyambung ka port ieu, anjeun moal bisa gancang nutup sambungan. Anjeunna kedah nyéépkeun sumber daya sistemna sareng ngantosan dugi ka waktos sambunganna, atanapi ngeureunkeunana sacara manual.
Paling sering, tarpits dipaké pikeun panangtayungan. Téhnik munggaran dikembangkeun pikeun ngajagaan tina cacing komputer. Sareng ayeuna éta tiasa dianggo pikeun ngarusak kahirupan spammers sareng peneliti anu kalibet dina scanning lega sadaya alamat IP sakaligus (conto dina Habré:
Salah sahiji pangurus sistem anu namina Chris Wellons katingalina bosen ningali aib ieu - sareng anjeunna nyerat program leutik.
Pamasangan utiliti:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
Tarpit anu dilaksanakeun leres bakal nyandak langkung seueur sumber daya ti panyerang tibatan anjeun. Tapi éta sanés masalah sumber daya. Pangarang
Dina modeu operasi, server Endlessh kudu dipasang dina port dawam 22, dimana hooligans sambel en masse. Rekomendasi kaamanan standar salawasna mamatahan mindahkeun SSH ka port béda, nu langsung ngurangan ukuran log ku urutan gedena.
Chris Wellons nyebutkeun program na exploitasi hiji paragraf spésifikasi nu SSH-
.
Ieu persis naon program Endlessh teu: eta ngirim sajajalan aliran data dihasilkeun acak, nu sasuai jeung RFC 4253, nyaeta, ngirim saméméh auténtikasi, sarta unggal baris dimimitian ku SSH-
sarta henteu ngaleuwihan 255 karakter, kaasup karakter tungtung garis. Sacara umum, sagalana geus nurutkeun standar.
Sacara standar, program ngantosan 10 detik antara ngirim pakét. Ieu nyegah klien ti keur timed kaluar, jadi klien bakal trapped salawasna.
Kusabab data dikirim sateuacan kriptografi diterapkeun, programna saderhana pisan. Henteu kedah nerapkeun ciphers sareng ngadukung sababaraha protokol.
Panulis ngusahakeun pikeun mastikeun yén utilitas ngonsumsi sumber daya minimum sareng tiasa dianggo leres-leres dina mesin. Beda sareng antipirus modern sareng "sistem kaamanan" sanés, éta henteu kedah ngalambatkeun komputer anjeun. Anjeunna junun ngaleutikan duanana lalulintas sarta konsumsi memori alatan palaksanaan software rada licik. Upami éta ngan saukur ngaluncurkeun prosés anu misah dina sambungan énggal, maka panyerang poténsial tiasa ngaluncurkeun serangan DDoS ku cara muka sababaraha sambungan pikeun ngaleungitkeun sumber daya dina mesin. Hiji thread per sambungan oge sanes pilihan pangalusna, sabab kernel bakal runtah sumberdaya ngatur threads.
Éta sababna Chris Wellons milih pilihan anu paling enteng pikeun Endlessh: server single-threaded poll(2)
, dimana klien dina bubu meakeun ampir euweuh sumberdaya tambahan, teu kaétang objék stop kontak dina kernel jeung bait 78 séjén pikeun tracking di Endlessh. Pikeun ngahindarkeun kudu allocate narima jeung ngirim panyangga pikeun tiap klien, Endlessh muka stop kontak langsung jeung narjamahkeun pakét TCP langsung, bypassing ampir sakabéh sistem operasi TCP/IP tumpukan. The panyangga asup teu diperlukeun pisan, sabab kami henteu kabetot dina data asup.
Nu nulis nyebutkeun yén dina waktu program-Na
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 idéal pikeun nulis tarpits. Contona, hook ieu bakal freeze Firefox, Chrome, atawa klien sejenna nu nyoba nyambung ka server HTTP anjeun sababaraha jam:
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 mangrupikeun alat anu saé pikeun ngahukum pembuli online. Leres, aya sababaraha résiko, sabalikna, ngagambar perhatian kana paripolah anu teu biasa tina server anu tangtu. batur
sumber: www.habr.com