
Recherchez et traquez 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 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.
Des informations complémentaires sont disponibles dans le Wiki de cet outil : https://github.com/WithSecureLabs/chainsaw/wiki
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.
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.
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.
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 :
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
puis exécutez Chainsaw avec les paramètres ci-dessous:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
├───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'
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
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.
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.
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 :
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.
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
Recherche de la chaîne insensible à la casse « mimikatz » dans tous les fichiers .evtx
./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)
./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
./chainsaw search -e "DC[0-9].insecurebank.local" evtx_attack_samples --json
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
Recherche dans tous les fichiers evtx en utilisant les règles Sigma pour la logique de détection
./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
./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
./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
$ ./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" │
└─────────────────────┴────────────────────────────────┴───────┴────────────────────────────────┴──────────┴───────────┴──────────────────────────┴──────────────────────────────────┘
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
--regexfile est inclus dans analysis/shimcache_patterns.txt.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.
./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.
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt
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
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 :
./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 :
./chainsaw analyse gaps ./Logs/ --no-time-gaps --json -o ./gaps.json
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.
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
Analyse la base de données SRUM (la ruche SOFTWARE est obligatoire)
./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json
$ ./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"
Pour plus d’informations sur les nouvelles perspectives forensiques liées à cet artefact, consultez le wiki : https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.
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
Extraction de la ruche SOFTWARE
./chainsaw dump ./SOFTWARE.hve --json --output ./output.json
| Type d’événement | ID 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 Powershell | 4104 |
| Création de processus | 4688 |
| Création de tâches planifiées | 4698 |
| Création de services | 7045 |