Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
chainsaw — Schnell Windows-Forensik-Artefakte durchsuchen und aufspüren | Kitploit
Tools/GitHubGitHub/withsecurelabs/chainsaw
DefensivwerkzeugeForensikDigitale ForensikEinbruchserkennungIncident ResponseLog-Analyse
GitHubwithsecurelabs/chainsaw

chainsaw

Schnell Windows-Forensik-Artefakte durchsuchen und aufspüren

Repository anzeigen
3.6k301vor 3 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Schnelles Suchen und Jagen durch Windows-Forensik-Artefakte


Chainsaw bietet eine leistungsstarke „First-Response“-Fähigkeit, um Bedrohungen in Windows-Forensik-Artefakten wie Ereignisprotokollen und der MFT-Datei schnell zu identifizieren. Chainsaw bietet eine generische und schnelle Methode zum Durchsuchen von Ereignisprotokollen nach Schlüsselwörtern und zur Identifizierung von Bedrohungen mithilfe integrierter Unterstützung für Sigma-Erkennungsregeln sowie über benutzerdefinierte Chainsaw-Erkennungsregeln.

Funktionen

  • 🎯 Jagen Sie nach Bedrohungen mithilfe von Sigma-Erkennungsregeln und benutzerdefinierten Chainsaw-Erkennungsregeln
  • 🔍 Suchen und extrahieren Sie Forensik-Artefakte durch String-Abgleich und Regex-Muster
  • 📅 Erstellen Sie Ausführungszeitlinien durch die Analyse von Shimcache-Artefakten und deren Anreicherung mit Amcache-Daten
  • 💡 Analysieren Sie die SRUM-Datenbank und liefern Sie Erkenntnisse darüber
  • ⬇️ Dumpen Sie den Rohinhalt von Forensik-Artefakten (MFT, Registry-Hives, ESE-Datenbanken)
  • ⚡ Blitzschnell, in Rust geschrieben, basierend auf der EVTX-Parser-Bibliothek von @OBenamram
  • 🪶 Saubere und schlanke Ausführungs- und Ausgabeformate ohne unnötigen Ballast
  • 🔥 Dokument-Tagging (Erkennungslogik-Abgleich) bereitgestellt durch die TAU Engine-Bibliothek
  • 📑 Ausgabe der Ergebnisse in verschiedenen Formaten, z. B. ASCII-Tabellenformat, CSV-Format und JSON-Format
  • 💻 Läuft auf MacOS, Linux und Windows

Inhaltsverzeichnis

  • Funktionen
  • Warum Chainsaw?
  • Jagdlogik für Windows-Ereignisprotokolle
  • Schnellstartanleitung
    • Herunterladen und Ausführen
    • Installieren/Bauen mit Nix
    • EDR- und AV-Warnungen
    • Was hat sich in Chainsaw v2 geändert
  • Beispiele
    • Suchen
    • Jagen
    • Analyse
      • Shimcache
      • SRUM (System Resource Usage Monitor)
      • Lücken (Ereignisprotokoll-Lückenerkennung)
    • Dumpen
  • Danksagungen

Erweiterte Informationen finden Sie im Wiki für dieses Tool: https://github.com/WithSecureLabs/chainsaw/wiki

Warum Chainsaw?

Bei WithSecure Countercept erfassen wir ein breites Spektrum an Telemetriequellen von Endpunkten über unseren EDR-Agenten, um unseren verwalteten Erkennungs- und Reaktionsdienst bereitzustellen. Es gibt jedoch Umstände, unter denen wir Forensik-Artefakte schnell analysieren müssen, die nicht von unserem EDR erfasst wurden – ein häufiges Beispiel sind Incident-Response-Untersuchungen in einer Umgebung, in der unser EDR zum Zeitpunkt der Kompromittierung nicht installiert war. Chainsaw wurde entwickelt, um unseren Threat Hunter und Incident-Response-Beratern ein Werkzeug zu bieten, mit dem sie Forensik-Artefakte unter diesen Umständen schnell triagieren können.

Windows-Ereignisprotokolle

Windows-Ereignisprotokolle bieten eine reichhaltige forensische Informationsquelle für Threat Hunting und Incident-Response-Untersuchungen. Leider kann die Verarbeitung und Durchsuchung von Ereignisprotokollen ein langsamer und zeitaufwändiger Prozess sein, der in den meisten Fällen den Overhead der umgebenden Infrastruktur erfordert – wie etwa einen ELK-Stack oder eine Splunk-Instanz – um effizient durch die Protokolldaten zu jagen und Erkennungslogik anzuwenden. Dieser Overhead bedeutet oft, dass Blue Teams nicht in der Lage sind, Windows-Ereignisprotokolle schnell zu triagieren, um die Richtung und Schlussfolgerungen zu liefern, die für die Weiterführung ihrer Untersuchungen erforderlich sind. Chainsaw löst dieses Problem, da es das schnelle Suchen und Jagen durch Windows-Ereignisprotokolle ermöglicht.

Zum Zeitpunkt der Erstellung dieses Textes gibt es nur sehr wenige Open-Source-Standalone-Tools, die eine einfache und schnelle Methode zum Triagieren von Windows-Ereignisprotokollen bieten, interessante Elemente innerhalb der Protokolle identifizieren und ein Erkennungslogik-Regelformat (wie Sigma) anwenden, um Anzeichen böswilliger Aktivität zu erkennen. In unseren Tests hatten die vorhandenen Tools Schwierigkeiten, Erkennungslogik effizient auf große Mengen von Ereignisprotokollen anzuwenden, was sie für Szenarien ungeeignet macht, in denen eine schnelle Triage erforderlich ist.

Jagdlogik für Windows-Ereignisprotokolle

Sigma-Regelabgleich

Mit den Parametern --sigma und --mapping können Sie ein Verzeichnis angeben, das eine Teilmenge von SIGMA-Erkennungsregeln enthält (oder einfach das gesamte SIGMA-Git-Repo), und Chainsaw lädt, konvertiert und führt diese Regeln automatisch gegen die bereitgestellten Ereignisprotokolle aus. Die Mapping-Datei teilt Chainsaw mit, welche Felder in den Ereignisprotokollen für den Regelabgleich verwendet werden sollen. Standardmäßig unterstützt Chainsaw eine breite Palette von Ereignisprotokolltypen, einschließlich, aber nicht beschränkt auf:

Siehe die Mapping-Datei für die vollständige Liste der Felder, die für die Regelerkennung verwendet werden, und erweitern Sie diese bei Bedarf gerne.

Chainsaw-Erkennungsregeln

Zusätzlich zur Unterstützung von Sigma-Regeln unterstützt Chainsaw auch ein benutzerdefiniertes Regelformat. Im Repository finden Sie ein rules-Verzeichnis, das verschiedene Chainsaw-Regeln enthält, die es Benutzern ermöglichen:

  1. Windows Defender-, F-Secure-, Sophos- und Kaspersky-AV-Warnungen zu extrahieren und zu parsen
  2. Das Löschen wichtiger Ereignisprotokolle oder das Stoppen des Ereignisprotokolldienstes zu erkennen
  3. Benutzer, die erstellt oder zu sensiblen Benutzergruppen hinzugefügt werden
  4. Remote-Anmeldungen (Dienst, RDP, Netzwerk usw.) Ereignisse. Dies hilft Hunter, Quellen lateraler Bewegung zu identifizieren
  5. Brute-Force von lokalen Benutzerkonten

Schnellstartanleitung

Herunterladen und Ausführen

Mit der Veröffentlichung von Chainsaw v2 haben wir beschlossen, die Sigma-Rules- und EVTX-Attack-Samples-Repositories nicht mehr als Submodule von Chainsaw einzubinden. Wir empfehlen, diese Repositories separat zu klonen, um sicherzustellen, dass Sie die neuesten Versionen haben.

Wenn Sie weiterhin ein All-in-One-Paket benötigen, das die Chainsaw-Binärdatei, Sigma-Regeln und Beispiel-Ereignisprotokolle enthält, können Sie es aus dem Bereich „Releases“ dieses GitHub-Repos herunterladen. In diesem Release-Bereich finden Sie auch vorkompilierte Binärdateien von Chainsaw für verschiedene Plattformen und Architekturen.

Wenn Sie Chainsaw selbst kompilieren möchten, können Sie das Chainsaw-Repo klonen:

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

und den Code selbst kompilieren, indem Sie cargo build --release ausführen. Sobald der Build abgeschlossen ist, finden Sie eine Kopie der kompilierten Binärdatei im Ordner target/release.

Stellen Sie sicher, dass Sie mit dem Flag --release bauen, da dies eine erheblich schnellere Ausführungszeit gewährleistet.

Wenn Sie schnell sehen möchten, wie Chainsaw bei der Ausführung aussieht, können Sie die Repositories Sigma Rules und EVTX-Attack-Samples klonen:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git

root@kitploit:~
und führen Sie dann Chainsaw mit den untenstehenden Parametern aus:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml

Installieren/Bauen mit 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 ist als Paket über [nixpkgs](https://search.nixos.org/packages?query=chainsaw) verfügbar.
Wenn du NixOS verwendest, füge einfach `chainsaw` zu deiner Systemkonfigurationsdatei hinzu.

Wenn du jedoch kein NixOS verwendest, kannst du Chainsaw trotzdem über Nix installieren. Der empfohlene Weg ist über `nix-shell`, was deine $PATH-Umgebungsvariable vorübergehend ändert.
Führe dazu bitte Folgendes aus:```
nix-shell -p chainsaw

Sie können auch die Tatsache nutzen, dass dieses Repo ein Flake ist, und Folgendes ausführen:``` nix profile install github:WithSecureLabs/chainsaw

root@kitploit:~
Wenn du chainsaw jedoch selbst mit Nix bauen möchtest, kannst du erneut die `flake.nix` verwenden, die mit diesem Repository bereitgestellt wird.
Um die Binärdatei zu bauen, führe bitte Folgendes im Stammverzeichnis des geklonten Repos aus```
nix build .#

This will create ./result directory, with chainsaw binary located under ./result/bin/chainsaw.

EDR- und AV-Warnungen

Beim Herunterladen und Ausführen von Chainsaw kann es vorkommen, dass Ihre lokale EDR-/Antiviren-Engine Chainsaw als schädlich einstuft. Beispiele hierfür finden Sie in den folgenden GitHub-Issues: Beispiel1, Beispiel2.

Diese Warnungen sind in der Regel auf die Beispiel-Ereignisprotokolle und/oder Sigma-Regeln zurückzuführen, die Verweise auf schädliche Zeichenfolgen (z. B. „mimikatz") enthalten. Wir haben auch Fälle gesehen, in denen die Chainsaw-Binärdatei von einer kleinen Teilmenge von Antiviren-Engines erkannt wurde, vermutlich aufgrund einer Form der heuristischen Erkennung.

Was hat sich in Chainsaw v2 geändert?

Im Juli 2022 haben wir Version 2 von Chainsaw veröffentlicht, die eine grundlegende Überarbeitung der Funktionsweise von Chainsaw darstellt. Chainsaw v2 enthält mehrere bedeutende Verbesserungen, darunter die folgende Liste der Highlights:

  • Ein verbesserter Ansatz zum Mapping von Sigma-Regeln, der zu einer deutlichen Erhöhung der Anzahl unterstützter Chainsaw-Regeln und Ereignisprotokoll-Ereignistypen führt.
  • Verbesserte CLI-Ausgabe, die eine Momentaufnahme aller Ereignisdaten für Ereignisprotokolle mit Erkennungen anzeigt.
  • Unterstützung für das Laden und Parsen von Ereignisprotokollen im JSON- und XML-Format.
  • Sauberere und einfachere Befehlszeilenargumente für die Funktionen Hunt und Search.
  • Zusätzliche optionale Ausgabeinformationen wie Regelautor, Regelstatus, Regelstufe usw.
  • Die Möglichkeit, geladene Regeln nach Status, Art und Schweregrad zu filtern.
  • Integrierte Chainsaw-Erkennungsregeln wurden in dedizierte Chainsaw-Regeldateien aufgeteilt.
  • Eine Bereinigung und Neufassung des Chainsaw-Codes, um die Lesbarkeit zu verbessern und den Aufwand für Community-Beiträge zu verringern.

Wenn Sie weiterhin Version 1 von Chainsaw verwenden möchten, finden Sie kompilierte Binärdateien im Releases-Bereich, oder Sie können auf den Quellcode im v1.x.x-Zweig zugreifen. Bitte beachten Sie, dass Chainsaw v1 nicht mehr gewartet wird und alle Benutzer auf Chainsaw v2 umsteigen sollten.

Ein riesiges Dankeschön an @AlexKornitzer, dem es gelungen ist, die Codebasis des „Christmas Project" von Chainsaw v1 in v2 in ein ausgefeiltes Produkt zu verwandeln.

Beispiele

Suchen

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

Befehlsbeispiele

Durchsucht alle .evtx-Dateien nach der Groß-/Kleinschreibung ignorierenden Zeichenfolge „mimikatz"

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

*Durchsucht alle .evtx-Dateien nach PowerShell-Skriptblock-Ereignissen (Event-ID 4014)

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

Durchsucht ein bestimmtes EVTX-Protokoll nach Anmeldeereignissen mit einem passenden Regex-Muster und gibt die Ausgabe im JSON-Format aus

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

Jagen

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

Befehlsbeispiele

Jagt durch alle EVTX-Dateien mithilfe von Sigma-Regeln für Erkennungslogik

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

Jagt durch alle EVTX-Dateien mit Sigma-Regeln und Chainsaw-Regeln für Erkennungslogik und gibt die Ausgabe im CSV-Format im Ordner results aus

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

Jagt durch alle EVTX-Dateien mithilfe von Sigma-Regeln für Erkennungslogik, durchsucht nur einen bestimmten Zeitraum und gibt die Ergebnisse im JSON-Format aus

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

Ausgabe

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"                             │
    └─────────────────────┴────────────────────────────────┴───────┴────────────────────────────────┴──────────┴───────────┴──────────────────────────┴──────────────────────────────────┘

Analysieren

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
  • Eine Beispieldatei mit Mustern für den --regexfile-Parameter ist in analysis/shimcache_patterns.txt enthalten.
  • Regex-Muster werden auf Pfade in Shimcache-Einträgen abgeglichen, die in Kleinbuchstaben umgewandelt wurden.
Befehlsbeispiele

Analysiere ein Shimcache-Artefakt mit den bereitgestellten Regex-Mustern und nutze die Amcache-Anreicherung mit aktivierter Erkennung nahezu zeitgleicher Paare. Ausgabe in eine CSV-Datei.

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

Analysiere ein Shimcache-Artefakt mit den bereitgestellten Regex-Mustern (ohne Amcache-Anreicherung). Ausgabe im Terminal.

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

Gaps (Erkennung von Lücken im Ereignisprotokoll)

Erkennt zwei Indikatoren für eine selektive Manipulation des Ereignisprotokolls in einer oder mehreren .evtx-Dateien:

  • RecordID-Lücken: Die EventRecordID-Werte pro Kanal sind normalerweise monoton steigend und weisen keine Lücken auf. Ein Loch innerhalb einer einzelnen EVTX-Datei (d. h. keine Protokollrotationsgrenze) ist ungewöhnlich und ist der Fingerabdruck, den Werkzeuge hinterlassen, die einzelne Datensätze chirurgisch löschen (z. B. Techniken im Stil von Eventlogedit), ohne das laute Ereignis „Protokoll gelöscht“ (EID 1102) auszulösen.

  • Zeitlücken: Unerwartet lange ruhige Fenster zwischen aufeinanderfolgenden Ereignissen in einem normalerweise aktiven Kanal können darauf hindeuten, dass Datensätze in diesem Fenster entfernt wurden. Der Schwellenwert ist konfigurierbar; die Erstellung einer Basislinie pro Host bleibt dem Analysten überlassen.

    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

Befehlsbeispiele

Durchsuche ein Verzeichnis mit EVTX-Dateien sowohl nach RecordID- als auch nach Zeitlücken mit dem standardmäßigen 30-Minuten-Schwellenwert:

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

Suche nur nach selektiv gelöschten Datensätzen (RecordID-Lücken) und gib maschinenlesbares JSON aus:

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

SRUM (System Resource Usage Monitor)

Der in Chainsaw implementierte SRUM-Datenbank-Parser unterscheidet sich von anderen Parsern dadurch, dass er sich nicht auf fest codierte Werte über die Tabellen verlässt. Die Informationen werden direkt aus der SOFTWARE-Hive extrahiert, die ein Pflichtargument ist. Ziel ist es, Fehler im Zusammenhang mit unbekannten Tabellen zu vermeiden.

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
Befehlsbeispiel

Analysiere die SRUM-Datenbank (die SOFTWARE-Hive ist obligatorisch)

root@kitploit:~
./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json
Ausgabe
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"
Forensische Erkenntnisse

Informationen zu den neuen forensischen Erkenntnissen zu diesem Artefakt finden Sie im Wiki: https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.

Dumpen

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

Befehlsbeispiel

Den SOFTWARE-Hive dumpen

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

Danksagungen

  • EVTX-ATTACK-SAMPLES von @SBousseaden
  • Sigma Erkennungsregeln
  • EVTX parser Bibliothek von @OBenamram
  • TAU Engine Bibliothek von @AlexKornitzer
  • Die Shimcache-Analysefunktion wurde als Teil des Projekts CC-Driver entwickelt, das im Rahmen des Forschungs- und Innovationsprogramms Horizont 2020 der Europäischen Union unter der Finanzhilfevereinbarung Nr. 883543 gefördert wurde.
  • DFIRArtifactMuseum von Andrew Rathbun (@bunsofwrath12)
root@kitploit:~
Tool herunterladen
EreignistypEreignis-ID
Prozesserstellung (Sysmon)1
Netzwerkverbindungen (Sysmon)3
Bildladungen (Sysmon)7
Dateierstellung (Sysmon)11
Registry-Ereignisse (Sysmon)13
PowerShell-Skriptblöcke4104
Prozesserstellung4688
Geplante Aufgabenerstellung4698
Diensterstellung7045