Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
chainsaw — Pesquise e vasculhe rapidamente artefactos forenses do Windows | Kitploit
Ferramentas/GitHubGitHub/withsecurelabs/chainsaw
Ferramentas DefensivasAnálise ForenseForensia DigitalDetecção de IntrusãoResposta a IncidentesAnálise de Logs
GitHubwithsecurelabs/chainsaw

chainsaw

Pesquise e vasculhe rapidamente artefactos forenses do Windows

Ver Repositório
3.6k301há 16 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Pesquise e Cace Rapidamente através de Artefactos Forenses do Windows


O Chainsaw fornece uma poderosa capacidade de “primeira resposta” para identificar rapidamente ameaças em artefactos forenses do Windows, como registos de eventos e o ficheiro MFT. O Chainsaw oferece um método genérico e rápido de pesquisar palavras-chave em registos de eventos e de identificar ameaças através de suporte integrado para regras de deteção Sigma e de regras de deteção personalizadas do Chainsaw.

Funcionalidades

  • 🎯 Caçar ameaças utilizando regras de deteção Sigma e regras de deteção personalizadas do Chainsaw
  • 🔍 Pesquisar e extrair artefactos forenses por correspondência de strings e padrões regex
  • 📅 Criar cronologias de execução através da análise de artefactos Shimcache e do enriquecimento com dados Amcache
  • 💡 Analisar a base de dados SRUM e fornecer informações sobre a mesma
  • ⬇️ Despejar o conteúdo bruto de artefactos forenses (MFT, hives do registo, bases de dados ESE)
  • ⚡ Extremamente rápido, escrito em Rust, que envolve a biblioteca parser EVTX de @OBenamram
  • 🪶 Formatos de execução e de saída limpos e leves, sem inchaço desnecessário
  • 🔥 Marcação de documentos (correspondência de lógica de deteção) fornecida pela biblioteca TAU Engine
  • 📑 Apresenta resultados em vários formatos, como tabela ASCII, CSV e JSON
  • 💻 Pode ser executado em MacOS, Linux e Windows

Índice

  • Funcionalidades
  • Porquê o Chainsaw?
  • Lógica de Caça para Registos de Eventos do Windows
  • Guia de Início Rápido
    • Transferência e Execução
    • Instalar/Compilar com Nix
    • Avisos de EDR e AV
    • O que mudou no Chainsaw v2
  • Exemplos
    • Pesquisa
    • Caça
    • Análise
      • Shimcache
      • SRUM (Monitor de Utilização de Recursos do Sistema)
      • Lacunas (deteção de lacunas em registos de eventos)
    • Despejo
  • Agradecimentos

Informações adicionais podem ser encontradas no Wiki desta ferramenta: https://github.com/WithSecureLabs/chainsaw/wiki

Porquê o Chainsaw?

Na WithSecure Countercept, ingerimos uma vasta gama de fontes de telemetria de endpoints através do nosso agente EDR para fornecer o nosso serviço de deteção e resposta gerida. No entanto, existem circunstâncias em que precisamos de analisar rapidamente artefactos forenses que não tenham sido capturados pelo nosso EDR, sendo um exemplo comum as investigações de resposta a incidentes numa infraestrutura onde o 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 uma triagem rápida de artefactos forenses nestas circunstâncias.

Registos de Eventos do Windows

Os registos de eventos do Windows fornecem uma fonte rica de informações forenses para a caça a ameaças e investigações de resposta a incidentes. Infelizmente, processar e pesquisar registos de eventos pode ser um processo lento e demorado e, na maioria dos casos, exige a sobrecarga de infraestrutura envolvente – como uma stack ELK ou uma instância Splunk – para caçar eficientemente nos dados de registo e aplicar lógica de deteção. Esta sobrecarga significa frequentemente que as equipas azuis não conseguem fazer uma triagem rápida dos registos de eventos do Windows para fornecer a direção e as conclusões necessárias para avançar nas suas investigações. O Chainsaw resolve o problema, pois permite a pesquisa e a caça rápidas em registos de eventos do Windows.

No momento em que este texto foi escrito, existem muito poucas ferramentas open-source e autónomas que forneçam um método simples e rápido de triagem de registos de eventos do Windows, identificando elementos interessantes nos registos e aplicando um formato de regras de lógica de deteção (como o Sigma) para detetar sinais de atividade maliciosa. Nos nossos testes, as ferramentas que existiam tinham dificuldade em aplicar eficientemente a lógica de deteção a grandes volumes de registos de eventos, tornando-as inadequadas para cenários em que é necessária uma triagem rápida.

Lógica de Caça para Registos de Eventos do Windows

Correspondência de Regras Sigma

Utilizando os parâmetros --sigma e --mapping, pode especificar um diretório contendo um subconjunto de regras de deteção SIGMA (ou mesmo o repositório git SIGMA completo) e o chainsaw carregará, converterá e executará automaticamente essas regras nos registos de eventos fornecidos. O ficheiro de mapeamento indica ao chainsaw quais os campos dos registos de eventos a utilizar para a correspondência de regras. Por predefinição, o Chainsaw suporta uma vasta gama de tipos de registos de eventos, incluindo, mas não se limitando a:

Consulte o ficheiro de mapeamento para obter a lista completa dos campos utilizados para a deteção de regras e sinta-se à vontade para o estender consoante as suas necessidades.

Regras de Deteção do Chainsaw

Para além de suportar regras sigma, o Chainsaw também suporta um formato de regras personalizado. No repositório encontrará um diretório rules que contém várias regras do Chainsaw que permitem aos utilizadores:

  1. Extrair e analisar alertas de antivírus do Windows Defender, F-Secure, Sophos e Kaspersky
  2. Detetar registos de eventos importantes a serem limpos, ou o serviço de registos de eventos a ser interrompido
  3. Utilizadores a serem criados ou adicionados a grupos de utilizadores sensíveis
  4. Eventos de inícios de sessão remotos (Serviço, RDP, Rede, etc.). Isto ajuda os caçadores a identificar fontes de movimento lateral
  5. Força bruta de contas de utilizador locais

Guia de Início Rápido

Transferência e Execução

Com o lançamento do Chainsaw v2, decidimos deixar de incluir os repositórios Sigma Rules e EVTX-Attack-Samples como submódulos do Chainsaw. Recomendamos que clone estes repositórios separadamente para garantir que tem as versões mais recentes.

Se ainda precisar de um pacote completo contendo o binário do Chainsaw, as regras Sigma e registos de eventos de exemplo, pode descarregá-lo da secção de lançamentos deste repositório GitHub. Nesta secção de lançamentos também encontrará versões pré-compiladas apenas com o binário do Chainsaw para várias plataformas e arquiteturas.

Se quiser compilar o Chainsaw, pode clonar o repositório Chainsaw:

git clone https://github.com/WithSecureLabs/chainsaw.git

e compilar o código executando: cargo build --release. Quando a compilação terminar, 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 quiser ver rapidamente como o Chainsaw se comporta quando é executado, 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

root@kitploit:~
e então execute o Chainsaw com os parâmetros abaixo:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml

Instalar/compilar com Nix```

├───devShells │ └───x86_64-linux │ └───default: development environment 'nix-shell' ├───formatter │ └───x86_64-linux: package 'alejandra-3.1.0' └───packages └───x86_64-linux ├───chainsaw: package 'chainsaw-2.10.1' └───default: package 'chainsaw-2.10.1'

root@kitploit:~
Chainsaw, 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 pode instalar o Chainsaw via Nix. A forma recomendada é via `nix-shell`, que modificará temporariamente sua variável de ambiente $PATH.
Para fazer isso, execute o seguinte:```
nix-shell -p chainsaw

Você também pode utilizar o fato de que este repositório é um flake, e você pode executar o seguinte:``` nix profile install github:WithSecureLabs/chainsaw

root@kitploit:~
No entanto, se você quiser compilar o chainsaw você mesmo, usando Nix, você pode novamente 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 do chainsaw localizado em ./result/bin/chainsaw.

Avisos de EDR e Antivírus

Ao baixar e executar o chainsaw, você pode descobrir que seu mecanismo local de EDR / Antivírus detecta o Chainsaw como malicioso. Você pode ver exemplos disso nas seguintes issues do GitHub: Exemplo1, Exemplo2.

Esses avisos geralmente são devidos aos logs de eventos de exemplo e/ou regras Sigma que contêm referências a strings maliciosas (por exemplo, "mimikatz"). Também vimos casos 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.

O que mudou no Chainsaw v2?

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:

  • Uma abordagem aprimorada para mapear regras Sigma que resulta em um aumento significativo no número de regras Chainsaw suportadas e tipos de eventos de Event Log.
  • Saída CLI aprimorada que mostra um instantâneo de todos os Dados de Evento para logs de eventos que contêm detecções.
  • Suporte para carregar e analisar Event Logs nos formatos JSON e XML.
  • Argumentos de linha de comando mais limpos e simples para os recursos Hunt e Search.
  • Informações de saída opcionais adicionais, como Autor da Regra, Status da Regra, Nível da Regra, etc.
  • A capacidade de filtrar regras carregadas por status, tipo e nível de gravidade.
  • As regras de Detecção integradas do Chainsaw foram separadas em arquivos de regras Chainsaw dedicados
  • Uma reescrita limpa do código do Chainsaw para melhorar a legibilidade e reduzir a sobrecarga para contribuições da comunidade.

Se você ainda deseja usar a versão 1 do Chainsaw, pode encontrar binários compilados na seção de releases, ou 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 considerar migrar para o Chainsaw v2.

Um enorme agradecimento a @AlexKornitzer, que conseguiu converter a base de código "Christmas Project" do Chainsaw v1 em um produto refinado no v2.

Exemplos

Pesquisa

root@kitploit:~
  USAGE:
      chainsaw search [FLAGS] [OPTIONS] <pattern> [--] [path]...

  FLAGS:
      -h, --help            Prints help information
      -i, --ignore-case     Ignore the case when searching patterns
          --json            Print the output in json format
          --load-unknown    Allow chainsaw to try and load files it cannot identify
          --local           Output the timestamp using the local machine's timestamp
      -q                    Suppress informational output
          --skip-errors     Continue to search when an error is encountered
      -V, --version         Prints version information

  OPTIONS:
          --extension <extension>...    Only search through files with the provided extension
          --from <from>                 The timestamp to search from. Drops any documents older than the value provided
      -o, --output <output>             The path to output results to
      -e, --regex <pattern>...          A string or regular expression pattern to search for
      -t, --tau <tau>...                Tau expressions to search with. e.g. 'Event.System.EventID: =4104'
          --timestamp <timestamp>       The field that contains the timestamp
          --timezone <timezone>         Output the timestamp using the timezone provided
          --to <to>                     The timestamp to search up to. Drops any documents newer than the value provided

  ARGS:
      <pattern>    A string or regular expression pattern to search for. Not used when -e or -t is specified
      <path>...    The paths containing event logs to load and hunt through

Exemplos de Comandos

Pesquisar todos os arquivos .evtx pela string "mimikatz" sem diferenciar maiúsculas de minúsculas

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

*Pesquisar todos os arquivos .evtx por eventos de bloco de script do powershell (Event ID 4014)

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

Pesquisar um log evtx específico por eventos de logon, com um padrão regex correspondente, em formato JSON

root@kitploit:~
./chainsaw search -e "DC[0-9].insecurebank.local" evtx_attack_samples --json

Caça

root@kitploit:~
  USAGE:
      chainsaw hunt [FLAGS] [OPTIONS] [--] [path]...

  FLAGS:
          --csv             Print the output in csv format
          --full            Print the full values for the tabular output
      -h, --help            Prints help information
          --json            Print the output in json format
          --load-unknown    Allow chainsaw to try and load files it cannot identify
          --local           Output the timestamp using the local machine's timestamp
          --log             Print the output in log like format
          --metadata        Display additional metadata in the tablar output
      -q                    Suppress informational output
          --skip-errors     Continue to hunt when an error is encountered
      -V, --version         Prints version information

  OPTIONS:
          --column-width <column-width>    Set the column width for the tabular output
          --extension <extension>...       Only hunt through files with the provided extension
          --from <from>                    The timestamp to hunt from. Drops any documents older than the value provided
          --kind <kind>...                 Restrict loaded rules to specified kinds
          --level <level>...               Restrict loaded rules to specified levels
      -m, --mapping <mapping>...           A mapping file to tell Chainsaw how to use third-party rules
      -o, --output <output>                A path to output results to
      -r, --rule <rule>...                 A path containing additional rules to hunt with
      -s, --sigma <sigma>...               A path containing Sigma rules to hunt with
          --status <status>...             Restrict loaded rules to specified statuses
          --timezone <timezone>            Output the timestamp using the timezone provided
          --to <to>                        The timestamp to hunt up to. Drops any documents newer than the value provided

  ARGS:
      <rules>      The path to a collection of rules to use for hunting
      <path>...    The paths containing event logs to load and hunt through

Exemplos de Comandos

Caçar todos os arquivos evtx usando regras Sigma para lógica de detecção

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

Caçar todos os arquivos evtx usando regras Sigma e regras do Chainsaw para lógica de detecção e gerar saída em formato CSV na pasta de resultados

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

Caçar todos os arquivos evtx usando regras Sigma para lógica de detecção, pesquisando apenas entre carimbos de data/hora específicos, e gerar os resultados em formato JSON

root@kitploit:~
 ./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml --from "2019-03-17T19:09:39" --to "2019-03-17T19:09:50" --json

Saída

root@kitploit:~
$ ./chainsaw hunt -r rules/ evtx_attack_samples -s sigma/rules --mapping mappings/sigma-event-logs-all.yml --level critical

     ██████╗██╗  ██╗ █████╗ ██╗███╗   ██╗███████╗ █████╗ ██╗    ██╗
    ██╔════╝██║  ██║██╔══██╗██║████╗  ██║██╔════╝██╔══██╗██║    ██║
    ██║     ███████║███████║██║██╔██╗ ██║███████╗███████║██║ █╗ ██║
    ██║     ██╔══██║██╔══██║██║██║╚██╗██║╚════██║██╔══██║██║███╗██║
    ╚██████╗██║  ██║██║  ██║██║██║ ╚████║███████║██║  ██║╚███╔███╔╝
     ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝ ╚══╝╚══╝
        By WithSecure Countercept (@FranticTyping, @AlexKornitzer)

    [+] Loading detection rules from: ../../rules/, /tmp/sigma/rules
    [+] Loaded 129 detection rules (198 not loaded)
    [+] Loading event logs from: ../../evtx_attack_samples (extensions: .evtx)
    [+] Loaded 268 EVTX files (37.5 MB)
    [+] Hunting: [========================================] 268/268

    [+] Group: Antivirus
    ┌─────────────────────┬────────────────────┬──────────┬───────────┬─────────────┬────────────────────────────────┬──────────────────────────────────┬────────────────────┐
    │      timestamp      │     detections     │ Event ID │ Record ID │  Computer   │          Threat Name           │           Threat Path            │        User        │
    ├─────────────────────┼────────────────────┼──────────┼───────────┼─────────────┼────────────────────────────────┼──────────────────────────────────┼────────────────────┤
    │ 2019-07-18 20:40:00 │ ‣ Windows Defender │ 1116     │ 37        │ MSEDGEWIN10 │ Trojan:PowerShell/Powersploit. │ file:_C:\AtomicRedTeam\atomic-   │ MSEDGEWIN10\IEUser │
    │                     │                    │          │           │             │ M                              │ red-team-master\atomics\T1056\   │                    │
    │                     │                    │          │           │             │                                │ Get-Keystrokes.ps1               │                    │
    ├─────────────────────┼────────────────────┼──────────┼───────────┼─────────────┼────────────────────────────────┼──────────────────────────────────┼────────────────────┤
    │ 2019-07-18 20:53:31 │ ‣ Windows Defender │ 1117     │ 106       │ MSEDGEWIN10 │ Trojan:XML/Exeselrun.gen!A     │ file:_C:\AtomicRedTeam\atomic-   │ MSEDGEWIN10\IEUser │
    │                     │                    │          │           │             │                                │ red-team-master\atomics\T1086\   │                    │
    │                     │                    │          │           │             │                                │ payloads\test.xsl                │                    │
    └─────────────────────┴────────────────────┴──────────┴───────────┴─────────────┴────────────────────────────────┴──────────────────────────────────┴────────────────────┘

    [+] Group: Log Tampering
    ┌─────────────────────┬───────────────────────────────┬──────────┬───────────┬────────────────────────────────┬───────────────┐
    │      timestamp      │          detections           │ Event ID │ Record ID │            Computer            │     User      │
    ├─────────────────────┼───────────────────────────────┼──────────┼───────────┼────────────────────────────────┼───────────────┤
    │ 2019-01-20 07:00:50 │ ‣ Security Audit Logs Cleared │ 1102     │ 32853     │ WIN-77LTAPHIQ1R.example.corp   │ Administrator │
    └─────────────────────┴───────────────────────────────┴──────────┴───────────┴────────────────────────────────┴───────────────┘[+] Group: Sigma
    ┌─────────────────────┬────────────────────────────────┬───────┬────────────────────────────────┬──────────┬───────────┬──────────────────────────┬──────────────────────────────────┐
    │      timestamp      │           detections           │ count │     Event.System.Provider      │ Event ID │ Record ID │         Computer         │            Event Data            │
    ├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
    │ 2019-04-29 20:59:14 │ ‣ Malicious Named Pipe         │ 1     │ Microsoft-Windows-Sysmon       │ 18       │ 8046      │ IEWIN7                   │ ---                              │
    │                     │                                │       │                                │          │           │                          │ Image: System                    │
    │                     │                                │       │                                │          │           │                          │ PipeName: "\\46a676ab7f179e511   │
    │                     │                                │       │                                │          │           │                          │ e30dd2dc41bd388"                 │
    │                     │                                │       │                                │          │           │                          │ ProcessGuid: 365ABB72-D9C4-5CC   │
    │                     │                                │       │                                │          │           │                          │ 7-0000-0010EA030000              │
    │                     │                                │       │                                │          │           │                          │ ProcessId: 4                     │
    │                     │                                │       │                                │          │           │                          │ RuleName: ""                     │
    │                     │                                │       │                                │          │           │                          │ UtcTime: "2019-04-29 20:59:14.   │
    │                     │                                │       │                                │          │           │                          │ 430"                             │
    ├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
    │ 2019-04-30 20:26:51 │ ‣ CobaltStrike Service         │ 1     │ Microsoft-Windows-Sysmon       │ 13       │ 9806      │ IEWIN7                   │ ---                              │
    │                     │ Installations in Registry      │       │                                │          │           │                          │ Details: "%%COMSPEC%% /b /c st   │
    │                     │                                │       │                                │          │           │                          │ art /b /min powershell.exe -no   │
    │                     │                                │       │                                │          │           │                          │ p -w hidden -noni -c \"if([Int   │
    │                     │                                │       │                                │          │           │                          │ Ptr]::Size -eq 4){$b='powershe   │
    │                     │                                │       │                                │          │           │                          │ ll.exe'}else{$b=$env:windir+'\   │
    │                     │                                │       │                                │          │           │                          │ \syswow64\\WindowsPowerShell\\   │
    │                     │                                │       │                                │          │           │                          │ v1.0\\powershell.exe'};$s=New-   │
    │                     │                                │       │                                │          │           │                          │ Object System.Diagnostics.Proc   │
    │                     │                                │       │                                │          │           │                          │ essStartInfo;$s.FileName=$b;$s   │
    │                     │                                │       │                                │          │           │                          │ .Arguments='-noni -nop -w hidd   │
    │                     │                                │       │                                │          │           │                          │ en -c &([scriptblock]::create(   │
    │                     │                                │       │                                │          │           │                          │ (New-Object IO.StreamReader(Ne   │
    │                     │                                │       │                                │          │           │                          │ w-Object IO.Compression.GzipSt   │
    │                     │                                │       │                                │          │           │                          │ ream((New-Object IO.MemoryStre   │
    │                     │                                │       │                                │          │           │                          │ am(,[Convert]::FromBase64Strin   │
    │                     │                                │       │                                │          │           │                          │ g(''H4sIAIuvyFwCA7VW+2/aSBD+OZ   │
    │                     │                                │       │                                │          │           │                          │ H6P1...                          │
    │                     │                                │       │                                │          │           │                          │ (use --full to show all content) │
    │                     │                                │       │                                │          │           │                          │ EventType: SetValue              │
    │                     │                                │       │                                │          │           │                          │ Image: "C:\\Windows\\system32\   │
    │                     │                                │       │                                │          │           │                          │ \services.exe"                   │
    │                     │                                │       │                                │          │           │                          │ ProcessGuid: 365ABB72-2586-5CC   │
    │                     │                                │       │                                │          │           │                          │ 9-0000-0010DC530000              │
    │                     │                                │       │                                │          │           │                          │ ProcessId: 460                   │
    │                     │                                │       │                                │          │           │                          │ RuleName: ""                     │
    │                     │                                │       │                                │          │           │                          │ TargetObject: "HKLM\\System\\C   │
    │                     │                                │       │                                │          │           │                          │ urrentControlSet\\services\\he   │
    │                     │                                │       │                                │          │           │                          │ llo\\ImagePath"                  │
    │                     │                                │       │                                │          │           │                          │ UtcTime: "2019-04-30 20:26:51.   │
    │                     │                                │       │                                │          │           │                          │ 934"                             │
    ├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
    │ 2019-05-12 12:52:43 │ ‣ Meterpreter or Cobalt        │ 1     │ Service Control Manager        │ 7045     │ 10446     │ IEWIN7                   │ ---                              │
    │                     │ Strike Getsystem Service       │       │                                │          │           │                          │ AccountName: LocalSystem         │
    │                     │ Installation                   │       │                                │          │           │                          │ ImagePath: "%COMSPEC% /c ping    │
    │                     │                                │       │                                │          │           │                          │ -n 1 127.0.0.1 >nul && echo 'W   │
    │                     │                                │       │                                │          │           │                          │ inPwnage' > \\\\.\\pipe\\WinPw   │
    │                     │                                │       │                                │          │           │                          │ nagePipe"                        │
    │                     │                                │       │                                │          │           │                          │ ServiceName: WinPwnage           │
    │                     │                                │       │                                │          │           │                          │ ServiceType: user mode service   │
    │                     │                                │       │                                │          │           │                          │ StartType: demand start          │
    ├─────────────────────┼────────────────────────────────┼───────┼────────────────────────────────┼──────────┼───────────┼──────────────────────────┼──────────────────────────────────┤
    │ 2019-06-21 07:35:37 │ ‣ Dumpert Process Dumper       │ 1     │ Microsoft-Windows-Sysmon       │ 11       │ 238375    │ alice.insecurebank.local │ ---                              │
    │                     │                                │       │                                │          │           │                          │ CreationUtcTime: "2019-06-21 0   │
    │                     │                                │       │                                │          │           │                          │ 6:53:03.227"                     │
    │                     │                                │       │                                │          │           │                          │ Image: "C:\\Users\\administrat   │
    │                     │                                │       │                                │          │           │                          │ or\\Desktop\\x64\\Outflank-Dum   │
    │                     │                                │       │                                │          │           │                          │ pert.exe"                        │
    │                     │                                │       │                                │          │           │                          │ ProcessGuid: ECAD0485-88C9-5D0   │
    │                     │                                │       │                                │          │           │                          │ C-0000-0010348C1D00              │
    │                     │                                │       │                                │          │           │                          │ ProcessId: 3572                  │
    │                     │                                │       │                                │          │           │                          │ RuleName: ""                     │
    │                     │                                │       │                                │          │           │                          │ TargetFilename: "C:\\Windows\\   │
    │                     │                                │       │                                │          │           │                          │ Temp\\dumpert.dmp"               │
    │                     │                                │       │                                │          │           │                          │ UtcTime: "2019-06-21 07:35:37.   │
    │                     │                                │       │                                │          │           │                          │ 324"                             │
    └─────────────────────┴────────────────────────────────┴───────┴────────────────────────────────┴──────────┴───────────┴──────────────────────────┴──────────────────────────────────┘

Análise

Shimcache

root@kitploit:~
COMMAND:
    analyse shimcache                 Create an execution timeline from the shimcache with optional amcache enrichments

USAGE:
    chainsaw analyse shimcache [OPTIONS] <SHIMCACHE>

ARGUMENTS:
    <SHIMCACHE>                       The path to the shimcache artefact (SYSTEM registry file)

OPTIONS:
    -e, --regex <pattern>             A string or regular expression for detecting shimcache entries whose timestamp matches their insertion time
    -r, --regexfile <REGEX_FILE>      The path to a newline delimited file containing regex patterns for detecting shimcache entries whose timestamp matches their insertion time
    -o, --output <OUTPUT>             The path to output the result csv file
    -a, --amcache <AMCACHE>           The path to the amcache artefact (Amcache.hve) for timeline enrichment
    -p, --tspair                      Enable near timestamp pair detection between shimcache and amcache for finding additional insertion timestamps for shimcache entries
    -h, --help                        Print help
  • O ficheiro de exemplo de padrões para o parâmetro --regexfile está incluído em analysis/shimcache_patterns.txt.
  • Os padrões de regex são aplicados aos caminhos das entradas de shimcache convertidos para minúsculas.
Exemplos de Comando

Analise um artefacto de shimcache com os padrões de regex fornecidos e utilize o enriquecimento de amcache com a deteção de pares de timestamps próximos ativada. Envie a saída para um ficheiro csv.

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

Analise um artefacto de shimcache com os padrões de regex fornecidos (sem enriquecimento de amcache). Envie a saída para o terminal.

root@kitploit:~
./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt

Gaps (deteção de lacunas em logs de eventos)

Deteta dois indicadores de adulteração seletiva de logs de eventos dentro de um ou mais ficheiros .evtx:

  • Lacunas de RecordID: os valores de EventRecordID por canal normalmente aumentam de forma monotónica, sem lacunas. Uma lacuna dentro de um único ficheiro evtx (ou seja, que não seja uma fronteira de rotação de logs) é invulgar e é a impressão digital deixada por ferramentas que eliminam cirurgicamente registos individuais (por exemplo, técnicas do tipo Eventlogedit) sem acionar o ruidoso evento "log limpo" (EID 1102).

  • Lacunas de tempo: janelas de silêncio excecionalmente longas entre eventos consecutivos num canal normalmente movimentado podem indicar que os registos dentro dessa janela foram removidos. O limiar é configurável; a definição de uma linha de base por host fica a cargo 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

Exemplos de Comando

Analise um diretório de ficheiros evtx para detetar lacunas de RecordID e de tempo com o limiar predefinido de 30 minutos:

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

Procure apenas registos eliminados seletivamente (lacunas de RecordID) e emita JSON legível por máquina:

root@kitploit:~
./chainsaw analyse gaps ./Logs/ --no-time-gaps --json -o ./gaps.json

SRUM (Monitor de Utilização de Recursos do Sistema)

O analisador da base de dados SRUM implementado no Chainsaw difere de outros analisadores porque não depende de valores fixos sobre as tabelas. As informações são extraídas diretamente do hive SOFTWARE, que é um argumento obrigatório. O objetivo é evitar erros relacionados com tabelas desconhecidas.

root@kitploit:~
COMMAND:
    analyse srum                             Analyse the SRUM database

USAGE:
    chainsaw analyse srum [OPTIONS] --software <SOFTWARE_HIVE_PATH> <SRUM_PATH>

ARGUMENTS:
    <SRUM_PATH>                              The path to the SRUM database

OPTIONS:
    -s, --software <SOFTWARE_HIVE_PATH>      The path to the SOFTWARE hive
        --stats-only                         Only output details about the SRUM database
    -q                                       Suppress informational output
    -o, --output <OUTPUT>                    Save the output to a file
    -h, --help                               Print help
Exemplo de Comando

Analise a base de dados SRUM (o hive SOFTWARE é obrigatório)

root@kitploit:~
./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json
Saída
root@kitploit:~
$ ./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat -o ./output.json

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

Podem ser encontradas informações sobre os novos insights forenses relacionados a este artefato na wiki: https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.

Dumping

root@kitploit:~
USAGE:
    chainsaw dump [OPTIONS] <PATH>

ARGUMENTS:
    <PATH>                  The path to an artefact to dump

OPTIONS:
    -j, --json              Dump in json format
        --jsonl             Print the output in jsonl format
        --load-unknown      Allow chainsaw to try and load files it cannot identify
    -o, --output <OUTPUT>   A path to output results to
    -q                      Suppress informational output
        --skip-errors       Continue to hunt when an error is encountered
    -h, --help              Print help

Exemplo de comando

Faça o dump do hive SOFTWARE

root@kitploit:~
./chainsaw dump ./SOFTWARE.hve --json --output ./output.json

Agradecimentos

  • EVTX-ATTACK-SAMPLES por @SBousseaden
  • Sigma regras de detecção
  • Biblioteca EVTX parser por @OBenamram
  • Biblioteca TAU Engine por @AlexKornitzer
  • O recurso de análise de Shimcache foi desenvolvido como parte do projeto CC-Driver, financiado pelo Programa de Pesquisa e Inovação Horizon 2020 da União Europeia, sob o Acordo de Subvenção nº 883543
  • DFIRArtifactMuseum por Andrew Rathbun (@bunsofwrath12)
Baixar ferramenta
Tipo de EventoID do Evento
Criação de Processos (Sysmon)1
Ligações de Rede (Sysmon)3
Carregamentos de Imagens (Sysmon)7
Criação de Ficheiros (Sysmon)11
Eventos de Registo (Sysmon)13
Blocos de Script do PowerShell4104
Criação de Processos4688
Criação de Tarefas Agendadas4698
Criação de Serviços7045