Sie sind an Cloud Computing interessiert? Legen Sie jetzt los

Dark background with blue code overlay
Blog

Capoae-Malware dreht auf: nutzt mehrere Schwachstellen und Verbreitungstaktiken 

Larry Cashdollar

Verfasser

Larry Cashdollar

September 16, 2021

Larry Cashdollar

Verfasser

Larry Cashdollar

Larry W. Cashdollar arbeitet bereits seit über 18 Jahren als Schwachstellenforscher im Bereich Sicherheit. Aktuell ist er Mitglied des Security Incident Response-Teams bei Akamai Technologies. Er studierte Computerwissenschaften an der University of Southern Maine. Cashdollar hat mehr als 150 CVEs dokumentiert und seine Forschungsergebnisse sogar bei BSides Boston, OWASP Rhode Island und Defcon vorgestellt. Er ist Outdoor-Fan und beschäftigt sich in seiner Freizeit gern mit der Neukonstruktion von Minibike-Motoren.

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.

Bildschirmaufnahme

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:

Abb. 2) Die oben stehende Zeichenfolge in Abbildung 1 ist decodiert. Abb. 2) Die oben stehende Zeichenfolge in Abbildung 1 ist decodiert.

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.

Abb. 3) User-Agent-Zeichenfolge, die als Entschlüsselungskey verwendet wird Abb. 3) User-Agent-Zeichenfolge, die als Entschlüsselungskey verwendet wird

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:

Abb. 4) Webshell-Skript zum Hochladen kleiner Dateien Abb. 4) Webshell-Skript zum Hochladen kleiner Dateien

Indem wir das Skript in ProductList.php mit einem Webbrowser und der richtigen User-Agent-Zeichenfolge verbinden, erhalten wir folgende Webshell-Oberfläche:

Abb. 5) Entschlüsselte und ausgeführte Webshell Abb. 5) Entschlüsselte und ausgeführte Webshell

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.

Abb. 6) Ausgabe nach Ausführung der Capoae-Malware Abb. 6) Ausgabe nach Ausführung der Capoae-Malware

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. 

Abb. 7) strace-Ausgabe mit dem russischen Wort für „Scan läuft“ Abb. 7) strace-Ausgabe mit dem russischen Wort für „Scan läuft“

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.

Abb. 8) Crontab-Eintrag Abb. 8) Crontab-Eintrag

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.

Abb. 9) Liste der WordPress-spezifischen Funktionen Abb. 9) Liste der WordPress-spezifischen Funktionen

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.

Abb. 10) Paketerfassung der Änderung an footer.php Abb. 10) Paketerfassung der Änderung an footer.php

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.

Abb. 11) Teilweise Disassemblierung von exploitUploadPlugin Abb. 11) Teilweise Disassemblierung von exploitUploadPlugin

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.

Abb. 12) Mining-Konfigurationsdatei in JSON Abb. 12) Mining-Konfigurationsdatei in JSON

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


Larry Cashdollar

Verfasser

Larry Cashdollar

September 16, 2021

Larry Cashdollar

Verfasser

Larry Cashdollar

Larry W. Cashdollar arbeitet bereits seit über 18 Jahren als Schwachstellenforscher im Bereich Sicherheit. Aktuell ist er Mitglied des Security Incident Response-Teams bei Akamai Technologies. Er studierte Computerwissenschaften an der University of Southern Maine. Cashdollar hat mehr als 150 CVEs dokumentiert und seine Forschungsergebnisse sogar bei BSides Boston, OWASP Rhode Island und Defcon vorgestellt. Er ist Outdoor-Fan und beschäftigt sich in seiner Freizeit gern mit der Neukonstruktion von Minibike-Motoren.