I laboratori Alien Labs di AT&T hanno recentemente scoperto un nuovo malware che prende di mira dispositivi IoT basati su sistema operativo Linux (e la maggioranza dei sistemi IoT lo sono).
Il malware è stato denominato “Shikitega”: opera attraverso una catena di infezioni, ognuna attuata da moduli che occupano solo poche centinaia di bytes, e dunque tali da passare inosservati.
Il primo stage del malware appare come un payload di soli 370 byte, frutto della codifica “shikata ga nai”, l’encoder polimorfico basato su XOR molto popolare in quanto presente nella suite di attacco di Rapid 7 Metasploit.
Il codice di questo primo stage non dipende da alcuna libreria, ed utilizza semplicemente le primitive di sistema (Linux) invocandole mediante istruzione assembly INT (invocazione di un interrupt) con argomento 80h (esadecimale, ossia 128, che è l’interrupt di chiamata a sistema Unix). Fa questo, ad esempio, nell’invocare la syscall “sys_socketcall”, un punto di accesso al sottosistema socket del kernel Linux, cosa che gli consente dunque l’invocazione delle differenti operazione in rete necessarie (apertura socket, read, write, ecc). Il secondo stage del malware è proprio ottenuto mediante queste operazioni in rete.
Il secondo stage è una implementazione del payload sviluppato da Metasploit, chiamato “Mettle” (disponibile su GitHub), una implementazione di meterpreter nativa per l’ambiente target (Android, iOS, macOS, Linux e Windows, ma anche Linux embedded, e dunque mondo IoT) che garantisce un ridotto consumo di risorse e consente differenti posture di attacco (controllo della webcam, sniffer, shell inverse in differenti protocolli, controllo dei processi, esecuzione di comandi della shell e tanto altro).
Il malware procede nel suo attacco mediante un ulteriore stage dedicato prevalentemente alla persistenza. Si tratta di un ulteriore payload eseguibile contenente in forma crittografica uno script shell che, eseguito sul target, provvederà a scaricare altre script shell che implementano le finalità dello stage. Il download avviene da sistemi di cloud pubblico (cloudflare o cloudfront), per ben 5 differenti script shell. La persistenza è fondata sul servizio cron, pertanto, se non disponibile sul target, una di queste script provvede alla sua installazione e avvio come servizio. Tra gli obiettivi di questo ultimo stage c’è lo scarico di una ulteriore componente di cryptomining e la periodica comunicazione per le configurazioni da parte della C&C.
Gli stage iniziali sono possibili grazie a due vulnerabilità note dei sistemi Linux: la CVE-2021-4034 (una vulnerabilità di escalation dei privilegi locale nell'utilità pkexec di Polkit, uno strumento di sistema a livello di applicazione che definisce e gestisce la politica che consente ai processi senza privilegi di parlare con processi privilegiati) e la CVE-2021-3493 (un problema sulle capabilities dei file tra utenti privilegiati e non nell’uso di OverlayFS, tecnologia che consente di vedere differenti mountpoint fusi in un unico percorso: uno strumento molto utilizzato da sistemi embedded come OpenWRT, oppure da Docker, ecc).
L’attacco risulta dunque sofisticato, distribuito su più passi, occulto e tale da non rilevare da subito le sue intenzioni e la sua attività: la strategia di abusare di noti servizi pubblici di hosting (Cloudflare, Cloudfront) su cui viene “nascosta” la C&C fa apparire la destinazione del traffico sviluppato come legittimo, e questo rende ulteriormente difficile (in un primo momento) il rilevamento dinamico della minaccia.