Bhunter — het hacken van botnet-knooppunten

Virusanalisten en onderzoekers in de computerbeveiliging streven ernaar zoveel mogelijk monsters van nieuwe botnets te verzamelen. Voor hun doeleinden gebruikten ze honeypots.… Maar wat als je malware in echte omstandigheden wilt observeren? Je eigen server of router in gevaar brengen? En wat als er geen geschikt apparaat is? Precies deze vragen brachten me op het idee om bhunter te creĆ«ren — een tool om toegang te krijgen tot knooppunten van botnets.

Bhunter — het hacken van botnet-knooppunten

Het belangrijkste idee

Er zijn veel manieren om kwaadaardige software te verspreiden voor de uitbreiding van botnets: van phishing tot het exploiteren van zero-day kwetsbaarheden. Maar de meest voorkomende methode blijft tot nu toe het raden van wachtwoorden voor SSH.

Het idee is heel eenvoudig. Als er vanaf een knooppunt in een botnet wachtwoorden voor jouw server worden gekraakt, is de kans groot dat dit knooppunt zelf is overgenomen door het raden van eenvoudige wachtwoorden. Om toegang te krijgen, moet je hem gewoon 'met gelijke munt' beantwoorden.

Zo werkt bhunter. Het luistert op poort 22 (de SSH-service) en verzamelt alle inloggegevens en wachtwoorden waarmee geprobeerd wordt verbinding te maken. Vervolgens probeert het, met de verzamelde wachtwoorden, verbinding te maken met de aanvallende knooppunten.

Werkwijze

De applicatie kan ruwweg worden onderverdeeld in 2 hoofddelen die in afzonderlijke threads werken. De eerste is de honeypot. Het verwerkt inlogpogingen, verzamelt unieke inloggegevens en wachtwoorden (in dit geval wordt het paar login+wachtwoord als ƩƩn geheel beschouwd), en voegt ook IP-adressen die probeerden verbinding te maken toe aan de wachtrij voor een toekomstige aanval.

De tweede deel is verantwoordelijk voor de aanval zelf. De aanval wordt uitgevoerd in twee modi: BurstAttack (aanval in een wachtrij) — het raden van inloggegevens en wachtwoorden uit een algemene lijst en SingleShotAttack (aanval met enkele schoten) — het raden van wachtwoorden die door het aangevallen knooppunt zijn gebruikt, maar nog niet aan de algemene lijst zijn toegevoegd.

Om direct na de start enige basis van inloggegevens en wachtwoorden te hebben, wordt bhunter geĆÆnitialiseerd met een lijst uit het bestand /etc/bhunter/defaultLoginPairs.

Interface

Er zijn verschillende manieren om bhunter te starten:

Gewoon met het commando

sudo bhunter

Met deze opstartmogelijkheid is het mogelijk om bhunter te beheren via het tekstmenu: logins en wachtwoorden voor aanvallen toevoegen, de database van logins en wachtwoorden exporteren, een doel voor de aanval opgeven. Alle gehackte knooppunten kunnen worden bekeken in het bestand /var/log/bhunter/hacked.log

Gebruikmakend van tmux

sudo bhunter-ts # opdracht om bhunter te starten via tmux  
sudo tmux attach -t bhunter # verbinding maken met de sessie waarin bhunter draait

Tmux is een terminalmultiplexer en een zeer handige tool. Hiermee kun je meerdere vensters binnen ƩƩn terminal maken en vensters splitsen in panelen. Door het te gebruiken kun je de terminal sluiten en later weer inloggen zonder de lopende processen te onderbreken.

Het script bhunter-ts maakt een tmux-sessie aan en splitst het venster in drie panelen. In het grootste paneel bevindt zich het tekstmenu. Het bovenste rechterpaneel bevat de logs van de honeypot, waar je berichten kunt zien over inlogpogingen op de honeypot. In het onderste rechterpaneel worden informatie over de voortgang van de aanvallen op botnetknooppunten en succesvolle hacks weergegeven.

Het voordeel van deze methode ten opzichte van de eerste is dat we de terminal gerust kunnen sluiten en later terug kunnen keren, terwijl bhunter doorgaat met werken. Aan degenen die niet bekend zijn met tmux raad ik dit spiekbriefje aan.

As a service

systemctl enable bhunter
systemctl start bhunter

In dit geval schakelen we de automatische start van bhunter in bij het opstarten van het systeem. In deze methode is interactie met bhunter niet voorzien, en de lijst van gehackte knooppunten kan worden verkregen uit /var/log/bhunter/hacked.log

Efficiƫntie

Tijdens mijn werk aan bhunter heb ik toegang gekregen tot allerlei verschillende apparaten: raspberry pi, routers (vooral mikrotik), webservers, en op een dag een mijnbouwfarm (helaas was de toegang daar maar een dag, dus er is geen interessant verhaal over gekomen). Hier is een screenshot van het programma, waarop de lijst van gehackte knooppunten te zien is na enkele dagen werk:

Bhunter — het hacken van botnet-knooppunten

Helaas heeft de effectiviteit van deze tool mijn verwachtingen niet gehaald: bhunter kan dagenlang wachtwoorden proberen zonder resultaat, maar kan ook binnen enkele uren meerdere doelen hacken. Maar voor een reguliere instroom van nieuwe monster botnets is dit voldoende.

De effectiviteit wordt beïnvloed door parameters zoals: het land waar de server met bhunter zich bevindt, de hosting en het bereik waaruit het IP-adres is toegewezen. Op basis van mijn ervaring was er een geval waarin ik twee virtuele servers bij één hoster huurde, en één daarvan werd twee keer zo vaak aangevallen door botnets.

Bugs die ik nog niet heb opgelost

Bij een aanval op geĆÆnfecteerde knooppunten is het in sommige situaties niet mogelijk om eenduidig vast te stellen of het wachtwoord correct was of niet. De logging van dergelijke gevallen wordt uitgevoerd in het bestand /var/log/debug.log.

De Paramiko-module, die wordt gebruikt voor SSH, gedraagt zich soms onjuist: het blijft oneindig wachten op een antwoord van het knooppunt wanneer het probeert verbinding te maken. Ik heb geƫxperimenteerd met timers, maar het gewenste resultaat niet behaald.

Waaraan moet nog gewerkt worden?

Dienstnaam

Volgens RFC-4253 wisselen de cliƫnt en server voor het opzetten van een verbinding de namen van de diensten uit die het SSH-protocol implementeren. Deze naam staat in het veld "SERVICE NAME", dat zowel in het verzoek van de cliƫnt als in het antwoord van de server staat. Het veld is een tekenreeks en de waarde kan worden achterhaald met behulp van wireshark of nmap. Hier is een voorbeeld voor OpenSSH:

$ nmap -p 22 ***.**.***.** -sV
Nmap starten ...
POORT   STATUS DIENST VERSIE
22/tcp open  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocol 2.0)
Nmap klaar: 1 IP-adres (1 host actief) gescand in 0.47 seconden

Echter, in het geval van Paramiko bevat dit veld een tekenreeks van het type "Paramiko Python sshd 2.4.2", wat botnets kan afschrikken die 'ontwijking' van valstrikken hebben ingebouwd. Daarom vind ik het noodzakelijk om deze tekenreeks door iets neutralers te vervangen.

Andere vectoren

SSH is niet het enige middel voor externe beheersing. Er zijn ook telnet en RDP. Het is de moeite waard om ook naar hen te kijken.

Uitbreiding

Het zou geweldig zijn om verschillende valstrikken in verschillende landen te hebben en centraal inloggegevens, wachtwoorden en gehackte knooppunten in een gezamenlijke database te verzamelen.

Waar te downloaden?

Op het moment van schrijven is er alleen een testversie beschikbaar, die kan worden gedownload van de repository op Github.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster