Il linguaggio della sicurezza informatica si evolve di pari passo con i cambiamenti nelle tattiche di attacco e difesa. Queste dinamiche si possono percepire esaminando il termine "fileless". Questo termine affascina non solo per la sua rilevanza nel contesto del malware, ma anche per la sua capacità di agitare molti professionisti della sicurezza informatica.
Le origini del termine "fileless" risalgono al 2001, quando Eugene Kaspersky lo utilizzò in riferimento alla capacità del worm "Code Red" di esistere esclusivamente in memoria. Due anni dopo, Peter Szor definì questo termine in un brevetto per Symantec, spiegando che tale malware non risiede in un file, ma che si "aggiunge a un processo attivo in memoria nella macchina infetta".
Eugene fu profetico nel predire che il malware "fileless" sarebbe diventato una delle forme più diffuse di programmi maligni a causa dell'inefficacia degli antivirus contro tali minacce.
Oggi, quando si osservano i modi in cui il malware elude la rilevazione, le tecniche di evasione ricadono spesso sotto l'ombrello di "fileless", sebbene il termine abbia acquisito un significato più ampio rispetto a quello originale. "Fileless" era sinonimo di "in-memory" fino a circa il 2014.
La sfida dei Blue Team con il malware puramente in-memory, è che scompare una volta che il sistema viene riavviato. Nel 2014, un articolo di Kevin Gossett per Symantec spiegò come il malware Powerliks superò questa limitazione utilizzando i programmi legittimi di Windows rundll32.exe e powershell.exe per mantenere la persistenza ed estrarre ed eseguire script maligni dal registro.
Kevin descrisse questa minaccia come "fileless", poiché evitava di posizionare direttamente il codice sul sistema di file. Paul Rascagnères spiegò ulteriormente che Poweliks infettava i sistemi utilizzando un documento trappola di Microsoft Word.
La discussione su Powerliks, e sui malware simili apparsi in seguito, ha definito il modo in cui oggi vengono descritti gli attacchi fileless. Sì, gli attacchi fileless cercano di mantenere il codice chiaramente maligno esclusivamente o principalmente in memoria. Inoltre, tendono a coinvolgere documenti e script maligni. Spesso abusano delle utility integrate nel sistema operativo e sfruttano varie capacità di Windows, come il registro, per mantenere la persistenza.
Tuttavia, l'ambiguità crescente dietro l'uso moderno del termine "fileless" rende sempre più difficile comprendere quali metodi specifici utilizzi il malware fileless per eludere la rilevazione. È tempo di chiarire questo termine per condurre conversazioni fruttuose sulla nostra capacità di difenderci dalle sue tattiche sottostanti. Ecco la prospettiva di NGsecurity sui metodi che compongono gli attacchi fileless moderni:
- • Documenti maligni:possono agire come contenitori flessibili per altri file. I documenti possono anche trasportare exploit che eseguono codice maligno. Possono eseguire logiche maligne che iniziano l'infezione e avviano il prossimo passaggio nella catena di infezione.
- • Script maligni:possono interagire con il sistema operativo senza le restrizioni che alcune applicazioni, come i browser web, potrebbero imporre. Gli script sono più difficili da rilevare e controllare per gli strumenti anti-malware rispetto agli eseguibili compilati. Inoltre, offrono l'opportunità di suddividere la logica maligna su diversi processi.
- • "Living Off the Land":Microsoft Windows include numerose utility che gli attaccanti possono utilizzare per eseguire codice maligno con l'aiuto di un processo affidabile. Questi strumenti consentono agli avversari di "rimbalzare" da una fase dell'attacco all 'altra senza fare affidamento su eseguibili maligni compilati.
- • Codice maligno in memoria:l'iniezione in memoria abusa delle caratteristiche di Microsoft Windows per interagire con il sistema operativo anche senza sfruttare vulnerabilità. Gli aggressori possono avvolgere il loro malware in script, documenti o altri eseguibili, estrarre il payload in memoria durante l'esecuzione.
Anche se alcuni attacchi e famiglie di malware sono completamente fileless in tutti gli aspetti della loro operazione, la maggior parte dei malware moderni, che eludono la rilevazione, include almeno alcune capacità fileless. Tali tecniche consentono agli avversari di operare ai margini dei software anti-malware.
Il successo di tali metodi di attacco è la ragione per cui si continua a utilizzare il termine "fileless" nelle discussioni tra professionisti della sicurezza informatica.
Il linguaggio si evolve man mano che le persone adattano il modo in cui usano le parole e il significato che loro attribuiscono ad esse. Questo è certamente accaduto per "fileless", poiché l'industria cercava modi per discutere minacce evasive che evitavano il sistema di file e abusavano delle funzionalità del sistema operativo.
L'idea di usare "attacchi non-malware" si basa esclusivamente su strumenti legittimi di amministrazione di sistema e altri software non maligni. Questo è lo scenario che alcuni descrivono come "living-off-the-land".
In contrasto, si potrebbe definire "malware solo in memoria", se si vuole sottolineare che il codice maligno non viene mai salvato su disco, magari perché è stato iniettato in un altro processo.
Va bene anche dire "malware senza file" quando si vuole mettere in evidenza meccanismi di persistenza che evitano di posizionare eseguibili tradizionali sul sistema di file.
Purtroppo, al giorno d'oggi la terminologia si è mescolata, e probabilmente siamo costretti a utilizzare il termine "malware senza file" per descrivere i vari scenari sopra delineati, nonostante l'ambiguità del termine.
Spesso ci chiedono come gestiamo il malware senza file; abbiamo deciso di fare la ricerca sopra riportata per capire meglio quando e come si dovrebbe usare questo termine.
Tecnicamente, un exploit è la combinazione di due elementi:
• Vulnerabilità: il difetto di sicurezza del software.
• Shellcode: il payload maligno effettivo. La vulnerabilità ci dà il controllo sul flusso di esecuzione, mentre lo shellcode è il payload effettivo che esegue l'attività maligna. Senza lo shellcode, la vulnerabilità è solo un semplice difetto del software.
Inoltre, possiamo dividere gli shellcode in due parti:
• Shellcode normali
• Shellcode a più fasi (spesso chiamati download drive-by)
In uno shellcode normale, lo shellcode stesso esegue l'attività maligna, ad esempio: bind shell, reverse shell, etc. Essi non richiedono alcun altro payload da scaricare per funzionare.
D'altra parte, gli shellcode a più fasi richiedono un altro payload per funzionare e sono spesso divisi in due fasi:
• Fase 1: scarica la fase 2.
• Fase 2: è il payload maligno effettivo.
La fase 1 scarica il payload della fase 2 e lo esegue. Dopo di ciò, la fase 2 eseguirà tutti i tipi di attività maligne.
Qui la parte interessante è come la fase 1 esegue i payload della fase 2.
In questo articolo ne discutiamo in dettaglio.
Le due possibilità per lo shellcode della fase 1 di eseguire lo shellcode della fase 2 potrebbero essere:
• Scaricare il payload, salvarlo sul disco e creare un nuovo processo.
• Scaricare il payload ed eseguirlo direttamente dalla memoria (Fileless).
La prima opzione aumenterà le tracce, ed inoltre ci sono maggiori possibilità di rilevamento da parte dei software di sicurezza basati sull'host come gli antivirus. Tuttavia, nella seconda opzione, poiché il payload viene eseguito direttamente dalla memoria, può bypassare facilmente i software di sicurezza basati sull'host. Ma fortunatamente nessuna API di Windows fornisce un meccanismo per eseguire un file direttamente dalla memoria. Tutte le API di Windows come CreateProcess, WinExec, ShellExcute etc. richiedono che il file sia presente localmente.
Quindi la domanda è: come fanno gli Hackers se non esiste un'API del genere?
Tecniche Hacker Avanzate
Tecniche di Iniezione di Codice
○Process Hollowing: Questa tecnica consiste nel creare un processo in stato sospeso e quindi rimuovere il codice del processo legittimo per sostituirlo con codice malevolo. La funzione CreateProcess di Windows può essere usata per creare un processo sospeso, e poi tramite funzioni come WriteProcessMemory si può iniettare il codice malevolo.
○Reflective DLL Injection: Consente di caricare ed eseguire una DLL direttamente dalla memoria. Questo si realizza tramite una tecnica chiamata "reflection", che permette di caricare un modulo in un processo senza scrivere il modulo su disco.
Utilizzo di API Avanzate
○VirtualAllocEx e CreateRemoteThread: Queste API permettono di allocare memoria in un processo remoto e di eseguire il codice iniettato. VirtualAllocEx può essere usato per allocare memoria, e WriteProcessMemory per scrivere il codice in tale memoria. Infine, CreateRemoteThread avvia il codice nel processo remoto.
Esecuzione tramite Shellcode Personalizzato
○Shellcode che Simula un Loader: È possibile scrivere uno shellcode che include tutto il necessario per emulare le funzioni di un loader di Windows. Questo shellcode può allocare memoria, caricare il payload nella memoria allocata e poi eseguire il payload direttamente senza la necessità di un file fisico su disco.
Esecuzione in Contesti Specifici
○Exploits Specifici del Sistema: Alcuni exploit possono sfruttare vulnerabilità specifiche del sistema per ottenere esecuzioni di codice dalla memoria. Ad esempio, sfruttando vulnerabilità nei meccanismi di gestione della memoria di Windows.
L'esecuzione di codice direttamente dalla memoria è spesso utilizzata in contesti malevoli per bypassare i meccanismi di sicurezza. Questa tecnica, nota come attacco fileless, permette di eseguire codice dannoso senza lasciare tracce evidenti sui sistemi di archiviazione, rendendo difficile la rilevazione da parte dei tradizionali software antivirus.
Tuttavia, può essere sfruttata anche per scopi legittimi, come ad esempio nei casi di penetration test e di analisi di malware effettuati da NGsecurity.
Per proteggersi efficacemente da queste minacce sofisticate, è essenziale implementare un monitoraggio continuo e approfondito. NGsecurity offre un servizio di monitoraggio con il proprio Security Operations Center (SOC) attivo 24 ore su 24, 7 giorni su 7, che rappresenta una soluzione ideale per prevenire gli attacchi Fileless.
Questo servizio non solo consente di rilevare tempestivamente qualsiasi attività sospetta direttamente in memoria, ma è anche in grado di identificare comportamenti anomali che potrebbero indicare la presenza di minacce avanzate, come ad esempio gli attacchi fileless.
Il monitoraggio H 24 del SOC di NGsecurity utilizza tecnologie avanzate di rilevazione e analisi delle minacce, garantendo una protezione proattiva in tempo reale. Grazie al nostro team di esperti e a un'infrastruttura tecnologica all'avanguardia, il SOC è in grado di intervenire immediatamente per mitigare qualsiasi rischio, offrendo una difesa robusta e affidabile contro le tecniche di attacco più insidiose.
Se vuoi saperne di più, contattaci per parlarne con uno dei nostri consulenti.