Red Hot Cyber

La cybersecurity è condivisione.
Riconosci il rischio, combattilo, condividi le tue esperienze ed 
incentiva gli altri a fare meglio di te.

Cerca

RHC da Vita all’Operazione Pollicino: alla caccia di Agent Tesla

Manuel Roccon : 9 Maggio 2024 08:18

Autori Manuel Roccon (team leader di HackerHood) e Matteo Brandi

Introduzione

In questo articolo andremo ad analizzare come funziona un infostealer, nello specifico Agent Tesla, un malware che ha come obiettivo la sottrazione di dati sensibili come password, contatti mail ed accessi vari.

Eseguiremo sia un analisi statica e dinamica di questo infostealer, percorrendo tutti i passi per comprendere il funzionamento questo malware (e questa tipologia), dalla distribuzione, ai meccanismi usati per eludere i sistemi anti malware fino all’esfiltrazione dei dati.

Ringraziamo Pietro Melillo (team Leader della Cyber Threat Intelligence di RHC) per averci fornito il sample e informazioni varie per poter eseguire l’analisi.

Operazione Pollicino: alla caccia di Agent Tesla

Questa è la storia di una scoperta sorprendente. Se fosse un’operazione di cyber security si chiamerebbe…operazione Pollicino, alla caccia di Agent Tesla. È un sabato come un altro, dopo aver lavorato tutta la settimana, ti ritrovi a fare le cose che non sei riuscito a fare ma che servono, come la spesa per esempio.

Ero al supermercato e come il miglior imbruttito milanese, compro quasi sempre le stesse cose anche perchè so già dove sono. Un salutare time saving. Sento il cellulare che vibra, una chiamata, chi chiama il Sabato pomeriggio??

È Manuel! Manuel non chiama mai, al massimo ti manda un messaggio. Se Manuel chiama, deve essere importante.

ATTO I: la telefonata

Rispondo: “Ciao Manuel, al momento sono afk…”

“Non importa, ho fatto una scoperta, ti mando tutto appena puoi guarda il materiale!”

“Ok appena posso lo guardo subito. Ciao.”

Nei gruppi di volontari di Red Hot Cyber, spesso viene sottoposto materiale da analizzare come file sospetti. Puntualmente il gruppo, armato di competenza e determinazione, si tuffa nell’analisi di quanto inviato.

Questa volta siamo arrivati ad una scoperta importante. Ma andiamo per gradi.

Rapidamente finisco la spesa e torno alla tastiera e guardo il materiale. Si Manuel aveva scoperto qualcosa di promettente.

ATTO II: l’analisi breve

Come tutte le storie, c’è sempre un inizio e la nostra comincia con una PEC all’amministrazione di una azienda italiana  e quando ti arriva una PEC…la leggi. Pagamenti…qualcuno sta mandando una copia di un pagamento.

D’altro canto è prassi comune inviare una copia di un bonifico dopo averla fatta per accelerare le procedure. Questa volta il personale amministrativo era preparato (le persone sono sempre il primo baluardo di difesa) e complice anche il testo sgrammaticato ed informale, non aprono l’allegato ma lo mandano a noi.

Il file allegato alla PEC è un file archivio gz contenente un file hta quindi è un malware…what else? Come prassi viene caricato il file in una macchina Windows nel laboratorio per una analisi dinamica e l’analisi dice che il malware non è altro che un downloader che si connette ad un dominio.

Ecco la sequenza sintetica degli eventi una volta attivato il file hta: 

  1. HTA compone uno script in Powershell e viene eseguito
  2. Il powershell scarica un file codificato in base64 (url atordeg.com.br/nnn/Skinverdenerne.snp), preleva una parte di codice e lo esegue
  3. Il secondo payload prende parte di contenuto indecifrabile e lo esegue
  4. viene attivato un processo chiamato wab.exe (nome di un processo legittimo di Windows per la gestione dei contatti)
  5. Il processo wab.exe scarica ed esegue un file bin hxxp://atordeg.com.br/nnn/OJGHbJLl177.bin  (questo è il vero agent tesla che ruberà le credenziali)
  6. il processo wab.exe infine si connette ad uno spazio FTP ed esporta dati

Gli script powershell sono offuscati con codifica base64 e molta spazzatura. Manuel mi stava chiedendo una conferma di quello che aveva visto, che non era tanto il malware o lo script…  Visionato il materiale lo chiamo subito: “Si Manuel confermo quello che hai visto”.

ATTO III: Chain dell’attacco

In questo punto percorreremo la parte più procedurale, andremo ad analizzare tutti gli step della catena di attacco che porteranno all’esfiltrazione dei dati. Qui sotto riassunti tutti i passaggi macro all’apertura del allegato malevolo fino al esfiltrazione dei dati.

Abbiamo eseguito un’analisi dinamica tramite sandbox e raccolto anche la catena di eventi dall’apertura del file hta, fino all’infiltrazione dati da parte del processo wab.exe.

Qui vediamo un dettaglio ancora migliore sui comandi eseguiti.

Riportiamo anche la matrice MITRE ATT&CK che ci dà subito un’idea delle tecniche utilizzate nell’attacco.

Possiamo vedere tecniche subito tecniche di code injection, offuscamento, scripting e quelle di esfiltrazione dati, quindi dovremmo aspettarci di vedere negli step successivi che andiamo ad analizzare.

Ora vediamo le varie fasi nel dettaglio.

Fase1: Script HTA

Il vettore iniziale è un allegato gz che viene distribuito via email con una finta copia di pagamento. 

All’interno dei file compressi è presente un “falso PDF” con estensione .hta.

“Sfortunatamente” dallo scorso anno Windows ha aggiunto il supporto a questi formati particolari quindi, estensioni meno conosciute all’utente come questa, potrebbero tranne in inganno l’utente

Dichiarazione Microsoft:.

Per chi non li conoscesse, i file HTA sono file HTML con il “potere” di eseguire del codice vbscript, quindi scrivere e leggere file su disco ed eseguire comandi powershell.

Qui sotto potete vedere il file originale aperto con il notepad, lo script è offuscato con varie tecniche per sfuggire agli antimalware:

Dopo una breve analisi, possiamo riassumere l’attività di questo HTA così: lo script, nonostante le numerose righe di codice, non farà altro che assemblare una stringa powershell, eseguire un replace e dopo aver verificato che endpoint è connesso a internet tramite un ping, ed infine eseguire il powershell.

Fase 2: Payload 1

Questo payload è lo script powershell creato al volo ed eseguito dal HTA. Possiamo vedere che il codice è stato offuscato anche questo con varie tecniche.

Sono presenti 2 funzioni che permettono di offuscare la logica, variabili e metodi per non essere individuabile facilmente agli anti malware ed EDR, nel dettaglio:

Questa funzione sottostante serve a portare “leggibili” e interpretabili da powershell le variabili dichiarate:

La funzione farà in modo che il testo presente nella variabile, prima “decodificata”, verrà eseguita da powershell iex():

Per esempio la variabile $Lactinate

diventerà:

Invece questa:

Verrà tradotta in:

Dopo alcune decodifiche, possiamo vedere che il file inizia a prendere forma:

ma rimane ancora lungo e complesso da leggere, in quanto ci sono molte variabili che vengono richiamate a catena per comporre i vari comandi.

Riorganizziamo un po’ la logica:

Vediamo che il file diventa molto semplice e non fa altro che scaricare un file da internet, salvarlo in %appdata% dell’utente, decodificarlo da base64 ed eseguirlo.

Nelle ultime righe di codice in particolare salva tutto il contenuto del file in una variabile $Protons che servirà durante l’esecuzione del secondo payload (ne parleremo dopo).

In seguito viene presa una parte di questo file, tramite substring, e inserita nella variabile $Aldersbestemmelserne e subito dopo verrà eseguita via powershell iex.

Fase 3: Payload 2

Il Payload 1 come avevamo visto, scarica un file da http://atordeg.com.br/nnn/Skinverdenerne.snp  e lo salva in C:\Users\[user]\AppData\Roaming\Skemakanters.Tap

Facendo una codifica in base64 al volo possiamo osservare che dalla dalla riga posizione 326117 del file  è presente del powershell:

Ora ci concentriamo nella parte in cui il Payload 1 taglia il file scaricato dal byte 326117 e successivamente vista prima.

Notiamo che viene rimossa tutta la parte indecifrabile (quella parte tornerà fondamentale nello step successivo) però osservando bene anche questo codice è offuscato.

Anche qui sono presenti le funzioni del primo payload quali “Fldeostens()” per decodificare la stringa e “Kambregner()” che esegue il codice presente nelle variabili tramite “iex ()”.

Inoltre sono presenti delle righe che iniziano con carattere “#”. Questa è spazzatura per evadere software di sicurezza, quindi andremmo a rimuoverlo.

Una volta rimossi i commenti e convertito il file dove erano presenti le funzioni “Fldeostens()” e “Kambregner()”, a metà compare una nuova funzione di offuscamento chiamata “Narratio()” e una nuova tipologia di variabili offuscate, questa volta con contenuto numerico.

A differenza di quella precedente, la funzione “Narratio()” è parametrizzata con 2 valori, il primo è la stringa da decodificare, la seconda un parametro 1 o 0 che farà eseguire o meno anche il comando dopo la decodifica della stringa.

Per esempio la variabile $Tilpropning230

verrà convertita in:

Mentre:

verrà convertita e sarà eseguita:

Pulendo e riorganizzando la logica dello script, questo è il risultato:

Fase finale: code injection ed esfiltrazione dati

Prima abbiamo accennato che nella variabile “$Protons” era stato salvato tutto il contenuto del secondo payload scaricato dal primo.

Nelle fasi finali del secondo payload, il contenuto viene “tagliato” mantenendo invece solo la parte incomprensibile.

Infatti nell’ultimo segmento dello script (visibile qui sotto) sembra invocare uno shellcode nascosto nel contenuto della variabile “$Protons”.

Infatti come si vede lo script va a prelevare i dati dal byte 652, 325465 byte per creare il successivo shellcode da iniettare in memoria ed eseguire.

Per i successivi ultimi step non abbiamo eseguito un’analisi statica precisa, ma seguendo l’analisi dinamica abbiamo dedotto il comportamento.

Nella fase successiva shellcode crea un processo WAB.exe, eseguibile e risulta firmato da Microsoft. 

Utilizzare un software firmato digitalmente e legittimo è una tecnica che può evadere alcuni sistemi anti malware.

Stiamo comunque parlando della tecnica di Reflective Code Loading nel Mitre ATT&C, in quanto viene iniettato del codice malevolo, spesso cifrato all’interno di un processo legittimo.

Questo processo, successivamente, scarica da internet un file BIN, la shellcode che conterrà il vero infostealer Agent Tesla.

L’infostealer andrà quindi alla ricerca nel sistema di credenziali ed indirizzi email che saranno caricati in remoto.

L’infostealer infine caricherà in un percorso ftp le credenziali rubate dai vari browser, i contatti mail ed i portachiavi di windows.

Analizzando il tracciato di dati scambiati con l’esterno, abbiamo scoperto che l’aggressore ha sfruttato un percorso FTP rubato da un azienda in territorio americano, recuperando anche le credenziali.

Abbiamo estratto anche il sample generato dalla sandbox:

Spesso i criminali informatici utilizzano punti d’appoggio rubati di aziende esistenti per abbassare il rischio di essere bloccati e per sfuggire ai Geo IP Block.

Approfondimento del secondo payload

Come abbiamo visto sopra, per aggirare le difese, il malware è scaricato in formato bin ed iniettato direttamente nello spazio di memoria di un processo legittimo di Windows. 

L’uso dell’istruzione “VirtualAlloc” nel codice da conferma.

Leggendo bene poi il codice, assomiglia molto a….Metasploit Powershell Reflection Payload.

Il metodo Reflection è un metodo usato per ispezionare processi a runtime, ovvero mentre sono eseguiti. Questo consente però anche di iniettare codice di file portable o DLL direttamente in memoria.

Esso è comune sia a .NET che a Java e C++.

Il Framework .NET, con il namespace System.Reflection, fornisce delle API per ispezionare un processo in esecuzione e questo consente anche di inserire del codice.

ATTO IV: Rilevazione IoC

Per chi non li conoscesse gli indicatori di compromissione (IoC) sono informazioni su una specifica violazione della sicurezza che possono aiutare i team di sicurezza a determinare se si è verificato un attacco.

Questi dati possono includere dettagli sull’attacco, come il tipo di malware utilizzato, gli indirizzi IP coinvolti e altri dettagli tecnici.

Qui sotto sono elencati gli indicatori di compromissione rilevati:

Main object – PAGAMENTO_0240424 PDF.hta

  •  md5 3588f9e854838ff87b0dc4f4a636ffe3
  •  sha1 22a183364b8840caaa89c64155d2b518607c96e1
  •  sha256 cea4f79c2406c13edca65a643fe8c25314c0b4c5d199946c56cf06a2f0576758

DNS requests

  •  domain ftp.concaribe.com
  •  domain accounts.google.com
  •  domain update.googleapis.com
  •  domain atordeg.com.br
  •  domain api.ipify.org

Connections

  •  ip 192.185.13.234
  •  ip 104.26.12.205
  •  ip 192.185.216.185
  •  ip 184.28.89.167
  •  ip 95.101.54.120
  •  ip 95.101.54.121
  •  ip 2.19.96.41
  •  ip 224.0.0.252

HTTP/HTTPS requests

  •  url http://atordeg.com.br/nnn/Skinverdenerne.snp
  •  url http://atordeg.com.br/nnn/OJGHbJLl177.bin

ATTO V: Considerazioni finali

Dall’analisi il malware risulta essere Agent Tesla versione 2020, vista la capacità di esfiltrare dati via FTP.

Agent Tesla  è un malware la cui firma è ben nota in quanto noto dal 2014 con una campagna dedicata al nostro paese rilevata nel 2022 .

Se ancora viene utilizzato significa che ha ancora delle potenzialità di infezione.

Il vettore di attacco in questo caso è codice VBScript, linguaggio che risulta deprecato dal 2019.

Questo ribadisce, se ce ne fosse bisogno: 

  1. formare il personale per riconoscere le e-mail sospette
  2. dalla PEC possono arrivare anche malware
  3. disabilitare linguaggi deprecati dalle macchine connesse a reti produttive
  4. mantenere i sistemi aggiornati.
  5. Rispettare il privilegio minimo sui dispositivi
  6. Filtrare, bloccare e restringere il traffico in uscita (avendo bloccato FTP l’attacco sarebbe fallito)
  7. Molto spesso questi malware utilizzano domini appena registrati, attivare un controllo web sui domini appena registrati in modo da bloccarli
  8. Utilizzare antispam con disarmamento contenuti attivi sugli allegati, controllo impersonalizzazione mittenti, e tecnologie come analisi comportamentale e bayesan engine

Per completare, l’analisi come ci permette di capire se nella nostra infrastruttura abbiamo messo in campo tutte le procedure e best practice per poterci difendere.

In questo caso per antispam poteva evitare che la mail fosse recapitata al mittente, della formazione di non aprirla, limitazioni nelle connessioni di uscita per completare l’esfiltrazione dei dati su FTP.

Manuel Roccon
Ho iniziato la mia carriera occuparmi nella ricerca e nell’implementazioni di soluzioni in campo ICT e nello sviluppo di applicazioni. Al fine di aggiungere aspetti di sicurezza in questi campi, da alcuni anni ho aggiunto competenze inerenti al ramo offensive security (OSCP), occupandomi anche di analisi di sicurezza e pentest in molte organizzazioni.