Trap (tarpit) airson ceanglaichean SSH a tha a’ tighinn a-steach

Chan eil e na dhìomhaireachd gu bheil an eadar-lìn na àrainneachd gu math nàimhdeil. Cho luath ‘s a thogas tu frithealaiche, bidh e sa bhad fo ionnsaighean mòra agus grunn sganaidhean. Mar eisimpleir meala bho gheàrdan tèarainteachd faodaidh tu tuairmse a dhèanamh air meud an trafaic sgudail seo. Gu dearbh, air an t-seirbheisiche cuibheasach, faodaidh 99% de thrafaig a bhith droch-rùnach.

Is e port ribe a th’ ann an Tarpit a thathas a’ cleachdadh gus ceanglaichean a tha a’ tighinn a-steach a dhèanamh nas slaodaiche. Ma cheanglas siostam treas-phàrtaidh ris a’ phort seo, cha bhith e comasach dhut an ceangal a dhùnadh gu sgiobalta. Feumaidh i na goireasan siostam aice a chaitheamh agus feitheamh gus an tèid an ceangal a-mach, no crìoch a chuir air le làimh.

Mar as trice, bidh tarpits air an cleachdadh airson dìon. Chaidh an dòigh-obrach a leasachadh an toiseach gus dìon an aghaidh cnuimhean coimpiutair. Agus a-nis faodar a chleachdadh gus beatha spammers agus luchd-rannsachaidh a sgrios a tha an sàs ann an sganadh farsaing de gach seòladh IP ann an sreath (eisimpleirean air Habré: an Ostair, Ukraine).

Tha e coltach gun do dh’ fhàs fear de luchd-rianachd an t-siostaim leis an t-ainm Chris Wellons sgìth de bhith a’ coimhead an tàmailt seo - agus sgrìobh e prògram beag Gun chrìch, tarpit airson SSH a bhios a 'slaodadh sìos ceanglaichean a tha a' tighinn a-steach. Bidh am prògram a’ fosgladh port (is e 2222 am port àbhaisteach airson deuchainn) agus a’ leigeil air gur e frithealaiche SSH a th’ ann, ach ann an da-rìribh bidh e a’ stèidheachadh ceangal gun chrìoch leis a’ chleachdaiche a tha a’ tighinn a-steach gus an toir e seachad e. Faodaidh seo leantainn air adhart airson grunn làithean no barrachd gus an tuit an neach-dèiligidh dheth.

Stàladh an goireas:

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

Bheir tarpit a tha air a chuir an gnìomh gu ceart barrachd ghoireasan bhon neach-ionnsaigh na bhuat. Ach chan eil e eadhon ceist mu ghoireasan. Ughdar Tha ea 'sgrìobhadhgu bheil am prògram addictive. An-dràsta tha 27 teachdaichean glaiste, cuid dhiubh ceangailte airson seachdainean. Aig an ìre as àirde de ghnìomhachd, bha 1378 neach-dèiligidh glaiste airson 20 uair!

Ann am modh obrachaidh, feumar am frithealaiche Endlessh a chuir a-steach air a’ phort àbhaisteach 22, far am bi hooligans a’ gnogadh en masse. Bidh molaidhean tèarainteachd àbhaisteach an-còmhnaidh a’ comhairleachadh gluasad SSH gu port eile, a lughdaicheas meud nan logaichean sa bhad le òrdugh meudachd.

Tha Chris Wellons ag ràdh gu bheil am prògram aige a’ gabhail brath air aon pharagraf den t-sònrachadh RFC 4253 gu protocol SSH. Dìreach às deidh ceangal TCP a stèidheachadh, ach mus tèid cryptography a chuir an sàs, feumaidh an dà phàrtaidh sreang aithneachaidh a chuir. Agus tha nota ann cuideachd: msgstr "Faodaidh am frithealaiche sreathan eile de dhàta a chur mus cuir e loidhne an tionndaidh"S an Iar- Agus gun chrìoch air meud an dàta seo, cha leig thu leas ach tòiseachadh air gach loidhne SSH-.

Is e seo dìreach a bhios am prògram Endlessh a’ dèanamh: e a ’cur gun chrìoch sruth de dhàta air a chruthachadh air thuaiream, a tha a’ gèilleadh ri RFC 4253, is e sin, cuir air adhart ro dhearbhadh, agus tòisichidh gach loidhne le SSH- agus chan eil e nas àirde na 255 caractar, a’ gabhail a-steach caractar crìochnachaidh na loidhne. San fharsaingeachd, tha a h-uile dad a rèir na h-ìre àbhaisteach.

Gu gnàthach, bidh am prògram a’ feitheamh 10 diogan eadar pacaidean a chuir. Tha seo a’ cur casg air an neach-dèiligidh bho bhith a’ dol a-mach à ùine, agus mar sin bidh an neach-dèiligidh glaiste gu bràth.

Leis gu bheil an dàta air a chuir mus tèid cryptography a chuir an sàs, tha am prògram gu math sìmplidh. Chan fheum e ciphers sam bith a chuir an gnìomh agus bheir e taic do ghrunn phròtacalan.

Dh'fheuch an t-ùghdar ri dèanamh cinnteach gu bheil an goireas a 'cleachdadh a' char as lugha de ghoireasan agus ag obair gu tur gun mhothachadh air an inneal. Eu-coltach ri anti-bhìorasan an latha an-diugh agus “siostaman tèarainteachd” eile, cha bu chòir dha do choimpiutair a dhèanamh nas slaodaiche. Chaidh aige air an dà chuid trafaic agus caitheamh cuimhne a lughdachadh mar thoradh air buileachadh bathar-bog beagan nas seòlta. Ma chuir e dìreach pròiseas air leth air bhog air ceangal ùr, dh’ fhaodadh luchd-ionnsaigh ionnsaigh DDoS a chuir air bhog le bhith a’ fosgladh grunn cheanglaichean gus goireasan a chuir a-mach air an inneal. Chan e aon snàithlean airson gach ceangal an roghainn as fheàrr cuideachd, oir bidh an kernel a’ caitheamh ghoireasan a’ riaghladh snàithleanan.

Sin as coireach gun do thagh Chris Wellons an roghainn as aotrom airson Endlessh: frithealaiche aon-snàthainn poll(2), far nach bi an luchd-dèiligidh anns an ribe ag ithe cha mhòr gun ghoireasan a bharrachd, gun a bhith a’ cunntadh an nì socaid anns an kernel agus 78 bytes eile airson lorg ann an Endlessh. Gus nach fheum iad bufairean fhaighinn agus a chuir air falbh airson gach neach-dèiligidh, bidh Endlessh a’ fosgladh socaid ruigsinneachd dìreach agus ag eadar-theangachadh pacaidean TCP gu dìreach, a’ dol seachad air cha mhòr an t-siostam obrachaidh TCP/IP stac gu lèir. Chan eil feum air a’ bhufair a tha a’ tighinn a-steach idir, oir chan eil ùidh againn anns an dàta a tha a’ tighinn a-steach.

Tha an t-ùghdar ag ràdh sin aig àm a’ phrògram aige cha robh fios mu dheidhinn mar a tha python asycio agus tarpits eile ann. Nam biodh fios aige air asycio, dh’ fhaodadh e a ghoireas a chuir an gnìomh ann an dìreach loidhnichean 18 ann am 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())

Tha Asyncio air leth freagarrach airson tarpits a sgrìobhadh. Mar eisimpleir, reothadh an dubhan seo Firefox, Chrome, no teachdaiche sam bith eile a tha a’ feuchainn ri ceangal ris an t-seirbheisiche HTTP agad airson grunn uairean a thìde:

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())

Tha Tarpit na inneal math airson burraidhean air-loidhne a pheanasachadh. Fìor, tha beagan cunnart ann, air an làimh eile, an aire a tharraing gu giùlan neo-àbhaisteach frithealaiche sònraichte. Cuideigin dh’ fhaodadh smaoineachadh air dìoghaltas agus ionnsaigh DDoS cuimsichte air an IP agad. Ach, gu ruige seo cha robh cùisean mar sin ann, agus tha tarpits ag obair glè mhath.

Mòr-ionadan:
Python, tèarainteachd fiosrachaidh, bathar-bog, rianachd siostam

Tags:
SSH, gun chrìch, tarpit, tarpit, ribe, asycio
Trap (tarpit) airson ceanglaichean SSH a tha a’ tighinn a-steach

Chan eil e na dhìomhaireachd gu bheil an eadar-lìn na àrainneachd gu math nàimhdeil. Cho luath ‘s a thogas tu frithealaiche, bidh e sa bhad fo ionnsaighean mòra agus grunn sganaidhean. Mar eisimpleir meala bho gheàrdan tèarainteachd faodaidh tu tuairmse a dhèanamh air meud an trafaic sgudail seo. Gu dearbh, air an t-seirbheisiche cuibheasach, faodaidh 99% de thrafaig a bhith droch-rùnach.

Is e port ribe a th’ ann an Tarpit a thathas a’ cleachdadh gus ceanglaichean a tha a’ tighinn a-steach a dhèanamh nas slaodaiche. Ma cheanglas siostam treas-phàrtaidh ris a’ phort seo, cha bhith e comasach dhut an ceangal a dhùnadh gu sgiobalta. Feumaidh i na goireasan siostam aice a chaitheamh agus feitheamh gus an tèid an ceangal a-mach, no crìoch a chuir air le làimh.

Mar as trice, bidh tarpits air an cleachdadh airson dìon. Chaidh an dòigh-obrach a leasachadh an toiseach gus dìon an aghaidh cnuimhean coimpiutair. Agus a-nis faodar a chleachdadh gus beatha spammers agus luchd-rannsachaidh a sgrios a tha an sàs ann an sganadh farsaing de gach seòladh IP ann an sreath (eisimpleirean air Habré: an Ostair, Ukraine).

Tha e coltach gun do dh’ fhàs fear de luchd-rianachd an t-siostaim leis an t-ainm Chris Wellons sgìth de bhith a’ coimhead an tàmailt seo - agus sgrìobh e prògram beag Gun chrìch, tarpit airson SSH a bhios a 'slaodadh sìos ceanglaichean a tha a' tighinn a-steach. Bidh am prògram a’ fosgladh port (is e 2222 am port àbhaisteach airson deuchainn) agus a’ leigeil air gur e frithealaiche SSH a th’ ann, ach ann an da-rìribh bidh e a’ stèidheachadh ceangal gun chrìoch leis a’ chleachdaiche a tha a’ tighinn a-steach gus an toir e seachad e. Faodaidh seo leantainn air adhart airson grunn làithean no barrachd gus an tuit an neach-dèiligidh dheth.

Stàladh an goireas:

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

Bheir tarpit a tha air a chuir an gnìomh gu ceart barrachd ghoireasan bhon neach-ionnsaigh na bhuat. Ach chan eil e eadhon ceist mu ghoireasan. Ughdar Tha ea 'sgrìobhadhgu bheil am prògram addictive. An-dràsta tha 27 teachdaichean glaiste, cuid dhiubh ceangailte airson seachdainean. Aig an ìre as àirde de ghnìomhachd, bha 1378 neach-dèiligidh glaiste airson 20 uair!

Ann am modh obrachaidh, feumar am frithealaiche Endlessh a chuir a-steach air a’ phort àbhaisteach 22, far am bi hooligans a’ gnogadh en masse. Bidh molaidhean tèarainteachd àbhaisteach an-còmhnaidh a’ comhairleachadh gluasad SSH gu port eile, a lughdaicheas meud nan logaichean sa bhad le òrdugh meudachd.

Tha Chris Wellons ag ràdh gu bheil am prògram aige a’ gabhail brath air aon pharagraf den t-sònrachadh RFC 4253 gu protocol SSH. Dìreach às deidh ceangal TCP a stèidheachadh, ach mus tèid cryptography a chuir an sàs, feumaidh an dà phàrtaidh sreang aithneachaidh a chuir. Agus tha nota ann cuideachd: msgstr "Faodaidh am frithealaiche sreathan eile de dhàta a chur mus cuir e loidhne an tionndaidh"S an Iar- Agus gun chrìoch air meud an dàta seo, cha leig thu leas ach tòiseachadh air gach loidhne SSH-.

Is e seo dìreach a bhios am prògram Endlessh a’ dèanamh: e a ’cur gun chrìoch sruth de dhàta air a chruthachadh air thuaiream, a tha a’ gèilleadh ri RFC 4253, is e sin, cuir air adhart ro dhearbhadh, agus tòisichidh gach loidhne le SSH- agus chan eil e nas àirde na 255 caractar, a’ gabhail a-steach caractar crìochnachaidh na loidhne. San fharsaingeachd, tha a h-uile dad a rèir na h-ìre àbhaisteach.

Gu gnàthach, bidh am prògram a’ feitheamh 10 diogan eadar pacaidean a chuir. Tha seo a’ cur casg air an neach-dèiligidh bho bhith a’ dol a-mach à ùine, agus mar sin bidh an neach-dèiligidh glaiste gu bràth.

Leis gu bheil an dàta air a chuir mus tèid cryptography a chuir an sàs, tha am prògram gu math sìmplidh. Chan fheum e ciphers sam bith a chuir an gnìomh agus bheir e taic do ghrunn phròtacalan.

Dh'fheuch an t-ùghdar ri dèanamh cinnteach gu bheil an goireas a 'cleachdadh a' char as lugha de ghoireasan agus ag obair gu tur gun mhothachadh air an inneal. Eu-coltach ri anti-bhìorasan an latha an-diugh agus “siostaman tèarainteachd” eile, cha bu chòir dha do choimpiutair a dhèanamh nas slaodaiche. Chaidh aige air an dà chuid trafaic agus caitheamh cuimhne a lughdachadh mar thoradh air buileachadh bathar-bog beagan nas seòlta. Ma chuir e dìreach pròiseas air leth air bhog air ceangal ùr, dh’ fhaodadh luchd-ionnsaigh ionnsaigh DDoS a chuir air bhog le bhith a’ fosgladh grunn cheanglaichean gus goireasan a chuir a-mach air an inneal. Chan e aon snàithlean airson gach ceangal an roghainn as fheàrr cuideachd, oir bidh an kernel a’ caitheamh ghoireasan a’ riaghladh snàithleanan.

Sin as coireach gun do thagh Chris Wellons an roghainn as aotrom airson Endlessh: frithealaiche aon-snàthainn poll(2), far nach bi an luchd-dèiligidh anns an ribe ag ithe cha mhòr gun ghoireasan a bharrachd, gun a bhith a’ cunntadh an nì socaid anns an kernel agus 78 bytes eile airson lorg ann an Endlessh. Gus nach fheum iad bufairean fhaighinn agus a chuir air falbh airson gach neach-dèiligidh, bidh Endlessh a’ fosgladh socaid ruigsinneachd dìreach agus ag eadar-theangachadh pacaidean TCP gu dìreach, a’ dol seachad air cha mhòr an t-siostam obrachaidh TCP/IP stac gu lèir. Chan eil feum air a’ bhufair a tha a’ tighinn a-steach idir, oir chan eil ùidh againn anns an dàta a tha a’ tighinn a-steach.

Tha an t-ùghdar ag ràdh sin aig àm a’ phrògram aige cha robh fios mu dheidhinn mar a tha python asycio agus tarpits eile ann. Nam biodh fios aige air asycio, dh’ fhaodadh e a ghoireas a chuir an gnìomh ann an dìreach loidhnichean 18 ann am 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())

Tha Asyncio air leth freagarrach airson tarpits a sgrìobhadh. Mar eisimpleir, reothadh an dubhan seo Firefox, Chrome, no teachdaiche sam bith eile a tha a’ feuchainn ri ceangal ris an t-seirbheisiche HTTP agad airson grunn uairean a thìde:

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())

Tha Tarpit na inneal math airson burraidhean air-loidhne a pheanasachadh. Fìor, tha beagan cunnart ann, air an làimh eile, an aire a tharraing gu giùlan neo-àbhaisteach frithealaiche sònraichte. Cuideigin dh’ fhaodadh smaoineachadh air dìoghaltas agus ionnsaigh DDoS cuimsichte air an IP agad. Ach, gu ruige seo cha robh cùisean mar sin ann, agus tha tarpits ag obair glè mhath.

Trap (tarpit) airson ceanglaichean SSH a tha a’ tighinn a-steach

Source: www.habr.com

Cuir beachd ann