Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
chainsaw — Busca y rastrea rápidamente artefactos forenses de Windows | Kitploit
Herramientas/GitHubGitHub/withsecurelabs/chainsaw
Herramientas DefensivasAnálisis ForenseForensia DigitalDetección de IntrusionesRespuesta a IncidentesAnálisis de Registros
GitHubwithsecurelabs/chainsaw

chainsaw

Busca y rastrea rápidamente artefactos forenses de Windows

Ver Repositorio
3.6k301hace 16 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Busca y caza rápidamente en artefactos forenses de Windows


Chainsaw ofrece una potente capacidad de «primera respuesta» para identificar rápidamente amenazas dentro de artefactos forenses de Windows, como los registros de eventos y el archivo MFT. Chainsaw proporciona un método genérico y rápido para buscar palabras clave en los registros de eventos, e identificar amenazas mediante el soporte integrado para reglas de detección Sigma y reglas de detección personalizadas de Chainsaw.

Features

  • 🎯 Caza amenazas usando reglas de detección Sigma y reglas de detección personalizadas de Chainsaw
  • 🔍 Busca y extrae artefactos forenses mediante coincidencia de cadenas y patrones regex
  • 📅 Crea líneas temporales de ejecución analizando artefactos Shimcache y enriqueciéndolos con datos de Amcache
  • 💡 Analiza la base de datos SRUM y proporciona información sobre ella
  • ⬇️ Vuelca el contenido sin procesar de los artefactos forenses (MFT, colmenas de registro, bases de datos ESE)
  • ⚡ Extremadamente rápido, escrito en rust, envolviendo la librería EVTX parser de @OBenamram
  • 🪶 Formatos de ejecución y salida limpios y ligeros, sin hinchazón innecesaria
  • 🔥 Etiquetado de documentos (coincidencia de lógica de detección) proporcionado por la librería TAU Engine
  • 📑 Muestra los resultados en varios formatos, como tabla ASCII, CSV y JSON
  • 💻 Puede ejecutarse en MacOS, Linux y Windows

Tabla de contenidos

  • Features
  • ¿Por qué Chainsaw?
  • Lógica de caza para registros de eventos de Windows
  • Guía de inicio rápido
    • Descarga y ejecución
    • Instalar/Compilar con Nix
    • Avisos de EDR y AV
    • Qué cambió en Chainsaw v2
  • Ejemplos
    • Búsqueda
    • Caza
    • Análisis
      • Shimcache
      • SRUM (Monitor de uso de recursos del sistema)
      • Gaps (detección de vacíos en registros de eventos)
    • Volcado
  • Agradecimientos

Puedes encontrar información ampliada en la Wiki de esta herramienta: https://github.com/WithSecureLabs/chainsaw/wiki

¿Por qué Chainsaw?

En WithSecure Countercept, ingerimos una amplia variedad de fuentes de telemetría de los endpoints a través de nuestro agente EDR para ofrecer nuestro servicio de detección y respuesta gestionadas. Sin embargo, hay circunstancias en las que necesitamos analizar rápidamente artefactos forenses que no han sido capturados por nuestro EDR; un ejemplo común son las investigaciones de respuesta a incidentes en una infraestructura donde nuestro EDR no estaba instalado en el momento del compromiso. Chainsaw se creó para proporcionar a nuestros cazadores de amenazas y consultores de respuesta a incidentes una herramienta que permita realizar un triaje rápido de artefactos forenses en estas circunstancias.

Registros de eventos de Windows

Los registros de eventos de Windows proporcionan una rica fuente de información forense para la caza de amenazas y las investigaciones de respuesta a incidentes. Desafortunadamente, procesar y buscar en los registros de eventos puede ser un proceso lento y que consume tiempo, y en la mayoría de los casos requiere la sobrecarga de infraestructura circundante, como una pila ELK o una instancia de Splunk, para cazar eficientemente a través de los datos de registro y aplicar lógica de detección. Esta sobrecarga a menudo significa que los equipos azules no pueden realizar un triaje rápido de los registros de eventos de Windows para proporcionar la dirección y las conclusiones necesarias para avanzar en sus investigaciones. Chainsaw resuelve este problema, ya que permite buscar y cazar rápidamente a través de los registros de eventos de Windows.

Al momento de escribir esto, existen muy pocas herramientas independientes y de código abierto que proporcionen un método simple y rápido para triar registros de eventos de Windows, identificar elementos interesantes dentro de los registros y aplicar un formato de reglas de lógica de detección (como Sigma) para detectar signos de actividad maliciosa. En nuestras pruebas, las herramientas que existían tenían dificultades para aplicar eficientemente la lógica de detección a grandes volúmenes de registros de eventos, lo que las hacía inadecuadas para escenarios donde se requiere un triaje rápido.

Lógica de caza para registros de eventos de Windows

Coincidencia de reglas Sigma

Usando los parámetros --sigma y --mapping puedes especificar un directorio que contenga un subconjunto de reglas de detección SIGMA (o simplemente todo el repositorio SIGMA de git) y chainsaw cargará, convertirá y ejecutará automáticamente estas reglas contra los registros de eventos proporcionados. El archivo de mapeo le indica a chainsaw qué campos de los registros de eventos utilizar para la coincidencia de reglas. Por defecto, Chainsaw admite una amplia gama de tipos de registros de eventos, incluyendo, entre otros:

Consulta el archivo de mapeo para ver la lista completa de campos utilizados para la detección de reglas, y no dudes en ampliarlo según tus necesidades.

Reglas de detección de Chainsaw

Además de admitir reglas Sigma, Chainsaw también admite un formato de reglas personalizado. En el repositorio encontrarás un directorio rules que contiene varias reglas de Chainsaw que permiten a los usuarios:

  1. Extraer y analizar alertas de antivirus de Windows Defender, F-Secure, Sophos y Kaspersky
  2. Detectar el borrado de registros de eventos clave o la detención del servicio de registro de eventos
  3. Usuarios creados o agregados a grupos de usuarios sensibles
  4. Eventos de inicios de sesión remotos (Servicio, RDP, Red, etc.). Esto ayuda a los cazadores a identificar fuentes de movimiento lateral
  5. Fuerza bruta sobre cuentas de usuario locales

Guía de inicio rápido

Descarga y ejecución

Con el lanzamiento de Chainsaw v2, decidimos dejar de incluir los repositorios Sigma Rules y EVTX-Attack-Samples como submódulos de Chainsaw. Recomendamos clonar estos repositorios por separado para asegurarte de tener las últimas versiones.

Si aún necesitas un paquete completo que contenga el binario de Chainsaw, las reglas Sigma y registros de eventos de ejemplo, puedes descargarlo desde la sección de lanzamientos de este repositorio de GitHub. En esta sección de lanzamientos también encontrarás versiones precompiladas solo con el binario de Chainsaw para varias plataformas y arquitecturas.

Si quieres compilar Chainsaw tú mismo, puedes clonar el repositorio de Chainsaw:

git clone https://github.com/WithSecureLabs/chainsaw.git

y compilar el código tú mismo ejecutando: cargo build --release. Una vez que la compilación haya terminado, encontrarás una copia del binario compilado en la carpeta target/release.

Asegúrate de compilar con el indicador --release, ya que esto garantizará un tiempo de ejecución significativamente más rápido.

Si quieres ver rápidamente cómo se ve Chainsaw cuando se ejecuta, puedes clonar los repositorios Sigma Rules y EVTX-Attack-Samples:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git

root@kitploit:~
and then run Chainsaw with the parameters below:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml

Instalar/compilar con Nix```

├───devShells │ └───x86_64-linux │ └───default: development environment 'nix-shell' ├───formatter │ └───x86_64-linux: package 'alejandra-3.1.0' └───packages └───x86_64-linux ├───chainsaw: package 'chainsaw-2.10.1' └───default: package 'chainsaw-2.10.1'

root@kitploit:~
Chainsaw, como paquete, está disponible a través de [nixpkgs](https://search.nixos.org/packages?query=chainsaw).
Si usas NixOS, solo añade `chainsaw` a tu archivo de configuración del sistema.

Sin embargo, si no usas NixOS, aún puedes instalar Chainsaw mediante Nix. La forma recomendada es a través de `nix-shell`, que modificará temporalmente tu variable de entorno $PATH.
Para ello, ejecuta lo siguiente:```
nix-shell -p chainsaw

También puedes aprovechar el hecho de que este repositorio es un flake y ejecutar lo siguiente:``` nix profile install github:WithSecureLabs/chainsaw

root@kitploit:~
Sin embargo, si quieres compilar chainsaw tú mismo, usando Nix, puedes volver a utilizar `flake.nix`, que se incluye con este repositorio. 
Para compilar el binario, por favor, ejecuta lo siguiente, en el directorio raíz del repositorio clonado```
nix build .#

Esto creará el directorio ./result, con el binario de chainsaw ubicado en ./result/bin/chainsaw.

Advertencias de EDR y AV

Cuando descargues y ejecutes chainsaw, es posible que tu motor EDR / Antivirus local detecte Chainsaw como malicioso. Puedes ver ejemplos de esto en los siguientes problemas de GitHub: Ejemplo1, Ejemplo2.

Estas advertencias suelen deberse a los registros de eventos de ejemplo y/o a las reglas Sigma que contienen referencias a cadenas maliciosas (p. ej., "mimikatz"). También hemos visto casos en los que el binario de Chainsaw ha sido detectado por un pequeño subconjunto de motores antivirus, probablemente debido a algún tipo de detección heurística.

¿Qué cambió en Chainsaw v2?

En julio de 2022 lanzamos la versión 2 de Chainsaw, que supone una revisión importante de cómo opera Chainsaw. Chainsaw v2 contiene varias mejoras significativas, incluida la siguiente lista de aspectos destacados:

  • Un enfoque mejorado para el mapeo de reglas Sigma, que resulta en un aumento significativo del número de reglas Chainsaw admitidas y de tipos de eventos de Event Log.
  • Salida CLI mejorada que muestra una instantánea de todos los Event Data de los registros de eventos que contienen detecciones.
  • Compatibilidad para cargar y analizar Event Logs tanto en formato JSON como XML.
  • Argumentos de línea de comandos más limpios y sencillos para las funciones Hunt y Search.
  • Información de salida opcional adicional, como Rule Author, Rule Status, Rule Level, etc.
  • La capacidad de filtrar las reglas cargadas por estado, tipo y nivel de gravedad.
  • Las reglas de detección integradas de Chainsaw se han separado en archivos de reglas Chainsaw dedicados.
  • Una limpieza y reescritura del código de Chainsaw para mejorar la legibilidad y reducir la carga de las contribuciones de la comunidad.

Si aún deseas usar la versión 1 de Chainsaw, puedes encontrar binarios compilados en la sección de lanzamientos, o puedes acceder al código fuente en la rama v1.x.x. Ten en cuenta que Chainsaw v1 ya no recibe mantenimiento, y todos los usuarios deberían migrar a Chainsaw v2.

Un enorme agradecimiento a @AlexKornitzer, que consiguió convertir la base de código del "Christmas Project" de Chainsaw v1 en un producto pulido en v2.

Ejemplos

Búsqueda

root@kitploit:~
  USAGE:
      chainsaw search [FLAGS] [OPTIONS] <pattern> [--] [path]...

  FLAGS:
      -h, --help            Prints help information
      -i, --ignore-case     Ignore the case when searching patterns
          --json            Print the output in json format
          --load-unknown    Allow chainsaw to try and load files it cannot identify
          --local           Output the timestamp using the local machine's timestamp
      -q                    Suppress informational output
          --skip-errors     Continue to search when an error is encountered
      -V, --version         Prints version information

  OPTIONS:
          --extension <extension>...    Only search through files with the provided extension
          --from <from>                 The timestamp to search from. Drops any documents older than the value provided
      -o, --output <output>             The path to output results to
      -e, --regex <pattern>...          A string or regular expression pattern to search for
      -t, --tau <tau>...                Tau expressions to search with. e.g. 'Event.System.EventID: =4104'
          --timestamp <timestamp>       The field that contains the timestamp
          --timezone <timezone>         Output the timestamp using the timezone provided
          --to <to>                     The timestamp to search up to. Drops any documents newer than the value provided

  ARGS:
      <pattern>    A string or regular expression pattern to search for. Not used when -e or -t is specified
      <path>...    The paths containing event logs to load and hunt through

Ejemplos de comandos

Busca en todos los archivos .evtx la cadena "mimikatz" sin distinguir mayúsculas y minúsculas

root@kitploit:~
./chainsaw search mimikatz -i evtx_attack_samples/

*Busca en todos los archivos .evtx eventos de bloque de script de PowerShell (Event ID 4014)

root@kitploit:~
./chainsaw search -t 'Event.System.EventID: =4104' evtx_attack_samples/

Busca en un archivo evtx específico eventos de inicio de sesión, con un patrón regex coincidente, y genera la salida en formato JSON

root@kitploit:~
./chainsaw search -e "DC[0-9].insecurebank.local" evtx_attack_samples --json

Caza

root@kitploit:~
  USAGE:
      chainsaw hunt [FLAGS] [OPTIONS] [--] [path]...

  FLAGS:
          --csv             Print the output in csv format
          --full            Print the full values for the tabular output
      -h, --help            Prints help information
          --json            Print the output in json format
          --load-unknown    Allow chainsaw to try and load files it cannot identify
          --local           Output the timestamp using the local machine's timestamp
          --log             Print the output in log like format
          --metadata        Display additional metadata in the tablar output
      -q                    Suppress informational output
          --skip-errors     Continue to hunt when an error is encountered
      -V, --version         Prints version information

  OPTIONS:
          --column-width <column-width>    Set the column width for the tabular output
          --extension <extension>...       Only hunt through files with the provided extension
          --from <from>                    The timestamp to hunt from. Drops any documents older than the value provided
          --kind <kind>...                 Restrict loaded rules to specified kinds
          --level <level>...               Restrict loaded rules to specified levels
      -m, --mapping <mapping>...           A mapping file to tell Chainsaw how to use third-party rules
      -o, --output <output>                A path to output results to
      -r, --rule <rule>...                 A path containing additional rules to hunt with
      -s, --sigma <sigma>...               A path containing Sigma rules to hunt with
          --status <status>...             Restrict loaded rules to specified statuses
          --timezone <timezone>            Output the timestamp using the timezone provided
          --to <to>                        The timestamp to hunt up to. Drops any documents newer than the value provided

  ARGS:
      <rules>      The path to a collection of rules to use for hunting
      <path>...    The paths containing event logs to load and hunt through

Ejemplos de comandos

Explora todos los archivos evtx utilizando reglas Sigma para la lógica de detección

root@kitploit:~
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml

Explora todos los archivos evtx utilizando reglas Sigma y reglas Chainsaw para la lógica de detección y genera la salida en formato CSV en la carpeta de resultados

root@kitploit:~
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml -r rules/ --csv --output results

Explora todos los archivos evtx utilizando reglas Sigma para la lógica de detección, buscando solo entre marcas de tiempo específicas, y genera los resultados en formato JSON

root@kitploit:~
 ./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml --from "2019-03-17T19:09:39" --to "2019-03-17T19:09:50" --json

Salida

root@kitploit:~
$ ./chainsaw hunt -r rules/ evtx_attack_samples -s sigma/rules --mapping mappings/sigma-event-logs-all.yml --level critical

     ██████╗██╗  ██╗ █████╗ ██╗███╗   ██╗███████╗ █████╗ ██╗    ██╗
    ██╔════╝██║  ██║██╔══██╗██║████╗  ██║██╔════╝██╔══██╗██║    ██║
    ██║     ███████║███████║██║██╔██╗ ██║███████╗███████║██║ █╗ ██║
    ██║     ██╔══██║██╔══██║██║██║╚██╗██║╚════██║██╔══██║██║███╗██║
    ╚██████╗██║  ██║██║  ██║██║██║ ╚████║███████║██║  ██║╚███╔███╔╝
     ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝ ╚══╝╚══╝
        By WithSecure Countercept (@FranticTyping, @AlexKornitzer)

    [+] Loading detection rules from: ../../rules/, /tmp/sigma/rules
    [+] Loaded 129 detection rules (198 not loaded)
    [+] Loading event logs from: ../../evtx_attack_samples (extensions: .evtx)
    [+] Loaded 268 EVTX files (37.5 MB)
    [+] Hunting: [========================================] 268/268

    [+] Group: Antivirus
    ┌─────────────────────┬────────────────────┬──────────┬───────────┬─────────────┬────────────────────────────────┬──────────────────────────────────┬────────────────────┐
    │      timestamp      │     detections     │ Event ID │ Record ID │  Computer   │          Threat Name           │           Threat Path            │        User        │
    ├─────────────────────┼────────────────────┼──────────┼───────────┼─────────────┼────────────────────────────────┼──────────────────────────────────┼────────────────────┤
    │ 2019-07-18 20:40:00 │ ‣ Windows Defender │ 1116     │ 37        │ MSEDGEWIN10 │ Trojan:PowerShell/Powersploit. │ file:_C:\AtomicRedTeam\atomic-   │ MSEDGEWIN10\IEUser │
    │                     │                    │          │           │             │ M                              │ red-team-master\atomics\T1056\   │                    │
    │                     │                    │          │           │             │                                │ Get-Keystrokes.ps1               │                    │
    ├─────────────────────┼────────────────────┼──────────┼───────────┼─────────────┼────────────────────────────────┼──────────────────────────────────┼────────────────────┤
    │ 2019-07-18 20:53:31 │ ‣ Windows Defender │ 1117     │ 106       │ MSEDGEWIN10 │ Trojan:XML/Exeselrun.gen!A     │ file:_C:\AtomicRedTeam\atomic-   │ MSEDGEWIN10\IEUser │
    │                     │                    │          │           │             │                                │ red-team-master\atomics\T1086\   │                    │
    │                     │                    │          │           │             │                                │ payloads\test.xsl                │                    │
    └─────────────────────┴────────────────────┴──────────┴───────────┴─────────────┴────────────────────────────────┴──────────────────────────────────┴────────────────────┘

    [+] Group: Log Tampering
    ┌─────────────────────┬───────────────────────────────┬──────────┬───────────┬────────────────────────────────┬───────────────┐
    │      timestamp      │          detections           │ Event ID │ Record ID │            Computer            │     User      │
    ├─────────────────────┼───────────────────────────────┼──────────┼───────────┼────────────────────────────────┼───────────────┤
    │ 2019-01-20 07:00:50 │ ‣ Security Audit Logs Cleared │ 1102     │ 32853     │ WIN-77LTAPHIQ1R.example.corp   │ Administrator │
    └─────────────────────┴───────────────────────────────┴──────────┴───────────┴────────────────────────────────┴───────────────┘[+] Group: Sigma
    ┌─────────────────────┬────────────────────────────────┬───────┬────────────────────────────────┬──────────┬───────────┬──────────────────────────┬──────────────────────────────────┐
    │      timestamp      │           detections           │ count │     Event.System.Provider      │ Event ID │ Record ID │         Computer         │            Event Data            │
    ├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
    │ 2019-04-29 20:59:14 │ ‣ Malicious Named Pipe         │ 1     │ Microsoft-Windows-Sysmon       │ 18       │ 8046      │ IEWIN7                   │ ---                              │
    │                     │                                │       │                                │          │           │                          │ Image: System                    │
    │                     │                                │       │                                │          │           │                          │ PipeName: "\\46a676ab7f179e511   │
    │                     │                                │       │                                │          │           │                          │ e30dd2dc41bd388"                 │
    │                     │                                │       │                                │          │           │                          │ ProcessGuid: 365ABB72-D9C4-5CC   │
    │                     │                                │       │                                │          │           │                          │ 7-0000-0010EA030000              │
    │                     │                                │       │                                │          │           │                          │ ProcessId: 4                     │
    │                     │                                │       │                                │          │           │                          │ RuleName: ""                     │
    │                     │                                │       │                                │          │           │                          │ UtcTime: "2019-04-29 20:59:14.   │
    │                     │                                │       │                                │          │           │                          │ 430"                             │
    ├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
    │ 2019-04-30 20:26:51 │ ‣ CobaltStrike Service         │ 1     │ Microsoft-Windows-Sysmon       │ 13       │ 9806      │ IEWIN7                   │ ---                              │
    │                     │ Installations in Registry      │       │                                │          │           │                          │ Details: "%%COMSPEC%% /b /c st   │
    │                     │                                │       │                                │          │           │                          │ art /b /min powershell.exe -no   │
    │                     │                                │       │                                │          │           │                          │ p -w hidden -noni -c \"if([Int   │
    │                     │                                │       │                                │          │           │                          │ Ptr]::Size -eq 4){$b='powershe   │
    │                     │                                │       │                                │          │           │                          │ ll.exe'}else{$b=$env:windir+'\   │
    │                     │                                │       │                                │          │           │                          │ \syswow64\\WindowsPowerShell\\   │
    │                     │                                │       │                                │          │           │                          │ v1.0\\powershell.exe'};$s=New-   │
    │                     │                                │       │                                │          │           │                          │ Object System.Diagnostics.Proc   │
    │                     │                                │       │                                │          │           │                          │ essStartInfo;$s.FileName=$b;$s   │
    │                     │                                │       │                                │          │           │                          │ .Arguments='-noni -nop -w hidd   │
    │                     │                                │       │                                │          │           │                          │ en -c &([scriptblock]::create(   │
    │                     │                                │       │                                │          │           │                          │ (New-Object IO.StreamReader(Ne   │
    │                     │                                │       │                                │          │           │                          │ w-Object IO.Compression.GzipSt   │
    │                     │                                │       │                                │          │           │                          │ ream((New-Object IO.MemoryStre   │
    │                     │                                │       │                                │          │           │                          │ am(,[Convert]::FromBase64Strin   │
    │                     │                                │       │                                │          │           │                          │ g(''H4sIAIuvyFwCA7VW+2/aSBD+OZ   │
    │                     │                                │       │                                │          │           │                          │ H6P1...                          │
    │                     │                                │       │                                │          │           │                          │ (use --full to show all content) │
    │                     │                                │       │                                │          │           │                          │ EventType: SetValue              │
    │                     │                                │       │                                │          │           │                          │ Image: "C:\\Windows\\system32\   │
    │                     │                                │       │                                │          │           │                          │ \services.exe"                   │
    │                     │                                │       │                                │          │           │                          │ ProcessGuid: 365ABB72-2586-5CC   │
    │                     │                                │       │                                │          │           │                          │ 9-0000-0010DC530000              │
    │                     │                                │       │                                │          │           │                          │ ProcessId: 460                   │
    │                     │                                │       │                                │          │           │                          │ RuleName: ""                     │
    │                     │                                │       │                                │          │           │                          │ TargetObject: "HKLM\\System\\C   │
    │                     │                                │       │                                │          │           │                          │ urrentControlSet\\services\\he   │
    │                     │                                │       │                                │          │           │                          │ llo\\ImagePath"                  │
    │                     │                                │       │                                │          │           │                          │ UtcTime: "2019-04-30 20:26:51.   │
    │                     │                                │       │                                │          │           │                          │ 934"                             │
    ├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
    │ 2019-05-12 12:52:43 │ ‣ Meterpreter or Cobalt        │ 1     │ Service Control Manager        │ 7045     │ 10446     │ IEWIN7                   │ ---                              │
    │                     │ Strike Getsystem Service       │       │                                │          │           │                          │ AccountName: LocalSystem         │
    │                     │ Installation                   │       │                                │          │           │                          │ ImagePath: "%COMSPEC% /c ping    │
    │                     │                                │       │                                │          │           │                          │ -n 1 127.0.0.1 >nul && echo 'W   │
    │                     │                                │       │                                │          │           │                          │ inPwnage' > \\\\.\\pipe\\WinPw   │
    │                     │                                │       │                                │          │           │                          │ nagePipe"                        │
    │                     │                                │       │                                │          │           │                          │ ServiceName: WinPwnage           │
    │                     │                                │       │                                │          │           │                          │ ServiceType: user mode service   │
    │                     │                                │       │                                │          │           │                          │ StartType: demand start          │
    ├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
    │ 2019-06-21 07:35:37 │ ‣ Dumpert Process Dumper       │ 1     │ Microsoft-Windows-Sysmon       │ 11       │ 238375    │ alice.insecurebank.local │ ---                              │
    │                     │                                │       │                                │          │           │                          │ CreationUtcTime: "2019-06-21 0   │
    │                     │                                │       │                                │          │           │                          │ 6:53:03.227"                     │
    │                     │                                │       │                                │          │           │                          │ Image: "C:\\Users\\administrat   │
    │                     │                                │       │                                │          │           │                          │ or\\Desktop\\x64\\Outflank-Dum   │
    │                     │                                │       │                                │          │           │                          │ pert.exe"                        │
    │                     │                                │       │                                │          │           │                          │ ProcessGuid: ECAD0485-88C9-5D0   │
    │                     │                                │       │                                │          │           │                          │ C-0000-0010348C1D00              │
    │                     │                                │       │                                │          │           │                          │ ProcessId: 3572                  │
    │                     │                                │       │                                │          │           │                          │ RuleName: ""                     │
    │                     │                                │       │                                │          │           │                          │ TargetFilename: "C:\\Windows\\   │
    │                     │                                │       │                                │          │           │                          │ Temp\\dumpert.dmp"               │
    │                     │                                │       │                                │          │           │                          │ UtcTime: "2019-06-21 07:35:37.   │
    │                     │                                │       │                                │          │           │                          │ 324"                             │
    └─────────────────────┴────────────────────────────────┴───────┴────────────────────────────────┴──────────┴───────────┴──────────────────────────┴──────────────────────────────────┘

Análisis

Shimcache

root@kitploit:~
COMMAND:
    analyse shimcache                 Create an execution timeline from the shimcache with optional amcache enrichments

USAGE:
    chainsaw analyse shimcache [OPTIONS] <SHIMCACHE>

ARGUMENTS:
    <SHIMCACHE>                       The path to the shimcache artefact (SYSTEM registry file)

OPTIONS:
    -e, --regex <pattern>             A string or regular expression for detecting shimcache entries whose timestamp matches their insertion time
    -r, --regexfile <REGEX_FILE>      The path to a newline delimited file containing regex patterns for detecting shimcache entries whose timestamp matches their insertion time
    -o, --output <OUTPUT>             The path to output the result csv file
    -a, --amcache <AMCACHE>           The path to the amcache artefact (Amcache.hve) for timeline enrichment
    -p, --tspair                      Enable near timestamp pair detection between shimcache and amcache for finding additional insertion timestamps for shimcache entries
    -h, --help                        Print help
  • Un archivo de patrones de ejemplo para el parámetro --regexfile se incluye en analysis/shimcache_patterns.txt.
  • Los patrones regex se comparan contra las rutas de las entradas de shimcache convertidas a minúsculas.
Ejemplos de comandos

Analiza un artefacto shimcache con los patrones regex proporcionados y usa el enriquecimiento de amcache con la detección de pares de marcas de tiempo cercanas habilitada. Escribe el resultado en un archivo csv.

root@kitploit:~
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt --amcache ./Amcache.hve --tspair --output ./output.csv

Analiza un artefacto shimcache con los patrones regex proporcionados (sin enriquecimiento de amcache). Escribe el resultado en la terminal.

root@kitploit:~
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt

Gaps (detección de huecos en el registro de eventos)

Detecta dos indicadores de manipulación selectiva del registro de eventos dentro de uno o más archivos .evtx:

  • Huecos de RecordID: los valores de EventRecordID por canal normalmente aumentan de forma monótona y sin huecos. Un hueco dentro de un único archivo evtx (es decir, que no sea un límite de rotación de registros) es inusual y es la huella que dejan las herramientas que eliminan quirúrgicamente registros individuales (p. ej., técnicas de estilo Eventlogedit) sin activar el ruidoso evento de «registro borrado» (EID 1102).

  • Huecos de tiempo: ventanas de silencio inusualmente largas entre eventos consecutivos en un canal normalmente activo pueden indicar que se eliminaron registros dentro de esa ventana. El umbral es configurable; el establecimiento de una línea base por host queda a criterio del analista.

    COMMAND: analyse gaps Detect chronological or RecordID gaps in evtx files (possible selective record deletion)

    USAGE: chainsaw analyse gaps [OPTIONS] [PATH]...

    ARGUMENTS: [PATH]... The path(s) to evtx files or directories containing them

    OPTIONS: --min-time-gap-minutes Minimum time gap (in minutes) between consecutive events to flag as suspicious [default: 30] --no-record-id-gaps Skip RecordID gap detection (only flag time gaps) --no-time-gaps Skip time gap detection (only flag RecordID gaps) -j, --json Print the output in json format -o, --output Save the output to a file -q Suppress informational output --skip-errors Continue when an error is encountered -h, --help Print help

Ejemplos de comandos

Escanea un directorio de archivos evtx para detectar tanto huecos de RecordID como de tiempo con el umbral predeterminado de 30 minutos:

root@kitploit:~
./chainsaw analyse gaps ./Logs/

Busca únicamente registros eliminados de forma selectiva (huecos de RecordID) y emite JSON legible por máquina:

root@kitploit:~
./chainsaw analyse gaps ./Logs/ --no-time-gaps --json -o ./gaps.json

SRUM (Monitor de uso de recursos del sistema)

El analizador de la base de datos SRUM implementado en Chainsaw se diferencia de otros analizadores porque no se basa en valores codificados de forma fija sobre las tablas. La información se extrae directamente del hive SOFTWARE, que es un argumento obligatorio. El objetivo es evitar errores relacionados con tablas desconocidas.

root@kitploit:~
COMMAND:
    analyse srum                             Analyse the SRUM database

USAGE:
    chainsaw analyse srum [OPTIONS] --software <SOFTWARE_HIVE_PATH> <SRUM_PATH>

ARGUMENTS:
    <SRUM_PATH>                              The path to the SRUM database

OPTIONS:
    -s, --software <SOFTWARE_HIVE_PATH>      The path to the SOFTWARE hive
        --stats-only                         Only output details about the SRUM database
    -q                                       Suppress informational output
    -o, --output <OUTPUT>                    Save the output to a file
    -h, --help                               Print help
Ejemplo de comando

Analiza la base de datos SRUM (el hive SOFTWARE es obligatorio)

root@kitploit:~
./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json
Salida
root@kitploit:~
$ ./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat -o ./output.json

     ██████╗██╗  ██╗ █████╗ ██╗███╗   ██╗███████╗ █████╗ ██╗    ██╗
    ██╔════╝██║  ██║██╔══██╗██║████╗  ██║██╔════╝██╔══██╗██║    ██║
    ██║     ███████║███████║██║██╔██╗ ██║███████╗███████║██║ █╗ ██║
    ██║     ██╔══██║██╔══██║██║██║╚██╗██║╚════██║██╔══██║██║███╗██║
    ╚██████╗██║  ██║██║  ██║██║██║ ╚████║███████║██║  ██║╚███╔███╔╝
     ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝ ╚══╝╚══╝
        By WithSecure Countercept (@FranticTyping, @AlexKornitzer)[+] ESE database file loaded from "/home/user/Documents/SRUDB.dat"
    [+] Parsing the ESE database...
    [+] SOFTWARE hive loaded from "/home/user/Documents/SOFTWARE"
    [+] Parsing the SOFTWARE registry hive...
    [+] Analysing the SRUM database...
    [+] Details about the tables related to the SRUM extensions:
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | Table GUID                               | Table Name                                 | DLL Path                             | Timeframe of the data   | Expected Retention Time |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {5C8CF1C7-7257-4F13-B223-970EF5939312}   | App Timeline Provider                      | %SystemRoot%\System32\eeprov.dll     | 2022-03-10 16:34:59 UTC | 7 days                  |
    |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {B6D82AF1-F780-4E17-8077-6CB9AD8A6FC4}   | Tagged Energy Provider                     | %SystemRoot%\System32\eeprov.dll     | No records              | 3 days                  |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {D10CA2FE-6FCF-4F6D-848E-B2E99266FA86}   | WPN SRUM Provider                          | %SystemRoot%\System32\wpnsruprov.dll | 2022-03-10 20:09:00 UTC | 60 days                 |
    |                                          |                                            |                                      | 2022-03-10 21:09:00 UTC |                         |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {D10CA2FE-6FCF-4F6D-848E-B2E99266FA89}   | Application Resource Usage Provider        | %SystemRoot%\System32\appsruprov.dll | 2022-03-10 16:34:59 UTC | 60 days                 |
    |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}   | Energy Usage Provider                      | %SystemRoot%\System32\energyprov.dll | No records              | 60 days                 |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}LT | Energy Usage Provider (Long Term)          | %SystemRoot%\System32\energyprov.dll | No records              | 1820 days               |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {973F5D5C-1D90-4944-BE8E-24B94231A174}   | Windows Network Data Usage Monitor         | %SystemRoot%\System32\nduprov.dll    | 2022-03-10 16:34:59 UTC | 60 days                 |
    |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {7ACBBAA3-D029-4BE4-9A7A-0885927F1D8F}   | vfuprov                                    | %SystemRoot%\System32\vfuprov.dll    | 2022-03-10 20:09:00 UTC | 60 days                 |
    |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {DA73FB89-2BEA-4DDC-86B8-6E048C6DA477}   | Energy Estimation Provider                 | %SystemRoot%\System32\eeprov.dll     | No records              | 7 days                  |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    | {DD6636C4-8929-4683-974E-22C046A43763}   | Windows Network Connectivity Usage Monitor | %SystemRoot%\System32\ncuprov.dll    | 2022-03-10 16:34:59 UTC | 60 days                 |
    |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
    +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
    [+] SRUM database parsed successfully
    [+] Saving output to "/home/user/Documents/output.json"
    [+] Saved output to "/home/user/Documents/output.json"
Hallazgos forenses

La información sobre los nuevos hallazgos forenses relacionados con este artefacto se puede encontrar en la wiki: https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.

Volcado

root@kitploit:~
USAGE:
    chainsaw dump [OPTIONS] <PATH>

ARGUMENTS:
    <PATH>                  The path to an artefact to dump

OPTIONS:
    -j, --json              Dump in json format
        --jsonl             Print the output in jsonl format
        --load-unknown      Allow chainsaw to try and load files it cannot identify
    -o, --output <OUTPUT>   A path to output results to
    -q                      Suppress informational output
        --skip-errors       Continue to hunt when an error is encountered
    -h, --help              Print help

Ejemplo de comando

Vuelque el hive SOFTWARE

root@kitploit:~
./chainsaw dump ./SOFTWARE.hve --json --output ./output.json

Agradecimientos

  • EVTX-ATTACK-SAMPLES por @SBousseaden
  • Sigma reglas de detección
  • EVTX parser, biblioteca por @OBenamram
  • TAU Engine, biblioteca por @AlexKornitzer
  • La funcionalidad de análisis de Shimcache fue desarrollada como parte del proyecto CC-Driver, financiado por el Programa de Investigación e Innovación Horizonte 2020 de la Unión Europea en virtud del Acuerdo de Subvención n.º 883543
  • DFIRArtifactMuseum por Andrew Rathbun (@bunsofwrath12)
Descargar herramienta
Event TypeEvent ID
Creación de procesos (Sysmon)1
Conexiones de red (Sysmon)3
Cargas de imágenes (Sysmon)7
Creación de archivos (Sysmon)11
Eventos del Registro (Sysmon)13
Bloques de script de PowerShell4104
Creación de procesos4688
Creación de tareas programadas4698
Creación de servicios7045