Sie sind an Cloud Computing interessiert? Legen Sie jetzt los

Dark background with blue code overlay

Panchans Mining Rig: Ein neues golangbasiertes Peer-to-Peer-Botnet lässt grüßen

Stiv Kupchik

Verfasser

Stiv Kupchik

June 15, 2022

Stiv Kupchik

Verfasser

Stiv Kupchik

Stiv Kupchik ist Senior Security Researcher in Tel Aviv, Israel.

Panchans Mining Rig: Ein neues golangbasiertes Peer-to-Peer-Botnet lässt grüßen

Verfasst von: Stiv Kupchik

Zusammenfassung

  • Akamai-Sicherheitsforscher haben Panchan entdeckt, ein neues Peer-to-Peer-Botnet bzw. ein SSH-Wurm, der im März 2022 erstmals auftauchte und seitdem aktiv Linux-Server angreift.

  • Panchan ist in Golang geschrieben und nutzt dessen integrierte Parallelitätsfunktionen, um die Verbreitbarkeit zu maximieren und Malware-Module auszuführen.

  • Neben dem „einfachen“, bei den meisten Würmern üblichen SSH-Wörterbuchangriff, erbeutet diese Malware auch SSH-Schlüssel, um laterale Netzwerkbewegungen durchzuführen.

  • Sicherheitsforscher von Akamai konnten auf das Kommunikationsprotokoll und das Administrationspanel der Malware zugreifen und damit den Infektionsumfang der Malware analysieren.

  • Der häufigste vertikale Bereich (nach Telekommunikation/VPS), in dem Panchan agiert, ist das Bildungswesen. Wir gehen davon aus, dass die Zusammenarbeit zwischen verschiedenen akademischen Instituten dazu führen könnte, dass SSH-Schlüssel über Netzwerke hinweg geteilt werden, was erklären könnte, warum diese Vertikale an der Spitze der Liste steht. Die Sicherheitsforscher von Akamai haben die betrügerischen E-Mails untersucht, die an die IP-Adressen der Opfer gingen.

  • Um eine Entdeckung zu vermeiden und die Rückverfolgbarkeit zu verringern, legt die Malware ihre Cryptominer als Dateien im Arbeitsspeicher ab, anstatt sie auf der Festplatte zu speichern. Außerdem werden die Cryptominer-Prozesse beendet, sobald eine Prozessüberwachung festgestellt wird.

  • Aufgrund der Aktivität der Malware und der geografischen Lage des Opfers, der Sprache des Admin-Panels und der Discord-Nutzeraktivität des Bedrohungsakteurs gehen wir davon aus, dass er Japaner ist.

  • Akamai MFA kann das Risiko, das durch das Abgreifen von SSH-Schlüsseln entsteht, vermindern. Darüber hinaus sollte die Konfiguration sicherer SSH-Passwörter die Malware aufhalten, da sie eine sehr einfache Liste von Standardpasswörtern zur Verbreitung verwendet. Wir haben auch IOCs, Abfragen, Signaturen und Skripte veröffentlicht, die zum Testen auf Infektionen verwendet werden können.

Einführung

Panchan’s Mining-Rig ist ein funktionsreiches Golang-Botnet und ein Cryptojacker. Das Peer-to-Peer-Protokoll ist unkompliziert – Klartext über TCP, aber effektiv genug, um das Botnet zu dezentralisieren. Es kann auch hartnäckig und ausdauernd arbeiten und der Überwachung ausweichen.

 

Die Peer-to-Peer-Reaktion der Malware unter ihrem Namen

In die Malware ist ein „Godmode“ fest integriert – ein Admin-Panel, das in der Lage ist, die Mining-Konfiguration zu bearbeiten, die dann auf dem Rest der Peers verbreitet wird. Um unerwünschte Manipulationen zu verhindern, ist für den Zugriff auf den Godmode ein privater Schlüssel erforderlich, mit dem dann die Mining-Konfiguration signiert wird. Die Malware enthält einen öffentlichen Schlüssel, mit dem der bereitgestellte private Schlüssel überprüft wird. Das Admin-Panel ist in Japanisch geschrieben, was auf die geografische Lage des Entwicklers hinweist.

Das Botnet bietet einen einzigartigen (und möglicherweise neuartigen) Ansatz für laterale Bewegungen durch das Abgreifen von SSH-Schlüsseln. Anstatt wie die meisten Botnets Brute-Force- oder Wörterbuchangriffe auf randomisierte IP-Adressen zu verwenden, liest die Malware auch die Dateien id_rsa und known_hosts aus, um vorhandene Anmeldeinformationen zu sammeln und sie zur lateralen Verschiebung über das Netzwerk zu verwenden.

Die Malware ist in Golang geschrieben und nutzt dessen Parallelitätsfunktionen für den Großteil der Hauptlogik – indem sie als parallele Go-Routinen ausgeführt werden. Der Bedrohungsakteur ist auf dem neuesten Stand aktueller Go-Versionen. Die früheste entdeckte Malware-Version (vom März 2022) wurde mit Go 1.17.7 (veröffentlicht im Februar 2022) kompiliert, während das neueste Beispiel mit Go 1.18 (veröffentlicht im März 2022) kompiliert wurde. Außerdem wurden bei Go 1.18 einige Änderungen an den internen Datenstrukturen vorgenommen, sodass weder eines der Online-Tools noch der IDA-Disassembler die Malware korrekt analysieren und Funktionsnamen mit Funktionszeiger abgleichen konnte. In Anhang A: Kurzer Ausflug zu Go-Reversing, beschreiben wir, wie wir das überwunden haben.

In diesem Bericht beschreiben wir die Fähigkeiten der Malware im Detail, wie wir sie entdeckt haben und wie wir versucht haben, sie zuzuordnen. 

Eine Liste der IoCs finden Sie im GitHub-Repository hier.

Malware-Aktivität

Das Akamai Security Research Team überwacht proaktiv Botnet- und Malware-Aktivitäten in unserem globalen Sensornetzwerk. Wir bemerkten die Aktivität von Panchan zum ersten Mal am 19. März 2022. Die Peer-to-Peer-Kommunikation und die Wurm-Funktionen der Malware erregten unsere Aufmerksamkeit und legten eine weitere Untersuchung nahe. 

Während des Reverse-Engineerings der Malware entwickelten wir Skripte, um in das Netzwerk des Botnets „einzusteigen“, wodurch das Team eine vollständige Liste der infizierten Rechner (Botnet-Peers) erstellen konnte. Wir haben 209 Peers gefunden, von denen derzeit 40 aktiv sind. 

Heatmap zur globalen Verteilung der Opfer

Während die Ziele weltweit verstreut sind, scheint es in Asien eine stärkere Konzentration von Zielen zu geben.

Tabelle der Opferzahlen pro Kontinent

Unsere Vermutung, dass der Bedrohungsakteur aus Japan stammt (dazu später mehr), könnte die größere Anzahl von Zielen in Asien erklären. Da hinter dieser Malware keine Organisation zu stehen scheint, ist es plausibel, dass es für den Bedrohungsakteur einfacher ist, sich an das Naheliegende und Vertraute zu halten.

Wenn man sich die angegriffenen vertikalen Bereiche ansieht, sind die meisten Opfer-IPs unter ihrer Hosting/VPS-Plattform registriert, sodass da nicht viele Informationen zu holen sind. Die häufigste Vertikale unter den überwachten Opfern war das Bildungswesen. Dies könnte auf mangelnde Passworthygiene zurückzuführen sein oder mit der einzigartigen Fähigkeit der Malware zusammenhängen, sich mit gestohlenen SSH-Schlüsseln lateral zu bewegen. Forscher in verschiedenen akademischen Einrichtungen arbeiten möglicherweise häufiger zusammen als Mitarbeiter in der Wirtschaft und benötigen Anmeldedaten, um sich bei Rechnern außerhalb ihrer Organisation/ihres Netzwerks zu authentifizieren. Zur Untermauerung dieser Hypothese stellten wir fest, dass einige der beteiligten Universitäten aus demselben Land (z. B. Spanien) und andere aus derselben Region (z. B. Taiwan und Hongkong) stammten.

Untersuchung der Malware-Funktionen

Infektionsvektor – SSH-Wurm

Infektionsfluss der Malware

Die Malware ist in der Lage, sich über SSH selbst zu verbreiten. Dabei stehen ihr zwei Methoden zur Generierung von Zielen und Authentifizierungsdetails zur Verfügung:

     Vorhandene SSH-Schlüssel

Die Malware sucht unter dem aktuellen Nutzer- HOME -Verzeichnis nach SSH-Konfiguration und Schlüssel. Sie liest den privaten Schlüssel unter ~HOME/.ssh/id_rsa aus und verwendet ihn, um zu versuchen, sich bei einer beliebigen IP-Adresse zu authentifizieren, die unter ~HOME/.ssh/known_Hosts zu finden ist. Dies ist eine neuartige Methode zum Abgreifen von Anmeldeinformationen, die wir bei anderer Malware noch nicht gesehen haben.

     Anmeldedaten mit Brute-Force ermitteln

Die Malware kann IP-Adressen randomisieren und mithilfe einer vordefinierten Nutzer- und Passwortliste einen Wörterbuchangriff durchführen. Der Brute-Force-Spreader wird in einem separaten Prozess mehrfach gestartet, wobei dies nur durch die vom Betriebssystem festgelegte Grenze für offene Dateien begrenzt wird. Die Nutzernamen und Passwörter sind ziemlich einfach – Kombinationen von Standardzeichenfolgen wie "ubuntu," "root," "user," '‘debian," "pi," usw.

Nach einer erfolgreichen Authentifizierung am Ziel erstellt die Malware einen versteckten Ordner mit einem Zufallsnamen unter dem Stammverzeichnis / und kopiert sich über SFTP selbst in den versteckten Ordner mit dem Namen xinetd .

Die Malware führt die kopierte Binärdatei dann entfernt auf dem Zielcomputer aus (mit nohup) und übergibt ihm eine Liste von Peers über die Kommandozeile. Nach einer erfolgreichen Infektion leitet die Malware einen HTTPS-POST-Vorgang zu einem Discord-Webhook ein, der wahrscheinlich für die Überwachung von Opfern verwendet wird.

Peer-to-Peer-Kommunikation

Das Peer-to-Peer-Protokoll des Botnetzes ist ziemlich einfach. Alles wird im Klartext über TCP-Port 1919 gesendet. Alle Peers überwachen diesen Port und erstellen eine Regel, um ihn in iptables zuzulassen. Jede Botschaft beginnt mit „pan-chan's mining rig hi!“ und endet mit „finish“. Dazwischen sendet die Malware Konfigurationsbefehle, die durch Zeilenumbrüche getrennt sind. Es gibt nur zwei Konfigurationsoptionen, die wir gesehen haben: sharepeer und sharerigconfig

sharepeer  ist ziemlich einfach – es folgt eine IP-Adresse, die dann zur internen Peer-Liste der Malware hinzugefügt wird.

sharerigconfig wird von einer base64-kodierten Zeichenfolge gefolgt, bei der es sich um eine JSON-Struktur handelt, die die Mining-Konfiguration kodiert, sowie eine Signatur dieser Konfiguration:

 

Auf sharerigconfig folgt eine base64-kodierte Zeichenfolge
Auf sharerigconfig folgt eine base64-kodierte Zeichenfolge, Teil zwei

Die Signatur wird mit einem intern gespeicherten öffentlichen Schlüssel validiert, um die Authentizität zu gewährleisten. Die Kommunikationslogik ist ebenfalls einfach: Bei einer Verbindung zu oder von einem Peer analysiert die Malware ihre im Arbeitsspeicher abgelegte Konfiguration (die sie zu Beginn ihrer Ausführung erhalten hat), erzeugt die Zeichenfolge und sendet sie. Sie empfängt auch eine ähnliche Nachricht von der anderen Seite und parst diese. Neue Peers werden zu ihrer Peer-Liste hinzugefügt, während die Konfiguration im Falle einer neueren Version überschrieben wird.

Um nach Updates zu suchen, stellt die Malware regelmäßig eine Verbindung zu ihren gespeicherten Peers her.

Godmode

Dies ist wahrscheinlich das einzigartigste Merkmal der Malware: Direkt in die Binärdatei der Malware ist ein Admin-Panel integriert. Um ihn zu starten, müssen wir der Malware die Zeichenfolge godmode als erstes Befehlszeilenargument übergeben (gefolgt von einer Liste von Peers).

Zugriffsprüfung

Auch wenn das Admin-Panel in die Malware fest integriert ist, ist es nicht für jedermann zugänglich. Um unerwünschten Zugriff auf das Panel zu verhindern, fordert die Malware zunächst einen privaten Schlüssel an, und erst nach der Validierung können wir auf die Benutzeroberfläche zugreifen.

 

Prüfung des privaten Schlüssels

Da wir den benötigten privaten Schlüssel nicht hatten, haben wir das Programm so gepatcht, dass es die Schlüsselüberprüfung überspringt und jeden angegebenen privaten Schlüssel akzeptiert (dazu war nur eine einzige Änderung von JZ zu JMP erforderlich).

 

Vor und nach Änderung der Binärdatei, um die Validierung des privaten Schlüssels zu ignorieren

Admin-Panel: Statistiken

Nach Angabe des privaten Schlüssels und der „Anmeldung“ werden wir mit einem Statusbildschirm über die aktuelle Konfiguration begrüßt.

 Vor und nach Änderung der Binärdatei, um die Validierung des privaten Schlüssels zu ignorieren

Der erste Abschnitt sind die Statistiken der Peers, die vor dem Start des Godmode anhand der in der Befehlszeile der Malware übergebenen Peer-Liste kontaktiert werden (wir haben bei der Analyse keine Peer-Liste angegeben, daher die Null).

Der zweite Abschnitt ist die Cryptomining-Konfiguration. Diese hat das gleiche Format wie die Mining-Konfiguration, die zwischen Peers gesendet wird, jedoch mit japanischem Text anstelle von Englisch. Der Sprachunterschied ist wahrscheinlich auf die Einfachheit der Programmierung zurückzuführen – das Drucken von japanischem Text ist einfach, aber das Parsen ist schwieriger, sodass der Entwickler der Malware Englisch für die Konfiguration verwendet hat, die zwischen den Peers gesendet wird.

Schließlich erhalten wir ein Menü mit den folgenden Optionen:

  1. Statusbildschirm aktualisieren

  2. Die aktive Peer-Liste ausdrucken

  3. Die Miner-Einstellungen aktualisieren

  4. Beenden

Fenster zur Aktualisierung der Mining-Konfiguration

Dateiloser Minder

Die Malware setzt zwei Miner ein – xmrig und nbhash. Beide Miner-Binärdateien sind base64-kodiert in der Malware-Binärdatei selbst enthalten und werden während der Laufzeit extrahiert und ausgeführt. Die Ausführung ist jedoch insofern neuartig, als die Miner überhaupt nicht auf die Festplatte extrahiert werden. Stattdessen verwendet die Malware die UNIX-Funktion memfd_create , um eine speicherabgebildete Datei mit dem Binärinhalt des Miners zu erstellen, sodass er direkt aus dem Speicher ausgeführt werden kann, ohne einen nachvollziehbaren Dateisystempfad zu haben. Aus der Konfiguration, die wir aus verschiedenen Botnet-Peers extrahiert haben, scheint es, dass die Malware NiceHash für ihre Mining-Pools und Wallets verwendet. NiceHash-Wallets sind keine Blockchain-Wallets, weshalb wir keine Transaktions- und Mining-Details über sie sehen können, um die tatsächlichen Einnahmen zu messen.

Anti-Beendigung

Die Malware fängt Linux-Beendigungssignale (insbesondere SIGTERM – 0xF und SIGINT – 0x2) ab, die an sie gesendet werden, und ignoriert sie. Dies macht es schwieriger, die Malware zu beenden, aber nicht unmöglich, da SIGKILL nicht verarbeitet wird (weil das laut POSIX-Standard, Seite 313 nicht möglich ist).

Anti-Überwachung

Dieses Modul wird intern antitaskmanager genannt, doch im Gegensatz zu seinem Namen beeinträchtigt es den Task-Manager-Betrieb nicht. Stattdessen sucht die Malware kontinuierlich nach den Prozessen top und htop. Sobald sie gefunden werden, werden die laufenden Miner-Prozesse beendet.

Persistenz

Die Malware kopiert sich selbst nach /bin/systemd-worker und erstellt einen systemd-Dienst mit demselben Namen. Dies geschieht wahrscheinlich, um legitime systemd-Dienste zu imitieren und dadurch Verdacht und Untersuchungen zu vermeiden.

Zuordnung

Es gibt einen zusätzlichen Bildschirm, der im Godmode-Panel angezeigt wird, während der private Schlüssel validiert wird.

 

Bildschirm zur Überprüfung des privaten Schlüssels im Godmode-Panel

Der Copyright-Anspruch ist recht interessant – er erwähnt Panchan und verfügt tatsächlich über einen Discord-Server! Wenn wir dem Link folgen, können wir uns anscheinend tatsächlich mit dem Server verbinden und erhalten auch den tatsächlichen Discord-Benutzernamen, den Panchan verwendet. Wir gingen davon aus, dass es sich bei diesem Server um denselben handelt, an den die Malware nach einer erfolgreichen SSH-Verbindung berichtet.

 

Discord-Server-Einladung

Wir haben uns mit dem Server verbunden, in der Hoffnung, Informationen über den Bedrohungsakteur zu finden und die Discord-Benachrichtigungen zu sehen, die die Malware als Teil des Infektionsflusses sendet. Wir fanden nichts davon – der Hauptchat war leer, abgesehen von der Begrüßung eines anderen Mitglieds, die im März erfolgte. Es könnte sein, dass andere Chats nur für höher privilegierte Mitglieder des Servers zugänglich sind und sie uns deshalb nicht angezeigt wurden. Die einzigen nützlichen Informationen, die wir gefunden haben, waren, dass der Server Anfang März 2022 erstellt wurde, ganz in der Nähe unserer ersten Beobachtung der Malware.

Bei der Suche nach anderen Aktivitäten dieses Nutzers konnten wir feststellen, dass er auch auf dem Discord-Server von Privex (einem VPS-Anbieter) aktiv ist.

 

Aktivität des Bedrohungsakteurs auf Privex Discord

Neben regulären VPS bietet Privex auch VMs an, auf denen Blockchain-Node-Software vorinstalliert ist. Dies könnte bedeuten, dass der Bedrohungsakteur sie zum Hosten seines eigenen Servers verwendet oder ihre VMs aktiv für Cryptojacking missbraucht.

Erkennung und Beseitigung

Um bei der Erkennung zu helfen, haben wir ein Repository mit IOCs und Yara sowie Snort-Signaturen erstellt, die verwendet werden können, um eine Infektion aufzuspüren. Wir haben auch ein Bash-Skript geschrieben, das auf einer VM ausgeführt werden kann. Dieses sucht nach den folgenden Indikatoren für Panchan:

  • den Prozess systemd-worker

  • den Prozess xinetd, wenn er von einem anderen Pfad als /bin oder /sbin ausgeführt wird

  • Prozesse, die auf TCP-Port 1919 lauschen

Darüber hinaus kann die ausgehende Kommunikation über die TCP-Ports 3380 und 3387 auf Datenverkehr zum Cryptomining-Pool hinweisen.

Für Leser, die ihre Netzwerke proaktiv verteidigen möchten, haben wir folgende Empfehlungen:

  • Verwenden Sie sichere und komplexe Passwörter. Die Malware verwendet eine sehr begrenzte Anzahl von Standard-Benutzernamen und Passwort-Kombinationen, die auf keiner Produktionsmaschine konfiguriert sein sollten. Das Erstellen sicherer Passwörter kann die Auswirkungen der Malware erheblich reduzieren.

  • Konfigurieren Sie MFA wo möglich. Die Verwendung von MFA würde jeden nicht autorisierten Anmeldeversuch verhindern. Akamai MFA bietet auch Schutz vor dem Abgreifen von SSH-Schlüsseln.

  • Segmentieren Sie wenn möglich Ihr Netzwerk. Obwohl es zulässig ist, Rechner über SSH für das Internet zu öffnen, ist es ratsam zu kontrollieren, wer sich mit ihnen aus dem Internet verbinden darf und mit wem sie sich innerhalb des Netzwerks verbinden dürfen. Die Konfiguration dieser Zugriffskontrollen verringert die Auswirkungen, die ein beeinträchtigter Computer auf das Netzwerk haben kann, und reduziert die gesamte Angriffsfläche.

  • Überwachen Sie die Ressourcenaktivität Ihrer VMs. Botnets wie dieses, dessen Endziel Cryptojacking ist, können die Nutzung von Rechner-Ressourcen auf ein anormales Niveau erhöhen. Eine ständige Überwachung kann Sie auf verdächtige Aktivitäten aufmerksam machen. Im Fall von Panchan hätte die Überwachung der Ressourcennutzung auch das Cryptomining vollständig beendet.

 

Anhang A: Kurzer Ausflug zu Go-Reversing

Ausführbare Go-Dateien werden statisch kompiliert, was bedeutet, dass alle Abhängigkeiten der ausführbaren Datei direkt in die Binärdatei kompiliert werden. Dadurch entstehen sehr große Binärdateien mit vielen Funktionen (unsere Malware hatte 30 MB mit etwa 3.700 Funktionen).

Zur Unterstützung von Stapelüberwachung verfügt Go über eine pclntab-Struktur, die Funktionsnamen und Zeiger innerhalb der Binärdatei zuordnet. Diese gibt es sogar in reduzierten Binärdateien, sodass wir sie verwenden können, um Funktionsnamen zu finden.

 

Go pclntab innerhalb einer Go-Binärdatei

In Go 1.18 änderte sich diese Struktur. Wo vorher Zeiger auf Stellen in der Binärdatei enthalten waren, sind jetzt Offsets von bestimmten Stellen enthalten – Funktionszeiger sind jetzt Offsets von der ersten Go-Funktion (auf die in der pcln-Struktur, die im Bild oben als text_start kommentiert ist, gezeigt wird), Namenszeiger sind Offsets vom Anfang des Funktionsnamen-Arrays, und auf beide wird durch Offsets in einem anderen Array verwiesen, das Funktionsdaten enthält.

 



Stiv Kupchik

Verfasser

Stiv Kupchik

June 15, 2022

Stiv Kupchik

Verfasser

Stiv Kupchik

Stiv Kupchik ist Senior Security Researcher in Tel Aviv, Israel.