Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Analisi Statica del Malware BlackEnergy
Alfredo De SantisDipartimento di InformaticaUniversità di Salerno
http://www.dia.unisa.it/professori/ads
Maggio 2018
SommarioØDescrizione
ØVersioniØCaratteristicheØAnalisi Statica
ØFile Excel con MacroØModulo Dropper
Ø Conclusioni
BlackEnergy
IdentikitNome
ØBlackEnergyAnno Nascita
Ø2007SO Attaccati
ØMicrosoft Windows®Segni Particolari
ØUsato per un attacco alsettore energetico ucraino(2015)
Descrizione – 1/4
ØRegione Ivano-Frankivsk, Ucraina,Dicembre 2015ØInterruzione della fornitura elettrica per 6ore
ØDopo una lunga serie di indagini vieneindividuata la causa: un malwareØIl malware, definito BlackEnergy, ha infettato isistemi informatici della centraleØGrazie alla riuscita di un attacco di phishing
Fontehttp://www.trendmicro.com/vinfo/us/security/news/cyber-attacks/faq-blackenergy
Descrizione – 2/4
Descrizione – 3/4Ø Il malware BlackEnergy si è evoluto nel tempo
Ø Diventando sempre più complesso ed articolatoØ Possiamo essenzialmente identificare tre
versioni di tale malware, derivanti dalla suaevoluzioneØBlackEnergy v.1ØBlackEnergy v.2ØBlackEnergy v.3
Descrizione – 4/4BlackEnergy v.1
Ø Il malware creava una sorta di BotnetØ Veniva utilizzato per attacchi di tipo DDoS
Ø Principalmente nei confronti di siti web russiØ Era caratterizzato da un “bot builder”
Ø Eseguiva il software malevolo sulle macchineremote da controllare, mediante le quali poieffettuava attacchi DDoS
Descrizione – 4/4BlackEnergy v.2 – 1/2
Ø Versione del malware riscritta eriorganizzataØ Permetteva l’esecuzione di svariate azioni
malevoleØ Attacchi DDoSØ SpamØ FrodiØ Etc.
Ø Era caratterizzo da una struttura modulareØ Modulo InstallerØ Modulo Driver
Descrizione – 4/4BlackEnergy v.2 – 2/2
Ø Il modulo InstallerØ È ritenuto un oggetto legittimo da parte del Sistema
OperativoØ Consente il download e l’installazione del modulo
DriverØ Il modulo Driver
Ø È responsabile dell’esecuzione del codice malevoloall’interno della macchina infettata
Descrizione – 4/4BlackEnergy v.3
Ø Versione del malware ulteriormente raffinataed ottimizzata nel codice sorgente e nellecaratteristiche
Ø È costituita da tre elementi principali1. File Microsoft Excel®
Ø Contente una macro in Visual Basic for Application(VBA)
2. Modulo Dropper3. Modulo Core
Struttura BlackEnergy v.3 – 1/3
File Microsoft Excel®
Ø Questo file rappresenta il veicolo didiffusione del modulo Dropper del malwareØ Al suo interno è inclusa una macroØ La macro contiene del codice malevoloØ Viene generalmente trasmesso mediante allegati e-
Struttura BlackEnergy v.3 – 1/3
Visual Basic for Application (VBA) Macro
Ø Una macro è uno script contenente una serie diØ ComandiØ FunzioniØ Procedure
Ø Una macro è contenuta in un modulo di Microsoft VisualBasic®Ø Può essere eseguita ogni volta che è necessarioØ È tipicamente inglobata all’interno di un file
Microsoft Office
Ø Il linguaggio di programmazione in cui è scritta unamacro è Visual Basic for Application (VBA)Ø Versione rimodellata e semplificata di Microsoft
Visual Basic (VB)
Def
inizione
di M
acro
Struttura BlackEnergy v.3 – 1/3
File Excel con Macro
Inoculazione ed esecuzione del modulo Dropper e del modulo Core
Struttura BlackEnergy v.3 – 1/3
File Excel con Macro
Macro con codice malizioso(affinché la macro venga eseguita è necessario il consenso dell’utente)
Inoculazione ed esecuzione del modulo Dropper e del modulo Core
Struttura BlackEnergy v.3 – 1/3
File Excel con Macro
Macro con codice malizioso(affinché la macro venga eseguita è necessario il consenso dell’utente)
Inoculazione ed esecuzione del modulo Dropper e del modulo Core
Struttura BlackEnergy v.3 – 1/3
File Excel con Macro
vba_macro.exe
Struttura BlackEnergy v.3 – 1/3
File Excel con Macro
vba_macro.exe
Inocula ed Esegue il file vba_macro.exe
Struttura BlackEnergy v.3 – 1/3
File Excel con Macro
vba_macro.exe
FONTCACHE.DAT rundll32.exe
Struttura BlackEnergy v.3 – 1/3
File Excel con Macro
vba_macro.exe
FONTCACHE.DAT rundll32.exe
vba_macro.exeinocula i seguenti file
• FONTCACHE.DAT• rundll32.exe
Struttura del modulo Dropper
Ø Si tratta del file eseguibile vba_macro.exeØ Inocula quattro file, di cui due necessari per
l’esecuzione del codice malevoloØ FONTCACHE.DAT
Ø Modulo Core del malwareØ Si tratta di una DLLØ Necessita di rundll32.exe per essere eseguito
Ø rundll32.exeØ File del Sistema Operativo Microsoft Windows®: tale
file non è alterato dal malwareØ Viene inoculato solo se non è presente o se
eventualmente è inaccessibile
Struttura BlackEnergy v.3 – 2/3
Struttura del modulo Core
Ø È costituito dal file FONTCACHE.DATØ Si tratta di una DLL
Ø Per essere eseguita necessita di rundll32.exeØ Viene inoculato nel sistema infetto
Ø Tramite il modulo DropperØ Fornisce una serie di API a basso livello
Ø Utilizzate dal malware per svolgere le proprieazioni malevole
Struttura BlackEnergy v.3 – 3/3
Struttura del modulo Core
Ø È costituito dal file FONTCACHE.DATØ Si tratta di una DLL
Ø Per essere eseguita necessita di rundll32.exeØ Viene inoculato sul sistema infetto
Ø Tramite il modulo DropperØ Fornisce una serie di API a basso livello
Ø Utilizzate dal malware per svolgere le proprieazioni malevole
Struttura BlackEnergy v.3 – 3/3
Da notare la scelta del nome, FONTCACHE (cache dei caratteri), volta a trarre in inganno l’utente
Ø Effettuiamo ora l’analisistatica del codice malevoloØ Contenuto all’interno della
macro del file ExcelØ Le macro sono interpretate
da Visual Basic forApplication (VBA)Ø Quindi è possibile analizzare
direttamente lo scriptcontenente il codice sorgentedella macro
Analisi StaticaFile Excel con Macro
Sezione del codice sorgente della macro
Analisi StaticaFile Excel con Macro
Ø Viene definita la variabile fnumcontenente il file number di unfile vuotoØ Il file number è restituito dalla
funzione FreeFile
Sezione del codice sorgente della macro
Analisi StaticaFile Excel con Macro
L’operatore & effettua la concatenazione di due stringhe
Ø Viene definita la variabilefname, il cui valore è dato dallaconcatenazione di due elementiØ Path verso la cartella temporanea
di Windows, ottenuta mediante lafunzione Environ(“TMP”)
Ø Nome del file vba_macro.exe
Sezione del codice sorgente della macro
Analisi StaticaFile Excel con Macro
Ø Viene aperto il file avente ilsuddetto path, a cui vieneassociato il suddetto filenumberØ Il file viene aperto in scrittura, in
modalità binaria
Sezione del codice sorgente della macro
Ø Vengono copiati dei byteall’interno del fileØ Da un array definito
precedentemente all’interno dellamacro
Analisi StaticaFile Excel con Macro
Sezione del codice sorgente della macro
Analisi StaticaFile Excel con Macro
Ø Viene aperto il file avente ilsuddetto path, a cui vieneassociato il suddetto filenumberØ Il file viene aperto in scrittura, in
modalità binariaØ Vengono copiati dei byte
all’interno del fileØ Da un array definito
precedentemente all’interno dellamacro
Sezione del codice sorgente della macro
Il modulo Dropper (file vba_macro.exe) è stato inoculato nel sistema, da parte della macro del file
Excel
Analisi StaticaFile Excel con Macro
Ø Viene eseguito il filevba_macro.exe
Sezione del codice sorgente della macro
Analisi StaticaFile Excel con Macro
Ø Viene eseguito il filevba_macro.exe
Sezione del codice sorgente della macro
In questa fase viene eseguito il modulo Dropper, subito dopo la sua creazione nei passi
precedenti
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Ø Da una prima analisi del file vba_macro.exe è possibilededurre alcune informazioniØ Si tratta di un Portable Executable a 32-bit (PE32)Ø Il formato PE permette a Windows di eseguire il codice senza
necessità di ulteriori librerie esterneØ Tutte le informazioni necessarie all’esecuzione sono incapsulate
all’interno dell’eseguibile stesso
Mediante IDA Pro è possibile disassemblare il file vba_macro.exe
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Gli Export caratterizzanoporzioni di codice (funzioni,
etc.) che possono essere accedute/invocate da parte
del sistema operativo
Di solito, mediante Export è possibile individuare la
funzione principale (starting point) che
caratterizza il malware
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40 La funzione start è l’unica
visibile da parte del sistema operativo
(esportata)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
Codice assembly della funzione start
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
STACK|-----------| <-- Qui è dove punta ebp, ossia dove inizia lo stack| oggetto 0 || ... || oggetto 7 || oggetto 8 | <-- Qui è (ad esempio) dove potrebbe puntare esp| oggetto 9 || ... ||-----------|
Ø Il registro ebp (detto anche frame pointer o base pointer) è un puntatore alla base dello stack e serve per indicare l’inizio dello stack che si sta utilizzandoØ Ad es., dove iniziano i dati relativi alla procedura corrente
che si sta eseguendoØ Il registro esp (detto anche stack pointer) è un puntatore ad un
indirizzo dello stackØ Mentre ebp indica dove inizia lo stack, il registro esp
permette di scorrerlo in maniera arbitraria, per poter prelevare o inserire dati in un punto preciso della memoria
1. Viene invocata la funzione push sulregistro EBP
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
Analisi StaticaFile vba_macro.exe (modulo Dropper)
1. Viene invocata la funzione push sulregistro EBP
2. Viene copiato, mediante la funzionemov, il valore del registro ESP in EBP
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
1. Viene invocata la funzione push sulregistro EBP
2. Viene copiato, mediante la funzionemov, il valore del registro ESP in EBP
3. Viene effettuato un salto noncondizionato alla label sub_4043PE(funzione jmp)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
1. Viene invocata la funzione push sulregistro EBP
2. Viene copiato, mediante la funzionemov, il valore del registro ESP in EBP
3. Viene effettuato un salto noncondizionato alla label sub_4043PE(funzione jmp)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
• Le prime due istruzioni sono essenzialmente di inizializzazione(spesso note come prolog assembly function)• Preparano lo stack ed i registri per l’utilizzo della funzione
Viene individuato un unico Export:
Nome Funzione: start [main entry]Indirizzo Memoria: 00402B40
1. Viene invocata la funzione push sulregistro EBP
2. Viene copiato, mediante la funzionemov, il valore del registro ESP in EBP
3. Viene effettuato un salto noncondizionato alla label sub_4043PE(funzione jmp)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
• Indica un salto alla subroutine all’indirizzo 4043FE• IDA Pro genera automaticamente dei nomi composti da
prefissi comuni (ad es., sub, etc.) concatenati con indirizzivirtuali (4043FE in questo caso)• In modo da assicurare l’unicità del nome
Ø Cosa è stato individuato finora dall’analisistatica?Ø Il file ha un unico Export, che rimanda alla
funzione startØ Dal codice assembly della funione start
(ottenuto tramite IDA Pro) è emerso cheØ È presente un salto incondizionato (istruzione 3 di
start) ad una subroutine, denominata sub_4043FE(tale nome è assegnato da IDA Pro)
Ø Passo SuccessivoØ Analisi della subroutine denominata
sub_4043FE
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Analisi StaticaGrafo prodotto da IDA Pro, che descrive ilcomportamento, in termini di salti effettuati,della subroutine denominata sub_4043FE
Ø Durante l’analisi del grafo prodotto da IDAPro è necessario prestare particolareattenzione ai salti condizionati e/o cicliØ I salti condizionati potrebbero essere indice
dell’attivazione del codice malevoloØ Un ciclo potrebbe reiterare più volte delle porzioni
di codice malevolo
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Rappresentazione del flusso deisalti di una parte dellasubroutine SUB_4043FE
Analisi StaticaFile vba_macro.exe (modulo Dropper)
47 salti incondizionati
Analisi StaticaFile vba_macro.exe (modulo Dropper)
salto condizionato
Analisi StaticaFile vba_macro.exe (modulo Dropper)
salto condizionato
Richiede maggiore attenzione nell’analisi!
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Ø Attraverso l’analisi del grafico precedente èstato possibile individuare un saltocondizionatoØ Eseguito dalla funzione JNZ
(Jump Not Zero)Ø Effettua il salto se il valore confrontato è diverso da
zeroØ Questo salto condizionato è stato individuato dopo
47 salti non condizionati
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Focalizziamoci quindisul salto condizionato(istruzione JNZ)
VerdeIDA Pro indica con una lineaverde il flusso di istruzionieseguite se la condizione delsalto è vera
Rappresentazione dei salti condizionati in IDA Pro
Analisi StaticaFile vba_macro.exe (modulo Dropper)
RossoIDA Pro indica con una linearossa il flusso di istruzionieseguite se la condizione èfalsa
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Rappresentazione dei salti condizionati in IDA Pro
BluIDA Pro indica con una linea blu quando ilsalto è eseguito all’unica istruzione possibile(istruzione assembly JMP)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Rappresentazione dei salti condizionati in IDA Pro
Ø Proseguendo con l’analisi delflusso della subroutinesub_4043FE è possibile rilevareun ulteriore elemento diinteresseØ Qualora la condizione del
precedente salto risulti essere vera,si può notare un possibile ciclo
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Ø In tale porzione di codice è possibileindividuare la condizione di uscita checaratterizza il cicloØ Istruzione JB (Salta Se Minore)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Ø In tale porzione di codice è possibileindividuare la condizione di uscita checaratterizza il cicloØ Istruzione JB (Salta Se Minore)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Ø In tale porzione di codice è possibileindividuare la condizione di uscita checaratterizza il cicloØ Istruzione JB (Salta Se Minore)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Ø Dall’analisi statica di vba_macro.exe èpossibile ottenere ulteriori utili informazioni
Ø Infatti, vba_macro.exe prima di inocularefile reperisceØ Il path della cartella di sistema APPDATAØ Il path della cartella di sistema System32
Analisi StaticaFile vba_macro.exe (modulo Dropper)
Ø Per localizzare il path della cartella APPDATA, vba_macro.exeutilizza l’identificativo CSIDL di tale cartella, il quale ha valoreesadecimale 1C (come indicato dal suffisso h)Ø CSIDL (Constant Special item ID List) è un insieme di valori che
fornisce, in modo indipendente dal sistema, il path delle cartelle perusi speciali
Porzione di codice assembly relativa a vba_macro.exe in cui viene reperita la cartella APPDATA
Ø Dopo aver individuato le porzioni di codiceassembly su cui focalizzare l’attenzioneØ Anche grazie all’ausilio degli strumenti grafici
forniti da IDA ProØ Risulta necessaria un’analisi più approfondita
Ø Può essere molto dispendiosa in termini di tempoØ È necessaria un’ottima conoscenza del linguaggio
assembly
Analisi StaticaOsservazioni
1. Il primo passo per l’analisi statica del malwareBlackEnergy v.3 è stato l’individuazione dei vari modulidi cui esso si compone
2. L’analisi è stata effettuata esclusivamente sulØ File Microsoft Excel con MacroØ Modulo Dropper (eseguibile vba_macro.exe)
3. Mediante l’analisi statica del codice malevolo contenutonella macro del File Excel si è scoperto che l’esecuzionedi tale macro permetteØ L’inoculazione del modulo DropperØ L’esecuzione del modulo Dropper
Analisi StaticaConclusioni - 1/3
4. È stato effettuato il disassembling del filevba_macro.exeØ Mediante il software IDA Pro
5. Sono stati individuati gli Export di taleeseguibileØ Nel caso specifico, è stato individuato un unico
Export, corrispondente alla funzione start
Analisi StaticaConclusioni - 2/3
6. Mediante l’analisi dell’assembly della funzionestartØ È stato possibile individuare un salto incondizionato
ad una subroutine, chiamata sub_4043FE da IDAPro
7. Da un’analisi della rappresentazione graficaprodotta da IDA Pro, relativa ai salti dellasburoutine sub_4043FE, è stato possibileindividuare due elementi su cui focalizzarel’attenzione ed approfondire l’analisiØ Un salto condizionatoØ Un ciclo
Analisi StaticaConclusioni - 3/3
Ø L’analisi statica potrà essere ulteriormenteapprofondita in almeno due direzioni
1. Focalizzando l’attenzione sulle parti individuateØ Analizzando nel dettaglio il codice assemblyØ Cercando di reperire quante più informazioni possibili
riguardo al comportamento del malware2. Verificando se vi sono altre porzioni di codice da
analizzare approfonditamenteØ Ad es., cicli, salti condizionati, etc.
Analisi StaticaSviluppi Futuri
Bibliografia/SitografiaØ https://www.f-
secure.com/documents/996508/1030745/blackenergy_whitepaper.pdf
Ø https://www.sentinelone.com/wp-content/uploads/2016/01/BlackEnergy3_WP_012716_1c.pdf
Ø https://msdn.microsoft.com/en-us/library/windows/desktop/bb762494(v=vs.85).aspx