Trap (Tarpit) fir erakommen SSH Verbindungen

Et ass kee Geheimnis datt den Internet e ganz feindlecht Ëmfeld ass. Soubal Dir e Server erhéicht, gëtt en direkt u massiven Attacken a verschidde Scans ënnerworf. Zum Beispill honeypot aus Sécherheetsbeamten Dir kënnt d'Skala vun dësem Müllverkéier schätzen. Tatsächlech, op der Moyenne Server, 99% vum Traffic kann béiswëlleg sinn.

Tarpit ass e Fallport deen benotzt gëtt fir erakommen Verbindungen ze luesen. Wann en Drëtte-Partei-System mat dësem Hafen verbënnt, kënnt Dir d'Verbindung net séier zoumaachen. Si wäert hir Systemressourcen verschwenden a waarden bis d'Verbindungstimeouts, oder se manuell ofschléissen.

Déi meescht Oft gi Tarpiten fir Schutz benotzt. D'Technik gouf fir d'éischt entwéckelt fir géint Computerwürmer ze schützen. An elo kann et benotzt ginn fir d'Liewe vu Spammeren a Fuerscher ze ruinéieren, déi sech mat engem breede Scannen vun all IP Adressen an enger Zeil beschäftegen (Beispiller op Habré: Éisträich, Ukraine).

Ee vun de Systemadministrateuren mam Numm Chris Wellons ass anscheinend midd ginn fir dës Schimmt ze kucken - an hien huet e klenge Programm geschriwwen Endlos, en Tarpit fir SSH deen erakommen Verbindungen verlangsamt. De Programm mécht e Port op (de Standardport fir Testen ass 2222) a mécht sech wéi en SSH-Server, awer a Wierklechkeet stellt et eng endlos Verbindung mat dem erakommende Client bis et opginn. Dëst kann e puer Deeg oder méi weidergoen, bis de Client offällt.

Installatioun vum Utility:

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

E richteg ëmgesat Tarpit wäert méi Ressourcen vum Ugräifer huelen wéi vun Iech. Awer et ass net emol eng Fro vu Ressourcen. Auteur hie schreiftdatt de Programm Suchtfaktor ass. De Moment huet et 27 Clienten agespaart, e puer vun hinnen verbonne fir Wochen. Um Héichpunkt vun der Aktivitéit waren 1378 Cliente fir 20 Stonnen agespaart!

Am Betribsmodus muss den Endlessh-Server op den üblechen Hafen 22 installéiert ginn, wou Hooligans masseg klappen. Standard Sécherheetsempfehlungen roden ëmmer SSH an en aneren Hafen ze verschwannen, wat d'Gréisst vun de Logbicher direkt mat enger Uerdnung vun der Gréisst reduzéiert.

De Chris Wellons seet datt säi Programm ee Paragraphe vun der Spezifizéierung exploitéiert RFC 4253 zum SSH-Protokoll. Direkt nodeems eng TCP Verbindung etabléiert ass, awer ier d'Kryptographie applizéiert gëtt, musse béid Parteien eng Identifikatiounsstring schécken. An et gëtt och eng Notiz: "De Server KANN aner Zeilen vun Daten schécken ier Dir d'Versiounsrei schéckt". An keng Limite op de Volume vun dësen Donnéeën, Dir musst just all Linn ufänken mat SSH-.

Dëst ass genau wat den Endlessh Programm mécht: et schéckt onendlech Stroum vun zoufälleg generéiert Donnéeën, déi mam RFC 4253 entspriechen, dat heescht virun der Authentifikatioun schécken, an all Linn fänkt mat SSH- an net däerfte 255 Zeechen, dorënner d'Linn Enn Charakter. Am Allgemengen ass alles no der Norm.

Par défaut waart de Programm 10 Sekonnen tëscht der Sendung vu Paketen. Dëst verhënnert datt de Client aus dem Timeout gëtt, sou datt de Client fir ëmmer agespaart gëtt.

Zënter datt d'Donnéeën geschéckt ginn ier d'Kryptographie applizéiert gëtt, ass de Programm extrem einfach. Et brauch keng Chifferen ëmzesetzen an ënnerstëtzt verschidde Protokoller.

Den Auteur huet probéiert ze garantéieren datt d'Utility e Minimum vu Ressourcen verbraucht a komplett onnotéiert op der Maschinn funktionnéiert. Am Géigesaz zu modernen Antivirusen an aner "Sécherheetssystemer", sollt et Äre Computer net verlangsamen. Hien huet et fäerdeg bruecht souwuel de Traffic wéi och de Gedächtnisverbrauch ze minimiséieren wéinst enger liicht méi lëschteg Softwareimplementatioun. Wann et einfach e separaten Prozess op eng nei Verbindung lancéiert huet, da kéinten potenziell Ugräifer en DDoS-Attack lancéieren andeems se verschidde Verbindungen opmaachen fir d'Ressourcen op der Maschinn auszebauen. Ee Fuedem pro Verbindung ass och net déi bescht Optioun, well de Kernel wäert Ressourcen verschwenden fir Threads ze managen.

Duerfir huet de Chris Wellons déi liichtste Optioun fir Endlessh gewielt: en Single-threaded Server poll(2), wou d'Clienten an der Fal quasi keng extra Ressourcen verbrauchen, net de Socket-Objet am Kernel zielen an eng aner 78 Bytes fir ze verfolgen an Endlessh. Fir ze vermeiden datt Dir Puffere fir all Client muss allocéieren an ze schécken, mécht Endlessh en direkten Zougankssocket op an iwwersetzt TCP Päck direkt, andeems bal de ganze Betribssystem TCP / IP Stack ëmgoen. Den erakommende Puffer ass guer net néideg, well mir sinn net un déi erakommen Donnéeën interesséiert.

Den Auteur seet dat an der Zäit vu sengem Programm wosst net iwwer d'Existenz vum Python senger Asycio an aner Tarpiten. Wann hien iwwer Asycio wousst, kéint hien säin Utility an nëmmen 18 Zeilen am Python implementéieren:

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 ass ideal fir Tarpits ze schreiwen. Zum Beispill wäert dësen Hook Firefox, Chrome oder all anere Client afréieren, dee probéiert fir vill Stonnen mat Ärem HTTP-Server ze verbannen:

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 ass e super Tool fir Online Bullies ze bestrofen. True, et ass e Risiko, am Géigendeel, hir Opmierksamkeet op dat ongewéinlech Verhalen vun engem bestëmmte Server ze zéien. Een kéint iwwer Revanche denken an e geziilten DDoS Attack op Är IP. Wéi och ëmmer, bis elo goufen et keng esou Fäll, an Tarpits funktionnéieren super.

Hubs:
Python, Informatiounssécherheet, Software, Systemverwaltung

Tags:
SSH, Endlessh, Tarpit, Tarpit, Trap, Asycio
Trap (Tarpit) fir erakommen SSH Verbindungen

Et ass kee Geheimnis datt den Internet e ganz feindlecht Ëmfeld ass. Soubal Dir e Server erhéicht, gëtt en direkt u massiven Attacken a verschidde Scans ënnerworf. Zum Beispill honeypot aus Sécherheetsbeamten Dir kënnt d'Skala vun dësem Müllverkéier schätzen. Tatsächlech, op der Moyenne Server, 99% vum Traffic kann béiswëlleg sinn.

Tarpit ass e Fallport deen benotzt gëtt fir erakommen Verbindungen ze luesen. Wann en Drëtte-Partei-System mat dësem Hafen verbënnt, kënnt Dir d'Verbindung net séier zoumaachen. Si wäert hir Systemressourcen verschwenden a waarden bis d'Verbindungstimeouts, oder se manuell ofschléissen.

Déi meescht Oft gi Tarpiten fir Schutz benotzt. D'Technik gouf fir d'éischt entwéckelt fir géint Computerwürmer ze schützen. An elo kann et benotzt ginn fir d'Liewe vu Spammeren a Fuerscher ze ruinéieren, déi sech mat engem breede Scannen vun all IP Adressen an enger Zeil beschäftegen (Beispiller op Habré: Éisträich, Ukraine).

Ee vun de Systemadministrateuren mam Numm Chris Wellons ass anscheinend midd ginn fir dës Schimmt ze kucken - an hien huet e klenge Programm geschriwwen Endlos, en Tarpit fir SSH deen erakommen Verbindungen verlangsamt. De Programm mécht e Port op (de Standardport fir Testen ass 2222) a mécht sech wéi en SSH-Server, awer a Wierklechkeet stellt et eng endlos Verbindung mat dem erakommende Client bis et opginn. Dëst kann e puer Deeg oder méi weidergoen, bis de Client offällt.

Installatioun vum Utility:

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

E richteg ëmgesat Tarpit wäert méi Ressourcen vum Ugräifer huelen wéi vun Iech. Awer et ass net emol eng Fro vu Ressourcen. Auteur hie schreiftdatt de Programm Suchtfaktor ass. De Moment huet et 27 Clienten agespaart, e puer vun hinnen verbonne fir Wochen. Um Héichpunkt vun der Aktivitéit waren 1378 Cliente fir 20 Stonnen agespaart!

Am Betribsmodus muss den Endlessh-Server op den üblechen Hafen 22 installéiert ginn, wou Hooligans masseg klappen. Standard Sécherheetsempfehlungen roden ëmmer SSH an en aneren Hafen ze verschwannen, wat d'Gréisst vun de Logbicher direkt mat enger Uerdnung vun der Gréisst reduzéiert.

De Chris Wellons seet datt säi Programm ee Paragraphe vun der Spezifizéierung exploitéiert RFC 4253 zum SSH-Protokoll. Direkt nodeems eng TCP Verbindung etabléiert ass, awer ier d'Kryptographie applizéiert gëtt, musse béid Parteien eng Identifikatiounsstring schécken. An et gëtt och eng Notiz: "De Server KANN aner Zeilen vun Daten schécken ier Dir d'Versiounsrei schéckt". An keng Limite op de Volume vun dësen Donnéeën, Dir musst just all Linn ufänken mat SSH-.

Dëst ass genau wat den Endlessh Programm mécht: et schéckt onendlech Stroum vun zoufälleg generéiert Donnéeën, déi mam RFC 4253 entspriechen, dat heescht virun der Authentifikatioun schécken, an all Linn fänkt mat SSH- an net däerfte 255 Zeechen, dorënner d'Linn Enn Charakter. Am Allgemengen ass alles no der Norm.

Par défaut waart de Programm 10 Sekonnen tëscht der Sendung vu Paketen. Dëst verhënnert datt de Client aus dem Timeout gëtt, sou datt de Client fir ëmmer agespaart gëtt.

Zënter datt d'Donnéeën geschéckt ginn ier d'Kryptographie applizéiert gëtt, ass de Programm extrem einfach. Et brauch keng Chifferen ëmzesetzen an ënnerstëtzt verschidde Protokoller.

Den Auteur huet probéiert ze garantéieren datt d'Utility e Minimum vu Ressourcen verbraucht a komplett onnotéiert op der Maschinn funktionnéiert. Am Géigesaz zu modernen Antivirusen an aner "Sécherheetssystemer", sollt et Äre Computer net verlangsamen. Hien huet et fäerdeg bruecht souwuel de Traffic wéi och de Gedächtnisverbrauch ze minimiséieren wéinst enger liicht méi lëschteg Softwareimplementatioun. Wann et einfach e separaten Prozess op eng nei Verbindung lancéiert huet, da kéinten potenziell Ugräifer en DDoS-Attack lancéieren andeems se verschidde Verbindungen opmaachen fir d'Ressourcen op der Maschinn auszebauen. Ee Fuedem pro Verbindung ass och net déi bescht Optioun, well de Kernel wäert Ressourcen verschwenden fir Threads ze managen.

Duerfir huet de Chris Wellons déi liichtste Optioun fir Endlessh gewielt: en Single-threaded Server poll(2), wou d'Clienten an der Fal quasi keng extra Ressourcen verbrauchen, net de Socket-Objet am Kernel zielen an eng aner 78 Bytes fir ze verfolgen an Endlessh. Fir ze vermeiden datt Dir Puffere fir all Client muss allocéieren an ze schécken, mécht Endlessh en direkten Zougankssocket op an iwwersetzt TCP Päck direkt, andeems bal de ganze Betribssystem TCP / IP Stack ëmgoen. Den erakommende Puffer ass guer net néideg, well mir sinn net un déi erakommen Donnéeën interesséiert.

Den Auteur seet dat an der Zäit vu sengem Programm wosst net iwwer d'Existenz vum Python senger Asycio an aner Tarpiten. Wann hien iwwer Asycio wousst, kéint hien säin Utility an nëmmen 18 Zeilen am Python implementéieren:

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 ass ideal fir Tarpits ze schreiwen. Zum Beispill wäert dësen Hook Firefox, Chrome oder all anere Client afréieren, dee probéiert fir vill Stonnen mat Ärem HTTP-Server ze verbannen:

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 ass e super Tool fir Online Bullies ze bestrofen. True, et ass e Risiko, am Géigendeel, hir Opmierksamkeet op dat ongewéinlech Verhalen vun engem bestëmmte Server ze zéien. Een kéint iwwer Revanche denken an e geziilten DDoS Attack op Är IP. Wéi och ëmmer, bis elo goufen et keng esou Fäll, an Tarpits funktionnéieren super.

Trap (Tarpit) fir erakommen SSH Verbindungen

Source: will.com

Setzt e Commentaire