Capoae-Malware dreht auf: nutzt mehrere Schwachstellen und Verbreitungstaktiken
Einführung
In jüngster Zeit haben es zahlreiche Fälle von Cryptomining-Malware in die Nachrichten geschafft. Diese Malware wurde in Golang geschrieben, in UPX verpackt und zielt auf Linux-Systeme sowie Webanwendungen ab. Die primäre Taktik der Malware besteht darin, sich zu verbreiten, indem sie anfällige Systeme und schwache Anmeldedaten mit Verwaltungsberechtigung ausnutzt. Nachdem die Systeme infiziert sind, werden sie für das Mining von Kryptowährung eingesetzt. Ich habe die Probe, die ich mir für diesen Beitrag angesehen habe, „Capoae“ getauft, weil der Code diese Ausgabe auf meinen Terminal generiert hat.
Ungefähr zur selben Zeit, als auch die Meldung über diese Cryptomining-Malware die Runde machte, wurden SIRT‑Honeypots mit PHP‑Malware infiziert, die über eine Backdoor in einem WordPress-Plug‑in namens „Download-monitor“ verteilt wurde.
Download-monitor wurde installiert, nachdem Angreifer die schwachen WordPress-Anmeldedaten des Honeypot-Administrators erraten hatten. Darüber hinaus wurde ein 3 MB großes UPX‑Paket mit einer Golang-Binärdatei in /tmp heruntergeladen. Nach eingehender Untersuchung war klar, dass die Malware über eine Entschlüsselungsfunktion verfügte und eine verschlüsselte Datei in einem anderen Verzeichnis umfasste.
Nach weiterer Überprüfung der Honeypot-Zugriffsprotokolle wurde eine Anfrage mit verschleierter Payload in einem GET‑Parameter gesendet.
Dieses dw-Argument ist mit rot13() und base64 codiert. Nachdem der base64-Wert mit der rot13-Chiffre wieder in seinen ursprünglichen Inhalt umgewandelt und decodiert wurde, wird daraus:
Die Payload besteht aus zwei Teilen: dem Standort (url) der Datei, die heruntergeladen werden soll, und dem Pfad (dir), unter dem diese Datei auf dem infizierten Gerät gespeichert wird.
Die Datei „wp.txt“ wird heruntergeladen und in „wp.php“ umbenannt. Diese Datei wird dann nach ihrer Ausführung gelöscht. Aufgrund der Beschränkungen meines Protokollierungssystems sind die Inhalte der Datei jedoch leider verloren gegangen. Auch die Datei „ProductList.php“ wird umbenannt, indem ihrem Namen eine zufällige Zeichenfolge angehängt wird, damit Nutzer sie nicht zufällig entdecken. Die Zeichenfolge wird anscheinend mit der folgenden Bash-Funktion generiert, die eine md5sum der Ausgabe des Datenbefehls verwendet.
echo $(date|md5sum|awk -v n="$(date +%s)" '{print substr($1,1,n%7+6)}')
Die Datei „./wp-content/plugins/download-monitor/src/Libs/uaparser/regexes.php“ ist eine verschlüsselte Webshell, die über das Argument „dw“ einen Parameter annimmt. Sie wird über das Skript in ProductList.php aufgerufen, mit dem die dw‑Payload entschlüsselt und ausgeführt wird. Der Entschlüsselungskey für die Payload basiert auf der User-Agent-Zeichenfolge der Anfrage.
Doch es wird noch eine weitere Webshell als Backdoor abgelegt, mit folgender Datei: ./wp-admin/includes/class-wp-page-n3RkIo.php
Sie enthält eine einfache Webshell, die für Dateiuploads verwendet werden kann:
Indem wir das Skript in ProductList.php mit einem Webbrowser und der richtigen User-Agent-Zeichenfolge verbinden, erhalten wir folgende Webshell-Oberfläche:
Inhalte der Binärdatei
Nachdem die Malware mit „upx -d“ entpackt wurde, können wir uns die Struktur der Binärdatei ansehen. Die Untersuchung dieser Struktur zeigt, dass die Malware über Funktionen verfügt, die auf eine Handvoll bekannter Schwachstellen und Content-Management-Frameworks abzielen. Die interessantesten Funktionen sind weiter unten aufgeführt. Aus den Funktionsnamen und der Disassemblierung in R2 können wir schließen, was passiert.
Die Golang-Malware ist in VirusTotal mit dem Ursprungsdatum 09.08.2021 aufgeführt:
$ ./redress -compiler Capoae
Compiler-Version: go1.15.4 (2020-11-05T21:21:32Z)
Mithilfe von Redress können wir sehen, dass die Binärdatei mit Go 1.15.4 kompiliert wurde.
Wenn wir tiefer nachforschen, finden wir auch den Code zur Ausnutzung von CVE-2020-14882, der auf Oracle WebLogic Server mit Unauthenticated Remote Code Execution (RCE) abzielt.
Die Binärdatei nutzt eine Liste mit schwachen Anmeldedaten, um sich per Brute Force Zugang zu Systemen mit SSH zu verschaffen. Nach erfolgreicher Authentifizierung installiert die Malware einen Public Key unter .ssh/authorized_keys.
Hier sehen Sie einen weiteren Exploit-Code, dieses Mal zur Ausnutzung von CVE-2018-20062, einer bekannten und häufig ausgenutzten RCE‑Schwachstelle (Remote Code Execution) in ThinkPHP.
Dieser Abschnitt enthält einen weiteren Verbreitungsmechanismus. Hier testet die Malware per Brute Force schwache Anmeldedaten in WordPress-Installationen, die über die WordPress XMLRPC API entdeckt wurden.
Hier eine teilweise Disassemblierung der Funktionen, die auf die RCE‑Schwachstellen CVE-2019-1003029 und CVE-2019-1003030in Jenkins-Installationen abzielen.
Der guard.go-Code sorgt für die Hartnäckigkeit der Malware, indem er einen Eintrag in Crontab hinzugefügt.
Im oben stehenden Screenshot wird eine Liste von Funktionen angezeigt, die mit der Datei „xmrig_linux_amd64.go“ verbunden sind. Hierbei handelt es sich um Shell-Bindungen, die Methoden für die Cryptomining-Verbindung bereitstellen. Die Mining-Kampagne nutzt die beliebte Mining-Software XMRig, die jedoch von der Malware gestartet und überwacht wird.
Die Malware enthält auch einen Portscanner, über den sie offene Ports und Dienste findet. Sie greift zufällig generierte IP‑Adressen an und sucht nach Ports, an die sie verschiedene Exploit-Payloads senden kann.
Malware-Detonation
Nach Ausführung der Golang-Binärdatei wurde auf dem Terminal eine einzige Zeichenfolge angezeigt, die nicht besonders aussagekräftig war.
Im strace-Protokoll der Ausführung sehen wir, wofür die Bytes im Text stehen, die mein Terminal aufgrund fehlender Unterstützung kyrillischer Zeichen nicht angezeigt hat.
Die Ausgabe lautet eigentlich „Сканирование“, russisch für „Scan läuft“. Deshalb habe ich mich dazu entschieden, nur die ASCII‑Zeichen zu verwenden, die bei der ersten Detonation auf meinem Terminal angezeigt wurden, und habe die Malware-Probe „Capoae“ getauft.
Nach Ausführung der Capoae-Malware war klar, dass sie über raffinierte Methoden verfügt, um sich hartnäckig festzusetzen. Zunächst wählt sie einen legitim wirkenden Systempfad aus einer kleinen Liste von Speicherorten aus, in denen Binärdateien nicht weiter auffallen. Dann generiert die Malware einen Dateinamen mit sechs Zeichen und verwendet die Kombination aus Pfad und Dateiname, um sich an den neuen Speicherort zu kopieren und dann selbst zu löschen.
Daraufhin injiziert oder aktualisiert sie einen Crontab-Eintrag, der die Ausführung dieser neu erstellten Binärdatei auslöst. Bei dieser Detonation wird der gesamte Prozess erneut ausgeführt. So wird gewährleistet, dass die Malware nur schwer vollständig beseitigt werden kann, da sich die Infektion bzw. die Payload ständig bewegt.
Anhand häufig genutzter RCE‑Exploits für Oracle WebLogic, wie z. B. CVE-2020-14882 und CVE-2018-20062, die beide ThinkPHP betrafen, erkennen wir, dass Angreifer speziell auf das Content-Management-Framework von WordPress abzielen. Die Malware sucht nach schwachen Anmeldedaten, um sich Zugang zu verschaffen.
Das beschreibbare WordPress-Theme des Exploits schrieb ein kleines PHP‑Skript in das Theme twentynineteen. Dieses Skript lud die Datei „ldr.sh“ herunter und führte sie aus. Die verwendete User-Agent-Zeichenfolge ist die Methode, über die der Host infiziert wurde. Im unten stehenden Screenshot sehen Sie, dass die User-Agent-Zeichenfolge aufbrute_wordpress_adminfestgelegt ist.
Wenn wir uns die Funktion exploitUploadPlugin ansehen, erkennen wir, dass sie ein Plug‑in über die Admin-Schnittstelle installiert. Abbildung 10 hebt einige Zeichenfolgen der Plug‑in-Installationsparameter hervor, die in der Disassemblierung zu sehen sind.
Natürlich ist der Zweck dieser Malware das Mining von Kryptowährungen. Unten sehen Sie die Konfigurationsdatei des Cryptomining-Pools. Sie zeigt, dass die Angreifer einen Mining-Pool nutzen, welcher unter ntup.net gehostet wird, der Adresse eines russischen VPS‑Anbieters.
Fazit
Cryptomining-Kampagnen entwickeln sich ständig weiter. Die Tatsache, dass die Capoae-Kampagne verschiedene Schwachstellen ausnutzt und unterschiedliche Taktiken einsetzt, zeigt, wie ernst es diesen Cyberkriminellen ist, sich auf möglichst vielen Geräten zu verbreiten.
Die gute Nachricht ist: Die gleichen Techniken, die wir den meisten Unternehmen empfehlen, um ihre Systeme und Netzwerke zu schützen, finden auch hier Anwendung. Verwenden Sie keine schwachen oder standardmäßigen Anmeldedaten für Server oder bereitgestellte Anwendungen. Stellen Sie sicher, dass die neuesten Sicherheitspatches für diese Anwendungen installiert sind, indem Sie regelmäßig nach Updates suchen.
Achten Sie auf ungewöhnlich hohe Auslastungen der Systemressourcen, auf seltsame/unerwartete ausgeführte Prozesse, auf verdächtige Artefakte (Dateien, Crontab-Einträge, SSH‑Schlüssel usw.) sowie auf auffällige Einträge im Zugriffsprotokoll, um potenziell infizierte Geräte zu erkennen. Weiter unten finden Sie auch eine Liste mit Indicators of Compromise (IoCs), mit deren Hilfe Sie Dateisysteme und Netzwerktraffic auf mögliche Infektionen überprüfen können.
IoCs
SHA256SUM
7d1e2685b0971497d75cbc4d4dac7dc104e83b20c2df8615cf5b008dd37caee0 – Capoae-UPX-Paket
fd8f419f0217be0037ba7ae29baf4c3a08c8f2751b0b1be847b75bd58d6e153f – entpacktes Capoae-UPX-Paket
5a791205bc08396bc413641ea6e5d9fd5ef3f86caf029f51d4da65be700a2b1e – ProductList-n3RkIo.php
f37cc420165fb809eb34fbf9c8bf13236a0cc35dee210db5883107a08a70f66d – class-wp-page-n3RkIo.php
53521fab245023c56cf5562bd562d6ba98445a052155eb2e40c4a13a9343e6eb – regexes.php
9ed14f470c95759cc0dca86fd913714b6733af8c0aaa35e3a7ad6604455e2230 – sys.i686-UPX-Paket
af7c5617a89c40aac9eb2e573a37a2d496a5bcaa9f702fa919f86485e857cb74 – sys.x86_64-Paket
7eb444671ab338eccadf81d43166661ccb4b1e487836ab41e2245db61dceed31 – ldr.sh
IPs
198.100.145.141
23.238.128.118
69.12.66.218
207.126.93.190