Variante del dropper VBA e Powershell che utilizza steganografia

20/03/2019

powershell steganografia vba

Il CERT-PA è venuto in possesso di una variante del noto dropper VBA che utilizza la steganografia per eludere i sistemi di sicurezza perimetrale. Il dropper si presenta come un file XLS allegato ad un’e-mail scritta in italiano che rimanda a visionare la finta fattura allegata:

Di seguito riportati i vari stadi di analisi e decodifica.

Stadio 1

Il documento Excel contiene una macro leggermente offuscata che utilizza WMI per lanciare uno script batch interpretato come powershell:

Si nota immediatamente che il dropper è mirato agli utenti italiani, nella routine Workbook_Open l’infezione procede solo se il codice paese è 39, quello dell’Italia. Il codice converte il numero 39 nel relativo carattere in codifica CP1252, ovvero un apice, ed effettua il confronto tra caratteri piuttosto che tra numeri.

Se il controllo sulla nazionalità della vittima passa, il dropper esegue un payload batch/powershell tramite WMI (il codice che lancia il processo è copiato per intero dalla documentazione di Microsoft). Lo script si può semplificare così:

Stadio 2

Il payload powershell si presenta nel seguente modo:

Iniziando ad analizzare lo script dalla fine, anzichè dall’inizio, si può ridurre ad una semplice operazione di string reverse ed eval (Invoke-Expression in powershell):

 

 

Stadio 3

Il payload eseguito dallo stadio 2 si presenta in questo modo:

E’ semplice in questo caso vedere cosa succede: nuovamente un iex e dei semplici replace sul payload del prossimo stadio.

Stadio 4

Lo stadio 4 è identico, come funzionamento allo stadio 3.

Stadio 5

Lo stadio 5 è più interessante, presenta il codice per il download del prossimo stadio. Offuscato si presenta così:

 

Deoffuscandolo si ottiene il seguente script:

Questa è una variante del noto script che scarica il prossimo stadio steganografato in un’immagine, si nota:

  • Stesso algoritmo di steganografia: Il nibble basso dei byte nascosti nell’immagine proviene dal nibble basso del canale verde, mentre il nibble alto proviene dal nibble basso del canale blu.
  • Sono fatte delle richieste a domini finti, di quattro lettere, con il metodo HEAD.
  • Il payload è codificato.

L’immagine scaricata è la seguente

ed il payload in esso contenuto è composto da code-unit UT8 che rappresentano code-point di lunghezza non inferiore a tre bytes. Nello specifico sembrano caratteri Kanji

Per decodificare il payload è possibile utilizzare CyberCheff

Stadio 6

Lo script una volta decodificato si presentà nel seguente modo:

Si vede chiaramente come le capacità simboliche di PowerShell siano usate per eludere gli antivirus, l’effetto di questo codice è semplicemente quello di scaricare il payload finale dall’URL in evidenza e di eseguirlo.

Payload finale

L’URL del payload finale è già conosciuto dalla comunità e sembra diffondere Gozi. Al momento dell’analisi il malware era già stato rimosso.

 

Indicatori di compromissione

IoC (.txt) – URL, Domini, Hash

IoC (HASHr.txt) – Lista dei soli hash file da utilizzare in combinazione con il tool HASHr