Fandrika (tarpit) ho an'ny fifandraisana SSH miditra

Tsy takona afenina fa tontolo feno fankahalana ny Aterineto. Raha vantany vao manangana mpizara iray ianao, dia iharan'ny fanafihana goavana sy fisavana marobe avy hatrany. Ohatra tantely avy amin'ny mpiambina azonao atao ny manombatombana ny haavon'ity fifamoivoizana fako ity. Raha ny marina, amin'ny mpizara salantsalany, ny 99% amin'ny fifamoivoizana dia mety ho ratsy.

Tarpit dia seranan-tsambo fandrika ampiasaina hampiadana ny fifandraisana miditra. Raha misy rafitra antoko fahatelo mifandray amin'ity seranan-tsambo ity, dia tsy ho afaka hanakatona haingana ny fifandraisana ianao. Tsy maintsy mandany ny loharanon-drafiny izy ary miandry mandra-pahatapitry ny fe-potoana fampifandraisana, na hamarana izany amin'ny tanana.

Matetika indrindra, tarpits no ampiasaina ho fiarovana. Ny teknika dia novolavolaina voalohany mba hiarovana amin'ny kankana amin'ny ordinatera. Ary ankehitriny dia azo ampiasaina hanimba ny fiainan'ny spammers sy mpikaroka izay mirotsaka amin'ny scan midadasika ny adiresy IP rehetra misesy (ohatra ao amin'ny HabrΓ©: Aotrisy, Ukraine).

Ny iray amin'ireo mpitantana ny rafitra antsoina hoe Chris Wellons dia toa reraka nijery ity fahafaham-baraka ity - ary nanoratra fandaharana kely izy. tsy misy farany, tarpit ho an'ny SSH izay mampiadana ny fifandraisana miditra. Ny programa dia manokatra seranan-tsambo (ny seranan-tsambo mahazatra ho an'ny fitsapana dia 2222) ary mody ho mpizara SSH, fa raha ny tena izy dia mametraka fifandraisana tsy misy farany amin'ny mpanjifa miditra mandra-piveriny. Mety hitohy mandritra ny andro maromaro na mihoatra izany mandra-piverin'ny mpanjifa.

Fametrahana ny fitaovana:

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

Ny tarpit azo ampiharina tsara dia haka loharanon-karena bebe kokoa avy amin'ny mpanafika noho ianao. Saingy tsy resaka harena akory izany. Mpanoratra Hoy izy nanoratrafa mampiankin-doha ilay fandaharana. Amin'izao fotoana izao dia misy mpanjifa 27 voafandrika, ny sasany amin'izy ireo dia nifandray nandritra ny herinandro. Tamin'ny faran'ny asa, mpanjifa 1378 20 no voafandrika nandritra ny XNUMX ora!

Amin'ny fomba fiasa dia mila apetraka amin'ny seranan-tsambo mahazatra 22 ny mpizara Endlessh, izay mandondΓ²na ny hooligans. Ny tolo-kevitry ny fiarovana mahazatra dia manoro hevitra foana ny famindrana SSH mankany amin'ny seranana hafa, izay mampihena avy hatrany ny haben'ny logs amin'ny filaharana lehibe.

Chris Wellons dia nilaza fa ny fandaharany dia manararaotra andalana iray amin'ny famaritana RFC 4253 mankany amin'ny protocol SSH. Avy hatrany aorian'ny fametrahana fifandraisana TCP, fa alohan'ny hampiharana ny kriptografika dia tsy maintsy mandefa tady famantarana ny roa tonta. Ary misy fanamarihana koa: "Mety mandefa andalana hafa ny mpizara alohan'ny handefasana ny laharana version". ary tsy misy fetra amin'ny habetsahan'ity data ity dia mila manomboka ny andalana tsirairay ianao SSH-.

Izany indrindra no ataon'ny programa Endlessh: io DIA MANDEFA tsy misy farany fikorianan'ny angona novokarina kisendrasendra, izay mifanaraka amin'ny RFC 4253, izany hoe alefa alohan'ny fanamarinana, ary ny andalana tsirairay dia manomboka amin'ny SSH- ary tsy mihoatra ny tarehintsoratra 255, ao anatin'izany ny toetran'ny fiafaran'ny tsipika. Amin'ny ankapobeny dia mifanaraka amin'ny fenitra ny zava-drehetra.

Amin'ny alΓ lan'ny default, miandry 10 segondra eo anelanelan'ny fandefasana fonosana ny programa. Izany dia manakana ny mpanjifa tsy ho lany fotoana, ka ho voafandrika mandrakizay ny mpanjifa.

Satria ny angon-drakitra dia alefa alohan'ny fampiharana ny kriptografika, dia tena tsotra ny programa. Tsy mila mampihatra ciphers ary manohana protocols marobe.

Niezaka ny mpanoratra mba hahazoana antoka fa mandany ny loharanon-karena faran'izay kely indrindra ny fitaovana ary miasa tsy voamarika amin'ny milina. Tsy toy ny antivirus maoderina sy "rafitra fiarovana" hafa, tsy tokony hampiadana ny solosainao izany. Nahavita nanamaivana ny fifamoivoizana sy ny fitadidiana izy noho ny fampiharana rindrambaiko hafetsena kokoa. Raha toa ka nandefa dingana misaraka fotsiny amin'ny fifandraisana vaovao izy, dia mety hanafika DDoS ireo mety ho mpanafika amin'ny alΓ lan'ny fanokafana fifandraisana marobe mba handresena ireo loharanon-karena amin'ny milina. Ny kofehy iray isaky ny fifandraisana dia tsy safidy tsara indrindra, satria handany loharanon-karena amin'ny fitantanana kofehy ny kernel.

Izany no antony nisafidianan'i Chris Wellons ny safidy maivana indrindra ho an'ny Endlessh: mpizara misy kofehy tokana poll(2), izay tsy lanin'ny mpanjifa ao amin'ny fandrika saika tsy misy loharano fanampiny, tsy manisa ny zavatra socket ao amin'ny kernel sy 78 bytes hafa ho an'ny fanaraha-maso ao amin'ny Endlessh. Mba hisorohana ny tsy maintsy hanokana ny fandraisana sy ny fandefasana buffer ho an'ny mpanjifa tsirairay, Endlessh dia manokatra faladia fidirana mivantana ary mandika mivantana ny fonosana TCP, mandingana saika ny rafitra TCP/IP manontolo. Tsy ilaina mihitsy ny buffer miditra, satria tsy liana amin'ny angon-drakitra miditra izahay.

Milaza ny mpanoratra fa tamin'ny fotoana nanaovana ny fandaharany tsy nahalala momba ny fisian'ny asycio an'i Python sy ny tarpits hafa. Raha nahafantatra momba ny asycio izy dia afaka nampihatra ny fampiasany amin'ny andalana 18 fotsiny amin'ny 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 dia mety amin'ny fanoratana tarpits. Ohatra, ity hook ity dia hanamaivana ny Firefox, Chrome, na mpanjifa hafa izay manandrana mifandray amin'ny mpizara HTTP anao mandritra ny ora maro:

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 dia fitaovana tsara hanasazy ireo mpampijaly an-tserasera. Marina fa misy risika, mifanohitra amin'izany, ny hisarihana ny sain'izy ireo amin'ny fihetsika tsy mahazatra ataon'ny mpizara iray manokana. olona mety hieritreritra valifaty ary fanafihana DDoS kendrena amin'ny IP-nao. Na izany aza, hatramin'izao dia tsy mbola nisy tranga toy izany, ary ny tarpits dia miasa tsara.

Hubs:
Python, Fiarovana ny informatika, Software, Fitantanana ny rafitra

Tags:
SSH, tsy misy farany, tarpit, tarpit, fandrika, asycio
Fandrika (tarpit) ho an'ny fifandraisana SSH miditra

Tsy takona afenina fa tontolo feno fankahalana ny Aterineto. Raha vantany vao manangana mpizara iray ianao, dia iharan'ny fanafihana goavana sy fisavana marobe avy hatrany. Ohatra tantely avy amin'ny mpiambina azonao atao ny manombatombana ny haavon'ity fifamoivoizana fako ity. Raha ny marina, amin'ny mpizara salantsalany, ny 99% amin'ny fifamoivoizana dia mety ho ratsy.

Tarpit dia seranan-tsambo fandrika ampiasaina hampiadana ny fifandraisana miditra. Raha misy rafitra antoko fahatelo mifandray amin'ity seranan-tsambo ity, dia tsy ho afaka hanakatona haingana ny fifandraisana ianao. Tsy maintsy mandany ny loharanon-drafiny izy ary miandry mandra-pahatapitry ny fe-potoana fampifandraisana, na hamarana izany amin'ny tanana.

Matetika indrindra, tarpits no ampiasaina ho fiarovana. Ny teknika dia novolavolaina voalohany mba hiarovana amin'ny kankana amin'ny ordinatera. Ary ankehitriny dia azo ampiasaina hanimba ny fiainan'ny spammers sy mpikaroka izay mirotsaka amin'ny scan midadasika ny adiresy IP rehetra misesy (ohatra ao amin'ny HabrΓ©: Aotrisy, Ukraine).

Ny iray amin'ireo mpitantana ny rafitra antsoina hoe Chris Wellons dia toa reraka nijery ity fahafaham-baraka ity - ary nanoratra fandaharana kely izy. tsy misy farany, tarpit ho an'ny SSH izay mampiadana ny fifandraisana miditra. Ny programa dia manokatra seranan-tsambo (ny seranan-tsambo mahazatra ho an'ny fitsapana dia 2222) ary mody ho mpizara SSH, fa raha ny tena izy dia mametraka fifandraisana tsy misy farany amin'ny mpanjifa miditra mandra-piveriny. Mety hitohy mandritra ny andro maromaro na mihoatra izany mandra-piverin'ny mpanjifa.

Fametrahana ny fitaovana:

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

Ny tarpit azo ampiharina tsara dia haka loharanon-karena bebe kokoa avy amin'ny mpanafika noho ianao. Saingy tsy resaka harena akory izany. Mpanoratra Hoy izy nanoratrafa mampiankin-doha ilay fandaharana. Amin'izao fotoana izao dia misy mpanjifa 27 voafandrika, ny sasany amin'izy ireo dia nifandray nandritra ny herinandro. Tamin'ny faran'ny asa, mpanjifa 1378 20 no voafandrika nandritra ny XNUMX ora!

Amin'ny fomba fiasa dia mila apetraka amin'ny seranan-tsambo mahazatra 22 ny mpizara Endlessh, izay mandondΓ²na ny hooligans. Ny tolo-kevitry ny fiarovana mahazatra dia manoro hevitra foana ny famindrana SSH mankany amin'ny seranana hafa, izay mampihena avy hatrany ny haben'ny logs amin'ny filaharana lehibe.

Chris Wellons dia nilaza fa ny fandaharany dia manararaotra andalana iray amin'ny famaritana RFC 4253 mankany amin'ny protocol SSH. Avy hatrany aorian'ny fametrahana fifandraisana TCP, fa alohan'ny hampiharana ny kriptografika dia tsy maintsy mandefa tady famantarana ny roa tonta. Ary misy fanamarihana koa: "Mety mandefa andalana hafa ny mpizara alohan'ny handefasana ny laharana version". ary tsy misy fetra amin'ny habetsahan'ity data ity dia mila manomboka ny andalana tsirairay ianao SSH-.

Izany indrindra no ataon'ny programa Endlessh: io DIA MANDEFA tsy misy farany fikorianan'ny angona novokarina kisendrasendra, izay mifanaraka amin'ny RFC 4253, izany hoe alefa alohan'ny fanamarinana, ary ny andalana tsirairay dia manomboka amin'ny SSH- ary tsy mihoatra ny tarehintsoratra 255, ao anatin'izany ny toetran'ny fiafaran'ny tsipika. Amin'ny ankapobeny dia mifanaraka amin'ny fenitra ny zava-drehetra.

Amin'ny alΓ lan'ny default, miandry 10 segondra eo anelanelan'ny fandefasana fonosana ny programa. Izany dia manakana ny mpanjifa tsy ho lany fotoana, ka ho voafandrika mandrakizay ny mpanjifa.

Satria ny angon-drakitra dia alefa alohan'ny fampiharana ny kriptografika, dia tena tsotra ny programa. Tsy mila mampihatra ciphers ary manohana protocols marobe.

Niezaka ny mpanoratra mba hahazoana antoka fa mandany ny loharanon-karena faran'izay kely indrindra ny fitaovana ary miasa tsy voamarika amin'ny milina. Tsy toy ny antivirus maoderina sy "rafitra fiarovana" hafa, tsy tokony hampiadana ny solosainao izany. Nahavita nanamaivana ny fifamoivoizana sy ny fitadidiana izy noho ny fampiharana rindrambaiko hafetsena kokoa. Raha toa ka nandefa dingana misaraka fotsiny amin'ny fifandraisana vaovao izy, dia mety hanafika DDoS ireo mety ho mpanafika amin'ny alΓ lan'ny fanokafana fifandraisana marobe mba handresena ireo loharanon-karena amin'ny milina. Ny kofehy iray isaky ny fifandraisana dia tsy safidy tsara indrindra, satria handany loharanon-karena amin'ny fitantanana kofehy ny kernel.

Izany no antony nisafidianan'i Chris Wellons ny safidy maivana indrindra ho an'ny Endlessh: mpizara misy kofehy tokana poll(2), izay tsy lanin'ny mpanjifa ao amin'ny fandrika saika tsy misy loharano fanampiny, tsy manisa ny zavatra socket ao amin'ny kernel sy 78 bytes hafa ho an'ny fanaraha-maso ao amin'ny Endlessh. Mba hisorohana ny tsy maintsy hanokana ny fandraisana sy ny fandefasana buffer ho an'ny mpanjifa tsirairay, Endlessh dia manokatra faladia fidirana mivantana ary mandika mivantana ny fonosana TCP, mandingana saika ny rafitra TCP/IP manontolo. Tsy ilaina mihitsy ny buffer miditra, satria tsy liana amin'ny angon-drakitra miditra izahay.

Milaza ny mpanoratra fa tamin'ny fotoana nanaovana ny fandaharany tsy nahalala momba ny fisian'ny asycio an'i Python sy ny tarpits hafa. Raha nahafantatra momba ny asycio izy dia afaka nampihatra ny fampiasany amin'ny andalana 18 fotsiny amin'ny 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 dia mety amin'ny fanoratana tarpits. Ohatra, ity hook ity dia hanamaivana ny Firefox, Chrome, na mpanjifa hafa izay manandrana mifandray amin'ny mpizara HTTP anao mandritra ny ora maro:

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 dia fitaovana tsara hanasazy ireo mpampijaly an-tserasera. Marina fa misy risika, mifanohitra amin'izany, ny hisarihana ny sain'izy ireo amin'ny fihetsika tsy mahazatra ataon'ny mpizara iray manokana. olona mety hieritreritra valifaty ary fanafihana DDoS kendrena amin'ny IP-nao. Na izany aza, hatramin'izao dia tsy mbola nisy tranga toy izany, ary ny tarpits dia miasa tsara.

Fandrika (tarpit) ho an'ny fifandraisana SSH miditra

Source: www.habr.com

Add a comment