Red Hot Cyber

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

Cerca

Industroyer2: analisi del nuovo malware ICS che interrompe i servizi critici

Emanuele De Lucia : 20 Aprile 2022 08:23

Autore: Emanuele De Lucia
Data Pubblicazione: 18/04/2022

Pochi giorni fa, una nuova variante di un malware del ceppo Industroyer è stata impiegata durante un attacco informatico condotto contro i sistemi di controllo industriale (ICS) responsabili della gestione dei sottosistemi delle centrali elettriche in Ucraina .

Questa nuova versione è stata denominata Industroyer2 e rappresenta l’evoluzione di una famiglia di malware già osservata a dicembre 2016 che lavora contro obiettivi simili. 

Questo tipo di attacco è stato segnalato dopo una lunga serie di altri attacchi contro organizzazioni ed entità ucraine che generalmente prevedevano l’uso di wiperbackdoor e attacchi DDoS .

INDUSTROYER2: Gli approfondimenti

Ho dato un’occhiata al file identificato con le seguenti caratteristiche:

TipoValore
MD57c05da2e4612fca213430b6c93e76b06
SHA1fdeb96bc3d4ab32ef826e7e53f4fe1c72e580379
SHA256d69665f56ddef7ad4e71971f06432e59f1510a7194386e5f0e8926aea7b88e00

Si tratta di un Portable Executable (PE) x86 a 37,00 Kb di dimensioni 32-bit compilato mercoledì 23 marzo 2022 10:07:29 come prova riportata di seguito

Fondamentalmente, il malware è progettato per leggere alcune voci di configurazione incorporate al fine di creare messaggi ASDU IEC-104 che gli consentono di interagire con le unità target remote (raggiungibili come indirizzi IP interni) tramite protocollo TCP.

Per ASDU, si intende un’Application Service Data Unit, ovvero un blocco di dati che viene inviato dalla stazione di controllo a una stazione esterna o altro dispositivo, o viceversa, utilizzando il protocollo IEC 60870-5.

Dando un’occhiata al flusso di esecuzione, possiamo vedere che questo malware gestisce due parametri opzionali dalla riga di comando che sono -t e -o come prova dell’estrazione del codice di seguito

  • -o permette di scrivere un file di debug sul filesystem (di default è stampato sulla console);
  • -t permette di ritardare l’esecuzione facendo riferimento al SystemTime corrente.

Dopo aver analizzato i parametri forniti tramite la CLI, il malware inizia a recuperare le informazioni dalle voci di configurazione incorporate

Queste voci vengono visualizzate come nell’immagine seguente

Ogni voce di configurazione inizia con un indirizzo IP interno (nell’immagine sopra oscurato negli ultimi due ottetti) e una porta, seguito da quattro numeri (potrebbero essere una sorta di flag operativi) un nome di processo e un percorso (in questo caso D: \OIK\DevCounter ).

L’ultimo pezzo è costituito dalle informazioni utilizzate per costruire il messaggio destinato ad essere inviato alle ASDU. Per ciascuna delle voci trovate, il malware va a terminare il processo PServiceControl.exe.

Il nome del processo è codificato all’interno dell’eseguibile.

A questo punto va ad enumerare nuovamente i processi per trovare il nome del processo corrispondente a quello specificato nella voce di configurazione (PService_PPD.exe).

Dopo aver recuperato il percorso D:\OIK\DevCounter e il nome del file PService_PPD.exe , rinominerà il file presente in questo percorso aggiungendo l’ estensione .MZ.

Molto probabilmente questo viene fatto per evitare che qualsiasi attività progettata per il processo “sempre attivo” venga riavviata. Per ogni configurazione embedded viene quindi creato un thread per implementare il protocollo di comunicazione IEC-104.

IEC-104 estende l’IEC-101 in modo che possa essere trasmesso su una rete TCP/IP . Quindi in ciascuno di questi thread il malware tenterà di comunicare con l’indirizzo IP specificato utilizzando il protocollo descritto nello standard IEC-104 dopo aver ripetuto le voci ASDU nel blocco di configurazione.

In IEC-104 ogni oggetto nell’ASDU ha un indirizzo con delle informazioni. Fondamentalmente, lo scopo principale di questa azione è connettersi all’indirizzo IP specificato e inviare messaggi ASDU predisposti con conseguente stato dell’Information Object Address impostato su ON o OFF .

INDUSTROYER vs INDUSTROYER2

Facendo un’analisi comparativa con INDUSTROYER (il suo modulo IEC-104) e INDUSTROYER2 è possibile notare molte somiglianze soprattutto nella logica di funzionamento nonostante gli ultimi campioni presentino sicuramente differenze sostanziali rispetto a quelli del 2016.

Tra le somiglianze tecniche a livello di codice è possibile osservare sovrapposizioni nelle funzioni dedicate alla gestione, composizione e controllo dei messaggi ASDU .

Il nuovo eseguibile in alcuni casi unisce alcune stringhe rispetto al campione precedente ottimizzando in alcuni casi il processo di esecuzione globale ma in generale le stringhe che fanno riferimento ai messaggi di debug sono le stesse permettendo alle vecchie regole YARA di corrispondere anche al nuovo campione.

Secondo la prima prima attribuzione, condivisa dai ricercatori ESET e alla luce delle ulteriori evidenze tecniche estratte in questo articolo, la minaccia in questione è da collegare con il threat attore noto come Sandworm (aka BlackEnergy) associato alla Federazione Russa.

Conclusioni

Posso sicuramente dire che la famiglia di malware Industroyer è un sofisticato malware utilizzato contro i sistemi di controllo industriale (ICS). I risultati qui riportati sono in linea con le precedenti operazioni già attribuite dalla comunità della sicurezza ai gruppi APT russi e, per quanto ne so, questo è il primo malware compatibile con ICS utilizzato dall’inizio del conflitto tra Russia e Ucraina dopo un lungo serie di attacchi che hanno visto l’uso di wiperbackdoor, in diversi impianti nella fase iniziale e intermedia e attacchi DDoS .

L’uso di questo tipo di malware dovrebbe allertare sul potenziale dei gruppi APT collegati alla Federazione Russa, i quali stanno concentrando i loro sforzi contro i sistemi di controllo industriale (ICS) e la loro volontà di utilizzare questo tipo di “armi digitali” per causare l’interruzione dei servizi critici.

È importante considerare che gli aggressori potrebbero adattare questo malware ad altri target simili e che qualsiasi intrusione contro target di questo tipo è da considerarsi estremamente pericolosa e complessa da mitigare in relazione alla presenza di protocolli nati decenni fa che non hanno contemplato il fattore sicurezza.

RILEVAMENTO

YARA
rule Sandworm_Industroyer2_76222_00001 : RUSSIAN THREAT GROUP {
meta:
author = “Emanuele De Lucia”
description = “Strings-based threat detection rule for INDUSTROYER2”
tlp = “white”
date = “2022-04-15”
hash1 = “d69665f56ddef7ad4e71971f06432e59f1510a7194386e5f0e8926aea7b88e00”
strings:
$ = “PServiceControl.exe”
$ = “Sent=x%X | Received=x%X”
$ = “Cause: %s (x%X) | Telegram type: %s (x%X)”
$ = “Length:%u bytes | “
$ = “Unknown APDU format !!!”
$ = “%02hu:%02hu:%02hu:%04hu”
condition: (uint16(0) == 0x5a4d and all of them)
}

Emanuele De Lucia
Laureato in Informatica (con master in Computer Security e un master alla Stanford University), ha lavorato come analista nel Security Operation Center (Se.OC o SOC) in una TELCO italiana e nel settore spaziale. Dirige un team internazionale di ricercatori focalizzato sulla Threat Intelligence, sul reverse engineering e la risposta agli incidenti.