Autori: Santiago Pontiroli, Gabor Molnar, Kirill Antonenko
Riepilogo
- Acronis TRU ha individuato nuove varianti di Chaos RAT, un malware noto, in recenti attacchi diffusi su sistemi Linux e Windows.
- Chaos RAT è uno strumento open source di amministrazione remota (RAT) identificato per la prima volta nel 2022. Nel 2024 ha subito un'evoluzione e nel 2025 TRU ha scoperto nuove varianti.
- I ricercatori di TRU hanno scoperto una vulnerabilità critica nel pannello web di Chaos RAT che consente agli hacker di eseguire codice remoto sui server. Questo recente esempio di Chaos RAT suggerisce che l'aggressore abbia indotto le vittime a scaricare un'utilità di risoluzione dei problemi di rete per ambienti Linux.
- Sviluppato in Golang, Chaos RAT offre una compatibilità multipiattaforma con i sistemi Windows e Linux, un altro esempio di come gli strumenti legittimi possano contenere vulnerabilità ed essere riutilizzati per crimini informatici.
- Sebbene l'utilizzo complessivo rimanga limitato, recenti campionamenti confermano che Chaos RAT è ancora attivo. Il suo basso profilo di rilevamento crea opportunità per attività di spionaggio, esfiltrazione di dati e creazione di punti di appoggio per ransomware e altre operazioni post-compromissione.
- In questa analisi tecnica, il team Acronis TRU si concentra sulla variante di Linux e condivide strategie di rilevamento attuabili, tra cui regole YARA, indicatori di compromissione e suggerimenti per la caccia alle minacce con EDR per la difesa.
Introduzione
Chaos RAT è un RAT open source scritto in Golang, che offre supporto multipiattaforma per i sistemi Windows e Linux. Ispirato a popolari framework come Cobalt Strike e Sliver, Chaos RAT fornisce un pannello amministrativo in cui gli utenti possono creare payload, stabilire sessioni e controllare le macchine compromesse. Sebbene i malware basati su Golang tendano a essere più lenti e di dimensioni maggiori rispetto a quelli scritti in C++ o in altri linguaggi più comuni, traggono vantaggio dalle capacità di compilazione incrociata di Golang, con un tempo di sviluppo ridotto e una maggiore flessibilità.

Inizialmente progettato come strumento legittimo per la gestione remota, la natura open source di Chaos RAT ha attirato l'attenzione di attori di minacce che lo sfruttano per scopi dannosi. Nonostante lo sviluppo sia iniziato nel 2017, il primo utilizzo di Chaos RAT in attacchi diffusi è stato osservato nel novembre 2022. Da allora, continuano a circolare delle varianti in Linux, che vengono utilizzate principalmente nelle campagne di mining di criptovalute. Questa analisi esamina in dettaglio l'architettura di Chaos RAT, il suo utilizzo negli attacchi attivi e i relativi metodi di rilevamento e mitigazione.
Anatomia di Chaos RAT: codice, funzionalità e comunicazione
Diffusione
Chaos RAT raggiunge tipicamente le vittime tramite e-mail di phishing contenenti link o allegati dannosi. I campioni iniziali distribuivano uno script dannoso (non correlato al RAT) progettato per modificare il file /etc/crontab, un'utilità di pianificazione di attività comunemente usata in modo abusivo dagli attori di minacce per assicurarne la permanenza. Questo meccanismo consente all'aggressore di aggiornare o modificare il payload attuale senza dover toccare nuovamente il sistema di destinazione, poiché il payload viene scaricato in remoto ogni volta che il cron job viene eseguito. Le prime campagne hanno utilizzato questa tecnica per distribuire separatamente i miner di criptovalute e Chaos RAT, suggerendo che Chaos veniva impiegato principalmente per sondare e raccogliere le informazioni sui dispositivi compromessi.

In questo ultimo esempio individuato su Virus Total e inviato dall'India, un file archiviato compresso tar.gz con il nome NetworkAnalyzer.tar.gz conteneva il payload finale di Chaos RAT. Non abbiamo informazioni aggiuntive su come la vittima abbia ricevuto il pacchetto, ma i dati disponibili indicano che si è trattato di un'esca che tentava di convincerla a scaricare un'utility di risoluzione dei problemi di rete per ambienti Linux.

Panoramica
Il codice sorgente archiviato di Chaos RAT più recente è disponibile su GitHub ed è stato aggiornato per l'ultima volta nell'ottobre 2024. Questa versione si concentra esclusivamente sulla creazione di client a 64 bit, con supporto per i sistemi Windows e Linux. Il suo continuo sviluppo suggerisce miglioramenti e perfezionamenti costanti volti ad ampliare la compatibilità, affinare le capacità di generazione del payload e rafforzare i protocolli di comunicazione.
Pannello di amministrazione
Il pannello di amministrazione di Chaos RAT funge da interfaccia centralizzata per la creazione, la gestione e il controllo dei payload. Offre una dashboard accessibile tramite browser, con varie funzionalità che consentono agli aggressori o ai ricercatori di interagire con i sistemi compromessi. Anche se il numero dei pannelli di amministrazione rilevati è basso, la comparsa di nuovi esempi in VirusTotal e il basso tasso di rilevamento indicano che Chaos RAT è ancora utilizzato negli attacchi diffusi.

È possibile avviare il pannello di amministrazione in locale eseguendo il comando:
PORT=8080 SQLITE_DATABASE=chaos go run cmd/chaos/main.go
Una volta avviato il servizio, è possibile accedere al pannello tramite qualsiasi browser web all'indirizzo http://localhost:8080 con le credenziali di accesso predefinite admin:admin.
Il pannello di amministrazione include schede per la gestione dei clienti, la generazione dei payload e il monitoraggio delle campagne. La Dashboard visualizza gli ID dei clienti, gli indirizzi IP, i dettagli del sistema operativo e le statistiche di connessione. Il Generatore di Payload consente all'utente di creare payload a 64 bit per Windows e Linux, con opzioni come “Esegui di nascosto” per Windows.


La scheda Gestione clienti visualizza i clienti connessi, con dettagli come ID, sistema operativo, indirizzo IP e timestamp dell'ultima visualizzazione. Supporta l'esecuzione di comandi singoli o multipli. La scheda Esplora file consente di sfogliare, caricare, scaricare, eliminare ed eseguire file, con attraversamento ricorsivo.

La scheda Gestione clienti visualizza i clienti connessi, con dettagli come ID, sistema operativo, indirizzo IP e timestamp dell'ultima visualizzazione. Supporta l'esecuzione di comandi singoli o multipli. La scheda Esplora file consente di sfogliare, caricare, scaricare, eliminare ed eseguire file, con attraversamento ricorsivo.

Esecuzione
Mentre la variante per Windows dispone dell'opzione “Esegui di nascosto” nella fase di build, che nasconde il risultato della console, la variante per Linux non dispone di questa opzione. Al momento dell'esecuzione, viene stampato l'indirizzo del server e lo stato di connessione.

È ancora possibile per i sistemi Linux sopprimere questa uscita reindirizzandola al dispositivo “/dev/null”.
La differenza principale tra le vecchie versioni di Chaos RAT e le demo più recenti è che quelle più vecchie (immagine a sinistra sotto) archiviavano l'indirizzo IP, la porta e altri dati come testo semplice senza alcuna codifica, ad eccezione del valore del token, che è codificato Base64 in entrambi i casi. Nell'ultima variante (immagine a destra sotto), tutti i dati vengono archiviati come una stringa Base64 codificata con una chiamata di funzione aggiuntiva che è responsabile per la lettura.

Di recente abbiamo osservato codici binari compilati utilizzando la versione più recente del progetto di ChaosRAT. Uno di essi (Esempio 2) è stato inoltre compresso con l'utility UPX.
Dati di configurazione decodificati
Ogni campione contiene un oggetto di configurazione codificato con Base64 con i nomi di campo casuali. Una volta decodificati, i campi vengono mappati su valori chiave come la porta del server C2, l'indirizzo IP e il server token JWT utilizzato per l'autorizzazione.
Esempio 1
SHA256:1e074d9dca6ef0edd24afb2d13cafc5486cd4170c989ef60efd0bbb0
{
"86pYnySllR": "5223",
"S7mOecuru0": "176.65.141.63",
"vu2Yr4lh2E": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3Njk1ODEyMzQsInVzZXIiOiJkZWZhdWx0In0.gQ7sfb0DF74yrFsdCO1dy1Vb3YBhEv2utn7PdcB4kC4"
}
Esempio 2
SHA256:a51416ea472658b5530a92163e64cfa51f983dfabe3da38e0646e92fb14de191
{
"Svy1ITNLYV": "7419",
"WiBZgQLch7": "91.208.197.40",
"bIffmObdNe": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE3NzI0NTg2NTYsInVzZXIiOiJkZWZhdWx0In0.5crbatKoe-6CogXJwgzOl_RSBnydG5l_Lf-ahO2HAu0"
}
Come mostrato, mentre i nomi dei campi sono randomizzati per eludere un semplice rilevamento dei pattern, la loro struttura e il loro scopo rimangono coerenti.
Decodifica JWT
I token JSON Web Token (JWT) incorporati seguono il formato standard e differiscono solo per i timestamp di scadenza (campo exp):
Esempio 1
{
"alg":"HS256",
"typ":"JWT"
}
{
"authorized":true,
"exp":1769581234,
"user":"default"
}
Esempio 2
{
"alg":"HS256",
"typ":"JWT"
}
{
"authorized":true,
"exp":1772458656,
"user":"default"
}
Questo token viene utilizzato per l'autenticazione e l'autorizzazione delle comunicazioni client-server con l'infrastruttura di comando e controllo.
Comportamento post-configurazione
Una volta analizzata la configurazione, il malware attiva una routine di raccolta delle informazioni. Questa funzione raccoglie i dettagli dell'host, che possono includere i metadati del sistema, i dettagli di rete e i potenziali identificatori che aiutano gli operatori a profilare la macchina infetta.
- Nome host
- Nome attuale
- Indirizzo MAC
- Indirizzo IP
- Ora corrente
- Nome del sistema operativo
- Architettura del sistema operativo
Quando il sistema recupera il nome del sistema operativo, assegna una variabile globale utilizzata per determinare i percorsi di esecuzione specifici delle funzioni per ogni sistema operativo eseguibile. Imposta il valore su “1” per i sistemi Windows e su “0” per i sistemi Linux. Dopo aver impostato questa variabile, il RAT inizializza servizi aggiuntivi supportati dai client compilati, adattando le funzionalità in base al sistema operativo rilevato.

Il RAT entra quindi in un ciclo infinito, monitorando continuamente la disponibilità del server. Se il server non è raggiungibile, riprova ogni 30 secondi. Una volta stabilita la connessione, il RAT invia i dati di sistema raccolti al server e controlla i comandi in arrivo ad intervalli di 30 secondi.

Per comunicare con il server, il client aggiunge una delle seguenti stringhe all'indirizzo IP e alla porta prima di inviare la richiesta:
- /client — Inizializza una nuova connessione
- /health — Controlla se il server è disponibile
- /device — Invia informazioni sul dispositivo
Se il client non riesce a connettersi al server, stamperà il seguente messaggio:

Per ottenere comandi dal server, legge l'ultimo messaggio ottenuto dalla connessione stabilita. Ogni messaggio proveniente dal server è in formato JSON, quindi il client di Chaos RAT lo deserializza.

Prende poi il valore del comando e carica un set di stringhe predefinite (comandi disponibili). Queste stringhe verranno confrontate con i valori ottenuti per determinare l'operazione da eseguire.

Set di comandi e funzionalità
- getos — Raccoglie le informazioni di sistema, come il nome del sistema operativo, la versione, l'architettura, il nome utente, l'indirizzo MAC, l'indirizzo IP, la data e l'ora correnti.
- screenshot — Cattura uno screenshot utilizzando la libreria kbinani/screenshot, lo codifica in formato PNG e lo invia al server dopo averlo codificato in Base64.
- restart — Riavvia il sistema. Utilizza shutdown -r -t 00 in Windows e reboot in Linux.
- shutdown — Arresta il sistema. Utilizza shutdown -s -t 00 in Windows e poweroff in Linux.
- lock — Blocca il sistema Windows utilizzando la funzione LockWorkStation di user32.dll. Non supportato su Linux.
- sign-out— Disconnette l'utente dal registro. Utilizza il comando shutdown -L su Windows. Non supportato su Linux.
- explore — Elenca i file e le directory da un percorso specifico. Fornisce i nomi dei file e i timestamp della modifica. Supporta la scansione ricorsiva delle directory.
- download — Carica un file specificato dal client al server. Inizializzata tramite una richiesta POST senza codifica Base64.
- upload — Scarica un file specificato dal server al client tramite una richiesta GET e scrive i dati in un file locale.
- delete — Elimina un file specificato dal file system del client.
- open-url — Apre un URL nel browser predefinito. Utilizza il comando start su Windows e l'utilità xdb su Linux.
Scomposizione dettagliata delle funzionalità di comando
GetOS
Questo comando ottiene le informazioni del sistema, come il nome del sistema operativo, la versione, l'architettura, il nome utente, gli indirizzi MAC e IP e la data e l'ora correnti.

Screenshot
Questa funzionalità è presa da un altro progetto open source. Dopo aver catturato lo screenshot, lo passa alla funzione di codifica per trasformarlo nel formato PNG. Prima di inviarlo al server, lo codifica anche con Base64. Nel server, questa immagine verrà salvata nella cartella download.

Riavvio e spegnimento
L'esecuzione di questi comandi dipende dal sistema operativo. Per il riavvio su Windows utilizza il comando “shutdown -r -t 00” e il comando “shutdown -s -t 00” per lo spegnimento del sistema. Per Linux utilizza i comandi “reboot” e “poweroff”.

Blocca e disconnetti
Questi comandi sono supportati solo dalla versione per Windows. Per eseguire l'operazione di blocco, utilizza la funzione “LockWorkStation” di “user32.dll”:
Rundll32.exe user32.dll, LockWorkStation
Il comando di disconnessione viene eseguito tramite il “shutdown -L”.

Esplora file
Questa funzionalità viene utilizzata per creare un elenco dei file presenti nel sistema. Inizia dalla home directory ed esegue la funzione “ReadDir”. Quindi controlla il tipo di ciascun file trovato. Se il file è una directory, prende solo il suo nome e lo aggiunge all'elenco:
{
"path":"/home/dev/go",
"files":null,
"directories":[
"bin",
"pkg"
]
}
Se la directory elencata contiene i file, oltre al nome restituisce anche la data dell'ultima modifica:
{
"path":"/home/dev",
"files":[
{
"filename":".bash_history",
"mod_time":"2025-03-06T10:28:28.788848322Z"
},
{
"filename":".bash_logout",
"mod_time":"2024-03-31T08:41:03Z"
},
{
"filename":".bashrc",
"mod_time":"2024-03-31T08:41:03Z"
}
]
}
Download e upload
Quando il comando di download arriva al client, deve fare l'upload sul server. Il comando contiene un percorso file completo come parametro.

Per prima cosa, il client legge il contenuto del file e crea una richiesta POST, in cui scrive anche i dati dei file. Imposta quindi anche i cookie, che contengono il token di configurazione e il tipo di contenuto. Questa richiesta verrà inviata senza codifica Base64.

Quando il file di upload arriva al client, scarica il file che gli viene passato come argomento nel sistema locale. Per fare ciò, invia una richiesta “GET” al server e quindi scrive i dati ottenuti nel file.

In entrambi i casi, dopo aver scaricato o caricato un file, invia un pacchetto aggiuntivo che contiene il percorso completo del file per segnalare che l'operazione è stata completata con successo. Se fallisce, invia come risultato un pacchetto con “0”.
Apri URL
Sui sistemi Windows utilizza il comando “start”, forzandolo ad aprire l’URL nel browser predefinito dal sistema. Sui sistemi Linux, a tale scopo utilizza l'utility “xdb”.

Esecuzione del comando
Chaos RAT inserisce i comandi dei terminali al campo “command” della richiesta, quindi, sul lato del client, se nessuno dei comandi precedenti corrisponde, passerà il comando al terminale. Il risultato dell'eseguibile del comando verrà inviato al server.

Dopo l'esecuzione del comando, codifica il risultato in Base64 e lo invia al server in formato JSON eseguibile. Ogni client utilizza un indirizzo MAC host come proprio ID.


Chaos RAT consente agli aggressori di prendere il controllo… del controller
Chaos RAT si ritrova vittima dei suoi stessi trucchi. Una vulnerabilità critica nel suo pannello web ha permesso agli aggressori di eseguire il codice remoto sul server, ribaltando le sorti dello strumento progettato per controllarne altri.
La vulnerabilità: CVE-2024-30850
Il cuore del problema era la funzione BuildClient nel backend di Chaos RAT. Questa funzione accettava input utente quali indirizzo del server, porta e nome del file per costruire un comando shell per la creazione dei codici binari dell'agente. Nonostante alcune convalide degli input, l'uso di exec.Command("sh", "-c", buildCmd) significava che gli input malevoli potevano iniettare comandi arbitrari. Questo ha aperto la strada agli utenti autenticati per eseguire il codice sul server che effettua l'hosting del RAT.

L'exploit: CVE-2024-31839
Un hacker potrebbe creare una chiamata di richiamo per l'agente spoofing, sfruttando un exploit XSS nel pannello di amministrazione. Incorporando script dannosi nei dati dell'agente, potrebbero eseguire JavaScript nel contesto della sessione del browser dell'amministratore. Questa combinazione di iniezione di comandi lato server e XSS lato client ha creato un potente vettore di attacco.
La sorpresa: il Rickrolling
Ad esempio, il ricercatore e professionista della sicurezza Rick-Roller Chebuya ha dimostrato l'exploit facendo in modo che il pannello di amministrazione di Chaos RAT eseguisse la canzone di Rick Astley “Never Gonna Give You Up”. Consultare l'articolo completo su Chebuya: Esecuzione del codice remoto su CHAOS RAT tramite agenti spoofing.

Impatto
Il malware è in grado di gestire file, fornire accesso tramite reverse shell e fungere da proxy per il traffico di rete. Queste funzionalità potrebbero facilitare le attività di spionaggio, l'esfiltrazione di dati o costituire un punto d’ingresso per il lancio di attacchi ransomware e altre operazioni successive alla compromissione.
La sua natura open source ne facilita la modifica e il riutilizzo da parte degli attori delle minacce, dando origine a nuove varianti in grado di eludere i sistemi di rilevamento basati su firme. Ciò rende più complessa anche l'attribuzione, poiché più attori possono utilizzare strumenti simili senza legami evidenti, sfumando i confini tra criminalità informatica e attività sponsorizzate da stati.
Esempi
Diversi gruppi di minacce persistenti avanzate (APT) sono stati osservati utilizzare Trojan di accesso remoto (RAT) open source nelle loro operazioni. APT41 e APT36 hanno entrambi utilizzato NjRAT, mentre APT10 ha utilizzato QuasarRAT. Blind Eagle (APT-C-36) è noto per utilizzare AsyncRAT. Inoltre, sia APT34 che APT35 hanno sfruttato Pupy RAT nelle loro campagne.
Perché utilizzare Chaos RAT o, più in generale, malware open source?
1. Mimetizzazione: l'utilizzo di malware pubblicamente disponibile aiuta i gruppi APT a mimetizzarsi tra le attività quotidiane della criminalità informatica. Se gli attori di basso profilo utilizzano ampiamente un RAT, è più difficile determinare se una specifica campagna è condotta da un attore esperto o da uno script kiddie.
2. Velocità e costi: anche i gruppi APT dotati di risorse adeguate devono agire rapidamente o condurre operazioni su vasta scala. Il malware open source fornisce un kit di strumenti "sufficientemente valido" che può essere personalizzato e implementato rapidamente.
3. Elusione dell'attribuzione: quando più attori utilizzano lo stesso malware open source, l'attribuzione diventa più complessa. Non è possibile associare l'attività a un gruppo specifico basandosi solo sul malware, e questo offre agli attori di minacce avanzate una copertura durante operazioni sensibili.
Conclusioni
Quello che nasce come strumento per sviluppatori può diventare rapidamente lo strumento preferito per gli attori di minacce. Questo RAT basato su Go offre un'interfaccia web semplice e controlli di sistema potenti su Windows e Linux, con reverse shell, manipolazione di file ed esecuzione di comandi remoti su sistemi compromessi.
È stata rilevata la circolazione di Chaos e questo rappresenta un problema crescente per la Cyber Security: l'utilizzo del software open source come arma. Con la sua rapidità nell'implementazione, la sua pericolosa capacità di mimetizzarsi nei sistemi Linux e la sua configurazione flessibile, questo malware ci ricorda che l'open source è un'arma a doppio taglio: nelle mani sbagliate può causare danni ingenti.
Rilevamento con Acronis
Acronis Cyber Protect Cloud rileva con successo varie componenti di ChaosRAT come “Trojan.Linux.ChaosRAT.A”, come si può vedere nei seguenti screenshot.



Acronis ha recentemente annunciato il supporto per Linux in Acronis EDR. Questa novità estende la copertura EDR in ambienti misti, consentendo una protezione completa dei workload Windows, macOS e ora anche Linux. Quando Acronis EDR individua file o processi sospetti o dannosi nei sistemi Linux, queste rilevazioni vengono mappate automaticamente nel framework MITRE ATT&CK, offrendo la visione più approfondita delle minacce potenziali.
Questo aggiornamento supporta diverse azioni correttive per i dispositivi Linux. Queste includono l'arresto di processi dannosi, la quarantena dei file, l'aggiunta di elementi alla whitelist o alla blacklist e il recupero dei sistemi interessati da un backup.
Questa nuova funzionalità supporta i sistemi operativi Ubuntu 22.04 e CentOS 7.x ed è disponibile anche con Acronis XDR.
Indicatori di compromissione
File

YARA

Riferimenti e pubblicazioni correlate (in ordine cronologico)
- Tweet su Chaos RAT (di Cyberteam008) 15 aprile 2025. https://x.com/Cyberteam008/status/1889516549129802007
- GitHub Advisory Database. tiagorlampert CHAOS vulnerable to Cross Site Scripting (CVE-2024-31839) 12 aprile 2024. https://github.com/advisories/GHSA-c5rv-hjjc-jv7m
- Remote code execution on CHAOS RAT via spoofed agents (di Chebuya) 5 aprile 2024. https://blog.chebuya.com/posts/remote-code-execution-on-chaos-rat-via-spoofed-agents/
- Tweet su CVE-2024-30850 (di Chebuya) 5 aprile 2024. https://x.com/_chebuya/status/1776371049095192847
- MAL_LNX_Chaos_Rat_Dec22 (Regola Valhalla di Nextron-Systems) 14 dicembre 2022. https://valhalla.nextron-systems.com/info/rule/MAL_LNX_Chaos_Rat_Dec22
- Chaos is a Go-based Swiss army knife of malware (Lumen Blog) 28 settembre 2022. https://blog.lumen.com/chaos-is-a-go-based-swiss-army-knife-of-malware/
- CHAOS: Strumento di Amministrazione Remota (Repository GitHub) https://github.com/tiagorlampert/CHAOS