Vīrusu analītiķi un datoru drošības pētnieki cenšas savākt pēc iespējas vairāk jaunu botnetu paraugu. Viņu mērķiem viņi izmanto honeypotus.… Bet ko darīt, ja vēlas novērot ļaunprogrammatūru reālos apstākļos? Pakļaut savu serveri, maršrutizētāju riskam? Un ko darīt, ja piemērota ierīce nav? Tieši šie jautājumi mudināja mani izstrādāt bhunter — rīku, kas nodrošina piekļuvi botnetu mezgliem.

Pamatideja
Ir daudz veidu, kā izplatīt ļaunprātīgu programmatūru, lai paplašinātu botnetus: sākot no phishing un beidzot ar 0-day ievainojamību izmantošanu. Taču populārākais joprojām ir SSH paroli uzminēšana.
Ideja ir ļoti vienkārša. Ja no kāda botnetu mezgla tiek veikta paroli uzminēšana jūsu serverim, visticamāk, ka šis mezgls pats ir iekļuvis tīklā, izmantojot vienkāršu paroli. Tādēļ, lai iegūtu piekļuvi, jāatbild ar "atvairīšanu".
Tieši tā bhunter darbojas. Tas klausās 22. portā (SSH pakalpojums) un savāc visus lietotājvārdu un parolu komplektus, ar kuriem tiek mēģināts piekļūt. Pēc tam, izmantojot savāktās paroles, tas mēģina pieslēgties uzbrūkošajiem mezgliem.
Darba algoritms
Programmu var nosacīti sadalīt divās galvenajās daļās, kas darbojas atsevišķos pavedienos. Pirmais — honeypot. Tas apstrādā pieslēgšanās mēģinājumus, savāc unikālos lietotājvārdus un paroles (šajā gadījumā parole un lietotājvārds tiek uzskatīti par vienu veselumu), kā arī pievieno uzbrūkošo IP adreses uzbrukumiem nākotnē.
Otrā daļa atbild tieši par uzbrukumu. Turklāt uzbrukums tiek veikts divos režīmos: BurstAttack (uzbrukums secīgi) — lietotājvārdus un paroles uzminēšana no kopējā saraksta un SingleShotAttack (individuālu uzbrukumu) — uzminēšana ar parolēm, kuras izmantoja uzbrūkošais mezgls, bet vēl nav pievienotas kopējam sarakstam.
Lai iegūtu vismaz kādu lietotājvārdus un parolu bāzi tūlīt pēc palaišanas, bhunter tiek inicializēts ar sarakstu no faila /etc/bhunter/defaultLoginPairs.
Interfeiss
Ir paredzēti vairāki veidi, kā palaist bhunter:
Vienkārši ar komandu
sudo bhunterŠāda palaišana ļauj pārvaldīt bhunter caur tā tekstuālo izvēlni: pievienot pieteikumus un paroli uzbrukumam, eksportēt pieteikumu un parolu datu bāzi, norādīt uzbrukuma mērķi. Visus pārrakstītos mezglus var redzēt failā /var/log/bhunter/hacked.log
Izmantojot tmux
sudo bhunter-ts # komanda, lai palaistu bhunter caur tmux
sudo tmux attach -t bhunter # pievienojamies sesijai, kurā tiek palaists bhunter
Tmux ir termināla multiplikators, ļoti ērts rīks. Tas ļauj vienā terminālī izveidot vairākas logus un sadalīt logus paneļos. To izmantojot, var iziet no termināla un pēc tam atgriezties, nesniegdami uzsāktos procesus.
Scripts bhunter-ts izveido tmux sesiju un sadala logu trīs paneļos. Pirmajā - vislielākajā, atrodas tekstuālā izvēlne. Augšējā labajā daļā ir honeypota žurnāli, kur var redzēt ziņojumus par ieejas mēģinājumiem honeypotā. Apakšējā labajā panelī tiek parādīta informācija par uzbrukuma gaitu botu tīklu mezgliem un par veiksmīgajiem uzbrukumiem.
Šī metode ir labāka par pirmo, jo mēs varam droši aizvērt termināli un vēlāk atgriezties pie tā, tādējādi bhunter neapturēs darbu. Šiem, kas maz pazīstami ar tmux, ieteiktu .
Kā pakalpojums
systemctl enable bhunter
systemctl start bhunterŠajā gadījumā mēs ieslēdzam bhunter automātisko palaišanu sistēmas palaišanas laikā. Šajā metodē mijiedarbība ar bhunter nav paredzēta, un pārrakstīto mezglu sarakstu var iegūt no /var/log/bhunter/hacked.log
Efektivitāte
Strādājot ar bhunter, man izdevās atrast un piekļūt pilnīgi atšķirīgām ierīcēm: raspberry pi, maršrutētājiem (īpaši mikrotik), web-serveriem, un kādu reizi arī kalnrūpniecības fermai (diemžēl piekļuve tā bija tikai dienas laikā, tāpēc interesanta stāsta neradās). Šeit ir ekrānšāviņš no programmas, kur redzams pārrakstīto mezglu saraksts pēc dažām darba dienām:

Diemžēl šī rīka efektivitāte nav sasniegusi manas cerības: bhunter var jāpārbauda paroles mezgliem vairākas dienas bez rezultātiem, bet var arī uzlauzt vairākas mērķus tikai pāris stundās. Bet regulārai jaunu botnetu paraugu ieplūšanai tas ir pietiekami.
Efektivitāti ietekmē tādi parametri kā: valsts, kurā atrodas serveris ar bhunter, hostings un IP adrese, no kuras tas ir piešķirts. Manā pieredzē bija gadījums, kad es īrēju divus virtuālos serverus no viena hostinga, un viens no tiem tika uzbrukts no botnet divas reizes biežāk.
Kļūdas, kuras es pagaidām neesmu izlabojis
Uzbrukuma gadījumā inficētajiem mezgliem dažās situācijās nav iespējams nepārprotami noteikt, vai parole ir derīga vai nē. Šādu gadījumu žurnāls tiek veikts failā /var/log/debug.log.
Paramiko modulis, kas tiek izmantots darbam ar SSH, dažkārt uzvedas nepareizi: tas nonāk bezgalīgā gaidīšanas stāvoklī, mēģinot izveidot savienojumu ar mezglu. Es eksperimentēju ar taimeriem, bet vēlamo rezultātu neieguvu.
Uz ko vēl ir jāstrādā?
Pakalpojuma nosaukums
Saskaņā ar RFC-4253 klients un serveris pirms savienojuma izveides apmainās ar pakalpojumu nosaukumiem, kas īsteno SSH protokolu. Šis nosaukums ietilpst laukā "SERVICE NAME", kas atrodams gan klienta pieprasījumā, gan servera atbildē. Lauks ir virkne, un tā vērtību var uzzināt, izmantojot wireshark vai nmap. Lūk, piemērs OpenSSH:
$ nmap -p 22 ***.**.***.** -sV
Sāk Nmap ...
PORT STĀVOKLIS SERVISS VERSIJA
22/tcp atvērts ssh <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protokols 2.0)
Nmap pabeigts: 1 IP adrese (1 viesis aktīvs) skannēts 0.47 sekundēs
Tomēr, runājot par Paramiko, šis lauks satur virkni formātā "Paramiko Python sshd 2.4.2", kas var atbaidīt botnetus, kuriem ir iekļauts "izvairīšanās" no slazdiem. Tāpēc uzskatu, ka ir nepieciešams aizstāt šo virknē ar kaut ko neitrālāku.
Citi vektori
SSH nav vienīgais attālināta pārvaldības līdzeklis. Ir vēl telnet, rdp. Jāpievērš uzmanība arī tiem.
Paplašinājums
Būtu lieliski, ja būtu vairāki slazdi dažādās valstīs un centralizēti vākt no tiem pieteikumus, paroles un uzlauztus mezglus kopējā datu bāzē.
Kur lejupielādēt?
Raksta rakstīšanas brīdī ir pieejama tikai testēšanas versija, kuru var lejupielādēt no .
Avots: habr.com
