
Rogue Assembly Hunter es una utilidad para descubrir módulos .NET CLR 'interesantes' en procesos en ejecución.
__________ _____ . .
_____ \ ____ ____ __ __ ____ / _ \ ______ ______ ____ _ | | | ..
| // _ \ / __| | _/ __ \ / /\ \ / // __// __ \ / | __ | |< | |
| | ( <> ) // > | /\ / / | \ \ _ \ /| Y Y \ _\ \ |_ |
|| /_/_ /|/ _ > _| /____ >____ >___ >|| / /____/ |
/ // / / / / / / / /
___ ___ __
/ | \ __ __ / | ___________
/ ~ \ | |/ \ __/ __ _ __
\ Y / | / | \ | \ /| | /
_| /|/|| /| _ >|
/ / /
Rogue Assembly Hunter es una utilidad para descubrir módulos '.NET CLR' 'interesantes' en procesos en ejecución.
.NET es una plataforma de desarrollo y un marco de tiempo de ejecución muy potente y capaz para construir y ejecutar aplicaciones administradas de .NET. En los últimos años, .NET ha sido adoptado por Red Teams (y afines) para instrumentar tácticas que apoyan operaciones ofensivas. En particular, el cambio de PowerShell ofensivo a .NET fue un salto lógico (para muchos) debido al aumento de la óptica y la visibilidad oportunista presentes en PowerShell v5+. Como tal, las herramientas y tácticas ofensivas de .NET se han utilizado con éxito para evadir capacidades defensivas basadas en el host, eludir el control de aplicaciones y construir/preparar/entregar/ejecutar código malicioso (similar a PowerShell).
Desde una perspectiva de prevención, Microsoft está haciendo más para combatir las amenazas instrumentadas con .NET y minimizar la superficie de ataque general de .NET. Por ejemplo, Microsoft ha añadido capacidades de inspección AMSI en .NET Framework 4.8, y los mecanismos WDAC/WLDP son bastante efectivos. Desde una perspectiva de detección/respuesta, una mayor visibilidad e introspección en el ecosistema .NET siempre es ventajosa para descubrir nuevas formas de combatir las amenazas centradas en .NET.
En 2017, Joe Desimone (@dez_) escribió un fantástico artículo llamado Hunting For In-Memory .NET Attacks. Aún relevante hoy, el artículo describe vectores de ataque modernos de .NET, así como técnicas de detección bajo demanda y basadas en eventos. Acompañando al artículo, Joe lanzó una herramienta (Get-ClrReflection) para detectar (y recuperar) de forma proactiva módulos CLR de .NET en memoria que carecen de una referencia de disco adecuada. Inspirado por el trabajo de Joe y aprovechando las capacidades de introspección de la biblioteca de diagnóstico en tiempo de ejecución CLRMD (+ las capacidades de acceso a datos posteriores de mscordacwks.dll), se creó Rogue Assembly Hunter para:
[*] Parameters:
--mode=<.> : Required | Select analysis mode. Options include sweep, process, and watch.
--hunt=<.> : Optional | Select the hunt scan type to find interesting CLR modules. Specify all (default), memory-only, unusual-dir,
sig-status, imposter-file, or list.
--export=<.> : Optional, Experimental | Specify a file path to export loaded CLR modules for in-memory hunt scans and imposter-file hunt scans
(e.g. --hunt=memory-only/imposter-file/all).
--pid=<.> : Optional | Specify a targeted process by PID. Must be used with --mode=process parameter/value.
--checks=<.> : Optional | Specify a value for scan cycles. This may help reduce race condition misses during scans but could also repeat result output.
Default value is 1.
--sleep=<.> : Optional | Specify a value for sleep seconds. This may help reduce race condition misses during scans by delaying the check cycle.
Default value is 0 seconds.
--debug : Optional | Display exception information (e.g. process connect errors).
--nobanner : Optional | Suppress the display banner. Useful for executing with the PowerShell script or for use cases that leverage automation.