Ho affermato più volte che antivirus (AV) ed EDR, pur necessari, non dovrebbero essere considerati infallibili perché in realtà sono relativamente facili da bypassare, soprattutto gli AV.
Può sembrare un’esagerazione, e come diceva Carl Sagan: "affermazioni straordinarie richiedono prove straordinarie".
Antivirus
Partiamo dagli AV, i più facili da ingannare.
Gli antivirus scansionano gli eseguibili prima che vengano avviati dagli utenti. È importante sottolineare che hanno pochissimo tempo per farlo, per non disturbare l’esperienza utente.
Una volta che il programma è in esecuzione, l’AV è per lo più “cieco”: tutte le tecniche per ingannarlo si basano su questo principio.
Gli AV moderni hanno anche un monitoraggio comportamentale in runtime (ETW/API hooks, ecc.), ma è limitato e spesso tarato per evitare falsi positivi.
Vediamo ora i tre metodi principali con cui un AV identifica un file come malware, e come eluderli.
Analisi statica
Consiste nel confrontare "l’impronta digitale" di un file sospetto con un database di minacce note. Può usare l’intero codice o parti di esso.
La contromisura è semplice: modificare il codice del malware riorganizzando la logica e aggiungendo parti inutili. L’impronta cambia, e il file non verrà rilevato.
Analisi dinamica
A questo punto l’AV esegue il file sospetto in una sandbox e osserva comportamento ed effetti.
Una sandbox è un ambiente isolato e sicuro che non impatta il sistema reale.
Anche qui le contromisure sono relativamente semplici: rilevare la sandbox e comportarsi “bene” al suo interno.
I metodi più comuni includono:
- Sfruttare i vincoli temporali dell’AV facendo calcoli inutili (ad esempio contare fino a 10 miliardi) e solo in seguito eseguire il codice malevolo.
- Controllare le risorse disponibili: chi usa solo 2GB di RAM oggi? Le sandbox.
- Rilevare processi tipici di ambienti virtuali.
- Verificare l’assenza di attività umana, le sandbox sono vuote.
Analisi euristica
Qui le cose si complicano un po’: l’analisi euristica tenta di stimare il rischio di un file sospetto inferendo cosa fa dal codice.
Tutti i malware usano funzioni legittime (syscall) in modi illegittimi: per esempio, modificare un file è ciò che fa un ransomware, solo rapidamente e in sequenza.
L’analisi euristica valuta quante syscall sicure e rischiose vengono usate. Se un programma fa 100 operazioni sicure e 1 rischiosa è meno sospetto di uno con 10 sicure e 5 rischiose.
La contromisura consiste nel modificare il codice più volte, alterando il flusso di esecuzione e aggiungendo codice perfettamente legittimo, testandolo poi contro l’AV. Una volta che il malware non viene rilevato, rimarrà tale fino a eventuale fingerprinting successivo, ed è pronto all’uso.
Va sottolineato che rilevamento e evasione sono una corsa agli armamenti in continua evoluzione, una corsa che i difensori non hanno ancora vinto.
Endpoint Detection & Response
Gli EDR sono un’altra bestia, più difficili da ingannare.
La differenza fondamentale è che non solo applicano i metodi precedenti, ma monitorano e correlano continuamente gli eventi di ogni processo in esecuzione.
Non entrerò nei dettagli tecnici, ma è importante capire che gli EDR utilizzano i privilegi massimi (root/NT Authority) e non possono essere manomessi da processi con privilegi inferiori. E ottenere quei privilegi è quasi impossibile quando l’EDR monitora… o no?
Esistono modi per aggirare un EDR (argomento complesso), ma il più affidabile, pericoloso e diffuso è il BYOVD: Bring Your Own Vulnerable Driver.
Bring Your Own Vulnerable Driver
Che cos’è un driver?
È un programma che funge da interfaccia tra un dispositivo e il sistema operativo, ad esempio traducono i movimenti del mouse in istruzioni comprensibili da Windows.
I driver sono rilevanti in questo scenario perché anch'essi utilizzano i privilegi massimi e possono manipolare qualsiasi processo, compreso l’EDR stesso.
C’è però un ostacolo: Windows permette solo l’installazione di driver firmati e autorizzati. Non si può semplicemente scrivere un driver malevolo, caricarlo e disattivare l’EDR.
E qui entra in gioco il “Bring Your Own” (porta il tuo): gli attaccanti inseriscono nei loro malware driver legittimi, pre-firmati e autorizzati, ma contenenti vulnerabilità note.
Quando il malware viene eseguito, prima di fare danni, carica il driver firmato che passa inosservato. Poi sfrutta la vulnerabilità del driver e lo controlla come un burattino, ottenendo pieno accesso al sistema e disattivando l’EDR.
Si potrebbe pensare che l’EDR intercetti lo sfruttamento della vulnerabilità, ma non lo fa, perché si tratta di un evento imprevedibile. L’unico evento registrato è il caricamento del driver legittimo.
I produttori e Microsoft revocano i certificati dei driver vulnerabili, ma dato che sono milioni, trovarne di nuovi non è un problema per individui o gruppi dedicati.
Malware As A Service
Queste tecniche non sono difficili per un hacker esperto, ma il mercato criminale ha abbassato così tanto la soglia d’ingresso che chiunque, senza conoscenze pregresse di programmazione o evasione, può riuscirci.
Molte organizzazioni forniscono malware pronti, sfruttando le ultime tecniche di evasione, a fronte di un compenso o di una percentuale sui riscatti. Gestiscono spesso anche i pagamenti in cryptovalute.
Conclusioni
Usare AV ed EDR è fondamentale: sono strumenti difensivi importanti e possono bloccare molte minacce, soprattutto quelle vecchie (il 99,9% dichiarato).
Ma non affidatevi solo a loro, soprattutto se non avete un SOC dedicato che monitora costantemente gli eventi.
È come avere i freni di emergenza in auto: utili, ma non sostituiscono il piede sul pedale.
Oggi la cybersecurity sembra concentrarsi tutta sugli endpoint. Cio' non è guidato dall'opinione di esperti, ma dalle vendite.
Le soluzioni endpoint sono scalabili e altamente redditizie.
Infine, se non pagate per un EDR completo, evitate antivirus a pagamento e restate con Windows Defender: è molto più efficace di quanto gli venga riconosciuto.