Viiruste analüütikud ja arvutiturbe eksperdid püüavad koguda võimalikult palju uusi botivõrkude näidiseid. Oma eesmärkide saavutamiseks kasutavad nad honeypotte... Aga mida teha, kui soovid jälgida pahavara reaalsetes tingimustes? Kas panna oma server või ruuter ohtu? Ent mida teha, kui sobivat seadet pole? Need küsimused ajendasid mind looma bhunteri — tööriista, et saada juurdepääs botivõrkude sõlmedele.

Peamine idee
On palju viise pahavara levitamiseks botivõrkude laienemiseks: alates fišingust kuni 0-päevaste haavatavuste ärakasutamiseni. Kuid kõige levinum meetod on endiselt SSH paroolide proovimine.
Idee on väga lihtne. Kui mõnelt botivõrgusõlmelt proovitakse parooli teie serverisse, on tõenäoliselt see sõlm ise saanud nakatunud lihtsate paroolide proovimisel. Seega, et sellele juurdepääs saada, tuleb lihtsalt vastata «vastastikuste» suhtlemisega.
Just这样 bhunter的工作原理。它监听22端口(SSH服务),并收集所有尝试连接的登录名和密码。然后,使用收集到的密码,尝试连接到攻击节点。
Tööalgoritm
该程序大致可以分为两个主要部分,这两个部分在不同的线程中运行。第一部分是蜜罐。它处理登录尝试,收集独特的登录名和密码(在这种情况下,登录名和密码对被视为一个整体),并将尝试连接的IP地址添加到队列中以便后续攻击。
第二部分负责直接攻击。攻击有两种模式:BurstAttack(队列攻击)——从总列表中暴力破解登录名和密码;和SingleShotAttack(单发攻击)——暴力破解已经被攻击节点使用过但尚未添加到总列表中的密码。
为了在启动后立即拥有一些登录名和密码的基础,bhunter使用来自文件/etc/bhunter/defaultLoginPairs的列表进行初始化。
Liides
bhunter提供了几种启动方式:
只需使用命令
sudo bhunterSelle käivitamise korral on võimalik hallata bhunter'it tema tekstimenüü kaudu: lisada sissetungi jaoks kasutajanimesid ja paroole, eksportida kasutajanimi ja paroolibaasi, märkida sihtmärk rünnakuks. Kõiki häkitud sõlmi saab näha failis /var/log/bhunter/hacked.log
Kasutades tmux
sudo bhunter-ts # käsk bhunter'i käivitamiseks läbi tmux
sudo tmux attach -t bhunter # ühendame sessiooni, kus bhunter on käimas
Tmux on terminali multiplexer, väga mugav tööriist. See võimaldab ühes terminalis luua mitu akent ja jagada aknad paneelideks. Selle kasutamisel saab terminalist välja minna ja hiljem tagasi tulla, katkestamata käimasolevaid protsesse.
Skript bhunter-ts loob tmux sessiooni ja jagab akna kolme paneeli. Esimeses — kõige suuremas, asub tekstimenüü. Ülemine parem nurk sisaldab honeypoti logisid, kus saab näha sisselogimisproovide sõnumeid honeypot'ile. Alumises paremas paneelis kuvatakse teave botivõrkude sõlmede rünnaku käigu ja eduka häkitsemise kohta.
Selle meetodi eelis esimesega on see, et me võime julgelt terminali sulgeda ja hiljem tagasi tulla, ilma et bhunter peataks oma töö. Neile, kes ei ole tmux'iga palju tuttavad, soovitan .
Teenusena
systemctl enable bhunter
systemctl start bhunterSel juhul lubame bhunteri automaatse käivitamise süsteemi käivitamisel. Selles meetodis ei ole bhunteriga suhtlemine ette nähtud ning loetelu rikutud sõlmedest saab /var/log/bhunter/hacked.log failist
Tõhusus
Bhunteriga töötades olen suutnud leida ja juurde pääseda täiesti erinevatele seadmetele: raspberry pi, ruuteritele (eriti mikrotik), veebiserveritele, ja kord ka kaevandustalule (kahjuks oli sellele juurdepääs ainult päevaks, seega huvitavat lugu ei tulnud). Siin on ekraanipilt programmist, kus on näha rikutud sõlmede nimekiri pärast mitmeid päevi tööd:

Kahjuks ei ole see tööriist saavutanud minu ootusi: bhunter võib sõlmede paroolide proovimist mitu päeva ilma tulemusi andmata, või võib murda mitu sihtmärki vaid paaritunniga. Kuid uute botneti koopiate regulaarseks vooluks piisab sellest.
Tõhusust mõjutavad sellised parameetrid nagu: riik, kus asub server bhunteriga, hostimine ja vahemik, millest IP-aadress eraldatakse. Minu kogemuse põhjal oli juhtum, kus rentisin kaks virtuaalset serverit ühest hostimisest ning üks neist oli kaks korda sagedamini botnetide rünnakute all.
Vigade nimekiri, mille olen veel parandamata
Rünnaku ajal nakatatud sõlmedele ei ole mõnel juhul võimalik selgelt määrata, kas parool sobis või mitte. Selliste juhtumite logimist hoitakse failis /var/log/debug.log.
Paramiko moodul, mida kasutatakse SSH-ga töötamiseks, käitub vahel ebaõigesti: see jääb lõputusse ootusse vastuse pärast sõlme, kui püüab sellele ühendust luua. Olen katsetanud taimeritega, kuid soovitud tulemust ei saanud.
Millise kallal tuleb veel töötada?
Teenuse nimi
Vastavalt RFC-4253-le vahetavad klient ja server enne ühenduse loomist teenuse nimed, mis rakendavad SSH protokolli. See nimi on sisaldatud 'SERVICE NAME' väljas, mis on nii kliendi päringus kui ka serveri vastuses. Väli on string ja selle väärtuse saab teada, kasutades wireshark'i või nmap'i. Siin on näide OpenSSH jaoks:
$ nmap -p 22 ***.**.***.** -sV
Nmap alustamine ...
PORT STATE SERVICE VERSION
22/tcp avatud ssh <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protokoll 2.0)
Nmap lõpetatud: 1 IP-aadress (1 host aktiivne) skaneeritud 0.47 sekundiga
Kuid Paramiko puhul sisaldab see väli sellist stringi nagu „Paramiko Python sshd 2.4.2“, mis võib hirmutada botnet’e, millele on programmeeritud „püüniste vältimine“. Seetõttu arvan, et oleks vajalik see string asendada millegagi neutraalsemaga.
Teised vektorid
SSH ei ole ainus kaugjuhtimise vahend. On veel telnet, rdp. Tasub ka neile pilk heita.
Laiendus
Oleks tore omada mitmeid püüniseid erinevates riikides ja koguda neist kesksetesse andmebaasidesse logisid, paroole ja rikutud sõlmi.
Kus alla laadida?
Artikli kirjutamise hetkel on saadaval ainult testversioon, mille saab alla laadida .
Allikas: habr.com
