Una nuova evoluzione del Kinsing | Blog Akamai

Introduzione
Un'enorme e persistente botnet di crypto-mining sta infettando i sistemi su larga scala su Internet.
La campagna è stata osservata per la prima volta il 16 febbraio 2021 dal team SIRT di Akamai e sembra essere mirata ai sistemi Windows e Linux. Questa botnet ha catturato il nostro interesse perché si è mostrata altamente attiva in varie aree geografiche, incluse Americhe, Europa e Asia. Da allora, la botnet sta operando con lo stesso indirizzo IP di distribuzione (194.38.20.199), senza richiedere la rotazione dopo sei mesi. In precedenza, la campagna aveva avuto come obiettivo solo i computer Linux ma recentemente si è allargata anche ai sistemi Windows.
Infezione dei sistemi Windows
Per infettare i computer Windows, la botnet sfrutta la CVE-2020-14883,una vulnerabilità che interessa le versioni 10,3.6,0.0, 12,1.3,0.0, 12,2.1,3.0, 12.2.1.4.0 e 14.1.1.0.0 di Oracle WebLogic Server. Dopo l'exploit, la botnet consente al criminale di eseguire una RCE (Remote Code Execution) per ottenere il controllo di Oracle WebLogic Server.
L'infezione inizia facendo scaricare ed eseguire sul computer della vittima un file XML denominato wbw.xml. Sui computer Windows, il file XML viene eseguito tramite la classe ClassPathXmlApplicationContext

Il file wbw.xml recuperato contiene un comando PowerShell integrato che viene eseguito sul computer della vittima. Il comando è il seguente:

Questo comando tenta di scaricare uno script PowerShell denominato "1.ps1"sulla macchina delle vittime utilizzando il metodo System.Net.WebClient.DownloadString . Inoltre, utilizza il flag di bypass Set-ExecutionPolicy per garantire che non venga bloccato nulla e che durante l'esecuzione non venga generato alcun prompt o avviso.

Lo script "1.ps1" scarica quindi un file di crypto-mining eseguibile, denominato xmrig.exe, e un file config.json contenente le informazioni di configurazione che il miner deve utilizzare, ad esempio gli indirizzi del crypto-wallet, gli endpoint del pool di crypto-mining e altre impostazioni di configurazione. Oltre a questo, lo script 1.ps1 contiene anche una variabile $miner_name che memorizza il nuovo nome con il quale verrà rinominato il file eseguibile di crypto-mining, xmrig.exe; in questo caso, xmrig.exe viene rinominato in"sysopdate"e quindi eseguito.


Lo script "1.ps1" stabilisce la persistenza sul computer della vittima per aggiornare il file config.json e il miner. Esegue questa operazione, sfruttando il file Schtasks.exeche consente di creare, eliminare ed eseguire le attività pianificate su una macchina locale o remota da PowerShell. Ulteriori informazioni sul file SchTasks.exe sono disponibili qui. L'attività pianificata è denominata"Update service for Windows Service"e anch'essa sfrutta ilil flag di bypass ExecutionPolicy per evitare che vengano generati avvisi o prompt durante l'esecuzione, e il flag WindowStyle Hidden per rimanere nascosta.

Infezione dei sistemi Linux
La campagna utilizza più CVE per eseguire la RCE e infettare i sistemi Linux. Insieme al malware Kinsing, che contiene un file di crypto-mining, i payload Linux includono anche un Trojan ad accesso remoto (RAT). I servizi presi di mira includono Oracle WebLogic Server, Redis, Apache Solr, PHPUnit e Supervisor XML-RPC.
Anche la campagna sui sistemi Linux sfrutta la vulnerabilità CVE-2020-14883 di Oracle WebLogic Server. Tuttavia, a differenza della versione per Windows, in cui la RCE viene eseguita tramite la classe ClassPathXmlApplicationContext in Linux la RCE viene implementata mediante la classe FileSystemXmlApplicationContext . Il file XML dannoso è denominato wb.xml. Questo file scarica uno script bash, a differenza del file wbw.xml per Windows che scarica uno script PowerShell.


Sui sistemi Linux, l'infezione ha inizio con l'esecuzione della RCE, utilizzando una qualsiasi CVE tra quelle riportate nella tabella di seguito, per scaricare un file script bash sul computer della vittima.



Sebbene il nome del file di script bash abbia più varianti, tra cui s.sh , p.sh, sup.sh, d.sh, ex.sh, r.sh, spr.sh, tf.sh o wb.sh questi file fanno praticamente tutti la stessa cosa.
Lo script bash elimina tutte le altre minacce di crypto-mining esistenti nel sistema e disabilita le funzionalità di sicurezza e di accesso. Dopodiché, scarica il malware Kinsing (scritto in Golang), stabilisce la persistenza utilizzando il comando crontab e quindi inizia la sua attività di crypto-mining.

Una volta eseguito sul computer, il malware Kinsing crea un secondo processo denominato kdevtmpfsi nella directory /tmp, cioè il file miner xmrig, e lo esegue. Il malware Kinsing monitora costantemente il file kdevtmpfsi per verificare che sia in esecuzione.
Decodifica dell'indirizzo IP del server Command and Control
Il malware comunica con il server C2 decodificandone l'indirizzo IP mediante una funzione chiamata getActiveC2CUrl. La funzione getActiveC2CUrl utilizza un cifrario a flusso RC4 in dati esadecimali con testo in chiaro XOR e una chiave di testo, entrambi memorizzati all'interno del binario.
Per la modalità di memorizzazione delle stringhe all'interno del binario Golang, che prevede che tutte le stringhe statiche siano praticamente concatenate l'una con l'altra, dando luogo a un grande blob di stringhe, la chiave di testo e i dati esadecimali possono essere facilmente nascosti all'interno dell'enorme stringa. Dopo qualche operazione di reverse-engineering della funzione getActiveC2CUrl è possibile individuare la posizione in memoria e la lunghezza della chiave e dei dati esadecimali.


La funzione getActiveC2CUrl decodifica i dati esadecimali C2 che, insieme alla chiave, vengono elaborati mediante una seconda funzione chiamata RC4. La funzione personalizzata RC4 utilizza la funzione func (c *Cipher) XORKeyStream(dst, src []byte) internamente dal pacchetto RC4 Golang per generare l'indirizzo IP del server C2.
Una volta ottenuti i dati esadecimali C2 e la chiave, la funzione getActiveC2CUrl può essere sottoposta a reverse-engineering e riscritta in Golang per calcolare l'indirizzo IP attivo del server C2.


Funzionalità RAT
Il malware Kinsing è dotato di funzionalità di Trojan ad accesso remoto (RAT) disponibili in una funzione denominata doTask() all'interno del binario. La funzione doTask contiene alcune interessanti chiamate di funzione che vengono eseguite in base a un determinato input
runTaskWithScan()
updateTask()
startCmd()
execTaskOut()
masscan()
socks()
backconnect()
runTaskWithHttp()
downloadAndExecute()
Una di queste interessanti funzioni è startCmd() che consente di eseguire un comando arbitrario sul computer della vittima.

Comunicazione di Command and Control
Il malware comunica con il C2,185.154.53.140, tramite HTTP. Invia regolarmente le richieste HTTP C2, riceve le istruzioni da eseguire e fornisce semplici controlli di integrità.
A ogni richiesta http, il computer infetto invia le informazioni C2 sullo stato corrente e le risorse di sistema, cioè numero di core, memoria, sistema operativo, se i privilegi di root sono stati ottenuti o meno, e altro ancora. Tutti questi parametri vengono forniti al server C2 utilizzando intestazioni HTTP personalizzate.

Un endpoint che il computer infetto richiede costantemente per ricevere istruzioni è /get. Quando una macchina infetta fa una richiesta GET all'endpoint /get del C2, il malware tenta immediatamente di scaricare nuovi script di shell dannosi dall'IP di distribuzione originale 194.38.20.199.

Gli script bash che vengono scaricati dall'IP di distribuzione originale 194.38.20.199 a seguito dell'esecuzione dell'endpoint /get del C2 sono definiti ph.sh e spre.sh. Questi due file sono diversi dallo script bash dannoso che abbiamo esaminato in precedenza, in quanto hanno uno scopo diverso e contengono vettori di infezione aggiuntivi.
Esaminiamo prima lo script ph.sh che scarica un rootkit chiamato libsystem.so dall'endpoint 194.38.20.199/libsystem.so in aggiunta al malware Kinsing già presente sul computer della vittima. Lo script ph.sh precarica questo rootkit in /etc/ld.so.preload

Lo script ph.sh stabilisce inoltre un secondo meccanismo di persistenza, oltre ai processi cron già esistenti precedentemente inseriti dallo script iniziale. Esegue questa operazione, registrando un servizio di sistema che reinfetta periodicamente l'host.

Per ulteriori dettagli sul rootkit libsystem.so installato dallo script ph.sh e sulle sue strutture interne, consultate il blog di Trend Micro che approfondisce l'argomento qui
Il secondo file di script bash che viene recuperato in seguito a una risposta /get da parte dell'endpoint del C2 è spre.sh. Il suo scopo è quello di diffondere l'infezione a host aggiuntivi recuperando le credenziali ssh di tutti gli host a cui la vittima ha accesso esaminando i file ~/.ssh/config , ~/.bash_history e .ssh/known_hosts. Lo script spre.sh tenterà quindi di utilizzare il protocollo ssh per accedere agli host rilevati, utilizzando le autenticazioni ottenute, e infettare anche loro.

Un altro interessante endpoint C2, a cui la macchina infetta invia richieste di istruzioni, è l'endpoint /mg . Quando il computer infetto invia una richiesta GET all'endpoint /mg, il C2 risponde con alcuni caratteri e la macchina infetta inizierà immediatamente a comunicare con un terzo indirizzo IP, 95.181.179.88, che sembra sia responsabile dei comandi di crypto-minig inviati tramite Http al computer infetto sotto forma di un payload JSON-RPC.

Che cosa fare
Per mitigare queste minacce, il team SIRT di Akamai consiglia di monitorare i processi dei sistemi per rilevare un consumo eccessivo di risorse e attività di rete sospette. Un uso anomalo della CPU per un dato processo può essere un elemento indicativo di un'attività di crypto-mining.
Il team SIRT di Akamai consiglia inoltre di controllare frequentemente i processi cron registrati nei crontab dei sistemi per garantire che tali processi non comunichino con indirizzi IP sconosciuti, una tecnica comune del malware Linux per stabilire la persistenza, a cui la campagna trattata non fa eccezione.
Nei sistemi Windows, vanno utilizzate le stesse accortezze con PowerShell, utilizzando il comando SchTasks.exe/Query per visualizzare eventuali attività pianificate che potrebbero essere state create da questa campagna. È consigliabile controllare anche i processi in esecuzione e assicurarsi che non vi siano processi che riportano il nome kinsing o kdevtmpfsi, per i sistemi Linux, e sysupdate, per i sistemi Windows.
Ove possibile, aggiungete un'autenticazione sicura ai sistemi: le password deboli possono essere forzate in modo semplice. Inoltre, assicuratevi che i servizi comunemente presi di mira dalla campagna in questione, tra cui Oracle WebLogic Server, Redis, Apache Solr, PHPUnit e Supervisor XML-RPC, non siano connessi a Internet se non strettamente necessario, poiché questo riduce notevolmente il rischio di infezione. Ad esempio, se un'istanza Redis viene utilizzata solo da sistemi interni, non è necessario che sia connessa a Internet.
Il team SIRT di Akamai consiglia inoltre di controllare i sistemi in base agli indicatori di compromissione (IOC) indicati nella sezione IoC riportata di seguito, per verificare che i sistemi non siano già infetti. È consigliabile , inoltre, applicare regolarmente le patch ai sistemi e seguire le best practice.
Indicatori di compromissione (IOC)
IP
IP |
Descrizione |
185.154.53.140 |
Command and Control |
194.38.20.199 |
Distribuzione di malware |
95.181.179.88 |
Gestione delle attività di crypto-mining |
195.3.146.118 |
Backup della distribuzione di malware |
File
SHA-256 |
Nome |
Descrizione |
8ca0229fb64e3f1819375cf1daf32104c37c0d0923bdc35cb6bea655ecd1a6a4 |
s.sh |
194.38.20.199/s.sh, script bash per scaricare il malware Kinsing |
ede8fdb68d777efcc0538b465d640cbb2c061bd49461f76d65f68c135ff8bbb6 |
p.sh |
194.38.20.199/p.sh, script bash per scaricare il malware Kinsing |
0e79ec7b00c14a4c576803a1fd2e8dd3ea077e4e98dafa77d26c0f9d6f27f0c9 |
d.sh |
194.38.20.199/d.sh, script bash per scaricare il malware Kinsing |
6e35b5670953b6ab15e3eb062b8a594d58936dd93ca382bbb3ebdbf076a1f83b |
spr.sh |
194.38.20.199/spr.sh, script bash per scaricare il malware Kinsing |
818179ac928027a5c26c9b13d3d830b7331c3e4c46ba1e305867e3d4accaf3ef |
r.sh |
194.38.20.199/r.sh, script bash per scaricare il malware Kinsing |
56ac2321e481708ea72e2bf7710e66c3455afa729b24f6a6ba9065ae0cca8fb3 |
ex.sh |
194.38.20.199/ex.sh, script bash per scaricare il malware Kinsing |
05e5ad89443b58805ae2eb2628d3eef1d6cbcc338bced23f422abe5ce60ff82d |
tf.sh |
194.38.20.199/tf.sh, script bash per scaricare il malware Kinsing |
274b11542fcb30065c4cc0976ce33252ba2812756f7e22f6d80fae1acadf5c4c |
wb.sh |
194.38.20.199/wb.sh, script bash per scaricare il malware Kinsing |
6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b |
kinsing |
194.38.20.199/kinsing, il binario del malware Kinsing |
7d31843ce5231c95ce07a609cb4473fe53b95a8d0685df9d666de348d17c69ff |
config.json |
194.38.20.199/config.json, configurazione json per il miner XMRIG |
c38c21120d8c17688f9aeb2af5bdafb6b75e1d2673b025b720e50232f888808a |
libsystem.so |
194.38.20.199/libsystem.so, un binario rootkit |
5e5b5171a95955ecb0fa8f9f1ba66f313165044cc1978a447673c0ac17859170 |
xmrig.exe |
194.38.20.199/xmrig.exe, miner XMRIG per Windows |
49ff0329b9ad42c7fb17e6a2d80b316ed6b759ab5dfd04a5aba42b97225494cf |
wbw.xml |
194.38.20.199/wbw.xml, file xml che scarica uno script PowerShell per infettare i sistemi Windows |
25b545dc3423d5c3c0181f559486643a7097b5fd87b32f0347ed667cbf3fb38e |
wb.xml |
194.38.20.199/wb.xml, file xml che scarica uno script bash per infettare i sistemi Linux |
6b9e23cb675be370a18a0c4482dc566be28920d4f1cd8ba6b4527f80acf978d3 |
curl-amd64 |
194.38.20.199/curl-amd64 , binario curl |
fecd30cd7802f8ac4137a2d0659b3052411a99d809a5aefb48f8b821905100f3 |
al.sh |
194.38.20.199/al.sh, script bash che arresta il servizio aegis |
cb2ca16246a687b34fa1ba76015cb4aa3b50b4ecca4550478eb580c4725ab48f |
cron.sh |
194.38.20.199/cron.sh, script bash che aggiorna il crontab |
d7cda9e427d0848352a1158c68a2577c1600965fb9dbb32bc1e10af1a442d284 |
ph.sh |
194.38.20.199/ph.sh, script bash che scarica il malware Kinsing e il rootkit libsystem.so |
f4c319e43296ab323615ac4bd4b7601991218ecb6d6043b1c040a96f1a33f14f |
spre.sh |
194.38.20.199/spre.sh, script bash che diffonde l'infezione ad altri host tramite ssh |
dd603db3e2c0800d5eaa262b6b8553c68deaa486b545d4965df5dc43217cc839 |
kdevtmpfsi |
Il processo di crypto-mining di Kinsing |