Analisi riassuntiva
Akamai Hunt ha identificato una nuova variante di malware che tenta di nascondersi dietro un endpoint di un'API di un modello LLM legittimo.
Il malware invia una stringa che sembra essere scritta con codifica Base64 per stabilire una connessione C2 (Command and Control), invece di utilizzare uno schema comune.
Lo sfruttamento di questa vulnerabilità potrebbe portare ad un attacco per il controllo e l'esfiltrazione dei dati da parte dei criminali.
Questo è un altro esempio di come i criminali stanno evolvendo rapidamente le loro metodologie di attacco, il che rafforza la necessità per le organizzazioni di prepararsi per affrontare queste minacce moderne.
Introduzione
Il panorama delle minacce si sta evolvendo ad una velocità straordinaria e i criminali sono veloci ad adattarsi a questo ritmo. Man mano che i modelli linguistici di grandi dimensioni (LLM) vengono ampiamente utilizzati all'interno delle organizzazioni, il loro schema di comunicazione può consentire ai criminali di nascondere il loro traffico dannoso sotto gli occhi di tutti.
Proprio come gli addetti alla sicurezza si affrettano ad integrare l'intelligenza artificiale nelle pipeline di rilevamento, utilizzando i modelli LLM per analizzare gli avvisi, riepilogarli e correlare gli indicatori, anche gli autori di malware stanno sperimentando l'uso dell'intelligenza artificiale. Abbiamo già osservato alcuni esempi iniziali di malware come LameHug e PromptLock, che mostrano come i modelli LLM progettati per generare testo possano essere usati per scopi dannosi.
Abbiamo anche visto un esempio di come i criminali utilizzano l'API di OpenAI per un'infrastruttura C2 (Command and Control) nel backdoor SesameOp, il che evidenzia la nuova superficie di attacco nel mondo dell'intelligenza artificiale.
Recentemente, il team Akamai Hunt ha scoperto un nuovo malware che utilizza un nuovo approccio all'abuso dei modelli LLM, unendo il traffico dannoso alle richieste di API LLM. In questo post del blog, il team Hunt condivide un esempio della minaccia emergente che ha scoperto nell'ambito della fornitura di servizi ai clienti di Hunt.
Abusare degli endpoint
Durante la nostra ricerca di nuovi metodi di utilizzo dei modelli LLM nel malware, un file si è aperto e ha attirato la nostra attenzione perché già contrassegnato come dannoso su VirusTotal e associato a diverse regole Yara. Dopo aver iniziato ad indagare, ci aspettavamo di vedere un altro modello di creazione e di esecuzione di codice tramite i modelli LLM sulla vittima presa di mira.
Il malware tenta per la prima volta di connettersi all'indirizzo IP 39.97.57[.]244 utilizzando un socket, ma, una volta che si verifica un errore, torna a un HTTP C2, ossia 1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com/v1/chat/completions.
Dopo aver osservato la prima richiesta HTTP effettuata all'API, siamo rimasti sorpresi di vedere che non ha seguito le intestazioni necessarie per questo tipo di richiesta.
L'endpoint delle API
La nostra ricerca si è incentrata, in parte, sui modi di utilizzo degli endpoint delle API basati sui modelli LLM e, in particolare, /v1/chat/completions.
Dalla documentazione di OpenAI, questo endpoint "crea una risposta del modello per la chat specifica" (Figura 1 e Figura 2).
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5",
"messages": [
{
"role": "developer",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}'
{
"id": "chatcmpl-B9MBs8CjcvOU2jLn4n570S5qMJKcT",
"object": "chat.completion",
"created": 1741569952,
"model": "gpt-4.1-2025-04-14",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?",
"refusal": null,
"annotations": []
},
...
L'endpoint /v1/chat/completions è stato introdotto da OpenAI e rapidamente emulato da più provider e gateway che offrono API compatibili con OpenAI (ad esempio, OpenRouter e Hugging Face).
Tuttavia, le API ufficiali di altri fornitori possono utilizzare diversi endpoint nativi o possono variare in termini di parametri, autenticazione e comportamento dello streaming nonostante uno schema di richiesta simile.
Schema di richiesta
In genere, quando si utilizza questa API, è necessario aggiungere i seguenti parametri richiesti:
Autorizzazione: un'intestazione del token di trasmissione sotto forma di "Authorization: Bearer YOUR_API_KEY" è necessaria per autenticare la richiesta
Modello: un identificatore di stringa che seleziona un modello abilitato per la chat (ad esempio, gpt-3.5-turbo o Llama-4-Maverick-17B-128E-Instruct-FP8) a cui l'endpoint indirizzerà la richiesta
Messaggi: una serie di oggetti di messaggi con tag di ruolo (contenenti ruolo e contenuto) che rappresentano la cronologia delle conversazioni utilizzati dal modello per generare la risposta successiva
Come menzionato in precedenza, abbiamo già visto un uso dannoso e reale di questo endpoint in rete, ossia LameHug. Gli autori del malware hanno utilizzato lo stesso endpoint per accedere ad un modello LLM su Hugging Face, chiedendo comandi specifici e generando dinamicamente il codice da eseguire sulla vittima presa di mira (Figura 3).
Mimetizzarsi all'interno della chat
La prima cosa che abbiamo notato durante l'analisi di questo file binario è il fatto che non utilizza nessuno dei campi menzionati, ma, al contrario, invia una stringa che sembra essere scritta con codifica Base64 (Figura 4).
In teoria, potrebbe esserci un modello LLM nascosto dietro questa API e il criminale potrebbe creare un prompt sul lato server con un codice personalizzato. Tuttavia, in questo caso, il motivo per l'utilizzo di questo endpoint dell'API è anche legato al tentativo di mimetizzarsi.
Osservando i dati del nostro prodotto API Security, abbiamo osservato 151 endpoint dei nostri clienti. Ogni conversazione proveniente da questi endpoint assomiglia al nostro schema. Ad esempio, alcune API utilizzano "query" anziché "messages", ma tutte le sessioni sono molto chiaramente simili tra loro.
Ciò ci dice che, sebbene tutti possano sviluppare il proprio endpoint /v1/chat/completions senza alcuna richiesta di commenti (RFC), esiste ancora uno standard di fatto utilizzato dagli sviluppatori.
Ulteriori ricerche
Dopo aver decodificato il corpo e XORing con 0xBB, abbiamo scoperto cosa sembra la prima richiesta di ricognizione eseguita sulla vittima presa di mira.
Abbiamo seguito il processo di analisi della risposta, osservando che il malware si aspetta una risposta che non corrisponde allo schema dell'API originale, ma elabora i dati ricevuti decrittografandoli tramite XOR e Base64, quindi segue le istruzioni fornite nella risposta (Figura 5).
Il server C2, 1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com, è una funzione cloud senza server (simile alle funzioni AWS Lambda o Azure) eseguita sull'Tencent Cloud, un servizio di cloud computing gestito da Tencent. L'utilizzo delle funzioni cloud come server C2 consente ai criminali di eseguire un'infrastruttura per la scalabilità automatica che risulta resiliente e difficile da distinguere dal traffico legittimo.
Supponiamo che i criminali abbiano scelto di rendere visibile questo specifico endpoint per farlo sembrare più legittimo agli addetti alla sicurezza e agli amministratori di rete, in quanto l'uso di questo endpoint delle API sta diventando sempre più comune con l'aumento degli agenti basati sull'intelligenza artificiale, delle integrazioni e degli strumenti di automazione.
Poiché supporta diverse istruzioni, questo malware viene classificato come trojan ad accesso remoto (RAT) con un controllo remoto completo sulla vittima presa di mira. Le abbiamo analizzate per assicurarci che tutte parlino con lo stesso endpoint (vedere l'Appendice per la nostra analisi).
Ad esempio, nella Figura 6 viene illustrato l'output dell'istruzione $HunterInfo, che cerca i file di configurazione di specifici strumenti di accesso remoto ed esfiltra nuovamente i dati restituendoli all'endpoint /v1/chat/completions nello stesso modo in cui viene inviato il primo messaggio, con XOR e Base64.
Il malware contiene anche tre file incorporati, XORed con codifica 0x88 e Base64.
Si tratta di file .NET denominati net_test.exe, che, insieme, coordinano un piccolo kit di strumenti proxy utilizzando il protocollo SOCKS5 o HTTP nella rete della vittima presa di mira. Due dei file sono server SOCKS5 e HTTP, mentre il terzo è un client in grado di ricevere e inoltrare il traffico (Figura 7).
File aggiuntivi
Abbiamo identificato le versioni precedenti di questo malware (l'hash si trova nella sezione IoC di questo post), che presentavano istruzioni simili e disponevano degli stessi percorsi codificati di diversi strumenti di accesso remoto ($HunterInfo), ma il server C2 era diverso.
Abbiamo anche trovato un file RAR su VirusTotal, che è correlato al server C2. Questo file RAR include un file .lnk (个人简历.lnk, tradotto, significa "curriculum" o "CV"), che esegue ftp -s””:_/_/_/_/_/_/_/_/_. Il file RAR include anche alcuni file .doc all'interno delle directory annidate, sebbene il loro contenuto sia un codice binario (Figura 8).
Il file "_" converte i file .doc in tre file PE e li copia in C:\Users\Public\Update.
Infine, richiama
!call start /min C:\Users\Public\Update\svchost.exe -InstallLsp
C:\Users\Public\Update\360.%TIME:~4,1% >nul (Figura 9).
Esistono 10 diversi file .doc (0-9.doc), che sono simili tra loro, ad eccezione di alcuni byte casuali. %TIME:~4,1% calcola la seconda cifra del minuto correntedi un formato %H:%M:%S.%f. I file .doc non hanno l'intestazione MZ, probabilmente per evitare le scansioni delle firme. In base all'ora corrente, lo script converte l'intestazione nel file .doc e la copia in C:\Users\Public\Update\360.<minute>.
svchost.exe
Questo file è, in realtà, SangforPromote.exe, un file verificato e firmato di Sangfor Technologies. Quando riceve l'argomento -InstallLsp e una DLL, il file legittimo carica la DLL e imposta il puntatore sulla relativa esportazione utilizzando LoadLibrary (Figura 10).
DLL 360
La DLL, denominata 360, alloca la memoria con autorizzazioni di lettura, scrittura ed esecuzione (RWX), legge "sc" al suo interno e, infine, viene eseguita.
sc
Analizzando sc, il codice caricato risolve le funzioni utilizzando LoadLibrary e GetProcAddress. Poiché dispone di due destinazioni con codice hardware, invia le richieste HTTP, che corrispondono agli indirizzi C2 del malware da noi analizzato:
https://1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com
39.97.57[.]244
Inoltre, decodifica i dati con Base64 e XOR proprio come negli esempi precedenti, creando una connessione tra i set di strumenti. Riteniamo che questo flusso scarichi il file RAT finale nel file system della vittima (Figura 11).
Protezione e mitigazione di Akamai Hunt
I clienti di Akamai Hunt possono trarre vantaggio dal monitoraggio continuo 24/7 di questi componenti per consentire la protezione da tali attacchi (Figura 12).
Anche prima che venga rilevata una minaccia attiva, la funzionalità Adaptive Segmentation di Hunt aiuta le organizzazioni a ridurre le loro vulnerabilità e a contenere i rischi correlati. Analizzando i normali flussi di comunicazione e i comportamenti delle risorse, Adaptive Segmentation può creare le policy in grado di limitare l'accesso in uscita non necessario agli endpoint basati sull'AI, isolare gli ambienti di sviluppo e produzione e ridurre al minimo i potenziali percorsi del movimento laterale.
Questa funzionalità estende la protezione di Hunt oltre il rilevamento trasformando la visibilità continua in resilienza proattiva contro le minacce emergenti basate sui modelli LLM.
Conclusione
La decisione strategica dei criminali di instradare gli attacchi di esfiltrazione e C2 tramite l'endpoint /v1/chat/completions sfrutta sia l'ubiquità che la rapida evoluzione dei servizi LLM. Questo approccio offre un elevato ROI potenziale, poiché sfrutta l'infrastruttura cloud esistente per creare canali di comunicazione che si integrano con il normale traffico aziendale.
Il pericolo deriva dal modo con cui questa tecnica allinea tre tendenze prevalenti negli ambienti moderni, che, insieme, possono garantire ai criminali percorsi per sferrare attacchi C2 coerenti e nascosti che sembrano legittimi ad un'ispezione superficiale:
Traffico HTTPS diffuso e, spesso, non ispezionato, in uscita verso le API nel cloud
Crescente tolleranza per il traffico generato dai computer (agenti basati sull'AI, app, integrazioni)
Facile disponibilità dell'hosting su cloud che fornisce endpoint affidabili e di lunga durata che i criminali possono utilizzare
La realtà è che gli addetti alla sicurezza stanno imparando sul campo come funzionano i modelli LLM e quali minacce attirano. Se il traffico sembra sufficientemente legittimo, esiste la possibilità che venga fatto passare senza adeguate protezioni in atto. A volte, nascondersi sotto gli occhi di tutti è il modo più semplice per passare inosservati.
Nascondendo i payload dannosi all'interno del traffico destinato ai servizi LLM legittimi, i criminali penetrano in un modello di rete sempre più comune, riducendo così la possibilità che le comunicazioni vengano segnalate o analizzate. Man mano che le organizzazioni adottano strumenti di intelligenza artificiale e automazione, il traffico diretto verso gli endpoint dei modelli LLM sta diventando normale e, all'interno di questo frastuono, i criminali possono trovare opportunità allettanti.
IoC
IoC |
Tipo |
|---|---|
93cf0d545a872c393c053031570bc5eaebfa1aa6a0860fd0b08b679b8ce52fd2 - RAT |
Hash |
10c444262994c05930394388e6112ddd98b83118661868bccd83b1fa61160a62 - 1.rar |
Hash |
91c43e7ddd98af63d6b1b130e997b909100f3eaf71e30511858cca4348b509db - _ |
Hash |
9f119d05403b1e079893fb77f6b8b2a9682d1df7ced31a189e7490924ccfb170 - 个人简历.lnk |
Hash |
b7dcf661844e6f3e94eb140a79787be6dad77c09ab0b97cf41a62afd07219190 - Variante meno recente, maggio 2025 |
Hash |
2e395436e97eaad9a087825d22005b6afc55044abf458604a5118c2ac9bde42a - Variante meno recente, settembre 2025 |
Hash |
67ea3ea3c58a57dbbdac48d4ce3d546816f715eaf32bec33a64a63c91541e697 - net_test.exe (client) |
Hash |
195c283703ee7df7c7ef17c85b0fdf88de22348bb0755daf5f0c3ed319c8d88a - net_test.exe (server SOCKS5) |
Hash |
e513d12abd03a4e07788dd85888d187cb6ca6e69a59f22f00853cae0a0b34712 - net_test.exe (server HTTP) |
Hash |
1347790942-k1bok35vg3.ap-guangzhou.tencentscf[.]com/v1/chat/completions |
URL |
39.97.57[.]244 |
IP |
C:\Users\Public\Update |
Directory |
Appendice
Istruzione |
Descrizione |
|---|---|
$ActiveDos |
Restituisce la directory corrente |
$AddUser |
Crea un nuovo utente locale e lo aggiunge al gruppo degli amministratori |
$ExecuteCommand |
Esecuzione del comando |
$FileDelete |
Elimina un file |
$FileDownLoad \ $BigFileDownLoad |
Scarica un file dal computer della vittima |
$FileExist |
Viene restituito se esiste un file |
$FileUpload \ $BigFileUpload |
Scrive un file nel file system della vittima |
$Get_LocalDisk |
Accede alle unità della vittima |
$GetFile |
Accede ai dati dei file (dimensioni, data/ora) |
$GetFolder |
Elenca le cartelle in una determinata directory |
$GetFolderAndFile |
Elenca una cartella e accede ai file |
$GetProcess |
Elenca i processi |
$GetThreadPermissionsInfo |
Esegue il thread delle informazioni del processo relativo al malware |
$HunterInfo |
Ruba i dati di 360 Secure Browser, SunLogin, ToDesk, NetSarang e anche Chrome |
$KillProcess |
Termina un processo con il PID specificato |
$MessageBox |
Mostra una casella di messaggio con la stringa fornita |
$Netstat |
Esegue netstat per vedere le connessioni attive |
$OffLine |
Termina il processo |
$Online |
Invia nuovamente i dati iniziali acquisiti dalla vittima (Figura 4) |
$PE64Loader |
Attiva explorer.exe e inietta un caricatore di shellcode al suo interno |
$PEMemoryLoadOnSelf |
Carica il codice da un buffer. Il malware controlla diversi argomenti ricevuti, come "JuicyPotato" o "PwDump", e imposta una variabile di ambiente con questo nome, il che ci fa credere che sia in grado di utilizzarlo come "modulo" o plug-in. |
$Persistence |
Riceve una DLL dal C2:
Può anche creare un'attività pianificata. |
$ProgressSpawn |
Crea o verifica un payload in C:/Users/Public e lo esegue con metodi diversi, ad esempio ShellExecute, -InstallLsp, o caricandolo in memoria, a seconda degli argomenti |
$RegManage |
Sembra non implementato |
$ScreenShot |
Acquisisce una schermata |
$ScreenSpy |
Modifica le chiavi di registro TightVNC per il controllo remoto, presumendo che la vittima disponga delle chiavi TightVNC, o per la fase precedente/futura dell'attacco |
Tag