Le tipologie di attacco più sfruttate al giorno d’oggi utilizzano i cosiddetti malware fileless e non coinvolgono l’installazione di alcun file sull’hard disk. Risulta chiaro, quindi, che gli antivirus tradizionali non siano in grado di rilevare la minaccia e che gli attaccanti sfruttino sempre più queste tecnologie.
Indice degli argomenti
Malware fileless: invisibili agli antivirus
Ricordiamo brevemente come funziona un antivirus:
- l’attaccante colloca file sull’hard disk della vittima;
- l’antivirus analizza i file maligni;
- se l’antivirus identifica il malware, lo pone in quarantena o lo rimuove, mantenendo il PC sicuro.
Se i primi malware provocavano caos e sintomi evidenti sugli elaboratori compromessi facilmente rilevabili dagli antivirus, al giorno d’oggi le operazioni avvengono in maniera estremamente silenziosa e difficilmente rilevabile, con la complicità di ciò che “abita” nell’elaboratore. Gli hacker utilizzano le risorse e i tool presenti nativamente nel sistema operativo come strumenti di attacco: quasi sempre tali componenti compaiono nelle whitelist dall’antivirus.
Un tale approccio rende estremamente complesso, per chi si difende, andare a bloccare in maniera consistente e certa tutti i software che danno all’attaccante la possibilità di evadere i sistemi di protezione e nascondersi nel sistema. L’hacker è in grado di divenire un fantasma che si muove all’interno dell’elaboratore, e successivamente della rete, in maniera silenziosa, senza far scattare nessun campanello di allarme in quanto sfrutta software totalmente leciti nonché trusted.
In un secondo momento, proprio da questa backdoor aperta, sarà possibile infettare l’elaboratore con malware più complessi, senza che la macchina ne dia segnali. Un’altra caratteristica è che il codice infetto si propaga autonomamente, sfruttando il componente in whitelist come scudo nei confronti dell’antivirus.
Attacchi di malware fileless sempre più comuni
Gli attacchi portati avanti con malware fileless, tuttavia, non sono una assoluta novità, in quanto hanno fatto la propria comparsa già nel 2001 con Code Red e 2003 con SQL Slammer, un worm che era in grado di causare denial of service (attacchi DoS o DDOS) rallentando in maniera significativa il traffico internet dell’host coinvolto, sfruttando un buffer overflow di SQL Server e Desktop Engine.
Gli hacker preferiscono gli attacchi fileless perché:
- sono estremamente silenziosi, operano direttamente in memoria o nel registro;
- non sono persistenti di per sé e rendono estremamente complicate le attività di forensics;
- non richiedono l’installazione di tool esterni ma utilizzano ciò che è nativamente disponibile;
- sono eseguibili in maniera semplice perché presenti in framework disponibili liberamente sul mercato, quali Cobalt Strike, Metasploit ed Empire. Pensiamo nello specifico a Meterpreter, reso disponibile in Metasploit Framework. Esso incarna in maniera perfetta la tipologia di payload fileless. È da sottolineare come tutti questi framework siano studiati e proposti per attività di ethical hacking ma, spesso, vengano sfruttati anche da cyber criminali.
Anatomia di un attacco con un malware fileless
Un attacco informatico portato avanti tramite malware fileless avviene in due fasi.
Fase 1: Compromissione iniziale del sistema
- Esecuzione di exploit da remoto
- Attacchi di tipo brute force
- Attacchi basati su script
Fase 2: Post Exploitation
- Privilege escalation:
- bypass UAC
- dump di credenziali
- Esecuzione di payload:
- reflective DLL Injection
- process hollowing
- Persistenza:
- posizionamento di script maligni nel registro di sistema
- sfruttamento di GPO
- sfruttamento di Windows Management Instrumentation
- movimenti laterali tramite tool di accesso remoto ed esecuzione software
Quali sono le tipologie di attacco fileless
Gli attacchi fileless possono essere catalogati in questo modo:
- In-memory: tramite exploit gli attaccanti possono eseguire codice maligno direttamente in memoria
- Fileless persistence methods: l’attaccante ottiene la persistenza sui sistemi compromessi caricando un payload in memoria. L’infezione può essere resa persistente anche dopo il riavvio di Windows, tramite specifici script o task schedulati
- Dual use tools: l’attaccante sfrutta tool già presenti in Windows con scopi maligni
- Non-Portable Executable (PE) file attack: tipologia di attacco dual use in cui vengono utilizzati sia uno script che un tool legittimo, come PowerShell o WScript
Analizziamole in dettaglio.
Attacchi in-Memory
Gli attacchi memory only sono stati la prima tipologia di attacco fileless a diffondersi, con i worm Code Red e SQL Slammer. Entrambi i worm andavano a sfruttare vulnerabilità dei servizi di Windows per eseguire il proprio payload direttamente in memoria. Esempio più recente è EternalBlue, un exploit utilizzato per dispiegare la backdoor DoublePulsar, sfruttata dal ransomware WannaCry. L’attaccante sfrutta remotamente una vulnerabilità, ottiene una shell ed è quindi in grado di operare con privilegi amministrativi senza scrivere nulla su disco. Un comportamento simile è stato rilevato anche nell’exploit kit Angler, in grado di eseguire il trojan Snifula direttamente in memoria.
Le infezioni provocate da attacchi in-memory non sono persistenti ed un riavvio del PC porterebbe di fatto ad una disinfezione. L’attaccante spesso non è tuttavia interessato a mantenere la persistenza, per due motivi:
- un sistema che viene compromesso non è patchato e probabilmente non lo sarà a breve, quindi la re-infezione è estremamente semplice;
- i sistemi critici, cioè i più interessanti, vengono raramente riavviati, rendendo di fatto il tempo di persistenza sufficiente ad ottenere i propri scopi.
Attacchi Fileless persistence methods
Si suddividono in ulteriori sottocategorie.
- Registry-resident Un metodo comunemente sfruttato negli attacchi fileless è quello di iniettare codice all’interno del registro di Windows. La maggior parte di queste incursioni inizia tramite un file .doc, .lnk, .pdf o un link contenuto in un messaggio email; quando l’utente apre l’allegato o clicca sul link, il malware scrive il payload all’interno del registro di Windows e quindi sparisce. Il payload contiene generalmente uno script che viene mascherato rimuovendo i privilegi di accesso dell’utente o con tecniche standard di offuscamento. Lo script invoca un software Windows legittimo, come ad esempio PowerShell, per eseguire e inserire codice all’interno di processi Windows standard (regsvr32, dllhost ecc.), di modo che il codice stesso non possa essere rilevato da prodotti antivirus: non sono infatti presenti file infetti o processi maligni.
- Windows Management Instrumentation (WMI) WMI è un tool estremamente utile e comodo per gli amministratori di rete. Permette di installare update, eseguire. copiare o cancellare file, cambiare valori di registro, raccogliere informazioni sul sistema, ed ha accesso a tutte le risorse della macchina. WMI è presente in maniera nativa nelle recenti versioni di Windows. In mani malevole, la comodità e la potenza di questo tool possono diventare estremamente pericolose, in quanto un attaccante potrebbe utilizzarlo allo stesso modo di un amministratore di sistema, eseguendo codice maligno. WMI può quindi essere visto come il componente essenziale sui cui si basano gli attacchi agentless tramite malware fileless. L’esecuzione del codice maligno avviene senza particolari complicazioni, in maniera istantanea e silente: WMI è whitelistato dal sistema di endpoint protection. WMI può chiaramente essere disabilitato, ma non disinstallato; tuttavia una tale operazione non può essere decisa a cuor leggero, in quanto andrebbe a limitare in maniera significativa le capacità del sistema operativo stesso (ad esempio, mancata esecuzione di Windows Update). Un attaccante può guadagnare la persistenza nel sistema creando, a titolo di esempio, un filtro per un esempio specifico che, verificatosi, vada ad avviare uno script confezionato su misura. Pensiamo a qualcosa di molto semplice, come un cron job su Unix. In questo scenario sono necessarie tre classi WMI:
- Filter
- Consumer
- FilterToConsumer
Il payload eseguito è generalmente uno script PowerShell. PowerShell è un linguaggio di scripting nativo di Windows che permette di avere acceso ad API ed è solitamente utilizzato per l’automazione di task di svariata natura. PowerShell ha acceso completo a numerosi componenti del sistema operativo, tra cui .NET. Ne consegue che interi software possono essere eseguiti attraverso PowerShell. Ciò permette ad un attaccante di introdurre codice, cifrato o offuscato, all’interno di PowerShell e di eseguirlo direttamente dalla memoria. Questa tattica porta al non rilevamento delle azioni malevole da parte dei software di protezione endpoint standard. Ciò che trasforma PowerShell in un tool formidabile per gli attaccanti è però il fatto che essa possa essere eseguita da remoto tramite WinRM, creando un accesso diretto attraverso Windows Firewall del client compromesso. L’hacker può quindi eseguire script o semplicemente avviare una sessione interattiva di PowerShell, con accesso amministrativo all’elaboratore. Anche in questo caso non viene installato alcun tipo di malware.
- Scheduled Task Uno scheduled task può essere creato per:
- eseguire comandi in PowerShell
- effettuare escalation di privilegi bypassando UAC
- I task schedulati vengono eseguiti in modo che l’attaccante possa mantenere persistenza anche in caso di riavvio dell’elaboratore
- Group Policy Objects (GPO) GPO possono essere utilizzati come load point per backdoor, creando o aggiornando il valore di una chiave di registro con uno script PowerShell come valore. Questa tipologia di attacco non è particolarmente diffusa in quanto l’utilizzo di GPO è raro su computer casalinghi.
Attacchi Dual use tools
L’utilizzo di applicazioni di sistema o tool nativi con scopi malevoli ricade spesso nel cosiddetto “live off the land”. L’attaccante è in grado di compiere le proprie azioni basandosi solamente su ciò che offre la natura – il sistema operativo.
Per dual use tools si intende quindi l’utilizzo con scopo malevoli di applicazioni lecite. A titolo di esempio possiamo ricordare:
- notepad.exe utilizzabile per modificare o leggere file
- comandi eseguiti tramite PowerShell per la modifica di permessi utenti
Un attaccante potrebbe agire anche scaricando ed installando tool addizionali, legittimi, che non siano presenti di default sul sistema operativo, come ad esempio PsExec. Il vantaggio principale della tecnica Dual use tools è da ricercare nel fatto che tutti i software utilizzati durate le operazioni di accesso ed eventuale esfiltrazione sono completamente leciti dal punto di vista dei sistemi di protezione endpoint, che falliscono nel rilevare la minaccia, lasciando il target esposto.
I Dual use tools possono essere categorizzati in base al proprio utilizzo:
- Internal Network Reconnaissance (whoami, net, ipconfig): mostrano informazioni in merito all’ambiente in cui è collegato il target
- Credential Harvesting (Mimkatz, pwdump): raccolgono credenziali di accesso ai sistemi target
- Lateral Movement (RDP, PowerShell, PsExec): permettono di compiere movimenti laterali e di eseguire azioni di varia natura per ottenere persistenza o accesso a dati specifici
- Data Exfiltration (FTP, PuTTY, PowerShell): garantiscono all’attaccante la possibilità di esportare dati all’esterno dell’elaboratore compromesso
- Fallback Backdoor (RDP, Telnet Server): abilita una backdoor secondaria da utilizzare nel caso in cui il punto di accesso principale divenga irraggiungibile
Attacchi Non-Portable Executable (PE) file attack
Un non PE file attack coinvolge un tool lecito e uno script, generalmente PowerShell, CScript o WScript, ricadendo di fatto nella categoria dei Dual use tools. Il trojan Trojan.PPDropper è un esempio di non PE: attacca file PowerPoint sfruttando uno script PowerShell.
I file non PE sono solitamente distribuiti in campagne di social engineering, tramite invio di email contenenti allegati maligni o compromissione di siti web.
Gli Exploit Kits negli attacchi con malware fileless
In qualsiasi attacco tramite malware fileless che abbia successo, l’exploit kit ha un ruolo fondamentale. Si tratta di software pensati per rilevare e sfruttare (generalmente in maniera semiautomatica) vulnerabilità, falle o debolezze dei sistemi e delle applicazioni, con lo scopo di ottenere accesso agli elaboratori interessati.
Gli exploit kit sono diventati, nel corso degli anni, un genere di prodotti estremamente diffusi e disponibili EKaaS, cioè exploit kit as a service. Le skill tecniche richieste per lo sfruttamento delle potenzialità del prodotto sono ridotte, in quanto il produttore è interessato a semplificare le operazioni di gestione, in modo da avere un parco clienti più ampio. Ciò ha portato all’ingresso sul mercato di cybercriminali di qualsiasi fatta, aumentando esponenzialmente il numero di attacchi che quotidianamente viene effettuato.
I produttori di malware sono inoltre estremamente efficiente e riescono ad inserire nella propria offerta decine di milioni di nuovi malware per ogni anno.
L’exploit kit è il tool che rende possibile la Fase 1 degli attacchi fileless, e cioè la compromissione iniziale del sistema.
Tra gli exploit kit attualmente più diffusi ad oggi possiamo ricordare:
- RIG-v EK: è sicuramente il più popolare ad oggi e viene sfruttato in svariati ambiti, dai banking trojan ai ransomware sino ai coin miner
- GrandSoft EK: si tratta di un vecchio exploit kit che è ricomparso sul mercato ed è stato utilizzato per distribuire GrandCrab ransomware e miners di varia natura
- GreenFlash Sundown: exploit kit che utilizza URI patterns che non possono essere bloccati senza comportare complicazioni al normale utilizzo quotidiano degli elaboratori. Utilizza Flash Player per nascondere le proprie attività e contiene lo zero day che è stato utilizzato per la distribuzione del ransomware Hermes
Lo scenario attuale: il malware fileless Rozena
Rozena è un trojan di vecchia conoscenza, comparso nel 2015 e che si è evoluto sino a ripresentarsi a fine giugno 2018 in una versione totalmente aggiornata, migliorata e che sfrutta le tecniche di attacco fileless.
La versione 2015 di Rozena (nota anche come Win32/Bedep) era costituita da DLL che venivano recapitate nei sistemi target tramite l’exploit kit Angler. Queste DLL potevano venire installate anche senza la creazione di alcun file, caricate direttamente in memoria, andando a modificare il registro di Windows. In seguito a queste modifiche, Rozena/Bedep lanciava explorer.exe iniettando codice maligno all’interno del processo. Era quindi stabilita una connessione verso un command & control server, con lo scopo di scaricare altro malware e raccogliere informazioni sull’elaboratore.
La versione 2018 Rozena si diffonde attraverso tecniche di social engineering, distribuito tramite email o pagine web compromesse, spesso generate sfruttando exploit kit, e si presenta come un eseguibile con icona di Microsoft Word, in modo da spingere l’utente a pensare di essere di fronte ad un documento legittimo.
Oggi il malware sfrutta script eseguiti tramite PowerShell, senza scrivere alcun file su disco.
Nel corso dei test eseguiti dai laboratori GDATA è emerso come l’esecuzione di PowerShell viene nascosta agli occhi degli utenti con le seguenti tecniche di offuscamento:
- -noniNtE: sintassi per -NonInteractive. È utilizzato per non mostrare il prompt PowerShell all’utente
- -nOlOG: sintassi per -NoLogo. Nasconde i copyright banner quando PowerShell viene eseguita
- -NOpROFI: sintassi per -NoProfile. Non viene caricato il profilo PowerShell
- -windOwsTY HiddeN: sintassi per -WindowStyle Hidden. Come in precedenza, impedisce di visualizzare PowerShell durante l’esecuzione
- -ExeCUTIonPOlic BypaSS: sintassi per -ExecutionPolicy bypass. Stabilisce la policy di esecuzione di default per la sessione.
Una volta che l’attacco ha avuto successo l’elaboratore compromesso cerca di aprire una connessione reverse_tcp verso il server di comando, gestito dall’attaccante, che è in ascolto su una porta definita all’interno del payload. Nel caso dei laboratori GDATA è stato necessario, per verificare le potenzialità di Rozena, creare un command & control sfruttando il Metasploit Framework e nello specifico exploit/multi/handler.
Il modulo exploit/multi/handler è semplicemente un generic payload handler, cioè uno stub che è in grado di fornire tutte le feature del sistema di exploitation Metasploit anche ad exploit che sono stati eseguiti all’esterno del framework.
Essendo l’elaboratore infetto connesso al command & control server, è possibile, tramite meterpreter, eseguire una serie di istruzioni che di fatto forniscono accesso completo al cybercriminale.
Come prevenire gli attacchi da malware fileless
Come indicato, i malware fileless sono declinati in numerose varianti ed è quindi difficile trovare una soluzione sempre valida.
Le linee guida generali sono comunque quelli di mantenere i propri sistemi sempre aggiornati, specialmente con l’installazione di patch di sicurezza. Questi aggiornamenti sono in grado di eliminare o limitare la superficie di attacco per un malintenzionato che, ricordiamo, utilizza il metodo “live off the land”. Meno software vulnerabile, minor rischio.
Utilizzare sempre il buon senso durante il trattamento della posta elettronica e durante la navigazione in internet. I malware fileless, come nel caso di Rozena, sono spesso recapitati con tecniche di social engineering. Prestare attenzione e chiedere al dipartimento IT prima di procedere ad aprire un allegato contenuto in una email sospetta o accettare l’esecuzione di software su un sito web di dubbia reputazione.
Non è possibile procedere a disabilitare PowerShell, ma si può impostare la modalità Constrained Language. In questo modo PowerShell sarà ancora in grado di supportare i task amministrativi quotidiani ma avrà accesso ristretto a quegli elementi sensibili che potrebbero essere utilizzati per invocare API di Windows.
È possibile anche valutare l’attivazione di AppLocker, affiancandolo a PowerShell. AppLocker si differenzia in maniera concettuale dalle Software restriction policies in quanto la default action rule è deny.
AppLocker permette di controllare in maniera più granulare i permessi per gruppi o persino singolo utente, controllando file eseguibili, script, file di installazione e DLL.