
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 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.
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 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.
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.
À 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é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âche planifiée | 4698 |
| Création de service | 7045 |
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.
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 :
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
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 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
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.
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.
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 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.
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
Rechercher dans tous les fichiers .evtx la chaîne insensible à la casse « mimikatz »
./chainsaw search mimikatz -i evtx_attack_samples/
*Rechercher dans tous les fichiers .evtx les événements de bloc de script powershell (Event ID 4014)
./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
./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
Chasser dans tous les fichiers evtx en utilisant les règles Sigma comme logique de détection
./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
./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
./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.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.
./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.
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt
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
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 :
./chainsaw analyse gaps ./Logs/
Rechercher uniquement les enregistrements supprimés sélectivement (trous de RecordID), et émettre 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
Analyser 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)[+] 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"
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.
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
Extraire la ruche SOFTWARE
./chainsaw dump ./SOFTWARE.hve --json --output ./output.json