Bhunter - хакирање на јазли на ботнет

Вирусни аналитичари и истражувачи за компјутерска безбедност се тркаат да соберат што е можно повеќе примероци од нови ботнети. Тие користат honeypots за свои цели... Но, што ако сакате да го набљудувате малициозниот софтвер во реални услови? Ставете го вашиот сервер или рутер на ризик? Што ако нема соодветен уред? Токму овие прашања ме поттикнаа да создадам bhunter, алатка за добивање пристап до јазлите на ботнет.

Bhunter - хакирање на јазли на ботнет

централната идеја

Постојат многу начини да се шири малициозен софтвер за да се прошират ботнетите: од фишинг до искористување на пропусти од 0 дена. Но, најчестиот метод е сè уште брутално форсирање на лозинки за SSH.

Идејата е многу едноставна. Ако некој јазол на ботнет се обидува да присили лозинки за вашиот сервер, тогаш најверојатно самиот овој јазол е фатен со едноставни лозинки со брутално принудување. Ова значи дека за да добиете пристап до него, само треба да возвратите.

Токму вака функционира хантер. Ја слуша портата 22 (услуга SSH) и ги собира сите најавувања и лозинки со кои се обидуваат да се поврзат со неа. Потоа, користејќи ги собраните лозинки, се обидува да се поврзе со напаѓачките јазли.

Алгоритам на работа

Програмата може да се подели на 2 главни дела, кои работат во посебни нишки. Првиот е honeypot. Обработува обиди за најавување, собира уникатни најавувања и лозинки (во овој случај, парот најава + лозинка се смета како единствена целина), а исто така додава IP адреси кои се обиделе да се поврзат со редот за понатамошен напад.

Вториот дел е директно одговорен за нападот. Покрај тоа, нападот се изведува во два режима: BurstAttack (напад со рафал) - најавувања и лозинки со брутална сила од општата листа и SingleShotAttack (напад со еден истрел) - лозинки со брутална сила кои биле користени од нападнатиот јазол, но сè уште не се додадена на генералниот список.

За да има барем одредена база на податоци за најавувања и лозинки веднаш по стартувањето, bhunter се иницијализира со листа од датотеката /etc/bhunter/defaultLoginPairs.

интерфејс

Постојат неколку начини за лансирање на хантер:

Само како тим

sudo bhunter

Со ова лансирање, можно е да се контролира bhunter преку неговото текстуално мени: додадете најавувања и лозинки за напад, извезете база на податоци со најавувања и лозинки, наведете цел за напад. Сите хакирани јазли може да се видат во датотеката /var/log/bhunter/hacked.log

Користење на tmux

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

Tmux е терминален мултиплексер, многу удобна алатка. Ви овозможува да креирате неколку прозорци во еден терминал и да ги поделите прозорците на панели. Користејќи го, можете да излезете од терминалот и потоа да се најавите без да ги прекинувате процесите што се извршуваат.

Скриптата bhunter-ts создава tmux сесија и го дели прозорецот на три панели. Првиот, најголем, содржи текстуално мени. Горниот десен дел содржи дневници на honeypot, овде можете да видите пораки за обиди да се најавите во honeypot. Долниот десен панел прикажува информации за напредокот на нападот на јазлите на ботнет и за успешните хакери.

Предноста на овој метод во однос на првиот е што можеме безбедно да го затвориме терминалот и да се вратиме на него подоцна, без bhunter да ја прекине неговата работа. За оние кои малку се запознаени со tmux, предлагам овој мамечки лист.

Како услуга

systemctl enable bhunter
systemctl start bhunter

Во овој случај, овозможуваме автоматско стартување на bhunter при стартување на системот. Во овој метод, интеракцијата со bhunter не е обезбедена, а листата на хакирани јазли може да се добие од /var/log/bhunter/hacked.log

Ефективност

Додека работев на bhunter, успеав да најдам и да добијам пристап до сосема различни уреди: raspberry pi, рутери (особено mikrotik), веб сервери и еднаш фарма за рударство (за жал, пристапот до неа беше преку ден, така што немаше интересно приказна ). Еве слика од екранот на програмата, која покажува листа на хакирани јазли по неколку дена работа:

Bhunter - хакирање на јазли на ботнет

За жал, ефективноста на оваа алатка не ги достигна моите очекувања: bhunter може да проба лозинки на јазли неколку дена без успех и може да хакира неколку цели за неколку часа. Но, ова е доволно за редовен прилив на нови примероци на ботнет.

Ефективноста е под влијание на такви параметри како што се: земјата во која се наоѓа серверот со bhunter, хостинг и опсегот од кој е распределена IP адресата. Според моето искуство, имаше случај кога изнајмив два виртуелни сервери од еден хостер, а еден од нив беше нападнат од ботнет 2 пати почесто.

Грешки кои сè уште не сум ги поправил

Кога се напаѓаат инфицирани домаќини, во некои ситуации не е можно недвосмислено да се утврди дали лозинката е точна или не. Таквите случаи се најавени во датотеката /var/log/debug.log.

Модулот Paramiko, кој се користи за работа со SSH, понекогаш се однесува неправилно: бескрајно чека одговор од домаќинот кога ќе се обиде да се поврзе со него. Експериментирав со тајмери, но не го добив посакуваниот резултат

На што друго треба да се работи?

Името на сервисот

Според RFC-4253, клиентот и серверот разменуваат имиња на услуги кои го имплементираат протоколот SSH пред инсталацијата. Ова име е содржано во полето „ИМЕ НА УСЛУГА“, содржано и во барањето од страната на клиентот и во одговорот од страната на серверот. Полето е низа, а нејзината вредност може да се најде со помош на wireshark или nmap. Еве пример за 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

Меѓутоа, во случајот на Paramiko, ова поле содржи низа како „Paramiko Python sshd 2.4.2“, што може да ги исплаши ботнетовите што се дизајнирани да „избегнат“ замки. Затоа, мислам дека е неопходно оваа линија да се замени со нешто понеутрално.

Други вектори

SSH не е единственото средство за далечинско управување. Има и телнет, rdp. Вреди да ги погледнете подетално.

продолжување

Би било одлично да имате неколку стапици во различни земји и централно да собирате најавувања, лозинки и хакирани јазли од нив во заедничка база на податоци

Каде можам да преземам?

За време на пишувањето, готова е само тест верзија, која може да се преземе од складиште на Github.

Извор: www.habr.com

Додадете коментар