Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
chainsaw — Recherchez et traquez rapidement les artefacts forensiques Windows | Kitploit
Outils/GitHubGitHub/withsecureopensource/chainsaw
Outils DéfensifsAnalyse des VulnérabilitésAnalyse ForensiqueCriminalistique NumériqueRenseignement sur les MenacesRéponse aux IncidentsAnalyse de Journaux
GitHubwithsecureopensource/chainsaw

chainsaw

Recherchez et traquez rapidement les artefacts forensiques Windows

Voir le dépôt
3.7k3054il y a 18 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Rechercher et traquer rapidement les artefacts forensiques Windows


Chainsaw offre une puissante capacité de « première réponse » pour identifier rapidement les menaces au sein des artefacts forensiques Windows tels que les journaux d'événements et le fichier MFT. Chainsaw propose une méthode générique et rapide pour rechercher des mots-clés dans les journaux d'événements, et pour identifier les menaces en utilisant la prise en charge intégrée des règles de détection Sigma, ainsi que via des règles de détection Chainsaw personnalisées.

Fonctionnalités

  • 🎯 Traquer les menaces à l'aide des règles de détection Sigma et des règles de détection Chainsaw personnalisées
  • 🔍 Rechercher et extraire des artefacts forensiques par correspondance de chaînes et motifs regex
  • 📅 Créer des chronologies d'exécution en analysant les artefacts Shimcache et en les enrichissant avec les données Amcache
  • 💡 Analyser la base de données SRUM et fournir des informations à son sujet
  • ⬇️ Extraire le contenu brut des artefacts forensiques (MFT, ruches de registre, bases de données ESE)
  • ⚡ Ultra rapide, écrit en rust, encapsulant la bibliothèque EVTX parser de @OBenamram
  • 🪶 Exécution et formats de sortie propres et légers, sans surcharge inutile
  • 🔥 Étiquetage de documents (correspondance de logique de détection) fourni par la bibliothèque
TAU Engine
  • 📑 Résultats en sortie dans divers formats, tels que le format tableau ASCII, le format CSV et le format JSON
  • 💻 Peut être exécuté sur MacOS, Linux et Windows

  • Table des matières

    • Fonctionnalités
    • Pourquoi Chainsaw ?
    • Logique de traque pour les journaux d'événements Windows
    • Guide de démarrage rapide
      • Téléchargement et exécution
      • Installation/Compilation avec Nix
      • Avertissements EDR et AV
      • Ce qui a changé dans Chainsaw v2
    • Exemples
      • Recherche
      • Traque
      • Analyse
        • Shimcache
        • SRUM (System Resource Usage Monitor)
        • Gaps (détection de lacunes dans les journaux d'événements)
      • Extraction
    • Remerciements

    Des informations complémentaires sont disponibles dans le Wiki de cet outil : https://github.com/WithSecureLabs/chainsaw/wiki

    Pourquoi Chainsaw ?

    Chez WithSecure Countercept, nous ingérons un large éventail de sources de télémétrie depuis les terminaux via notre agent EDR afin de fournir notre service de détection et de réponse managées. Cependant, il existe des circonstances où nous devons analyser rapidement des artefacts forensiques qui n'ont pas été capturés par notre EDR, un exemple courant étant les investigations de réponse à incident sur un parc où notre EDR n'était pas installé au moment de la compromission. Chainsaw a été créé pour fournir à nos traqueurs de menaces et à nos consultants en réponse à incident un outil permettant d'effectuer un triage rapide des artefacts forensiques dans ces circonstances.

    Journaux d'événements Windows

    Les journaux d'événements Windows constituent une riche source d'informations forensiques pour la traque des menaces et les investigations de réponse à incident. Malheureusement, le traitement et la recherche dans les journaux d'événements peuvent être un processus lent et chronophage, et dans la plupart des cas nécessitent la surcharge d'une infrastructure environnante – telle qu'une pile ELK ou une instance Splunk – pour traquer efficacement dans les données de journal et appliquer une logique de détection. Cette surcharge signifie souvent que les équipes bleues ne sont pas en mesure de trier rapidement les journaux d'événements Windows pour fournir l'orientation et les conclusions nécessaires à l'avancement de leurs investigations. Chainsaw résout ce problème puisqu'il permet la recherche et la traque rapides dans les journaux d'événements Windows.

    Au moment de la rédaction, il existe très peu d'outils open-source autonomes qui fournissent une méthode simple et rapide de triage des journaux d'événements Windows, d'identification des éléments intéressants dans les journaux et d'application d'un format de règle de logique de détection (tel que Sigma) pour détecter les signes d'activité malveillante. Dans nos tests, les outils qui existaient avaient du mal à appliquer efficacement la logique de détection à de grands volumes de journaux d'événements, ce qui les rendait inadaptés aux scénarios où un triage rapide est requis.

    Logique de traque pour les journaux d'événements Windows

    Correspondance des règles Sigma

    À l'aide des paramètres --sigma et --mapping, vous pouvez spécifier un répertoire contenant un sous-ensemble de règles de détection SIGMA (ou simplement l'intégralité du dépôt git SIGMA) et chainsaw chargera, convertira et exécutera automatiquement ces règles contre les journaux d'événements fournis. Le fichier de mapping indique à chainsaw quels champs des journaux d'événements utiliser pour la correspondance des règles. Par défaut, Chainsaw prend en charge un large éventail de types de journaux d'événements, incluant mais sans s'y limiter :

    Type d'événementID d'événement
    Création de processus (Sysmon)1
    Connexions réseau (Sysmon)3
    Chargements d'images (Sysmon)7
    Création de fichiers (Sysmon)11
    Événements de registre (Sysmon)13
    Blocs de script Powershell4104
    Création de processus4688
    Création de tâche planifiée4698
    Création de service7045

    Consultez le fichier de mapping pour la liste complète des champs utilisés pour la détection de règles, et n'hésitez pas à l'étendre selon vos besoins.

    Règles de détection Chainsaw

    En plus de prendre en charge les règles sigma, Chainsaw prend également en charge un format de règle personnalisé. Dans le dépôt, vous trouverez un répertoire rules qui contient diverses règles Chainsaw permettant aux utilisateurs de :

    1. Extraire et analyser les alertes Windows Defender, F-Secure, Sophos et Kaspersky AV
    2. Détecter l'effacement de journaux d'événements clés, ou l'arrêt du service de journal d'événements
    3. La création d'utilisateurs ou leur ajout à des groupes d'utilisateurs sensibles
    4. Les événements de connexions distantes (Service, RDP, Réseau, etc.). Cela aide les traqueurs à identifier les sources de mouvement latéral
    5. La force brute sur les comptes d'utilisateurs locaux

    Guide de démarrage rapide

    Téléchargement et exécution

    Avec la sortie de Chainsaw v2, nous avons décidé de ne plus inclure les dépôts Sigma Rules et EVTX-Attack-Samples en tant que sous-modules de Chainsaw. Nous recommandons de cloner ces dépôts séparément pour vous assurer de disposer des dernières versions.

    Si vous avez encore besoin d'un package tout-en-un contenant le binaire Chainsaw, les règles Sigma et des journaux d'événements d'exemple, vous pouvez le télécharger depuis la section releases de ce dépôt GitHub. Dans cette section releases, vous trouverez également des versions binaires précompilées de Chainsaw pour diverses plateformes et architectures.

    Si vous souhaitez compiler Chainsaw vous-même, vous pouvez cloner le dépôt Chainsaw :

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

    et compiler le code vous-même en exécutant : cargo build --release. Une fois la compilation terminée, vous trouverez une copie du binaire compilé dans le dossier target/release.

    Assurez-vous de compiler avec le flag --release car cela garantira un temps d'exécution nettement plus rapide.

    Si vous souhaitez voir rapidement à quoi ressemble Chainsaw lorsqu'il s'exécute, vous pouvez cloner les dépôts Sigma Rules et EVTX-Attack-Samples :``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git

    root@kitploit:~
    puis exécutez Chainsaw avec les paramètres ci-dessous :```
    ./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
    

    Installer/compiler avec 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, en tant que paquet, est disponible via [nixpkgs](https://search.nixos.org/packages?query=chainsaw).
    Si vous utilisez NixOS, ajoutez simplement `chainsaw` à votre fichier de configuration système.
    
    Cependant, si vous n'utilisez pas NixOS, vous pouvez quand même installer Chainsaw via Nix. La méthode recommandée est via `nix-shell`, qui modifiera temporairement votre variable d'environnement $PATH.
    Pour ce faire, veuillez exécuter la commande suivante :```
    nix-shell -p chainsaw
    

    Vous pouvez également exploiter le fait que ce dépôt est un flake, et vous pouvez exécuter ce qui suit :``` nix profile install github:WithSecureLabs/chainsaw

    root@kitploit:~
    Cependant, si vous souhaitez compiler chainsaw vous-même, en utilisant Nix, vous pouvez une fois de plus utiliser `flake.nix`, qui est fourni avec ce dépôt.
    Pour compiler le binaire, veuillez exécuter la commande suivante, dans le répertoire racine du dépôt cloné```
    nix build .#
    

    Cela créera le répertoire ./result, avec le binaire chainsaw situé sous ./result/bin/chainsaw.

    Avertissements EDR et AV

    Lors du téléchargement et de l'exécution de chainsaw, vous pouvez constater que votre moteur EDR / AntiVirus local détecte Chainsaw comme malveillant. Vous pouvez voir des exemples de ceci dans les issues GitHub suivantes : Exemple1, Exemple2.

    Ces avertissements sont généralement dus aux journaux d'événements d'exemple et/ou aux règles Sigma qui contiennent des références à des chaînes malveillantes (par exemple « mimikatz »). Nous avons également observé des cas où le binaire Chainsaw a été détecté par un petit sous-ensemble de moteurs Anti-Virus, probablement en raison d'une forme de détection heuristique.

    Qu'est-ce qui a changé dans Chainsaw v2 ?

    En juillet 2022, nous avons publié la version 2 de Chainsaw, qui constitue une refonte majeure du fonctionnement de Chainsaw. Chainsaw v2 contient plusieurs améliorations significatives, notamment la liste de points forts suivante :

    • Une approche améliorée du mapping des règles Sigma qui entraîne une augmentation significative du nombre de règles Chainsaw prises en charge, et des types d'événements des journaux d'événements.
    • Une sortie CLI améliorée qui affiche un instantané de toutes les données d'événements pour les journaux d'événements contenant des détections.
    • Prise en charge du chargement et de l'analyse des journaux d'événements aux formats JSON et XML.
    • Des arguments de ligne de commande plus clairs et plus simples pour les fonctionnalités Hunt et Search.
    • Des informations de sortie optionnelles supplémentaires, telles que l'auteur de la règle, le statut de la règle, le niveau de la règle, etc.
    • La possibilité de filtrer les règles chargées par statut, type et niveau de gravité.
    • Les règles de détection intégrées de Chainsaw ont été séparées dans des fichiers de règles Chainsaw dédiés
    • Un nettoyage et une réécriture du code de Chainsaw pour améliorer la lisibilité et réduire la charge pour les contributions de la communauté.

    Si vous souhaitez toujours utiliser la version 1 de Chainsaw, vous pouvez trouver les binaires compilés dans la section releases, ou vous pouvez accéder au code source dans la branche v1.x.x. Veuillez noter que Chainsaw v1 n'est plus maintenu, et tous les utilisateurs devraient envisager de passer à Chainsaw v2.

    Un immense merci à @AlexKornitzer qui a réussi à transformer la base de code « Christmas Project » de Chainsaw v1 en un produit abouti dans la v2.

    Exemples

    Recherche

    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
    

    Exemples de commandes

    Rechercher dans tous les fichiers .evtx la chaîne insensible à la casse « mimikatz »

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

    *Rechercher dans tous les fichiers .evtx les événements de bloc de script powershell (Event ID 4014)

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

    Rechercher dans un journal evtx spécifique les événements de connexion, avec un motif regex correspondant, et afficher la sortie au format JSON

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

    Chasse

    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
    

    Exemples de commandes

    Chasser dans tous les fichiers evtx en utilisant les règles Sigma comme logique de détection

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

    Chasser dans tous les fichiers evtx en utilisant les règles Sigma et les règles Chainsaw comme logique de détection et afficher la sortie au format CSV dans le dossier results

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

    Chasser dans tous les fichiers evtx en utilisant les règles Sigma comme logique de détection, rechercher uniquement entre des horodatages spécifiques, et afficher les résultats au format 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
    

    Sortie

    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"                             │
        └─────────────────────┴────────────────────────────────┴───────┴────────────────────────────────┴──────────┴───────────┴──────────────────────────┴──────────────────────────────────┘
    

    Analysing

    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 exemple de fichier de motifs pour le paramètre --regexfile est inclus dans analysis/shimcache_patterns.txt.
    • Les motifs regex sont comparés aux chemins des entrées shimcache convertis en minuscules.
    Exemples de commandes

    Analyser un artefact shimcache avec les motifs regex fournis, et utiliser l'enrichissement amcache avec la détection de paires d'horodatages proches activée. Sortie vers un fichier csv.

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

    Analyser un artefact shimcache avec les motifs regex fournis (sans enrichissement amcache). Sortie vers le terminal.

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

    Gaps (détection de lacunes dans les journaux d'événements)

    Détecte deux indicateurs de falsification sélective des journaux d'événements dans un ou plusieurs fichiers .evtx :

    • Lacunes de RecordID : les valeurs EventRecordID par canal sont normalement strictement croissantes et sans trous. Un trou dans un seul fichier evtx (c'est-à-dire pas une frontière de rotation de journal) est inhabituel et constitue l'empreinte laissée par les outils qui suppriment chirurgicalement des enregistrements individuels (par exemple, les techniques de type Eventlogedit) sans déclencher l'événement bruyant « journal effacé » (EID 1102).

    • Lacunes temporelles : des fenêtres de silence anormalement longues entre des événements consécutifs sur un canal normalement actif peuvent indiquer que des enregistrements dans cette fenêtre ont été supprimés. Le seuil est configurable ; l'établissement d'une base de référence par hôte est laissé à l'analyste.

      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

    Exemples de commandes

    Analyser un répertoire de fichiers evtx à la recherche de lacunes de RecordID et de lacunes temporelles avec le seuil par défaut de 30 minutes :

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

    Rechercher uniquement les enregistrements supprimés sélectivement (trous de RecordID), et émettre du JSON lisible par machine :

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

    SRUM (System Resource Usage Monitor)

    L'analyseur de base de données SRUM implémenté dans Chainsaw diffère des autres analyseurs car il ne repose pas sur des valeurs codées en dur concernant les tables. Les informations sont extraites directement de la ruche SOFTWARE, qui est un argument obligatoire. L'objectif est d'éviter les erreurs liées aux tables inconnues.

    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
    
    Exemple de commande

    Analyser la base de données SRUM (la ruche SOFTWARE est obligatoire)

    root@kitploit:~
    ./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json
    
    Sortie
    root@kitploit:~
    $ ./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat -o ./output.json
    
         ██████╗██╗  ██╗ █████╗ ██╗███╗   ██╗███████╗ █████╗ ██╗    ██╗
        ██╔════╝██║  ██║██╔══██╗██║████╗  ██║██╔════╝██╔══██╗██║    ██║
        ██║     ███████║███████║██║██╔██╗ ██║███████╗███████║██║ █╗ ██║
        ██║     ██╔══██║██╔══██║██║██║╚██╗██║╚════██║██╔══██║██║███╗██║
        ╚██████╗██║  ██║██║  ██║██║██║ ╚████║███████║██║  ██║╚███╔███╔╝
         ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝ ╚══╝╚══╝
            By WithSecure Countercept (@FranticTyping, @AlexKornitzer)[+] Fichier de base de données ESE chargé depuis "/home/user/Documents/SRUDB.dat"
        [+] Analyse de la base de données ESE...
        [+] Ruche SOFTWARE chargée depuis "/home/user/Documents/SOFTWARE"
        [+] Analyse de la ruche de registre SOFTWARE...
        [+] Analyse de la base de données SRUM...
        [+] Détails sur les tables liées aux extensions SRUM :
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | GUID de la table                         | Nom de la table                            | Chemin de la DLL                     | Période des données     | Durée de rétention prévue |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {5C8CF1C7-7257-4F13-B223-970EF5939312}   | App Timeline Provider                      | %SystemRoot%\System32\eeprov.dll     | 2022-03-10 16:34:59 UTC | 7 jours                 |
        |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {B6D82AF1-F780-4E17-8077-6CB9AD8A6FC4}   | Tagged Energy Provider                     | %SystemRoot%\System32\eeprov.dll     | Aucun enregistrement    | 3 jours                 |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {D10CA2FE-6FCF-4F6D-848E-B2E99266FA86}   | WPN SRUM Provider                          | %SystemRoot%\System32\wpnsruprov.dll | 2022-03-10 20:09:00 UTC | 60 jours                |
        |                                          |                                            |                                      | 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 jours                |
        |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}   | Energy Usage Provider                      | %SystemRoot%\System32\energyprov.dll | Aucun enregistrement    | 60 jours                |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}LT | Energy Usage Provider (Long Term)          | %SystemRoot%\System32\energyprov.dll | Aucun enregistrement    | 1820 jours              |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {973F5D5C-1D90-4944-BE8E-24B94231A174}   | Windows Network Data Usage Monitor         | %SystemRoot%\System32\nduprov.dll    | 2022-03-10 16:34:59 UTC | 60 jours                |
        |                                          |                                            |                                      | 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 jours                |
        |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {DA73FB89-2BEA-4DDC-86B8-6E048C6DA477}   | Energy Estimation Provider                 | %SystemRoot%\System32\eeprov.dll     | Aucun enregistrement    | 7 jours                 |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        | {DD6636C4-8929-4683-974E-22C046A43763}   | Windows Network Connectivity Usage Monitor | %SystemRoot%\System32\ncuprov.dll    | 2022-03-10 16:34:59 UTC | 60 jours                |
        |                                          |                                            |                                      | 2022-03-10 21:10:00 UTC |                         |
        +------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
        [+] Base de données SRUM analysée avec succès
        [+] Enregistrement de la sortie dans "/home/user/Documents/output.json"
        [+] Sortie enregistrée dans "/home/user/Documents/output.json"
    
    Aperçus forensiques

    Des informations sur les nouveaux aperçus forensiques liés à cet artefact sont disponibles dans le wiki : https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.

    Extraction

    root@kitploit:~
    USAGE:
        chainsaw dump [OPTIONS] <PATH>
    
    ARGUMENTS:
        <PATH>                  Le chemin vers un artefact à extraire
    
    OPTIONS:
        -j, --json              Extraire au format json
            --jsonl             Afficher la sortie au format jsonl
            --load-unknown      Autoriser chainsaw à tenter de charger les fichiers qu'il ne peut pas identifier
        -o, --output <OUTPUT>   Un chemin vers lequel écrire les résultats
        -q                      Supprimer la sortie informative
            --skip-errors       Continuer la recherche lorsqu'une erreur est rencontrée
        -h, --help              Afficher l'aide
    

    Exemple de commande

    Extraire la ruche SOFTWARE

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

    Remerciements

    • EVTX-ATTACK-SAMPLES par @SBousseaden
    • Règles de détection Sigma
    • Bibliothèque EVTX parser par @OBenamram
    • Bibliothèque TAU Engine par @AlexKornitzer
    • Fonctionnalité d'analyse Shimcache développée dans le cadre du projet CC-Driver, financé par le programme de recherche et d'innovation Horizon 2020 de l'Union européenne dans le cadre de la convention de subvention n° 883543
    • DFIRArtifactMuseum par Andrew Rathbun (@bunsofwrath12)
    Télécharger l’outil