Kinsing entwickelt sich weiter | Akamai-Blog

Einführung
Ein großes und beständiges Crypto-Botnet infiziert Systeme im gesamten Internet.
Die Kampagne wurde erstmals von Akamai SIRT am 16. Februar 2021 erkannt und scheint sowohl auf Windows- als auch auf Linux-Systeme ausgerichtet zu sein. Das Botnet erweckte unser Interesse, weil es in so unterschiedlichen geografischen Regionen wie Nord- und Südamerika, Europa und Asien aktiv war. Außerdem verwendete das Botnet über sechs Monate hinweg dieselbe IP-Adresse (194.38.20.199), ohne sie rotieren zu müssen. Die Kampagne zielte zuvor nur auf Linux-Maschinen ab, wurde aber vor Kurzem auch auf Windows-Systeme ausgeweitet.
Infektion von Windows-Systemen
Um Windows-Computer zu infizieren, nutzt das Botnet CVE-2020-14883, eine Schwachstelle, die die Versionen 10.3.6,0.0, 12.1.3,0.0, 12.2.1.3.0, 12.2.1.4.0 und 14.1.1.0.0 von Oracle WebLogic Server betrifft. Wenn sie ausgenutzt wird, kann ein Angreifer Remote Code Execution (RCE) durchführen, was zu einer Übernahme von Oracle WebLogic Server führen kann.
Die Infektion beginnt damit, dass der betreffende Computer dazu gebracht wird, eine XML-Datei namens „wbw.xml“ herunterzuladen und auszuführen. Auf Windows-Computern wird die XML-Datei über die Klasse „ClassPathXmlApplicationContext“ ausgeführt.

Die abgerufene Datei „wbw.xml“ enthält einen eingebetteten PowerShell-Befehl, der auf dem Rechner des Opfers ausgeführt wird. Der Befehl lautet:

Es wird versucht, ein PowerShell-Skript mit dem Namen „ 1.ps1“ mithilfe der Methode „ System.Net.WebClient.DownloadString “ auf das Gerät des Opfers zu laden. Darüber hinaus wird das Flag „Set-ExecutionPolicy Bypass“ verwendet, um sicherzustellen, dass nichts blockiert wird und dass während der Ausführung keine Eingabeaufforderungen oder Warnungen generiert werden.

Das Skript „ 1.ps1 “ lädt dann eine ausführbare Cryptominer-Datei mit dem Namen „xmrig.exe“ sowie die Datei „ config.json “ herunter, die Konfigurationsinformationen enthält, die der Miner verwenden kann, darunter Cryptowallet-Adressen, Cryptopool-Endpunkte und zusätzliche Konfigurationseinstellungen. Darüber hinaus enthält das Skript „1.ps1“ auch die Variable „ $miner_name “, in der der neue Name gespeichert wird, in den die ausführbare Cryptominer-Datei „xmrig.exe“ umbenannt wird. In diesem Fall wird „xmrig.exe“ in „sysupdate“ umbenannt und dann ausgeführt.


Das Skript „ 1.ps1 “ sorgt für Persistenz auf dem Rechner des Opfers, um die Datei „ config.json “ und den Miner zu aktualisieren. Dies erfolgt durch die Nutzung von „ SchTasks.exe“, mit der geplante Tasks auf einem lokalen oder einem Remote-Computer über PowerShell erstellt, gelöscht und ausgeführt werden können. Weitere Informationen zu „ SchTasks.exe “ finden Sie hier. Die geplante Aufgabe hat den Namen „Update Service for Windows Service“ und nutzt dasFlag „-ExecutionPolicy Bypass“, um zu vermeiden, dass während der Ausführung Warnungen oder Eingabeaufforderungen ausgegeben werden, sowie das Flag „-windowstyle hidden“, um unerkannt zu bleiben.

Infektion von Linux-Systemen
Die Kampagne nutzt mehrere CVEs, um eine RCE zu erreichen und Linux-Systeme zu infizieren. Neben der Kinsing-Malware, die einen Cryptominer enthält, verfügen Linux-Payloads auch über einen Remote-Access-Trojaner (RAT). Zu den Zielservices gehören Oracle WebLogic Server, Redis, Apache Solr, PHPUnit und Supervisor XML-RPC.
Die Schwachstelle CVE-2020-14883 von Oracle WebLogic Server wird von dieser Kampagne auch auf Linux-Systemen genutzt. Im Gegensatz zur Windows-Version dieser Sicherheitslücke, bei der der RCE-Vorgang über die Klasse „ ClassPathXmlApplicationContext “ erfolgt, erfolgt er unter Linux über die Klasse „ FileSystemXmlApplicationContext “. Die schädliche XML-Datei heißt „wb.xml“ und lädt ein Bash-Skript herunter – anstelle der vorherigen Datei „ wbw.xml “ für Windows, die ein PowerShell-Skript herunterlädt.


Auf Linux-Systemen beginnt die Infektion mit dem Erreichen einer RCE unter Verwendung einer der in der nachstehenden Tabelle aufgeführten CVEs, um eine Bash-Skriptdatei auf den Computer des Opfers herunterzuladen.



Der Name der Bash-Skriptdatei variiert zwischen s.sh , p.sh, sup.sh, d.sh, ex.sh, r.sh, spr.sh, tf.sh oder wb.sh – sie alle tun ungefähr das Gleiche.
Mit dem Bash-Skript werden alle konkurrierenden Miner, die möglicherweise bereits im System vorhanden sind, sowie die Sicherheits- und Protokollierungsfunktionen deaktiviert. Anschließend wird die Kinsing-Malware (in Golang geschrieben) heruntergeladen, es wird Persistenz über Crontab hergestellt und das Cryptomining wird gestartet.

Nach der Ausführung auf dem Computer des Opfers erzeugt die Kinsing-Malware einen zweiten Prozess namens „ kdevtmpfsi “ im Verzeichnis /tmp – hierbei handelt es sich um den Cryptominer – und führt ihn aus. Die Kinsing-Malware überwacht ständig den Prozess „ kdevtmpfsi “, um sicherzustellen, dass er ausgeführt wird.
Decodierung von Command-and-Control-IP-Adressen
Die Malware kommuniziert mit dem C2-Server kommuniziert, indem sie die C2-IP-Adresse zur Laufzeit mithilfe einer Funktion namens „ getActiveC2CUrl“ decodiert. Das Skript „ getActiveC2CUrl Die Funktion verwendet eine RC4-Stream-Chiffre für XOR-Klartext-Hexadezimaldaten mit einem Klartext-Schlüssel, die beide innerhalb der Binärdatei gespeichert sind.
Aufgrund der Art und Weise, wie Zeichenfolgen in einer Golang-Binärdatei gespeichert werden – in der alle statischen Zeichenfolgen im Grunde miteinander verkettet sind, was zu einer riesigen Zeichenfolge führt –, können der Klartextschlüssel und die Hexadezimaldaten leicht in der unübersichtlichen Zeichenfolge versteckt werden. Nach einer Umkehrung der Funktion „ getActiveC2CUrl “ können sowohl die Position im Speicher als auch die Länge des Schlüssels und der Hexadezimaldaten gefunden werden.


Das Skript „ getActiveC2CUrl “ decodiert die C2 Hex-Daten und wird dann zusammen mit dem Schlüssel in eine zweite Funktion namens „ RC4“ übergeben. Die nutzerdefinierte Funktion „ RC4 “ verwendet intern die Funktion „ func (c *Cipher) XORKeyStream(dst, src []byte) “ aus dem RC4-Golang-Paket, um die C2-IP-Adresse zu generieren.
Nachdem nun sowohl die C2-Hexadezimaldaten als auch der Schlüssel ermittelt wurden, kann die Funktion „ getActiveC2CUrl “ in Golang weiter rückentwickelt (Reverse Engineering) und neu geschrieben werden, um die aktive C2-IP-Adresse zu berechnen.


RAT-Fähigkeiten
Die Kinsing-Malware verfügt über einen Remote-Access-Trojaner (RAT), der in einer Funktion namens „ doTask() “ innerhalb der Binärdatei zu finden ist. Das Skript „ doTask “ enthält einige interessante Funktionsaufrufe, die sie basierend auf der jeweiligen Eingabe aufruft:
runTaskWithScan()
updateTask()
startCmd()
execTaskOut()
masscan()
socks()
backconnect()
runTaskWithHttp()
downloadAndExecute()
Eine dieser interessanten Funktionen ist „ startCmd() “. Mit ihr kann ein beliebiger Befehl auf dem Rechner des Opfers ausgeführt werden.

Command-and-Control-Kommunikation
Die Malware kommuniziert über HTTP mit dem C2, 185.154.53.140. Sie sendet regelmäßig dem C2 HTTP-Anfragen, empfängt Anweisungen zur Ausführung und bietet einfache Integritätsprüfungen.
Der infizierte Computer sendet dem C2 mit jeder HTTP-Anfrage Informationen über den aktuellen Status und die Systemressourcen, wie die Anzahl der Kerne, Arbeitsspeicher, Betriebssystem, ob Root-Berechtigungen erhalten wurden und mehr. All diese Parameter werden dem C2-Server über nutzerdefinierte HTTP-Header bereitgestellt.

Ein Endpunkt, den der infizierte Computer ständig anfragt, um Anweisungen zu erhalten, ist “ /get“. Wenn ein infizierter Computer eine GET-Anfrage an den /get -Endpunkt des C2 sendet, versucht die Malware sofort, neue zusätzliche schädliche Shell-Skripte von der ursprünglichen IP 194.38.20.199 herunterzuladen.

Die Bash-Skripte, die von der ursprünglichen Verteilungs-IP 194.38.20.199 heruntergeladen werden, wenn der /get -Endpunkt des C2 angefragt wird, heißen „ ph.sh “ und „ spre.sh“. Diese beiden Dateien unterscheiden sich von dem ursprünglichen infizierenden Bash-Skript, das wir uns zuvor angesehen haben. Sie haben jeweils einen anderen Zweck und enthalten zusätzliche Infektionsvektoren.
Zunächst untersuchen wir das Skript „ ph.sh “. Es lädt ein Rootkit namens „ libsystem.so “ vom Endpunkt „ 194.38.20.199/libsystem.so “ auf den Computer des Opfers herunter – zusätzlich zur vorhandenen Kinsing-Malware. Das Skript „ph.sh“ lädt dieses Rootkit dann in: /etc/ld.so.preload

Das Skript „ ph.sh “ erstellt zusätzlich zu den bereits vorhandenen Cron-Jobs, die zuvor vom anfänglichen Skript injiziert wurden, auch einen zweiten Persistenzmechanismus. Dies geschieht durch die Registrierung eines Systemservice, der den Host regelmäßig neu infiziert.

Wenn Sie mehr über das Rootkit „libsystem.so“, das das Skript „ph.sh“ installiert, und seine Funktionsweise erfahren möchten, steht Ihnen bei Trend Micro ein fantastischer Blog über dieses spezifische Rootkit zur Verfügung. Sie finden ihn hier
Die zweite interessante Bash-Skriptdatei, die durch eine /get -Antwort vom C2-Endpunkt abgerufen wird, ist „ spre.sh“. Der Zweck besteht darin, die Infektion auf weitere Hosts auszuweiten, indem SSH-Zugangsdaten für alle Hosts gesucht werden, auf die das Opfer Zugriff hat. Hierzu werden ~/.ssh/config , ~/.bash_history und .ssh/known_hostsuntersucht. Das Skript „ spre.sh “ versucht dann mit den ermittelten Anmeldedaten, per SSH auf die erkannten Hosts zuzugreifen, und infiziert sie ebenfalls.

Ein weiterer interessanter C2-Endpunkt, den das infizierte Gerät um Anweisungen bittet, ist der /mg -Endpunkt. Wenn der infizierte Computer eine GET-Anfrage an den /mg -Endpunkt stellt, antwortet der C2 mit einigen Zeichen. Dann beginnt die infizierte Maschine sofort, mit einer dritten IP-Adresse, 95.181.179.88, zu kommunizieren, die scheinbar dafür verantwortlich ist, Mining-Befehle in Form einer JSON-RPC-Payload über HTTP an die infizierte Maschine zu senden.

Richtige Vorgehensweise
Um diese Bedrohungen abzuwehren, empfiehlt das Akamai SIRT, die Prozesse auf Ihren Systemen auf ungewöhnlich hohe Ressourcennutzung und verdächtige Netzwerkaktivitäten zu überwachen. Eine ungewöhnlich hohe CPU-Auslastung für einen bestimmten Prozess kann ein Indikator für Cryptomining-Aktivität sein.
Das Akamai SIRT empfiehlt Ihnen außerdem, die Cron-Jobs, die unter den Crontabs auf Ihren Systemen registriert sind, regelmäßig zu überprüfen, um sicherzustellen, dass sie nicht mit unbekannten IP-Adressen kommunizieren. Dies ist eine gängige Methode für Linux-Malware, um Persistenz zu schaffen – und die besprochene Kampagne ist keine Ausnahme.
Auf Windows-Systemen sollte dies mit dem PowerShell-Befehl „SchTasks.exe /Query“ durchgeführt werden, um alle geplanten Aufgaben anzuzeigen, die möglicherweise von dieser Kampagne erstellt wurden. Überprüfen Sie auch die laufenden Prozesse auf Ihren Linux-Systemen und stellen Sie sicher, dass Prozesse mit dem Namen „kinsing“ oder „kdevtmpfsi“ nicht ausgeführt werden und dass kein Prozess namens „sysupdate“ auf Ihren Windows-Systemen ausgeführt wird.
Fügen Sie Ihren Systemen nach Möglichkeit eine starke Authentifizierung hinzu – schwache Passwörter können leicht durch Brute Force ermittelt werden. Stellen Sie außerdem sicher, dass Services, auf die die besprochene Kampagne abzielt, wie Oracle WebLogic Server, Redis, Apache Solr, PHPUnit und Supervisor XML-RPC, nicht mit dem Internet verbunden sind, wenn sie nicht benötigt werden, wodurch das Risiko einer Infektion dieser Services stark reduziert wird. Wenn beispielsweise eine Redis-Instanz nur von internen Systemen verwendet wird, muss sie nicht mit dem Internet verbunden sein.
Das Akamai SIRT empfiehlt außerdem, Ihre Systeme anhand der im nachstehenden Abschnitt „IoCs“ angegebenen Gefährdungsindikatoren (Indications of Compromise, IoC) zu überprüfen, um sicherzustellen, dass Ihre Systeme nicht bereits infiziert sind. Darüber hinaus sollten Sie regelmäßig Patches für Ihre Systeme erstellen und Best Practices befolgen.
Gefährdungsindikatoren (IoCs)
IPs
IP |
Beschreibung |
185.154.53.140 |
Command and Control |
194.38.20.199 |
Malware-Verteilung |
95.181.179.88 |
Verwaltet Cryptomining-Vorgänge |
195.3.146.118 |
Backup der Malware-Verteilung |
Dateien
SHA-256 |
Name |
Beschreibung |
8ca0229fb64e3f1819375cf1daf32104c37c0d0923bdc35cb6bea655ecd1a6a4 |
s.sh |
194.38.20.199/s.sh, Bash-Skript zum Herunterladen der Kinsing-Malware |
ede8fdb68d777efcc0538b465d640cbb2c061bd49461f76d65f68c135ff8bbb6 |
p.sh |
194.38.20.199/p.sh, Bash-Skript zum Herunterladen der Kinsing-Malware |
0e79ec7b00c14a4c576803a1fd2e8dd3ea077e4e98dafa77d26c0f9d6f27f0c9 |
d.sh |
194.38.20.199/d.sh, Bash-Skript zum Herunterladen der Kinsing-Malware |
6e35b5670953b6ab15e3eb062b8a594d58936dd93ca382bbb3ebdbf076a1f83b |
spr.sh |
194.38.20.199/spr.sh, Bash-Skript zum Herunterladen der Kinsing-Malware |
818179ac928027a5c26c9b13d3d830b7331c3e4c46ba1e305867e3d4accaf3ef |
r.sh |
194.38.20.199/r.sh, Bash-Skript zum Herunterladen der Kinsing-Malware |
56ac2321e481708ea72e2bf7710e66c3455afa729b24f6a6ba9065ae0cca8fb3 |
ex.sh |
194.38.20.199/ex.sh, Bash-Skript zum Herunterladen der Kinsing-Malware |
05e5ad89443b58805ae2eb2628d3eef1d6cbcc338bced23f422abe5ce60ff82d |
tf.sh |
194.38.20.199/tf.sh, Bash-Skript zum Herunterladen der Kinsing-Malware |
274b11542fcb30065c4cc0976ce33252ba2812756f7e22f6d80fae1acadf5c4c |
wb.sh |
194.38.20.199/wb.sh, Bash-Skript zum Herunterladen der Kinsing-Malware |
6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b |
kinsing |
194.38.20.199/kinsing, die Kinsing-Malware-Binärdatei |
7d31843ce5231c95ce07a609cb4473fe53b95a8d0685df9d666de348d17c69ff |
config.json |
194.38.20.199/config.json, JSON-Konfiguration für XMRIG-Miner |
c38c21120d8c17688f9aeb2af5bdafb6b75e1d2673b025b720e50232f888808a |
libsystem.so |
194.38.20.199/libsystem.so, eine Rootkit-Binärdatei |
5e5b5171a95955ecb0fa8f9f1ba66f313165044cc1978a447673c0ac17859170 |
xmrig.exe |
194.38.20.199/xmrig.exe, XMRIG-Miner für Windows |
49ff0329b9ad42c7fb17e6a2d80b316ed6b759ab5dfd04a5aba42b97225494cf |
wbw.xml |
194.38.20.199/wbw.XML, eine XML-Datei, die ein PowerShell-Skript zur Infektion von Windows-Systemen herunterlädt |
25b545dc3423d5c3c0181f559486643a7097b5fd87b32f0347ed667cbf3fb38e |
wb.xml |
194.38.20.199/wb.xml, eine XML-Datei, die ein Bash-Skript zur Infektion von Linux-Systemen herunterlädt |
6b9e23cb675be370a18a0c4482dc566be28920d4f1cd8ba6b4527f80acf978d3 |
curl-amd64 |
194.38.20.199/curl-amd64, Curl-Binärdatei |
fecd30cd7802f8ac4137a2d0659b3052411a99d809a5aefb48f8b821905100f3 |
al.sh |
194.38.20.199/al.sh, ein Bash-Skript, das den AEGIS-Service stoppt |
cb2ca16246a687b34fa1ba76015cb4aa3b50b4ecca4550478eb580c4725ab48f |
cron.sh |
194.38.20.199/cron.sh, ein Bash-Skript, das den Crontab aktualisiert |
d7cda9e427d0848352a1158c68a2577c1600965fb9dbb32bc1e10af1a442d284 |
ph.sh |
194.38.20.199/ph.sh, ein Bash-Skript zum Herunterladen der Kinsing-Malware und des Rootkits „libsystem.so“ |
f4c319e43296ab323615ac4bd4b7601991218ecb6d6043b1c040a96f1a33f14f |
spre.sh |
194.38.20.199/spre.sh, ein Bash-Skript, das die Infektion per SSH auf andere Wirte verteilt |
dd603db3e2c0800d5eaa262b6b8553c68deaa486b545d4965df5dc43217cc839 |
kdevtmpfsi |
Der Kinsing-Cryptominer-Prozess |