
Script de PowerShell que ayuda a los respondedores de incidentes a descubrir posibles mecanismos de persistencia del adversario.
Trawler es un script de PowerShell diseñado para ayudar a los respondedores de incidentes a descubrir posibles indicadores de compromiso en hosts Windows, centrado principalmente en mecanismos de persistencia que incluyen tareas programadas, servicios, modificaciones del registro, elementos de inicio, modificaciones binarias y más.
Actualmente, Trawler puede detectar la mayoría de las técnicas de persistencia señaladas específicamente por MITRE y Atomic Red Team, y se agregan nuevas detecciones de forma regular.
Simplemente descargue y ejecute trawler.ps1 desde un símbolo de sistema de PowerShell/cmd administrativo: cualquier detección se mostrará en la consola y también se escribirá en un CSV ('detections.csv') en el directorio de trabajo actual. El CSV generado contendrá Nombre de detección, Origen, Riesgo, Metadatos y la técnica MITRE correspondiente.
O use esta línea única desde un terminal PowerShell administrativo:
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/joeavanzato/Trawler/main/trawler.ps1'))
Ciertas detecciones tienen listas de permitidos integradas para ayudar a eliminar el ruido de las configuraciones predeterminadas de Windows (10/2016/2019/2022): tareas programadas, servicios, etc. esperados. Por supuesto, siempre es posible que los atacantes secuestren estos directamente y se hagan pasar con gran detalle como un proceso predeterminado del sistema operativo: tenga cuidado de utilizar múltiples formas de análisis y detección al tratar con adversarios hábiles.
Si tiene ejemplos o ideas para detecciones adicionales, no dude en enviar un Issue o PR con detalles técnicos/referencias relevantes; la base de código está un poco desordenada en este momento y se limpiará con el tiempo.
Además, si identifica falsos positivos obvios, hágamelo saber abriendo un issue o PR en GitHub. Los culpables obvios serán COM, Servicios o Tareas no estándar.
-scanoptions : Navegue con tabulador entre las detecciones posibles y seleccione un subconjunto usando términos separados por comas (ej. .\trawler.ps1 -scanoptions Services,Processes) o omita para hacer todas las detecciones.
-quiet : Suprime la salida de detecciones en la consola.
-snapshot : Ruta a una salida JSON anterior de Trawler para usar como lista de permitidos.
-outpath : Define una ruta de archivo personalizada para guardar la salida de detecciones (por defecto: "$PSScriptRoot\detections.csv").
-drivetarget : Define la variable para una unidad de destino montada (ej. .\trawler.ps1 -targetdrive "D:") (por defecto: sistema local).
-daysago : Define cuántos 'días atrás' considerar para las detecciones basadas en tiempo (por defecto: 45).
-hashmode : Define qué algoritmo hash usar para las detecciones compatibles: soporta sha1, md5 o sha256 (por defecto: sha1).
-evtx : Habilita la creación de un origen de registro de eventos y la escritura de detecciones en el registro de eventos de Aplicación bajo Source=trawler con EID=9001 (por defecto desactivado).
PersistenceSniper es una herramienta increíble: la he usado mucho en el pasado, pero hay algunos puntos clave que diferencian estas utilidades:
En general, estas herramientas son extremadamente similares pero abordan el problema desde ángulos ligeramente diferentes: PersistenceSniper devuelve toda la información al analista para su revisión, mientras que Trawler intenta limitar lo que se devuelve solo a resultados que probablemente sean mecanismos de persistencia de adversarios potenciales. Como tal, existe la posibilidad de falsos negativos con Trawler si un adversario imita completamente un elemento de la lista de permitidos.
Como ejemplo: PersistenceSniper devolverá todos los servicios de Windows 'no seguros', mientras que Trawler solo devolverá aquellos que coincidan con una regla de detección específica, etc.
Trawler admite cargar una lista de permitidos a partir de una 'instantánea' (snapshot). Para ello se requieren dos pasos.
Eso es todo: todas las detecciones relevantes se basarán en el archivo de instantánea como lista de permitidos para reducir el ruido e identificar cualquier cambio potencial en la imagen base que pueda haber ocurrido.
(La lista de permitidos está implementada para la mayoría de las comprobaciones, pero no para todas; todavía se está implementando activamente)
A menudo, durante una investigación, los analistas pueden terminar montando una nueva unidad que representa un dispositivo Windows con imagen. Trawler ahora admite parcialmente el escaneo de estas unidades montadas mediante el parámetro '-drivetarget'.
En tiempo de ejecución, Trawler redirigirá las variables temporales a nivel de script para usarlas en la comprobación de artefactos basados en archivos y también intentará cargar las colmenas de registro relevantes (HKLM\SOFTWARE, HKLM\SYSTEM, NTUSER.DAT, USRCLASS.DAT) debajo de HKLM/HKU con el prefijo 'ANALYSIS_'. Trawler también intentará descargar estas colmenas cargadas temporalmente al finalizar el script.