Bhunter - vdiranje v botnet vozlišča

Virusni analitiki in raziskovalci računalniške varnosti tekmujejo, da bi zbrali čim več vzorcev novih botnetov. Honeypots uporabljajo za lastne namene ... Kaj pa, če želite zlonamerno programsko opremo opazovati v resničnih razmerah? Ogrozite svoj strežnik ali usmerjevalnik? Kaj pa, če ni primerne naprave? Prav ta vprašanja so me spodbudila, da sem ustvaril bhunter, orodje za dostop do vozlišč botnetov.

Bhunter - vdiranje v botnet vozlišča

osrednja ideja

Obstaja veliko načinov za širjenje zlonamerne programske opreme za razširitev botnetov: od lažnega predstavljanja do izkoriščanja 0-dnevnih ranljivosti. Toda najpogostejša metoda je še vedno brutalno vsiljevanje gesel SSH.

Ideja je zelo preprosta. Če neko vozlišče botneta poskuša nasilno vsiliti gesla za vaš strežnik, potem je bilo to vozlišče najverjetneje zajeto z nasilnim vsiljevanjem preprostih gesel. To pomeni, da morate za dostop do njega samo vrniti.

Točno tako deluje bhunter. Posluša vrata 22 (storitev SSH) in zbira vse prijave in gesla, s katerimi se poskušajo povezati z njim. Nato se s pomočjo zbranih gesel poskuša povezati z napadalnimi vozlišči.

Algoritem dela

Program lahko razdelimo na 2 glavna dela, ki delujeta v ločenih nitih. Prvi je honeypot. Obdeluje poskuse prijave, zbira edinstvene prijave in gesla (v tem primeru se par prijava + geslo obravnava kot ena celota) in dodaja tudi naslove IP, ki so se poskušali povezati v čakalno vrsto za nadaljnji napad.

Drugi del je neposredno odgovoren za napad. Poleg tega se napad izvaja v dveh načinih: BurstAttack (rafalni napad) - prijave in gesla s surovo silo s splošnega seznama in SingleShotAttack (enkratni napad) - gesla s surovo silo, ki jih je uporabilo napadeno vozlišče, vendar še niso bila uporabljena. dodan na splošni seznam.

Da bi imeli takoj po zagonu vsaj nekaj podatkovne baze prijav in gesel, se bhunter inicializira s seznamom iz datoteke /etc/bhunter/defaultLoginPairs.

vmesnik

Bhunter lahko zaženete na več načinov:

Samo kot ekipa

sudo bhunter

S tem zagonom je mogoče nadzorovati bhunter prek njegovega besedilnega menija: dodati prijave in gesla za napad, izvoziti zbirko podatkov o prijavah in geslih, določiti tarčo za napad. Vsa vdrta vozlišča si lahko ogledate v datoteki /var/log/bhunter/hacked.log

Uporaba tmux

sudo bhunter-ts # команда запуска bhunter через tmux  
sudo tmux attach -t bhunter # подключаемся к сессии, в которой запущен bhunter

Tmux je terminalski multiplekser, zelo priročno orodje. Omogoča ustvarjanje več oken znotraj enega terminala in razdelitev oken na plošče. Z njim lahko zapustite terminal in se nato prijavite, ne da bi prekinili tekoče procese.

Skript bhunter-ts ustvari sejo tmux in okno razdeli na tri plošče. Prvi, največji, vsebuje besedilni meni. Zgornji desni vsebuje dnevnike honeypot, tukaj si lahko ogledate sporočila o poskusih prijave v honeypot. Spodnja desna plošča prikazuje informacije o napredku napada na vozlišča botnetov in o uspešnih vdorih.

Prednost te metode pred prvo je v tem, da lahko varno zapremo terminal in se vanj vrnemo pozneje, ne da bi bhunter ustavil njegovo delo. Za tiste, ki malo poznate tmux, predlagam ta goljufija.

Kot storitev

systemctl enable bhunter
systemctl start bhunter

V tem primeru omogočimo samodejni zagon bhunterja ob zagonu sistema. Pri tej metodi interakcija z bhunterjem ni zagotovljena, seznam vdrtih vozlišč pa lahko dobite iz /var/log/bhunter/hacked.log

Učinkovitost

Med delom na bhunterju mi ​​je uspelo najti in pridobiti dostop do popolnoma drugih naprav: raspberry pi, usmerjevalnikov (predvsem mikrotika), spletnih strežnikov in enkrat rudarske farme (žal je bil dostop do nje podnevi, tako da ni bilo zanimivega). zgodba). Tukaj je posnetek zaslona programa, ki prikazuje seznam vdrtih vozlišč po nekaj dneh dela:

Bhunter - vdiranje v botnet vozlišča

Na žalost učinkovitost tega orodja ni dosegla mojih pričakovanj: bhunter lahko več dni brez uspeha preizkuša gesla za vozlišča in lahko v nekaj urah vdre v več tarč. Toda to je dovolj za reden dotok novih vzorcev botnetov.

Na učinkovitost vplivajo parametri, kot so: država, v kateri se nahaja strežnik z bhunterjem, gostovanje in obseg, iz katerega je dodeljen naslov IP. Po mojih izkušnjah je bil primer, ko sem najel dva virtualna strežnika od enega gostitelja in enega od njiju so napadli botneti 2-krat pogosteje.

Napake, ki jih še nisem odpravil

Pri napadu na okužene gostitelje v nekaterih situacijah ni mogoče nedvoumno ugotoviti, ali je geslo pravilno ali ne. Takšni primeri so zabeleženi v datoteki /var/log/debug.log.

Modul Paramiko, ki se uporablja za delo s SSH, se včasih obnaša nepravilno: neskončno čaka na odgovor gostitelja, ko se poskuša z njim povezati. Eksperimentiral sem s časovniki, vendar nisem dobil želenega rezultata

Na čem je treba še delati?

Ime storitve

V skladu z RFC-4253 si odjemalec in strežnik pred namestitvijo izmenjata imena storitev, ki izvajajo protokol SSH. To ime je vsebovano v polju »SERVICE NAME«, vsebovano tako v zahtevi na strani odjemalca kot v odgovoru na strani strežnika. Polje je niz, njegovo vrednost pa je mogoče najti z uporabo wireshark ali nmap. Tukaj je primer za OpenSSH:

$ nmap -p 22 ***.**.***.** -sV
Starting Nmap ...
PORT   STATE SERVICE VERSION
22/tcp open  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocol 2.0)
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds

Vendar pa v primeru Paramiko to polje vsebuje niz, kot je "Paramiko Python sshd 2.4.2", ki lahko prestraši botnete, ki so zasnovani tako, da se "izogibajo" pastem. Zato menim, da je treba to linijo zamenjati z nečim bolj nevtralnim.

Drugi vektorji

SSH ni edino sredstvo oddaljenega upravljanja. Obstaja tudi telnet, rdp. Vredno si jih je ogledati pobližje.

razširitev

Odlično bi bilo imeti več pasti v različnih državah in iz njih centralno zbirati prijave, gesla in vdrta vozlišča v skupno bazo podatkov

Kje lahko prenesem?

V času pisanja je pripravljena samo testna različica, ki jo lahko prenesete s repozitorij na Githubu.

Vir: www.habr.com

Dodaj komentar