Xop (tarpit) ji bo girêdanên SSH yên hatinî

Ne veşartî ye ku înternet hawîrdorek pir dijminane ye. Hema ku hûn serverek rabikin, ew tavilê rastî êrişên girseyî û şaneyên pirjimar tê. Bo nimûne honeypot ji cerdevanên ewlekariyê hûn dikarin pîvana vê trafîka çopê texmîn bikin. Bi rastî, li ser servera navîn, 99% seyrûseferê dibe ku xirab be.

Tarpit portek xefikê ye ku ji bo hêdîkirina girêdanên hatinê tê bikar anîn. Ger pergalek sêyemîn bi vê portê ve girêdide, hûn ê nikaribin zû pêwendiyê bigirin. Ew ê neçar be ku çavkaniyên pergala xwe winda bike û li bendê bimîne heya ku dema pêwendiyê biqede, an bi destan wê biqedîne.

Bi gelemperî, tarpit ji bo parastinê têne bikar anîn. Teknîkî yekem car ji bo parastina li dijî kurmên komputerê hate pêşve xistin. Û naha ew dikare were bikar anîn da ku jiyana spammers û lêkolînerên ku di rêzê de bi şopandina berfireh a hemî navnîşanên IP-yê mijûl dibin (mînakên li ser Habré: Austria, Ukraine).

Yek ji rêvebirên pergalê bi navê Chris Wellons xuya ye ku ji temaşekirina vê şermê westiyaye - û wî bernameyek piçûk nivîsand. Bêdawî, tarpitek ji bo SSH ku girêdanên hatinê hêdî dike. Bername portek vedike (porta xwerû ya ji bo ceribandinê 2222 e) û xwe wekî serverek SSH xuya dike, lê di rastiyê de ew têkiliyek bêdawî bi muwekîlê hatî re saz dike heya ku dev jê berde. Dibe ku ev çend roj an zêdetir berdewam bike heya ku xerîdar ji holê rabe.

Sazkirina karûbar:

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

Tarpitek bi rêkûpêk hatî bicîh kirin dê ji we bêtir çavkaniyan ji êrîşkar bigire. Lê ev ne meseleya çavkaniyan e jî. Nivîskar ew dinivîse:ku bername girêdayî ye. Heya nuha 27 xerîdarên wê hene ku hin ji wan bi hefteyan ve girêdayî ne. Di lûtkeya çalakiyê de, 1378 xerîdar 20 demjimêran asê man!

Di moda xebitandinê de, servera Endlessh pêdivî ye ku li porta asayî 22 were saz kirin, ku li wir holîgan bi girseyî lêdixin. Pêşniyarên ewlehiyê yên standard her gav şîret dikin ku SSH biguhezînin portek cûda, ku tavilê mezinahiya têketin bi rêzek mezinahî kêm dike.

Chris Wellons dibêje bernameya wî yek paragrafê taybetmendiyê bikar tîne RFC 4253 ji bo protokola SSH. Di cih de piştî ku têkiliyek TCP hate damezrandin, lê berî ku krîptografî were sepandin, divê her du alî rêzek nasnameyê bişînin. Û notek jî heye: "Pêvek DIBE berî ku rêza guhertoyê bişîne rêzên daneyên din bişîne". û bê sînor li ser qebareya vê daneyê, hûn tenê hewce ne ku her rêzek pê dest pê bikin SSH-.

Ya ku bernameya Endlessh dike ev e: ew dişîne bêdawî herikîna daneyên ku bi korfelaqî hatî çêkirin, ku bi RFC 4253 re tevdigerin, ango, berî pejirandinê bişînin, û her rêzek bi SSH- û ji 255 tîpan derbas nabe, tevî karaktera dawiya rêzê. Bi gelemperî, her tişt li gorî standardê ye.

Bi xwerû, bername di navbera şandina pakêtan de 10 çirke li bendê dimîne. Ev rê nade ku xerîdar biqede, ji ber vê yekê xerîdar dê her û her were girtin.

Ji ber ku berî ku krîptografî were sepandin, dane têne şandin, bername pir hêsan e. Ew ne hewce ye ku tu şîfreyan bicîh bîne û pir protokolan piştgirî dike.

Nivîskar hewl da ku bicîh bike ku karûbar herî kêm çavkaniyan dixwe û li ser makîneyê bi tevahî nedîtî dixebite. Berevajî antivirusên nûjen û "pergalên ewlehiyê" yên din, divê ew komputera we hêdî neke. Wî karî hem trafîkê û hem jî mezaxtina bîranînê kêm bike ji ber pêkanîna nermalava piçek jêhatî. Ger ew bi tenê pêvajoyek cihêreng li ser pêwendiyek nû dest pê kir, wê hingê êrişkerên potansiyel dikarin bi vekirina gelek girêdan ve êrişek DDoS bidin destpêkirin da ku çavkaniyên li ser makîneyê biqewirînin. Mijarek ji bo girêdanê di heman demê de ne vebijarka çêtirîn e, ji ber ku kernel dê çavkaniyên birêvebirina mijaran winda bike.

Ji ber vê yekê Chris Wellons ji bo Endlessh vebijarka herî sivik hilbijart: serverek yek-têkilî poll(2), li cihê ku xerîdarên di xefikê de bi rastî tu çavkaniyên zêde naxwin, nehesibandina objeya soketê ya di kernelê de û 78 baytên din ji bo şopandina li Endlessh. Ji bo ku ji bo her xerîdar veqetandin û şandina tamponan nehêle, Endlessh soketek gihîştina rasterast vedike û pakêtên TCP rasterast werdigerîne, hema hema tevahiya stoka pergala xebitandinê TCP/IP derbas dike. Tampona hatinê qet ne hewce ye, ji ber ku em bi daneyên hatinê re eleqedar nabin.

Nivîskar di dema bernameya xwe de dibêje nizanibû li ser hebûna asycio Python û tarpitên din. Ger wî di derbarê asycio de dizanibû, wî dikaribû di Python de tenê di 18 rêzan de karanîna xwe bicîh bîne:

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 ji bo nivîsandina tarpîtan îdeal e. Mînakî, ev hook dê Firefox, Chrome, an xerîdarek din a ku hewl dide gelek demjimêran bi servera xweya HTTP-ê ve girêde bicemidîne:

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 ji bo cezakirina zordarên serhêl amûrek girîng e. Rast e, berevajî vê, hin xetereyek heye ku bala wan bikişîne ser behreya neasayî ya serverek taybetî. Kesek dibe ku li ser tolhildanê bifikirin û êrîşek DDoS a armanckirî li ser IP-ya we. Lêbelê, heya nuha bûyerên weha tune ne, û tarpît pir baş dixebitin.

Navend:
Python, Ewlekariya Agahdariyê, Nermalava, Rêveberiya Pergalê

Tags:
SSH, Endlesssh, tarpit, tarpit, xefik, asycio
Xop (tarpit) ji bo girêdanên SSH yên hatinî

Ne veşartî ye ku înternet hawîrdorek pir dijminane ye. Hema ku hûn serverek rabikin, ew tavilê rastî êrişên girseyî û şaneyên pirjimar tê. Bo nimûne honeypot ji cerdevanên ewlekariyê hûn dikarin pîvana vê trafîka çopê texmîn bikin. Bi rastî, li ser servera navîn, 99% seyrûseferê dibe ku xirab be.

Tarpit portek xefikê ye ku ji bo hêdîkirina girêdanên hatinê tê bikar anîn. Ger pergalek sêyemîn bi vê portê ve girêdide, hûn ê nikaribin zû pêwendiyê bigirin. Ew ê neçar be ku çavkaniyên pergala xwe winda bike û li bendê bimîne heya ku dema pêwendiyê biqede, an bi destan wê biqedîne.

Bi gelemperî, tarpit ji bo parastinê têne bikar anîn. Teknîkî yekem car ji bo parastina li dijî kurmên komputerê hate pêşve xistin. Û naha ew dikare were bikar anîn da ku jiyana spammers û lêkolînerên ku di rêzê de bi şopandina berfireh a hemî navnîşanên IP-yê mijûl dibin (mînakên li ser Habré: Austria, Ukraine).

Yek ji rêvebirên pergalê bi navê Chris Wellons xuya ye ku ji temaşekirina vê şermê westiyaye - û wî bernameyek piçûk nivîsand. Bêdawî, tarpitek ji bo SSH ku girêdanên hatinê hêdî dike. Bername portek vedike (porta xwerû ya ji bo ceribandinê 2222 e) û xwe wekî serverek SSH xuya dike, lê di rastiyê de ew têkiliyek bêdawî bi muwekîlê hatî re saz dike heya ku dev jê berde. Dibe ku ev çend roj an zêdetir berdewam bike heya ku xerîdar ji holê rabe.

Sazkirina karûbar:

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

Tarpitek bi rêkûpêk hatî bicîh kirin dê ji we bêtir çavkaniyan ji êrîşkar bigire. Lê ev ne meseleya çavkaniyan e jî. Nivîskar ew dinivîse:ku bername girêdayî ye. Heya nuha 27 xerîdarên wê hene ku hin ji wan bi hefteyan ve girêdayî ne. Di lûtkeya çalakiyê de, 1378 xerîdar 20 demjimêran asê man!

Di moda xebitandinê de, servera Endlessh pêdivî ye ku li porta asayî 22 were saz kirin, ku li wir holîgan bi girseyî lêdixin. Pêşniyarên ewlehiyê yên standard her gav şîret dikin ku SSH biguhezînin portek cûda, ku tavilê mezinahiya têketin bi rêzek mezinahî kêm dike.

Chris Wellons dibêje bernameya wî yek paragrafê taybetmendiyê bikar tîne RFC 4253 ji bo protokola SSH. Di cih de piştî ku têkiliyek TCP hate damezrandin, lê berî ku krîptografî were sepandin, divê her du alî rêzek nasnameyê bişînin. Û notek jî heye: "Pêvek DIBE berî ku rêza guhertoyê bişîne rêzên daneyên din bişîne". û bê sînor li ser qebareya vê daneyê, hûn tenê hewce ne ku her rêzek pê dest pê bikin SSH-.

Ya ku bernameya Endlessh dike ev e: ew dişîne bêdawî herikîna daneyên ku bi korfelaqî hatî çêkirin, ku bi RFC 4253 re tevdigerin, ango, berî pejirandinê bişînin, û her rêzek bi SSH- û ji 255 tîpan derbas nabe, tevî karaktera dawiya rêzê. Bi gelemperî, her tişt li gorî standardê ye.

Bi xwerû, bername di navbera şandina pakêtan de 10 çirke li bendê dimîne. Ev rê nade ku xerîdar biqede, ji ber vê yekê xerîdar dê her û her were girtin.

Ji ber ku berî ku krîptografî were sepandin, dane têne şandin, bername pir hêsan e. Ew ne hewce ye ku tu şîfreyan bicîh bîne û pir protokolan piştgirî dike.

Nivîskar hewl da ku bicîh bike ku karûbar herî kêm çavkaniyan dixwe û li ser makîneyê bi tevahî nedîtî dixebite. Berevajî antivirusên nûjen û "pergalên ewlehiyê" yên din, divê ew komputera we hêdî neke. Wî karî hem trafîkê û hem jî mezaxtina bîranînê kêm bike ji ber pêkanîna nermalava piçek jêhatî. Ger ew bi tenê pêvajoyek cihêreng li ser pêwendiyek nû dest pê kir, wê hingê êrişkerên potansiyel dikarin bi vekirina gelek girêdan ve êrişek DDoS bidin destpêkirin da ku çavkaniyên li ser makîneyê biqewirînin. Mijarek ji bo girêdanê di heman demê de ne vebijarka çêtirîn e, ji ber ku kernel dê çavkaniyên birêvebirina mijaran winda bike.

Ji ber vê yekê Chris Wellons ji bo Endlessh vebijarka herî sivik hilbijart: serverek yek-têkilî poll(2), li cihê ku xerîdarên di xefikê de bi rastî tu çavkaniyên zêde naxwin, nehesibandina objeya soketê ya di kernelê de û 78 baytên din ji bo şopandina li Endlessh. Ji bo ku ji bo her xerîdar veqetandin û şandina tamponan nehêle, Endlessh soketek gihîştina rasterast vedike û pakêtên TCP rasterast werdigerîne, hema hema tevahiya stoka pergala xebitandinê TCP/IP derbas dike. Tampona hatinê qet ne hewce ye, ji ber ku em bi daneyên hatinê re eleqedar nabin.

Nivîskar di dema bernameya xwe de dibêje nizanibû li ser hebûna asycio Python û tarpitên din. Ger wî di derbarê asycio de dizanibû, wî dikaribû di Python de tenê di 18 rêzan de karanîna xwe bicîh bîne:

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 ji bo nivîsandina tarpîtan îdeal e. Mînakî, ev hook dê Firefox, Chrome, an xerîdarek din a ku hewl dide gelek demjimêran bi servera xweya HTTP-ê ve girêde bicemidîne:

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 ji bo cezakirina zordarên serhêl amûrek girîng e. Rast e, berevajî vê, hin xetereyek heye ku bala wan bikişîne ser behreya neasayî ya serverek taybetî. Kesek dibe ku li ser tolhildanê bifikirin û êrîşek DDoS a armanckirî li ser IP-ya we. Lêbelê, heya nuha bûyerên weha tune ne, û tarpît pir baş dixebitin.

Xop (tarpit) ji bo girêdanên SSH yên hatinî

Source: www.habr.com

Add a comment