Virusanalytiker und IT-Sicherheitsexperten versuchen, so viele Proben neuer Botnetze wie möglich zu sammeln. Zu diesem Zweck nutzen sie Honeypots.⊠Aber was, wenn man Schadsoftware unter realen Bedingungen beobachten möchte? Möchte man seinen eigenen Server oder Router gefĂ€hrden? Und was, wenn keine geeigneten GerĂ€te zur VerfĂŒgung stehen? Diese Fragen fĂŒhrten mich zur Entwicklung von bhunter â einem Tool, das Zugang zu Botnetz-Knoten bietet.

Die Grundidee
Es gibt viele Wege, wie Schadsoftware verbreitet wird, um Botnetze zu vergröĂern: angefangen bei Phishing bis hin zur Ausnutzung von 0-Day-Schwachstellen. Doch die hĂ€ufigste Methode bleibt nach wie vor das Erraten von SSH-Passwörtern.
Die Idee ist ganz einfach. Wenn von einem Botnetz-Knoten aus versucht wird, Passwörter fĂŒr Ihren Server zu erraten, wurde dieser Knoten wahrscheinlich selbst durch das Erraten einfacher Passwörter ĂŒbernommen. Das bedeutet, um Zugriff zu erhalten, muss man ihm einfach mit 'Gegenseitigkeit' antworten.
So funktioniert bhunter. Es ĂŒberwacht den Port 22 (SSH-Dienst) und sammelt alle Logins und Passwörter, mit denen versucht wird, eine Verbindung herzustellen. AnschlieĂend versucht es, unter Verwendung der gesammelten Passwörter, sich mit den angreifenden Knoten zu verbinden.
Funktionsweise
Die Software lĂ€sst sich grob in zwei Hauptteile unterteilen, die in separaten Threads arbeiten. Der erste Teil ist das Honeypot. Er verarbeitet die Anmeldeversuche, sammelt einzigartige Logins und Passwörter (in diesem Fall wird das Login-Passwort-Paar als Einheit betrachtet) und fĂŒgt die IP-Adressen, die versucht haben, sich zu verbinden, zur weiteren Attacke in die Warteschlange.
Der zweite Teil ist direkt fĂŒr den Angriff verantwortlich. Der Angriff erfolgt in zwei Modi: BurstAttack (Angriff in der Warteschlange) â Durchgehen der Logins und Passwörter aus einer allgemeinen Liste und SingleShotAttack (Einzelangriff) â Durchgehen der Passwörter, die vom angegriffenen Knoten verwendet wurden, aber noch nicht zur allgemeinen Liste hinzugefĂŒgt wurden.
Um sofort eine gewisse Basis an Logins und Passwörtern nach dem Start zu haben, wird bhunter mit einer Liste aus der Datei /etc/bhunter/defaultLoginPairs initialisiert.
BenutzeroberflÀche
Es sind mehrere Möglichkeiten vorgesehen, bhunter zu starten:
Einfach mit dem Befehl
sudo bhunterMit diesem Start haben Sie die Möglichkeit, bhunter ĂŒber sein textbasiertes MenĂŒ zu steuern: Sie können Anmeldungen und Passwörter fĂŒr Angriffe hinzufĂŒgen, die Datenbank von Anmeldungen und Passwörtern exportieren und Ziele fĂŒr Angriffe angeben. Alle gehackten Knoten können in der Datei /var/log/bhunter/hacked.log eingesehen werden.
Verwendung von tmux
sudo bhunter-ts # Befehl zum Starten von bhunter ĂŒber tmux
sudo tmux attach -t bhunter # Verbindung zur Sitzung herstellen, in der bhunter lÀuft
Tmux ist ein Terminal-Multiplexer, ein sehr nĂŒtzliches Tool. Es ermöglicht, mehrere Fenster innerhalb eines Terminals zu erstellen und diese Fenster in Paneele zu unterteilen. Mit tmux können Sie das Terminal schlieĂen und spĂ€ter zurĂŒckkehren, ohne laufende Prozesse zu unterbrechen.
Das Skript bhunter-ts erstellt eine tmux-Sitzung und teilt das Fenster in drei Paneele auf. In der gröĂten, der ersten Paneele, befindet sich das textbasierte MenĂŒ. Die obere rechte Paneele enthĂ€lt die Protokolle des Honeypots, wo Sie Nachrichten ĂŒber Anmeldeversuche auf dem Honeypot sehen können. In der unteren rechten Paneele wird die Information ĂŒber den Fortschritt der Angriffe auf Bot-Netzknoten und erfolgreiche Hacks angezeigt.
Der Vorteil dieser Methode gegenĂŒber der vorherigen besteht darin, dass wir das Terminal ruhig schlieĂen und spĂ€ter darauf zurĂŒckkommen können, ohne dass bhunter seine Arbeit unterbricht. FĂŒr diejenigen, die wenig mit tmux vertraut sind, empfehle ich .
Als Dienst
systemctl enable bhunter
systemctl start bhunterIn diesem Fall aktivieren wir den Autostart von bhunter beim Systemstart. In dieser Methode ist keine Interaktion mit bhunter vorgesehen, und die Liste der gehackten Knoten kann aus /var/log/bhunter/hacked.log abgerufen werden.
Effizienz
WĂ€hrend meiner Arbeit an bhunter konnte ich auf ganz unterschiedliche GerĂ€te zugreifen: Raspberry Pi, Router (insbesondere Mikrotik), Webserver und einmal sogar auf eine Mining-Farm (leider war der Zugang nur einen Tag lang verfĂŒgbar, daher ist die Geschichte nicht besonders spannend). Hier ist ein Screenshot des Programms, der die Liste der gehackten Knoten nach ein paar Tagen Arbeit zeigt:

Leider hat die EffektivitĂ€t dieses Werkzeugs meine Erwartungen nicht erfĂŒllt: bhunter kann Passwörter fĂŒr Knoten tagelang ohne Erfolg testen, kann aber in wenigen Stunden mehrere Ziele kompromittieren. Dennoch reicht es fĂŒr einen regelmĂ€Ăigen Zustrom neuer Botnet-Proben.
Die Effizienz wird durch Parameter wie das Land, in dem der Server mit bhunter steht, das Hosting und den Bereich, aus dem die IP-Adresse zugewiesen wird, beeinflusst. Aus meiner Erfahrung gab es einen Fall, in dem ich zwei virtuelle Server bei demselben Anbieter gemietet habe, und einer von ihnen wurde doppelt so hÀufig von Botnets angegriffen.
Bugs, die ich bisher nicht behoben habe
Bei Angriffe auf infizierte Knoten kann es in einigen Situationen schwierig sein, eindeutig zu bestimmen, ob das Passwort korrekt war oder nicht. Die Protokollierung solcher FĂ€lle erfolgt in der Datei /var/log/debug.log.
Das Paramiko-Modul, das fĂŒr die Arbeit mit SSH verwendet wird, verhĂ€lt sich manchmal inkorrekt: Es geht in eine endlose Warteschleife, wenn es versucht, sich mit dem Knoten zu verbinden. Ich habe mit Timern experimentiert, aber das gewĂŒnschte Ergebnis nicht erzielt.
Woran muss noch gearbeitet werden?
Service-Name
GemÀà RFC-4253 tauschen Client und Server vor der Verbindung die Namen der Dienste aus, die das SSH-Protokoll implementieren. Der Name befindet sich im Feld âSERVICE NAMEâ, das sowohl in der Anfrage des Clients als auch in der Antwort des Servers enthalten ist. Dieses Feld ist ein String, und seinen Wert kann man mit Wireshark oder Nmap ermitteln. Hier ein Beispiel fĂŒr OpenSSH:
$ nmap -p 22 ***.**.***.** -sV
Starte Nmap ...
PORT STATUS DIENSTLEISTUNG VERSION
22/tcp offen ssh <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (Protokoll 2.0)
Nmap abgeschlossen: 1 IP-Adresse (1 Host aktiv) in 0,47 Sekunden gescannt
Im Falle von Paramiko enthĂ€lt dieses Feld jedoch eine Zeichenfolge wie «Paramiko Python sshd 2.4.2», die Botnets abschrecken kann, die mit «Vermeidung» von Fallen ausgestattet sind. Daher halte ich es fĂŒr notwendig, diese Zeichenfolge durch etwas Neutraleres zu ersetzen.
Weitere Vektoren
SSH ist nicht das einzige Mittel zur Fernverwaltung. Es gibt auch Telnet und RDP, die ebenfalls in Betracht gezogen werden sollten.
Erweiterung
Es wĂ€re groĂartig, mehrere Fallen in verschiedenen LĂ€ndern zu haben und zentral Logins, Passwörter und gehackte Nodes in einer gemeinsamen Datenbank zu sammeln.
Wo herunterladen?
Zum Zeitpunkt des Schreibens des Artikels ist nur eine Testversion verfĂŒgbar, die heruntergeladen werden kann von .
Quelle: habr.com
