
Utilizza un driver callout WFP legittimo per impedire agli agenti EDR di inviare telemetria.
Coautore: @oops4git(https://github.com/oops4git)
EDRPrison sfrutta un legittimo driver callout WFP, WinDivert, per mettere efficacemente a tacere i sistemi EDR. Traendo ispirazione da strumenti come Shutter, FireBlock ed EDRSilencer, questo progetto si concentra su tecniche di evasione basate sulla rete. A differenza dei suoi predecessori, EDRPrison installa e carica un driver callout WFP legittimo esterno invece di affidarsi esclusivamente al WFP integrato. Inoltre, blocca il traffico in uscita dai processi EDR aggiungendo dinamicamente filtri runtime senza interagire direttamente con i processi EDR o i relativi eseguibili.
In sintesi, EDRPrison offre le seguenti caratteristiche e capacità:
Per maggiori dettagli tecnici, fare riferimento all'articolo: https://winslow1984.com/books/malware/page/edrprison-borrow-a-legitimate-driver-to-mute-edr-agent
Per eseguire EDRPrison con successo sono richiesti privilegi elevati. EDRPrison è composto dai seguenti tre componenti:
EDRPrison offre diversi miglioramenti e ottimizzazioni rispetto ai suoi predecessori, rendendolo uno strumento più robusto e stealth per l'evasione EDR basata sulla rete:
Viste le risorse a mia disposizione, finora ho testato EDRPrison contro Elastic Endpoint e Microsoft Defender for Endpoint (MDE) sul mio server fisico.
I processi rilevanti per Elastic Endpoint e MDE sono hardcoded nel codice sorgente. Durante i test, né il programma principale né WinDivert sono stati rilevati dai sistemi di sicurezza.
Ho testato alcuni campioni di malware comuni, come Mimikatz. Questi campioni possono ancora essere rilevati perché, anche senza connettività Internet, i sistemi EDR mantengono capacità di rilevamento di base come le firme basate su hash. Dopo l'esecuzione del malware, il numero di pacchetti è aumentato, indicando che contenevano dati di avviso.

Mentre alcuni rilevamenti avvengono localmente, non compaiono nel pannello EDR. Senza connettività Internet, i sistemi EDR non sono in grado di sfruttare capacità avanzate come machine learning e cloud computing per prevenire attacchi malware più sofisticati.


Modificare il seguente frammento di codice per hardcodare ulteriori processi EDR.
static void initData()
{
processDictionary.TryAdd("MsMpEng.exe", 1);
processDictionary.TryAdd("MsSense.exe", 1);
processDictionary.TryAdd("SenseIR.exe", 1);
processDictionary.TryAdd("SenseNdr.exe", 1);
processDictionary.TryAdd("SenseCncProxy.exe", 1);
processDictionary.TryAdd("SenseSampleUploader.exe", 1);
processDictionary.TryAdd("elastic-endpoint.exe", 1);
processDictionary.TryAdd("elastic-agent.exe", 1);
}
I seguenti approcci possono essere utilizzati per rilevare o mitigare l'uso di EDRPrison. Tuttavia, a seconda dell'ambiente, alcuni di questi rilevamenti potrebbero generare falsi positivi (FP).
Se il driver WinDivert non è già installato sul sistema, EDRPrison installerà il driver callout alla prima esecuzione. Sia il sistema operativo che i dati di telemetria registreranno questo evento.
EDRPrison e altri programmi che dipendono da WinDivert richiedono la presenza di WinDivert64.sys e WinDivert.dll sul disco. Il monitoraggio di questi file può aiutare a rilevare tali programmi.
Strumenti come WinDivertTool possono rilevare i processi che stanno attualmente utilizzando la Windows Filtering Platform (WFP).

Elastic dispone di una regola di rilevamento in grado di identificare azioni di drop o blocco dei pacchetti contro i processi dei software di sicurezza, che possono indicare la presenza di EDRPrison.
Lo strumento WFPExplorer aiuta gli amministratori a esaminare le sessioni WFP attive, i callout registrati e i filtri.




Una potenziale funzionalità futura potrebbe aggiungere ulteriori protezioni per l'installazione dei driver, migliorando ulteriormente la sicurezza contro l'uso non autorizzato di driver come WinDivert.
Dal punto di vista del red team, è possibile impiegare diverse strategie per aggirare i rilevamenti sopra menzionati, a seconda delle configurazioni di sicurezza dell'ambiente.
Se WinDivert è considerato dannoso nell'ambiente, è possibile utilizzare driver firmati open source alternativi. Queste alternative dovrebbero avere meno segnalazioni di uso dannoso e supportare comunque l'intercettazione, la reimmissione e altre tecniche di manipolazione dei pacchetti.
In ambienti in cui i driver esterni non sono autorizzati a meno che non vengano approvati, è difficile ma fattibile fare reverse engineering di un driver callout WFP installato o integrato. Riutilizzando le sue funzioni callout, i red teamer possono sfruttare i driver esistenti. Molte soluzioni software di sicurezza includono i propri driver callout WFP che possono essere riutilizzati.
Invece di bloccare o scartare i pacchetti intercettati, i red teamer possono reindirizzarli o inoltrarli tramite proxy. Questo metodo può evitare le regole di rilevamento incentrate sulle azioni di drop o blocco dei pacchetti, ottenendo comunque l'interferenza desiderata con i processi EDR.
Le seguenti risorse mi hanno ispirato e aiutato molto durante la mia ricerca. Ringrazio tutti gli autori:
https://github.com/netero1010/EDRSilencer
https://github.com/dsnezhkov/shutter
https://www.mdsec.co.uk/2023/09/nighthawk-0-2-6-three-wise-monkeys/
https://github.com/amjcyber/EDRNoiseMaker
https://www.securityartwork.es/2024/06/17/edr-silencer-2/
https://windowsir.blogspot.com/2024/01/edrsilencer.html
https://github.com/TechnikEmpire/HttpFilteringEngine
https://reqrypt.org/windivert.html
https://learn.microsoft.com/en-us/defender-cloud-apps/network-requirements
https://github.com/microsoft/windows-driver-samples/tree/main/network/trans/WFPSampler