Bhunter - het hacken van botnetknooppunten

Virusanalisten en computerbeveiligingsonderzoekers haasten zich om zoveel mogelijk voorbeelden van nieuwe botnets te verzamelen. Ze gebruiken honeypots voor hun eigen doeleinden... Maar wat als je de malware in reële omstandigheden wilt observeren? Uw server of router in gevaar brengen? Wat als er geen geschikt apparaat is? Het waren deze vragen die mij ertoe brachten bhunter te creëren, een hulpmiddel om toegang te krijgen tot botnetknooppunten.

Bhunter - het hacken van botnetknooppunten

kerngedachte

Er zijn veel manieren om malware te verspreiden om botnets uit te breiden: van phishing tot het exploiteren van 0-day-kwetsbaarheden. Maar de meest gebruikelijke methode is nog steeds het bruut forceren van SSH-wachtwoorden.

Het idee is heel eenvoudig. Als een botnetknooppunt wachtwoorden voor uw server bruut probeert te forceren, dan is dit knooppunt hoogstwaarschijnlijk zelf onderschept door eenvoudige wachtwoorden bruut te forceren. Dit betekent dat u, om er toegang toe te krijgen, alleen maar een antwoord hoeft te geven.

Dit is precies hoe bhunter werkt. Luistert naar poort 22 (SSH-service) en verzamelt alle logins en wachtwoorden waarmee ze verbinding proberen te maken. Vervolgens probeert het met behulp van de verzamelde wachtwoorden verbinding te maken met aanvallende knooppunten.

Algoritme van het werk

Het programma kan worden onderverdeeld in 2 hoofdonderdelen, die in afzonderlijke threads werken. De eerste is honingpot. Verwerkt inlogpogingen, verzamelt unieke logins en wachtwoorden (in dit geval wordt het login + wachtwoord-paar als één geheel beschouwd) en voegt ook IP-adressen toe die probeerden verbinding te maken met de wachtrij voor verdere aanvallen.

Het tweede deel is direct verantwoordelijk voor de aanval. Bovendien wordt de aanval in twee modi uitgevoerd: BurstAttack (burst-aanval) - brute force-aanmeldingen en wachtwoorden uit de algemene lijst en SingleShotAttack (single-shot-aanval) - brute force-wachtwoorden die door het aangevallen knooppunt zijn gebruikt, maar nog niet zijn gebruikt toegevoegd aan de algemene lijst.

Om onmiddellijk na het opstarten over een database met logins en wachtwoorden te beschikken, wordt bhunter geïnitialiseerd met een lijst uit het bestand /etc/bhunter/defaultLoginPairs.

interface

Er zijn verschillende manieren om bhunter te starten:

Gewoon als team

sudo bhunter

Met deze lancering is het mogelijk om bhunter te besturen via het tekstmenu: voeg logins en wachtwoorden toe voor een aanval, exporteer een database met logins en wachtwoorden, specificeer een doelwit voor een aanval. Alle gehackte knooppunten zijn te zien in het bestand /var/log/bhunter/hacked.log

Tmux gebruiken

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

Tmux is een terminalmultiplexer, een erg handig hulpmiddel. Hiermee kunt u binnen één terminal meerdere vensters maken en de vensters in panelen opsplitsen. Hiermee kunt u de terminal afsluiten en vervolgens inloggen zonder lopende processen te onderbreken.

Het bhunter-ts-script creëert een tmux-sessie en splitst het venster in drie panelen. De eerste, grootste, bevat een tekstmenu. Rechtsboven staan ​​honeypot-logs, hier kun je berichten zien over pogingen om in te loggen op de honeypot. Het paneel rechtsonder geeft informatie weer over de voortgang van de aanval op botnetknooppunten en over succesvolle hacks.

Het voordeel van deze methode ten opzichte van de eerste is dat we de terminal veilig kunnen sluiten en er later naar kunnen terugkeren, zonder dat bhunter zijn werk moet onderbreken. Voor degenen die weinig bekend zijn met tmux, stel ik voor dit spiekbriefje.

Als service

systemctl enable bhunter
systemctl start bhunter

In dit geval schakelen we bhunter autostart in bij het opstarten van het systeem. Bij deze methode is er geen interactie met bhunter mogelijk en kan de lijst met gehackte knooppunten worden verkregen via /var/log/bhunter/hacked.log

effectiviteit

Terwijl ik aan bhunter werkte, slaagde ik erin om totaal verschillende apparaten te vinden en er toegang toe te krijgen: Raspberry Pi, routers (vooral mikrotik), webservers en ooit een mijnbouwboerderij (helaas was de toegang daartoe overdag, dus er was geen interessante verhaal ). Hier is een screenshot van het programma, dat een lijst met gehackte knooppunten toont na enkele dagen werken:

Bhunter - het hacken van botnetknooppunten

Helaas voldeed de effectiviteit van deze tool niet aan mijn verwachtingen: bhunter kan zonder succes wachtwoorden voor knooppunten een aantal dagen proberen, en kan binnen een paar uur verschillende doelen hacken. Maar dit is genoeg voor een regelmatige toestroom van nieuwe botnetmonsters.

De effectiviteit wordt beïnvloed door parameters als: het land waarin de server met bhunter zich bevindt, de hosting en het bereik waaruit het IP-adres wordt toegewezen. In mijn ervaring was er een geval waarin ik twee virtuele servers huurde van één host, en een daarvan werd twee keer vaker aangevallen door botnets.

Bugs die ik nog niet heb opgelost

Bij het aanvallen van geïnfecteerde hosts is het in sommige situaties niet mogelijk om ondubbelzinnig te bepalen of het wachtwoord correct is of niet. Dergelijke gevallen worden vastgelegd in het bestand /var/log/debug.log.

De Paramiko-module, die wordt gebruikt om met SSH te werken, gedraagt ​​zich soms verkeerd: hij wacht eindeloos op een reactie van de host wanneer hij probeert er verbinding mee te maken. Ik heb geëxperimenteerd met timers, maar kreeg niet het gewenste resultaat

Waar moet nog aan gewerkt worden?

Servicenaam

Volgens RFC-4253 wisselen de client en server vóór de installatie namen uit van services die het SSH-protocol implementeren. Deze naam staat in het veld “SERVICENAAM”, zowel in het verzoek van de clientzijde als in het antwoord van de serverzijde. Het veld is een string en de waarde ervan kan worden gevonden met behulp van wireshark of nmap. Hier is een voorbeeld voor 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

In het geval van Paramiko bevat dit veld echter een string zoals “Paramiko Python sshd 2.4.2”, die botnets kan afschrikken die zijn ontworpen om vallen te “vermijden”. Daarom denk ik dat het nodig is om deze lijn te vervangen door iets neutralers.

Andere vectoren

SSH is niet de enige manier voor beheer op afstand. Er is ook telnet, rdp. Het is de moeite waard om ze van dichterbij te bekijken.

uitbreiding

Het zou geweldig zijn om meerdere valstrikken in verschillende landen te hebben en hiervan centraal logins, wachtwoorden en gehackte knooppunten te verzamelen in een gemeenschappelijke database

Waar kan ik downloaden?

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

Bron: www.habr.com

Voeg een reactie