
Rogue Assembly Hunter è un'utility per scoprire moduli .NET CLR 'interessanti' in processi in esecuzione.
__________ _____ . .
_____ \ ____ ____ __ __ ____ / _ \ ______ ______ ____ _ | | | ..
| // _ \ / __| | _/ __ \ / /\ \ / // __// __ \ / | __ | |< | |
| | ( <> ) // > | /\ / / | \ \ _ \ /| Y Y \ _\ \ |_ |
|| /_/_ /|/ _ > _| /____ >____ >___ >|| / /____/ |
/ // / / / / / / / /
___ ___ __
/ | \ __ __ / | ___________
/ ~ \ | |/ \ __/ __ _ __
\ Y / | / | \ | \ /| | /
_| /|/|| /| _ >|
/ / /
Rogue Assembly Hunter è un'utilità per scoprire moduli .NET CLR 'interessanti' nei processi in esecuzione.
.NET è una piattaforma di sviluppo e un runtime framework molto potente e capace per la creazione e l'esecuzione di applicazioni gestite .NET. Negli ultimi anni, .NET è stato adottato dai Red Team (e simili) per strumentare tecniche di supporto alle operazioni offensive. In particolare, il passaggio da PowerShell offensivo a .NET è stato un salto logico (per molti) a causa dell'aumento della visibilità e dell'opportunità di osservazione presenti in PowerShell v5+. Di conseguenza, gli strumenti e le tecniche offensive .NET sono state utilizzate con successo per eludere le capacità difensive basate su host, bypassare i controlli delle applicazioni e per creare/preparare/distribuire/eseguire codice malevolo (simile a PowerShell).
Dal punto di vista della prevenzione, Microsoft sta facendo di più per combattere le minacce strumentate da .NET e per ridurre al minimo la superficie d'attacco complessiva di .NET. Ad esempio, Microsoft ha aggiunto funzionalità di ispezione AMSI in .NET Framework 4.8, e i meccanismi WDAC/WLDP sono piuttosto efficaci. Dal punto di vista del rilevamento/risposta, una maggiore visibilità e introspezione nell'ecosistema .NET è sempre vantaggiosa per scoprire nuovi modi per combattere le minacce incentrate su .NET.
Nel 2017, Joe Desimone (@dez_) ha scritto un articolo fantastico intitolato Hunting For In-Memory .NET Attacks. Ancora attuale oggi, l'articolo delinea i moderni vettori d'attacco .NET oltre a tecniche di rilevamento su richiesta e basate su eventi. In accompagnamento all'articolo, Joe ha rilasciato uno strumento (Get-ClrReflection) per rilevare proattivamente (e recuperare) moduli CLR .NET in memoria che non hanno un riferimento su disco. Ispirato dal lavoro di Joe e sfruttando le capacità di introspezione della libreria di diagnostica runtime CLRMD (+ le successive capacità di accesso ai dati di mscordacwks.dll), è stato creato Rogue Assembly Hunter per:
[*] Parametri:
--mode=<.> : Obbligatorio | Seleziona la modalità di analisi. Opzioni: sweep, process e watch.
--hunt=<.> : Opzionale | Seleziona il tipo di scansione di caccia per trovare moduli CLR interessanti. Specificare all (predefinito), memory-only, unusual-dir,
sig-status, imposter-file o list.
--export=<.> : Opzionale, Sperimentale | Specifica un percorso file per esportare i moduli CLR caricati per le scansioni di caccia in-memory e imposter-file
(es. --hunt=memory-only/imposter-file/all).
--pid=<.> : Opzionale | Specifica un processo target tramite PID. Deve essere usato con il parametro/valore --mode=process.
--checks=<.> : Opzionale | Specifica un valore per i cicli di scansione. Può aiutare a ridurre le race condition mancate durante le scansioni ma potrebbe anche ripetere l'output dei risultati.
Il valore predefinito è 1.
--sleep=<.> : Opzionale | Specifica un valore per i secondi di pausa. Può aiutare a ridurre le race condition mancate durante le scansioni ritardando il ciclo di controllo.
Il valore predefinito è 0 secondi.
--debug : Opzionale | Mostra le informazioni sulle eccezioni (es. errori di connessione al processo).
--nobanner : Opzionale | Sopprime il banner di visualizzazione. Utile per l'esecuzione con lo script PowerShell o per casi d'uso che sfruttano l'automazione.