
Busca y rastrea rápidamente a través de artefactos forenses de Windows
Chainsaw proporciona una potente capacidad de 'primera respuesta' para identificar rápidamente amenazas dentro de artefactos forenses de Windows, como los registros de eventos y el archivo MFT. Chainsaw ofrece un método genérico y rápido de búsqueda a través de registros de eventos por palabras clave, y mediante la identificación de amenazas utilizando soporte integrado para reglas de detección Sigma, y a través de reglas de detección personalizadas de Chainsaw.
Se puede encontrar información ampliada en la Wiki de esta herramienta: https://github.com/WithSecureLabs/chainsaw/wiki
En WithSecure Countercept, ingerimos una amplia gama de fuentes de telemetría desde los endpoints a través de nuestro agente EDR para proporcionar nuestro servicio gestionado de detección y respuesta. Sin embargo, hay circunstancias en las que necesitamos analizar rápidamente artefactos forenses que no han sido capturados por nuestro EDR, un ejemplo común siendo investigaciones de respuesta a incidentes en un entorno donde nuestro EDR no estaba instalado en el momento del compromiso. Chainsaw fue creado para proporcionar a nuestros cazadores de amenazas y consultores de respuesta a incidentes una herramienta para realizar un triaje rápido de artefactos forenses en estas circunstancias.
Los registros de eventos de Windows proporcionan una rica fuente de información forense para la caza de amenazas y las investigaciones de respuesta a incidentes. Desafortunadamente, procesar y buscar a través de los registros de eventos puede ser un proceso lento y que consume mucho tiempo, y en la mayoría de los casos requiere la sobrecarga de infraestructura circundante – como un stack ELK o una instancia de Splunk – para cazar eficientemente a través de los datos de registro y aplicar lógica de detección. Esta sobrecarga a menudo significa que los equipos azules no pueden realizar un triaje rápido de los registros de eventos de Windows para proporcionar la dirección y las conclusiones necesarias para avanzar en sus investigaciones. Chainsaw resuelve el problema ya que permite la búsqueda y caza rápidas a través de los registros de eventos de Windows.
En el momento de escribir esto, hay muy pocas herramientas de código abierto e independientes que proporcionen un método simple y rápido de triaje de registros de eventos de Windows, identificando elementos interesantes dentro de los registros y aplicando un formato de regla de lógica de detección (como Sigma) para detectar signos de actividad maliciosa. En nuestras pruebas, las herramientas que existían tenían dificultades para aplicar eficientemente la lógica de detección a grandes volúmenes de registros de eventos, lo que las hacía inadecuadas para escenarios donde se requiere un triaje rápido.
Usando los parámetros --sigma y --mapping puedes especificar un directorio que contenga un subconjunto de reglas de detección SIGMA (o simplemente todo el repositorio git de SIGMA) y chainsaw cargará, convertirá y ejecutará automáticamente estas reglas contra los registros de eventos proporcionados. El archivo de mapeo le indica a chainsaw qué campos en los registros de eventos usar para la coincidencia de reglas. Por defecto, Chainsaw soporta una amplia gama de tipos de registros de eventos, incluyendo pero no limitado a:
| Tipo de evento | ID de evento |
|---|---|
| Creación de proceso (Sysmon) | 1 |
| Conexiones de red (Sysmon) | 3 |
| Cargas de imágenes (Sysmon) | 7 |
| Creación de archivos (Sysmon) | 11 |
| Eventos de registro (Sysmon) | 13 |
| Bloques de script de Powershell | 4104 |
| Creación de proceso | 4688 |
| Creación de tarea programada | 4698 |
| Creación de servicio | 7045 |
Consulta el archivo de mapeo para la lista completa de campos que se utilizan para la detección de reglas, y siéntete libre de extenderlo según tus necesidades.
Además de soportar reglas sigma, Chainsaw también soporta un formato de regla personalizado. En el repositorio encontrarás un directorio rules que contiene varias reglas de Chainsaw que permiten a los usuarios:
Con el lanzamiento de Chainsaw v2, decidimos ya no incluir los repositorios Sigma Rules y EVTX-Attack-Samples como submódulos de Chainsaw. Recomendamos que clones estos repositorios por separado para asegurarte de tener las últimas versiones.
Si aún necesitas un paquete todo en uno que contenga el binario de Chainsaw, las reglas Sigma y registros de eventos de ejemplo, puedes descargarlo desde la sección de releases de este repositorio de GitHub. En esta sección de releases también encontrarás versiones precompiladas solo del binario de Chainsaw para varias plataformas y arquitecturas.
Si quieres compilar Chainsaw tú mismo, puedes clonar el repositorio de Chainsaw:
git clone https://github.com/WithSecureLabs/chainsaw.git
y compilar el código tú mismo ejecutando: cargo build --release. Una vez que la compilación haya terminado, encontrarás una copia del binario compilado en la carpeta target/release.
Asegúrate de compilar con el flag --release ya que esto garantizará un tiempo de ejecución significativamente más rápido.
Si quieres ver rápidamente cómo se ve Chainsaw cuando se ejecuta, puedes clonar los repositorios Sigma Rules y EVTX-Attack-Samples:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git
y luego ejecuta Chainsaw con los parámetros que se indican a continuación:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
├───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, como paquete, está disponible a través de [nixpkgs](https://search.nixos.org/packages?query=chainsaw).
Si usas NixOS, simplemente añade `chainsaw` a tu archivo de configuración del sistema.
Sin embargo, si no usas NixOS, aún puedes instalar Chainsaw mediante Nix. La forma recomendada es a través de `nix-shell`, que modificará temporalmente tu variable de entorno $PATH.
Para hacerlo, ejecuta lo siguiente:```
nix-shell -p chainsaw
También puedes aprovechar el hecho de que este repositorio es un flake, y puedes ejecutar lo siguiente:``` nix profile install github:WithSecureLabs/chainsaw
Sin embargo, si quieres compilar chainsaw tú mismo, usando Nix, puedes una vez más utilizar `flake.nix`, que se proporciona con este repositorio.
Para compilar el binario, ejecuta lo siguiente, en el directorio raíz del repositorio clonado```
nix build .#
Esto creará el directorio ./result, con el binario chainsaw ubicado en ./result/bin/chainsaw.
Al descargar y ejecutar chainsaw, es posible que tu motor EDR / AntiVirus local detecte Chainsaw como malicioso. Puedes ver ejemplos de esto en los siguientes issues de GitHub: Ejemplo1, Ejemplo2.
Estas advertencias suelen deberse a los registros de eventos de ejemplo y/o a las reglas Sigma que contienen referencias a cadenas maliciosas (p. ej. "mimikatz"). También hemos visto casos en los que el binario de Chainsaw ha sido detectado por un pequeño subconjunto de motores antivirus, probablemente debido a algún tipo de detección heurística.
En julio de 2022 publicamos la versión 2 de Chainsaw, que supone una revisión importante de cómo funciona Chainsaw. Chainsaw v2 contiene varias mejoras significativas, incluida la siguiente lista de aspectos destacados:
Si aún deseas usar la versión 1 de Chainsaw, puedes encontrar binarios compilados en la sección de releases, o puedes acceder al código fuente en la rama v1.x.x. Ten en cuenta que Chainsaw v1 ya no recibe mantenimiento, y todos los usuarios deberían plantearse migrar a Chainsaw v2.
Un enorme agradecimiento a @AlexKornitzer, quien logró convertir la base de código del "Christmas Project" de Chainsaw v1 en un producto pulido en la v2.
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
Buscar en todos los archivos .evtx la cadena "mimikatz" sin distinguir mayúsculas y minúsculas
./chainsaw search mimikatz -i evtx_attack_samples/
*Buscar en todos los archivos .evtx eventos de bloque de script de powershell (Event ID 4014)
./chainsaw search -t 'Event.System.EventID: =4104' evtx_attack_samples/
Buscar en un registro evtx específico eventos de inicio de sesión, con un patrón regex coincidente, y mostrar la salida en formato JSON
./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
Cazar en todos los archivos evtx usando reglas Sigma para la lógica de detección
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
Cazar en todos los archivos evtx usando reglas Sigma y reglas de Chainsaw para la lógica de detección y mostrar la salida en formato CSV en la carpeta de resultados
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml -r rules/ --csv --output results
Cazar en todos los archivos evtx usando reglas Sigma para la lógica de detección, buscar solo entre marcas de tiempo específicas y mostrar los resultados en formato JSON
./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 en analysis/shimcache_patterns.txt.Analizar un artefacto shimcache con los patrones regex proporcionados, y usar el enriquecimiento de amcache con la detección de pares de marcas de tiempo cercanas habilitada. Salida a un archivo csv.
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt --amcache ./Amcache.hve --tspair --output ./output.csv
Analizar un artefacto shimcache con los patrones regex proporcionados (sin enriquecimiento de amcache). Salida a la terminal.
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt
Detecta dos indicadores de manipulación selectiva de registros de eventos dentro de uno o más archivos .evtx:
Vacíos en RecordID: los valores de EventRecordID por canal normalmente son monótonamente crecientes sin huecos. Un hueco dentro de un único archivo evtx (es decir, que no sea un límite de rotación de registros) es inusual y es la huella que dejan las herramientas que eliminan quirúrgicamente registros individuales (por ejemplo, técnicas al estilo Eventlogedit) sin activar el ruidoso evento de "registro borrado" (EID 1102).
Vacíos temporales: ventanas de silencio inesperadamente largas entre eventos consecutivos en un canal normalmente activo pueden indicar que los registros dentro de esa ventana fueron eliminados. El umbral es configurable; el establecimiento de una línea base por host queda a criterio del analista.
COMMAND: analyse gaps Detect chronological or RecordID gaps in evtx files (possible selective record deletion)
USAGE: chainsaw analyse gaps [OPTIONS] [PATH]...
ARGUMENTS: [PATH]... The path(s) to evtx files or directories containing them
OPTIONS: --min-time-gap-minutes Minimum time gap (in minutes) between consecutive events to flag as suspicious [default: 30] --no-record-id-gaps Skip RecordID gap detection (only flag time gaps) --no-time-gaps Skip time gap detection (only flag RecordID gaps) -j, --json Print the output in json format -o, --output Save the output to a file -q Suppress informational output --skip-errors Continue when an error is encountered -h, --help Print help
Escanear un directorio de archivos evtx en busca de vacíos en RecordID y temporales con el umbral predeterminado de 30 minutos:
./chainsaw analyse gaps ./Logs/
Buscar únicamente registros eliminados selectivamente (huecos en RecordID), y emitir JSON legible por máquina:
./chainsaw analyse gaps ./Logs/ --no-time-gaps --json -o ./gaps.json
El analizador de la base de datos SRUM implementado en Chainsaw difiere de otros analizadores porque no depende de valores codificados sobre las tablas. La información se extrae directamente del hive SOFTWARE, que es un argumento obligatorio. El objetivo es evitar errores relacionados con tablas desconocidas.
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
Analizar la base de datos SRUM (el hive SOFTWARE es obligatorio)
./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)[+] Base de datos ESE cargada desde "/home/user/Documents/SRUDB.dat"
[+] Analizando la base de datos ESE...
[+] Colmena SOFTWARE cargada desde "/home/user/Documents/SOFTWARE"
[+] Analizando la colmena del registro SOFTWARE...
[+] Analizando la base de datos SRUM...
[+] Detalles sobre las tablas relacionadas con las extensiones SRUM:
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| GUID de tabla | Nombre de tabla | Ruta DLL | Marco temporal de los datos | Tiempo de retención esperado |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {5C8CF1C7-7257-4F13-B223-970EF5939312} | App Timeline Provider | %SystemRoot%\System32\eeprov.dll | 2022-03-10 16:34:59 UTC | 7 días |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {B6D82AF1-F780-4E17-8077-6CB9AD8A6FC4} | Tagged Energy Provider | %SystemRoot%\System32\eeprov.dll | Sin registros | 3 días |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {D10CA2FE-6FCF-4F6D-848E-B2E99266FA86} | WPN SRUM Provider | %SystemRoot%\System32\wpnsruprov.dll | 2022-03-10 20:09:00 UTC | 60 días |
| | | | 2022-03-10 21:09:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {D10CA2FE-6FCF-4F6D-848E-B2E99266FA89} | Application Resource Usage Provider | %SystemRoot%\System32\appsruprov.dll | 2022-03-10 16:34:59 UTC | 60 días |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37} | Energy Usage Provider | %SystemRoot%\System32\energyprov.dll | Sin registros | 60 días |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}LT | Energy Usage Provider (Long Term) | %SystemRoot%\System32\energyprov.dll | Sin registros | 1820 días |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {973F5D5C-1D90-4944-BE8E-24B94231A174} | Windows Network Data Usage Monitor | %SystemRoot%\System32\nduprov.dll | 2022-03-10 16:34:59 UTC | 60 días |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {7ACBBAA3-D029-4BE4-9A7A-0885927F1D8F} | vfuprov | %SystemRoot%\System32\vfuprov.dll | 2022-03-10 20:09:00 UTC | 60 días |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {DA73FB89-2BEA-4DDC-86B8-6E048C6DA477} | Energy Estimation Provider | %SystemRoot%\System32\eeprov.dll | Sin registros | 7 días |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {DD6636C4-8929-4683-974E-22C046A43763} | Windows Network Connectivity Usage Monitor | %SystemRoot%\System32\ncuprov.dll | 2022-03-10 16:34:59 UTC | 60 días |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
[+] Base de datos SRUM analizada correctamente
[+] Guardando salida en "/home/user/Documents/output.json"
[+] Salida guardada en "/home/user/Documents/output.json"
La información sobre las nuevas perspectivas forenses relacionadas con este artefacto se puede encontrar en la wiki: https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.
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
Volcar la colmena SOFTWARE
./chainsaw dump ./SOFTWARE.hve --json --output ./output.json