
Pesquise e investigue rapidamente através de artefactos forenses do Windows
O Chainsaw fornece uma poderosa capacidade de 'primeira resposta' para identificar rapidamente ameaças em artefatos forenses do Windows, como Logs de Eventos e o arquivo MFT. O Chainsaw oferece um método genérico e rápido de pesquisar em logs de eventos por palavras-chave, e de identificar ameaças usando suporte integrado para regras de detecção Sigma, e através de regras de detecção personalizadas do Chainsaw.
Informações estendidas podem ser encontradas na Wiki desta ferramenta: https://github.com/WithSecureLabs/chainsaw/wiki
Na WithSecure Countercept, ingerimos uma ampla gama de fontes de telemetria de endpoints através do nosso agente EDR para fornecer nosso serviço gerenciado de detecção e resposta. No entanto, há circunstâncias em que precisamos analisar rapidamente artefatos forenses que não foram capturados pelo nosso EDR, um exemplo comum sendo investigações de resposta a incidentes em um ambiente onde nosso EDR não estava instalado no momento do comprometimento. O Chainsaw foi criado para fornecer aos nossos caçadores de ameaças e consultores de resposta a incidentes uma ferramenta para realizar triagem rápida de artefatos forenses nessas circunstâncias.
Os logs de eventos do Windows fornecem uma rica fonte de informações forenses para caça a ameaças e investigações de resposta a incidentes. Infelizmente, processar e pesquisar em logs de eventos pode ser um processo lento e demorado, e na maioria dos casos requer a sobrecarga de infraestrutura ao redor – como uma pilha ELK ou instância Splunk – para caçar eficientemente através dos dados de log e aplicar lógica de detecção. Essa sobrecarga frequentemente significa que as equipes azuis são incapazes de fazer triagem rápida de logs de eventos do Windows para fornecer a direção e as conclusões necessárias para progredir em suas investigações. O Chainsaw resolve esse problema, pois permite a pesquisa e caça rápidas através de logs de eventos do Windows.
No momento da escrita, existem muito poucas ferramentas de código aberto e autônomas que fornecem um método simples e rápido de triagem de logs de eventos do Windows, identificando elementos interessantes dentro dos logs e aplicando um formato de regra de lógica de detecção (como Sigma) para detectar sinais de atividade maliciosa. Em nossos testes, as ferramentas que existiam lutavam para aplicar eficientemente lógica de detecção a grandes volumes de logs de eventos, tornando-as inadequadas para cenários onde a triagem rápida é necessária.
Usando os parâmetros --sigma e --mapping, você pode especificar um diretório contendo um subconjunto de regras de detecção SIGMA (ou apenas todo o repositório git do SIGMA) e o chainsaw carregará, converterá e executará automaticamente essas regras contra os logs de eventos fornecidos. O arquivo de mapeamento informa ao chainsaw quais campos nos logs de eventos usar para correspondência de regras. Por padrão, o Chainsaw suporta uma ampla gama de tipos de Log de Eventos, incluindo, mas não se limitando a:
| Tipo de Evento | ID do Evento |
|---|---|
| Criação de Processo (Sysmon) | 1 |
| Conexões de Rede (Sysmon) | 3 |
| Carregamentos de Imagem (Sysmon) | 7 |
| Criação de Arquivo (Sysmon) | 11 |
| Eventos de Registro (Sysmon) | 13 |
| Blocos de Script Powershell | 4104 |
| Criação de Processo | 4688 |
| Criação de Tarefa Agendada | 4698 |
| Criação de Serviço | 7045 |
Veja o arquivo de mapeamento para a lista completa de campos que são usados para detecção de regras, e sinta-se à vontade para estendê-lo conforme suas necessidades.
Além de suportar regras sigma, o Chainsaw também suporta um formato de regra personalizado. No repositório você encontrará um diretório rules que contém várias regras do Chainsaw que permitem aos usuários:
Com o lançamento do Chainsaw v2, decidimos não mais incluir os repositórios Sigma Rules e EVTX-Attack-Samples como submódulos do Chainsaw. Recomendamos que você clone esses repositórios separadamente para garantir que tenha as versões mais recentes.
Se você ainda precisa de um pacote tudo-em-um contendo o binário do Chainsaw, regras Sigma e logs de Eventos de exemplo, você pode baixá-lo da seção de releases deste repositório do GitHub. Nesta seção de releases você também encontrará versões pré-compiladas apenas do binário do Chainsaw para várias plataformas e arquiteturas.
Se você quiser compilar o Chainsaw você mesmo, você pode clonar o repositório do Chainsaw:
git clone https://github.com/WithSecureLabs/chainsaw.git
e compilar o código você mesmo executando: cargo build --release. Uma vez que a compilação terminar, você encontrará uma cópia do binário compilado na pasta target/release.
Certifique-se de compilar com a flag --release, pois isso garantirá um tempo de execução significativamente mais rápido.
Se você quiser ver rapidamente como o Chainsaw se parece quando é executado, você pode clonar os repositórios Sigma Rules e EVTX-Attack-Samples:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git
e em seguida execute o Chainsaw com os parâmetros abaixo:```
./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 pacote, está disponível via [nixpkgs](https://search.nixos.org/packages?query=chainsaw).
Se você estiver usando NixOS, basta adicionar `chainsaw` ao seu arquivo de configuração do sistema.
No entanto, se você não estiver usando NixOS, ainda poderá instalar o Chainsaw via Nix. A forma recomendada é via `nix-shell`, que modificará temporariamente sua variável de ambiente $PATH.
Para isso, execute o seguinte:```
nix-shell -p chainsaw
Você também pode utilizar o fato de que este repositório é um flake, e pode executar o seguinte:``` nix profile install github:WithSecureLabs/chainsaw
No entanto, se você quiser compilar o chainsaw por conta própria, usando Nix, você pode mais uma vez utilizar o `flake.nix`, que é fornecido com este repositório.
Para compilar o binário, execute o seguinte, no diretório raiz do repositório clonado```
nix build .#
Isso criará o diretório ./result, com o binário chainsaw localizado em ./result/bin/chainsaw.
Ao baixar e executar o chainsaw, você pode descobrir que seu EDR / mecanismo antivírus local detecta o Chainsaw como malicioso. Você pode ver exemplos disso nas seguintes issues do GitHub: Exemplo1, Exemplo2.
Esses avisos geralmente ocorrem devido aos logs de eventos de exemplo e/ou regras Sigma que contêm referências a strings maliciosas (por exemplo, "mimikatz"). Também vimos instâncias em que o binário do Chainsaw foi detectado por um pequeno subconjunto de mecanismos antivírus, provavelmente devido a alguma forma de detecção heurística.
Em julho de 2022, lançamos a versão 2 do Chainsaw, que é uma grande reformulação de como o Chainsaw opera. O Chainsaw v2 contém várias melhorias significativas, incluindo a seguinte lista de destaques:
Se você ainda deseja usar a versão 1 do Chainsaw, você pode encontrar binários compilados na seção de releases, ou você pode acessar o código-fonte no branch v1.x.x. Observe que o Chainsaw v1 não é mais mantido, e todos os usuários devem buscar migrar para o Chainsaw v2.
Um enorme agradecimento a @AlexKornitzer que conseguiu converter a base de código do "Christmas Project" do Chainsaw v1 em um produto refinado no 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 em todos os arquivos .evtx a string "mimikatz" sem diferenciar maiúsculas de minúsculas
./chainsaw search mimikatz -i evtx_attack_samples/
*Buscar em todos os arquivos .evtx eventos de bloco de script do powershell (Event ID 4014)
./chainsaw search -t 'Event.System.EventID: =4104' evtx_attack_samples/
Buscar em um log evtx específico eventos de logon, com um padrão regex correspondente, com saída em 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
Caçar em todos os arquivos evtx usando regras Sigma para lógica de detecção
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
Caçar em todos os arquivos evtx usando regras Sigma e regras Chainsaw para lógica de detecção e gerar saída em formato CSV para a pasta de resultados
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml -r rules/ --csv --output results
Caçar em todos os arquivos evtx usando regras Sigma para lógica de detecção, buscar apenas entre timestamps específicos e gerar os resultados em 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 está incluído em analysis/shimcache_patterns.txt.Analisa um artefato shimcache com os padrões regex fornecidos e usa o enriquecimento do amcache com detecção de pares de timestamp próximos habilitada. Saída para um arquivo csv.
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt --amcache ./Amcache.hve --tspair --output ./output.csv
Analisa um artefato shimcache com os padrões regex fornecidos (sem enriquecimento do amcache). Saída para o terminal.
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt
Detecta dois indicadores de adulteração seletiva de logs de eventos dentro de um ou mais arquivos .evtx:
Lacunas de RecordID: os valores de EventRecordID por canal normalmente são monotonicamente crescentes, sem buracos. Um buraco dentro de um único arquivo evtx (ou seja, que não seja um limite de rotação de log) é incomum e é a impressão digital deixada por ferramentas que excluem cirurgicamente registros individuais (por exemplo, técnicas no estilo Eventlogedit) sem acionar o ruidoso evento de "log limpo" (EID 1102).
Lacunas de tempo: janelas de silêncio inesperadamente longas entre eventos consecutivos em um canal normalmente movimentado podem indicar que registros dentro dessa janela foram removidos. O limite é configurável; a linha de base por host fica a critério do 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
Escaneia um diretório de arquivos evtx em busca de lacunas de RecordID e de tempo com o limite padrão de 30 minutos:
./chainsaw analyse gaps ./Logs/
Procura apenas por registros excluídos seletivamente (buracos de RecordID) e emite JSON legível por máquina:
./chainsaw analyse gaps ./Logs/ --no-time-gaps --json -o ./gaps.json
O parser do banco de dados SRUM implementado no Chainsaw difere de outros parsers porque não depende de valores codificados sobre as tabelas. As informações são extraídas diretamente do hive SOFTWARE, que é um argumento obrigatório. O objetivo é evitar erros relacionados a tabelas desconhecidas.
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
Analisa o banco de dados SRUM (o hive SOFTWARE é obrigatório)
./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)[+] Arquivo de banco de dados ESE carregado de "/home/user/Documents/SRUDB.dat"
[+] Analisando o banco de dados ESE...
[+] Hive SOFTWARE carregado de "/home/user/Documents/SOFTWARE"
[+] Analisando o hive de registro SOFTWARE...
[+] Analisando o banco de dados SRUM...
[+] Detalhes sobre as tabelas relacionadas às extensões SRUM:
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| GUID da Tabela | Nome da Tabela | Caminho da DLL | Período dos dados | Tempo de Retenção Esperado |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {5C8CF1C7-7257-4F13-B223-970EF5939312} | App Timeline Provider | %SystemRoot%\System32\eeprov.dll | 2022-03-10 16:34:59 UTC | 7 dias |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {B6D82AF1-F780-4E17-8077-6CB9AD8A6FC4} | Tagged Energy Provider | %SystemRoot%\System32\eeprov.dll | Sem registros | 3 dias |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {D10CA2FE-6FCF-4F6D-848E-B2E99266FA86} | WPN SRUM Provider | %SystemRoot%\System32\wpnsruprov.dll | 2022-03-10 20:09:00 UTC | 60 dias |
| | | | 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 dias |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37} | Energy Usage Provider | %SystemRoot%\System32\energyprov.dll | Sem registros | 60 dias |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {FEE4E14F-02A9-4550-B5CE-5FA2DA202E37}LT | Energy Usage Provider (Long Term) | %SystemRoot%\System32\energyprov.dll | Sem registros | 1820 dias |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {973F5D5C-1D90-4944-BE8E-24B94231A174} | Windows Network Data Usage Monitor | %SystemRoot%\System32\nduprov.dll | 2022-03-10 16:34:59 UTC | 60 dias |
| | | | 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 dias |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {DA73FB89-2BEA-4DDC-86B8-6E048C6DA477} | Energy Estimation Provider | %SystemRoot%\System32\eeprov.dll | Sem registros | 7 dias |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
| {DD6636C4-8929-4683-974E-22C046A43763} | Windows Network Connectivity Usage Monitor | %SystemRoot%\System32\ncuprov.dll | 2022-03-10 16:34:59 UTC | 60 dias |
| | | | 2022-03-10 21:10:00 UTC | |
+------------------------------------------+--------------------------------------------+--------------------------------------+-------------------------+-------------------------+
[+] Banco de dados SRUM analisado com sucesso
[+] Salvando saída em "/home/user/Documents/output.json"
[+] Saída salva em "/home/user/Documents/output.json"
Informações sobre os novos insights forenses relacionados a este artefato podem ser encontradas na wiki: https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.
USAGE:
chainsaw dump [OPTIONS] <PATH>
ARGUMENTS:
<PATH> O caminho para um artefato a ser extraído
OPTIONS:
-j, --json Extrair em formato json
--jsonl Imprimir a saída em formato jsonl
--load-unknown Permitir que o chainsaw tente carregar arquivos que não consegue identificar
-o, --output <OUTPUT> Um caminho para salvar os resultados
-q Suprimir saída informativa
--skip-errors Continuar a busca quando um erro for encontrado
-h, --help Imprimir ajuda
Extrair o hive SOFTWARE
./chainsaw dump ./SOFTWARE.hve --json --output ./output.json