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/withsecurelabs/chainsaw
Outils DéfensifsAnalyse ForensiqueCriminalistique NumériqueDétection d'IntrusionRéponse aux IncidentsAnalyse de Journaux
GitHubwithsecurelabs/chainsaw

chainsaw

Recherchez et traquez rapidement les artefacts forensiques Windows

Voir le dépôt
3.6k301il y a 3 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

Recherche et chasse rapides à travers 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 de recherche de mots-clés dans les journaux d’événements, ainsi que l’identification des menaces grâce à la prise en charge intégrée des règles de détection Sigma et des règles de détection personnalisées Chainsaw.

Fonctionnalités

  • 🎯 Chassez les menaces à l’aide des règles de détection Sigma et des règles de détection personnalisées Chainsaw
  • 🔍 Recherchez et extrayez des artefacts forensiques par correspondance de chaînes et motifs regex
  • 📅 Créez des chronologies d’exécution en analysant les artefacts Shimcache et en les enrichissant avec les données Amcache
  • 💡 Analysez la base de données SRUM et fournissez des informations à son sujet
  • ⬇️ Extrayez le contenu brut des artefacts forensiques (MFT, ruches de registre, bases de données ESE)
  • ⚡ Extrêmement rapide, écrit en rust, encapsulant la bibliothèque EVTX parser de @OBenamram
  • 🪶 Exécution et formats de sortie propres et légers, sans enflure inutile
  • 🔥 Étiquetage de documents (correspondance de la logique de détection) fourni par la bibliothèque TAU Engine
  • 📑 Affichez les résultats dans divers formats, tels que le format de 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 chasse pour les journaux d’événements Windows
  • Guide de démarrage rapide
    • Téléchargement et exécution
    • Installer/Compiler avec Nix
    • Avertissements EDR et AV
    • Ce qui a changé dans Chainsaw v2
  • Exemples
    • Recherche
    • Chasse
    • Analyse
      • Shimcache
      • SRUM (System Resource Usage Monitor)
      • Lacunes (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 provenant des endpoints via notre agent EDR pour fournir notre service de détection et de réponse géré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 offrir à nos chasseurs 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 source riche d’informations forensiques pour la chasse aux 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 nécessitent dans la plupart des cas la mise en place d’une infrastructure environnante – comme une pile ELK ou une instance Splunk – pour chasser efficacement dans les données de journal et appliquer une logique de détection. Cette surcharge signifie souvent que les équipes bleues ne peuvent pas trier rapidement les journaux d’événements Windows pour fournir les orientations et les conclusions nécessaires à la progression de leurs investigations. Chainsaw résout ce problème en permettant la recherche et la chasse rapides dans les journaux d’événements Windows.

Au moment de la rédaction de ce document, il existe très peu d’outils open-source autonomes offrant une méthode simple et rapide pour trier les journaux d’événements Windows, identifier les éléments intéressants dans les journaux et appliquer un format de règles de logique de détection (comme Sigma) pour détecter des signes d’activité malveillante. Lors de nos tests, les outils existants peinaient à appliquer efficacement une logique de détection à de grands volumes de journaux d’événements, ce qui les rendait inadaptés aux scénarios nécessitant un triage rapide.

Logique de chasse pour les journaux d’événements Windows

Correspondance des règles Sigma

En utilisant les 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 sur 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, notamment mais sans s’y limiter :

Consultez le fichier de mapping pour obtenir la liste complète des champs utilisés pour la détection des 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ègles personnalisé. Dans le dépôt, vous trouverez un répertoire rules contenant diverses règles Chainsaw qui permettent aux utilisateurs de :

  1. Extraire et analyser les alertes des antivirus Windows Defender, F-Secure, Sophos et Kaspersky
  2. Détecter la suppression de journaux d’événements clés ou l’arrêt du service de journalisation des événements
  3. Détecter la création d’utilisateurs ou leur ajout à des groupes d’utilisateurs sensibles
  4. Événements de connexions distantes (Service, RDP, Réseau, etc.). Cela aide les chasseurs à identifier les sources de mouvement latéral
  5. Attaques par 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 comme sous-modules de Chainsaw. Nous vous recommandons de cloner ces dépôts séparément pour vous assurer de disposer des dernières versions.

Si vous avez toujours 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 des versions de ce dépôt GitHub. Dans cette section des versions, vous trouverez également des versions précompilées ne contenant que le binaire Chainsaw pour différentes 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 l’option --release, car cela garantit un temps d’exécution considérablement 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/construire 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 toujours installer Chainsaw via Nix. La méthode recommandée est d'utiliser `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 repo est un flake, et 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 à nouveau 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 antivirus

Lors du téléchargement et de l'exécution de chainsaw, il est possible que votre moteur EDR / antivirus local détecte Chainsaw comme malveillant. Vous pouvez voir des exemples de cela dans les problèmes GitHub suivants : 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 vu des cas où le binaire Chainsaw a été détecté par un petit sous-ensemble de moteurs antivirus, 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 mappage 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.
  • Sortie CLI améliorée qui affiche un aperçu de toutes les données d'événement 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.
  • Arguments de ligne de commande plus clairs et plus simples pour les fonctions Hunt et Search.
  • Informations de sortie facultatives 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 Chainsaw intégrées ont été réparties dans des fichiers de règles Chainsaw dédiés.
  • Une réécriture propre du code de Chainsaw pour améliorer la lisibilité et réduire la charge des contributions communautaires.

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

Un immense merci à @AlexKornitzer qui a réussi à convertir la base de code « Christmas Project » de Chainsaw v1 en un produit soigné dans 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

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

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

*Recherche dans tous les fichiers .evtx des événements de blocs de scripts PowerShell (ID d'événement 4014)

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

Recherche dans un journal evtx spécifique des événements de connexion, avec un motif regex correspondant, 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

Recherche dans tous les fichiers evtx en utilisant les règles Sigma pour la logique de détection

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

Recherche dans tous les fichiers evtx en utilisant les règles Sigma et les règles Chainsaw pour la logique de détection, et sortie au format CSV dans le dossier des résultats

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

Recherche dans tous les fichiers evtx en utilisant les règles Sigma pour la logique de détection, uniquement entre des horodatages spécifiques, et sortie des 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"                             │
    └─────────────────────┴────────────────────────────────┴───────┴────────────────────────────────┴──────────┴───────────┴──────────────────────────┴──────────────────────────────────┘

Analyse

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 appliqués aux chemins des entrées shimcache convertis en minuscules.
Exemples de commandes

Analyse un artefact shimcache avec les motifs regex fournis, et utilise l'enrichissement amcache avec la détection de paires de timestamps proches activée. Sortie dans un fichier csv.

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

Analyse 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 des écarts dans le journal des événements)

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

  • Écarts de RecordID : les valeurs EventRecordID par canal augmentent normalement de façon monotone, sans trous. Un trou dans un seul fichier evtx (c'est-à-dire qui n'est pas une limite de rotation des journaux) est inhabituel et constitue l'empreinte laissée par des 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).

  • Écarts temporels : des périodes de silence anormalement longues entre des événements consécutifs sur un canal normalement bavard peuvent indiquer que des enregistrements de cette période ont été supprimés. Le seuil est configurable ; l'établissement de la ligne de base 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

Analyse un répertoire de fichiers evtx à la recherche d'écarts de RecordID et d'écarts temporels avec le seuil par défaut de 30 minutes :

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

Recherche uniquement les enregistrements supprimés de manière sélective (trous de RecordID) et émet 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

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

Pour plus d’informations sur les nouvelles perspectives forensiques liées à cet artefact, consultez le wiki : https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.

Extraction

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

Exemple de commande

Extraction de 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
  • La fonctionnalité d’analyse Shimcache a été développée dans le cadre du projet CC-Driver, financé par le programme Horizon 2020 de l’Union européenne pour la recherche et l’innovation dans le cadre de la convention de subvention n° 883543
  • DFIRArtifactMuseum par Andrew Rathbun (@bunsofwrath12)
Télécharger l’outil
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âches planifiées4698
Création de services7045