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 a través de artefactos forenses de Windows | Kitploit
Herramientas/GitHubGitHub/withsecureopensource/chainsaw
Herramientas DefensivasAnálisis de VulnerabilidadesAnálisis ForenseForensia DigitalInteligencia de AmenazasRespuesta a IncidentesAnálisis de Registros
GitHubwithsecureopensource/chainsaw

chainsaw

Busca y rastrea rápidamente a través de artefactos forenses de Windows

Ver Repositorio
3.7k3054hace 18 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

Búsqueda y caza rápidas a través de artefactos forenses de Windows


Chainsaw proporciona 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 ofrece un método genérico y rápido de búsqueda a través de registros de eventos por palabras clave, y mediante la identificación de amenazas utilizando soporte integrado para reglas de detección Sigma, y a través de reglas de detección personalizadas de Chainsaw.

Características

  • 🎯 Caza amenazas utilizando 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 de tiempo 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
  • ⬇️ Volca el contenido sin procesar de artefactos forenses (MFT, colmenas de registro, bases de datos ESE)
  • ⚡ Extremadamente rápido, escrito en rust, envolviendo la librería EVTX parser de @OBenamram
  • 🪶 Ejecución limpia y ligera y formatos de salida sin lastre innecesario
  • 🔥 Etiquetado de documentos (coincidencia de lógica de detección) proporcionado por la librería
TAU Engine
  • 📑 Salida de resultados en una variedad de formatos, como formato de tabla ASCII, formato CSV y formato JSON
  • 💻 Se puede ejecutar en MacOS, Linux y Windows

  • Tabla de Contenidos

    • Características
    • ¿Por qué Chainsaw?
    • Lógica de caza para registros de eventos de Windows
    • Guía de inicio rápido
      • Descarga y ejecución
      • Instalación/Compilación con Nix
      • Advertencias de EDR y AV
      • Qué cambió en Chainsaw v2
    • Ejemplos
      • Búsqueda
      • Caza
      • Análisis
        • Shimcache
        • SRUM (System Resource Usage Monitor)
        • Gaps (detección de vacíos en registros de eventos)
      • Volcado
    • Agradecimientos

    Se puede 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 gama de fuentes de telemetría desde los endpoints a través de nuestro agente EDR para proporcionar nuestro servicio gestionado de detección y respuesta. 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 siendo investigaciones de respuesta a incidentes en un entorno donde nuestro EDR no estaba instalado en el momento del compromiso. Chainsaw fue creado para proporcionar a nuestros cazadores de amenazas y consultores de respuesta a incidentes una herramienta para 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 a través de los registros de eventos puede ser un proceso lento y que consume mucho tiempo, y en la mayoría de los casos requiere la sobrecarga de infraestructura circundante – como un stack 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 el problema ya que permite la búsqueda y caza rápidas a través de los registros de eventos de Windows.

    En el momento de escribir esto, hay muy pocas herramientas de código abierto e independientes que proporcionen un método simple y rápido de triaje de registros de eventos de Windows, identificando elementos interesantes dentro de los registros y aplicando un formato de regla 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 git de SIGMA) 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 en los registros de eventos usar para la coincidencia de reglas. Por defecto, Chainsaw soporta una amplia gama de tipos de registros de eventos, incluyendo pero no limitado a:

    Tipo de eventoID de evento
    Creación de proceso (Sysmon)1
    Conexiones de red (Sysmon)3
    Cargas de imágenes (Sysmon)7
    Creación de archivos (Sysmon)11
    Eventos de registro (Sysmon)13
    Bloques de script de Powershell4104
    Creación de proceso4688
    Creación de tarea programada4698
    Creación de servicio7045

    Consulta el archivo de mapeo para la lista completa de campos que se utilizan para la detección de reglas, y siéntete libre de extenderlo según tus necesidades.

    Reglas de detección de Chainsaw

    Además de soportar reglas sigma, Chainsaw también soporta un formato de regla 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 Windows Defender, F-Secure, Sophos y Kaspersky AV
    2. Detectar registros de eventos clave siendo borrados, o el servicio de registro de eventos siendo detenido
    3. Usuarios siendo creados o añadidos 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 de cuentas de usuario locales

    Guía de inicio rápido

    Descarga y ejecución

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

    Si aún necesitas un paquete todo en uno que contenga el binario de Chainsaw, las reglas Sigma y registros de eventos de ejemplo, puedes descargarlo desde la sección de releases de este repositorio de GitHub. En esta sección de releases también encontrarás versiones precompiladas solo del 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 flag --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:~
    y luego ejecuta Chainsaw con los parámetros que se indican a continuación:```
    ./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, simplemente 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 hacerlo, ejecuta lo siguiente:```
    nix-shell -p chainsaw
    

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

    root@kitploit:~
    Sin embargo, si quieres compilar chainsaw tú mismo, usando Nix, puedes una vez más utilizar `flake.nix`, que se proporciona con este repositorio.
    Para compilar el binario, ejecuta lo siguiente, en el directorio raíz del repositorio clonado```
    nix build .#
    

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

    Advertencias de EDR y AV

    Al descargar y ejecutar chainsaw, es posible que tu motor EDR / AntiVirus local detecte Chainsaw como malicioso. Puedes ver ejemplos de esto en los siguientes issues 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 publicamos la versión 2 de Chainsaw, que supone una revisión importante de cómo funciona Chainsaw. Chainsaw v2 contiene varias mejoras significativas, incluida la siguiente lista de aspectos destacados:

    • Un enfoque mejorado para el mapeo de reglas Sigma que da como resultado un aumento significativo en el número de reglas de Chainsaw compatibles y de tipos de eventos de Event Log.
    • Salida de CLI mejorada que muestra una instantánea de todos los Event Data para los registros de eventos que contienen detecciones.
    • Compatibilidad con la carga y el análisis de 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 severidad.
    • Las reglas de detección integradas de Chainsaw se han dividido en archivos de reglas de Chainsaw dedicados
    • Una limpieza y reescritura del código de Chainsaw para mejorar la legibilidad y reducir la sobrecarga para 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 releases, 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 plantearse migrar a Chainsaw v2.

    Un enorme agradecimiento a @AlexKornitzer, quien logró convertir la base de código del "Christmas Project" de Chainsaw v1 en un producto pulido en la 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

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

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

    *Buscar 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/
    

    Buscar en un registro evtx específico eventos de inicio de sesión, con un patrón regex coincidente, y mostrar 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

    Cazar en todos los archivos evtx usando 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
    

    Cazar en todos los archivos evtx usando reglas Sigma y reglas de Chainsaw para la lógica de detección y mostrar 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
    

    Cazar en todos los archivos evtx usando reglas Sigma para la lógica de detección, buscar solo entre marcas de tiempo específicas y mostrar 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
    
    • Se incluye un archivo de patrones de ejemplo para el parámetro --regexfile en analysis/shimcache_patterns.txt.
    • Los patrones regex se comparan con las rutas de las entradas de shimcache convertidas a minúsculas.
    Ejemplos de comandos

    Analizar un artefacto shimcache con los patrones regex proporcionados, y usar el enriquecimiento de amcache con la detección de pares de marcas de tiempo cercanas habilitada. Salida a un archivo csv.

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

    Analizar un artefacto shimcache con los patrones regex proporcionados (sin enriquecimiento de amcache). Salida a la terminal.

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

    Gaps (detección de vacíos en registros de eventos)

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

    • Vacíos en RecordID: los valores de EventRecordID por canal normalmente son monótonamente crecientes 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 (por ejemplo, técnicas al estilo Eventlogedit) sin activar el ruidoso evento de "registro borrado" (EID 1102).

    • Vacíos temporales: ventanas de silencio inesperadamente largas entre eventos consecutivos en un canal normalmente activo pueden indicar que los registros dentro de esa ventana fueron eliminados. 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

    Escanear un directorio de archivos evtx en busca de vacíos en RecordID y temporales con el umbral predeterminado de 30 minutos:

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

    Buscar únicamente registros eliminados selectivamente (huecos en RecordID), y emitir JSON legible por máquina:

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

    SRUM (System Resource Usage Monitor)

    El analizador de la base de datos SRUM implementado en Chainsaw difiere de otros analizadores porque no depende de valores codificados 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

    Analizar 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)[+] Base de datos ESE cargada desde "/home/user/Documents/SRUDB.dat"
        [+] Analizando la base de datos ESE...
        [+] Colmena SOFTWARE cargada desde "/home/user/Documents/SOFTWARE"
        [+] Analizando la colmena del registro SOFTWARE...
        [+] Analizando la base de datos SRUM...
        [+] Detalles sobre las tablas relacionadas con las extensiones SRUM:
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | GUID de tabla                            | Nombre de tabla                            | Ruta DLL                             | Marco temporal de los datos | Tiempo de retención esperado |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {5C8CF1C7-7257-4F13-B223-970EF5939312}   | App Timeline Provider                      | %SystemRoot%\System32\eeprov.dll     | 2022-03-10 16:34:59 UTC | 7 días                  |
        |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {B6D82AF1-F780-4E17-8077-6CB9AD8A6FC4}   | Tagged Energy Provider                     | %SystemRoot%\System32\eeprov.dll     | Sin registros           | 3 días                  |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {D10CA2FE-6FCF-4F6D-848E-B2E99266FA86}   | WPN SRUM Provider                          | %SystemRoot%\System32\wpnsruprov.dll | 2022-03-10 20:09:00 UTC | 60 días                 |
        |                                          |                                            |                                      | 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 días                 |
        |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}   | Energy Usage Provider                      | %SystemRoot%\System32\energyprov.dll | Sin registros           | 60 días                 |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}LT | Energy Usage Provider (Long Term)          | %SystemRoot%\System32\energyprov.dll | Sin registros           | 1820 días               |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {973F5D5C-1D90-4944-BE8E-24B94231A174}   | Windows Network Data Usage Monitor         | %SystemRoot%\System32\nduprov.dll    | 2022-03-10 16:34:59 UTC | 60 días                 |
        |                                          |                                            |                                      | 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 días                 |
        |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {DA73FB89-2BEA-4DDC-86B8-6E048C6DA477}   | Energy Estimation Provider                 | %SystemRoot%\System32\eeprov.dll     | Sin registros           | 7 días                  |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {DD6636C4-8929-4683-974E-22C046A43763}   | Windows Network Connectivity Usage Monitor | %SystemRoot%\System32\ncuprov.dll    | 2022-03-10 16:34:59 UTC | 60 días                 |
        |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        [+] Base de datos SRUM analizada correctamente
        [+] Guardando salida en "/home/user/Documents/output.json"
        [+] Salida guardada en "/home/user/Documents/output.json"
    
    Perspectivas forenses

    La información sobre las nuevas perspectivas forenses relacionadas 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

    Volcar la colmena SOFTWARE

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

    Agradecimientos

    • EVTX-ATTACK-SAMPLES por @SBousseaden
    • Reglas de detección de Sigma
    • Biblioteca EVTX parser por @OBenamram
    • Biblioteca TAU Engine 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