Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
chainsaw — Быстрый поиск и анализ артефактов криминалистики Windows | Kitploit
Инструменты/GitHubGitHub/withsecureopensource/chainsaw
Оборонительные ИнструментыАнализ уязвимостейФорензикаЦифровая криминалистикаРазведка угрозРеагирование на ИнцидентыАнализ Журналов
GitHubwithsecureopensource/chainsaw

chainsaw

Быстрый поиск и анализ артефактов криминалистики Windows

Репозиторий
3.7k305418 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Быстрый поиск и охота за артефактами криминалистики Windows


Chainsaw предоставляет мощную возможность «первого реагирования» для быстрого выявления угроз в артефактах криминалистики Windows, таких как журналы событий и файл MFT. Chainsaw предлагает универсальный и быстрый метод поиска по журналам событий по ключевым словам, а также выявление угроз с использованием встроенной поддержки правил обнаружения Sigma и пользовательских правил обнаружения Chainsaw.

Возможности

  • 🎯 Охота за угрозами с использованием правил обнаружения Sigma и пользовательских правил обнаружения Chainsaw
  • 🔍 Поиск и извлечение артефактов криминалистики с помощью сопоставления строк и шаблонов регулярных выражений
  • 📅 Создание временных шкал выполнения путём анализа артефактов Shimcache и их обогащения данными Amcache
  • 💡 Анализ базы данных SRUM и предоставление сведений о ней
  • ⬇️ Дамп необработанного содержимого артефактов криминалистики (MFT, кусты реестра, базы данных ESE)
  • ⚡ Молниеносная скорость, написан на rust, обёртка библиотеки EVTX parser от @OBenamram
  • 🪶 Чистые и лёгкие форматы выполнения и вывода без лишней нагрузки
  • 🔥 Тегирование документов (сопоставление логики обнаружения) обеспечивается библиотекой TAU Engine
  • 📑 Вывод результатов в различных форматах, таких как таблица ASCII, формат CSV и формат JSON
  • 💻 Может работать на MacOS, Linux и Windows

  • Содержание

    • Возможности
    • Почему Chainsaw?
    • Логика охоты для журналов событий Windows
    • Краткое руководство
      • Загрузка и запуск
      • Установка/сборка с Nix
      • Предупреждения EDR и AV
      • Что изменилось в Chainsaw v2
    • Примеры
      • Поиск
      • Охота
      • Анализ
        • Shimcache
        • SRUM (System Resource Usage Monitor)
        • Gaps (обнаружение пробелов в журнале событий)
      • Дамп
    • Благодарности

    Дополнительную информацию можно найти в Wiki для этого инструмента: https://github.com/WithSecureLabs/chainsaw/wiki

    Почему Chainsaw?

    В WithSecure Countercept мы получаем широкий спектр источников телеметрии с конечных точек через нашего EDR-агента для предоставления услуги управляемого обнаружения и реагирования. Однако бывают обстоятельства, когда нам нужно быстро проанализировать артефакты криминалистики, которые не были захвачены нашим EDR; распространённый пример — расследования реагирования на инциденты в инфраструктуре, где наш EDR не был установлен на момент компрометации. Chainsaw был создан, чтобы предоставить нашим охотникам за угрозами и консультантам по реагированию на инциденты инструмент для быстрой сортировки артефактов криминалистики в таких обстоятельствах.

    Журналы событий Windows

    Журналы событий Windows являются богатым источником криминалистической информации для охоты за угрозами и расследований реагирования на инциденты. К сожалению, обработка и поиск по журналам событий могут быть медленным и трудоёмким процессом, и в большинстве случаев требуют накладных расходов на окружающую инфраструктуру — такую как стек ELK или экземпляр Splunk — для эффективной охоты по данным журналов и применения логики обнаружения. Эти накладные расходы часто означают, что blue teams не могут быстро провести сортировку журналов событий Windows, чтобы обеспечить направление и выводы, необходимые для продвижения их расследований. Chainsaw решает эту проблему, поскольку позволяет быстро искать и охотиться по журналам событий Windows.

    На момент написания существует очень мало открытых автономных инструментов, которые предоставляют простой и быстрый метод сортировки журналов событий Windows, выявления интересных элементов в журналах и применения формата правил логики обнаружения (такого как Sigma) для обнаружения признаков вредоносной активности. В наших тестах существовавшие инструменты с трудом справлялись с эффективным применением логики обнаружения к большим объёмам журналов событий, что делало их непригодными для сценариев, где требуется быстрая сортировка.

    Логика охоты для журналов событий Windows

    Сопоставление правил Sigma

    Используя параметры --sigma и --mapping, вы можете указать каталог, содержащий подмножество правил обнаружения SIGMA (или просто весь git-репозиторий SIGMA), и chainsaw автоматически загрузит, преобразует и запустит эти правила против предоставленных журналов событий. Файл сопоставления сообщает chainsaw, какие поля в журналах событий использовать для сопоставления правил. По умолчанию Chainsaw поддерживает широкий спектр типов журналов событий, включая, но не ограничиваясь:

    Тип событияID события
    Создание процесса (Sysmon)1
    Сетевые подключения (Sysmon)3
    Загрузка образов (Sysmon)7
    Создание файла (Sysmon)11
    События реестра (Sysmon)13
    Блоки скриптов Powershell4104
    Создание процесса4688
    Создание запланированной задачи4698
    Создание службы7045

    См. файл сопоставления для полного списка полей, используемых для обнаружения правил, и не стесняйтесь расширять его под свои нужды.

    Правила обнаружения Chainsaw

    В дополнение к поддержке правил sigma, Chainsaw также поддерживает пользовательский формат правил. В репозитории вы найдёте каталог rules, содержащий различные правила Chainsaw, которые позволяют пользователям:

    1. Извлекать и анализировать оповещения Windows Defender, F-Secure, Sophos и Kaspersky AV
    2. Обнаруживать очистку ключевых журналов событий или остановку службы журнала событий
    3. Создание пользователей или добавление их в чувствительные группы пользователей
    4. События удалённых входов (Service, RDP, Network и т. д.). Это помогает охотникам выявлять источники бокового перемещения
    5. Брутфорс локальных учётных записей пользователей

    Краткое руководство

    Загрузка и запуск

    С выпуском Chainsaw v2 мы решили больше не включать репозитории Sigma Rules и EVTX-Attack-Samples в качестве подмодулей Chainsaw. Мы рекомендуем клонировать эти репозитории отдельно, чтобы убедиться, что у вас последние версии.

    Если вам всё ещё нужен универсальный пакет, содержащий бинарный файл Chainsaw, правила Sigma и примеры журналов событий, вы можете скачать его из раздела релизов этого GitHub-репозитория. В этом разделе релизов вы также найдёте предварительно скомпилированные версии Chainsaw только в виде бинарных файлов для различных платформ и архитектур.

    Если вы хотите скомпилировать Chainsaw самостоятельно, вы можете клонировать репозиторий Chainsaw:

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

    и скомпилировать код самостоятельно, выполнив: cargo build --release. После завершения сборки вы найдёте копию скомпилированного бинарного файла в папке target/release.

    Обязательно собирайте с флагом --release, так как это обеспечит значительно более быстрое время выполнения.

    Если вы хотите быстро увидеть, как выглядит Chainsaw при запуске, вы можете клонировать репозитории Sigma Rules и EVTX-Attack-Samples:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git

    root@kitploit:~
    а затем запустите Chainsaw со следующими параметрами:```
    ./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
    

    Установка/сборка с помощью 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 как пакет доступен через [nixpkgs](https://search.nixos.org/packages?query=chainsaw).
    Если вы используете NixOS, просто добавьте `chainsaw` в файл конфигурации вашей системы.
    
    Однако, если вы не используете NixOS, вы всё равно можете установить Chainsaw через Nix. Рекомендуемый способ — через `nix-shell`, который временно изменит вашу переменную окружения $PATH.
    Для этого выполните следующее:```
    nix-shell -p chainsaw
    

    Вы также можете воспользоваться тем фактом, что этот репозиторий является flake, и выполнить следующую команду:``` nix profile install github:WithSecureLabs/chainsaw

    root@kitploit:~
    Однако, если вы хотите собрать chainsaw самостоятельно, используя Nix, вы снова можете воспользоваться `flake.nix`, который предоставляется вместе с этим репозиторием.
    Чтобы собрать бинарный файл, выполните следующую команду в корневом каталоге клонированного репозитория```
    nix build .#
    

    Это создаст каталог ./result с бинарным файлом chainsaw, расположенным по пути ./result/bin/chainsaw.

    Предупреждения EDR и AV

    При загрузке и запуске chainsaw вы можете обнаружить, что ваш локальный EDR / антивирусный движок определяет Chainsaw как вредоносное ПО. Примеры этого можно увидеть в следующих issue на GitHub: Пример1, Пример2.

    Эти предупреждения обычно связаны с примерами журналов событий и/или правилами Sigma, которые содержат ссылки на вредоносные строки (например, "mimikatz"). Мы также наблюдали случаи, когда бинарный файл Chainsaw определялся небольшой частью антивирусных движков, вероятно, из-за некоторой формы эвристического обнаружения.

    Что изменилось в Chainsaw v2?

    В июле 2022 года мы выпустили версию 2 Chainsaw, которая представляет собой серьёзную переработку принципов работы Chainsaw. Chainsaw v2 содержит несколько значительных улучшений, включая следующий список основных моментов:

    • Улучшенный подход к сопоставлению правил Sigma, что приводит к значительному увеличению числа поддерживаемых правил Chainsaw и типов событий журнала событий.
    • Улучшенный вывод CLI, который показывает снимок всех данных событий для журналов событий, содержащих обнаружения.
    • Поддержка загрузки и разбора журналов событий как в формате JSON, так и в формате XML.
    • Более чистые и простые аргументы командной строки для функций Hunt и Search.
    • Дополнительная необязательная выходная информация, такая как автор правила, статус правила, уровень правила и т. д.
    • Возможность фильтровать загруженные правила по статусу, виду и уровню серьёзности.
    • Встроенные правила обнаружения Chainsaw были выделены в отдельные файлы правил Chainsaw
    • Чистка и переписывание кода Chainsaw для улучшения читаемости и снижения накладных расходов для вкладов сообщества.

    Если вы всё ещё хотите использовать версию 1 Chainsaw, вы можете найти скомпилированные бинарные файлы в разделе releases или получить доступ к исходному коду в ветке v1.x.x. Обратите внимание, что Chainsaw v1 больше не поддерживается, и всем пользователям следует перейти на Chainsaw v2.

    Огромная благодарность @AlexKornitzer, который смог превратить кодовую базу "Christmas Project" Chainsaw v1 в отточенный продукт в v2.

    Примеры

    Поиск

    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
    

    Примеры команд

    Поиск во всех файлах .evtx строки "mimikatz" без учёта регистра

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

    *Поиск во всех файлах .evtx событий блоков сценариев powershell (Event ID 4014)

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

    Поиск в конкретном журнале evtx событий входа в систему с соответствующим шаблоном регулярного выражения, вывод в формате JSON

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

    Охота

    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
    

    Примеры команд

    Охота во всех файлах evtx с использованием правил Sigma для логики обнаружения

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

    Охота во всех файлах evtx с использованием правил Sigma и правил Chainsaw для логики обнаружения и вывод в формате CSV в папку results

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

    Охота во всех файлах evtx с использованием правил Sigma для логики обнаружения, поиск только между определёнными временными метками и вывод результатов в формате 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
    

    Вывод

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

    Анализ

    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
    
    • Пример файла шаблонов для параметра --regexfile включён в analysis/shimcache_patterns.txt.
    • Regex-шаблоны сопоставляются с путями в записях shimcache, приведёнными к нижнему регистру.
    Примеры команд

    Проанализировать артефакт shimcache с предоставленными regex-шаблонами и использовать обогащение данными amcache с включённым обнаружением близких пар временных меток. Вывод в csv-файл.

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

    Проанализировать артефакт shimcache с предоставленными regex-шаблонами (без обогащения данными amcache). Вывод в терминал.

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

    Gaps (обнаружение пропусков в журналах событий)

    Обнаруживает два индикатора выборочной подмены журналов событий внутри одного или нескольких файлов .evtx:

    • Пропуски RecordID: значения EventRecordID для каждого канала обычно монотонно возрастают без пропусков. Пропуск внутри одного evtx-файла (т. е. не на границе ротации журнала) является необычным и представляет собой отпечаток, оставляемый инструментами, которые точечно удаляют отдельные записи (например, техники в стиле Eventlogedit), не вызывая шумного события «журнал очищен» (EID 1102).

    • Временные пропуски: неожиданно длительные периоды тишины между последовательными событиями в обычно активном канале могут указывать на то, что записи внутри этого окна были удалены. Порог настраивается; базовое профилирование для каждого хоста остаётся на усмотрение аналитика.

      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

    Примеры команд

    Просканировать каталог evtx-файлов на наличие пропусков RecordID и временных пропусков с порогом по умолчанию 30 минут:

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

    Искать только выборочно удалённые записи (пропуски RecordID) и выводить машиночитаемый JSON:

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

    SRUM (System Resource Usage Monitor)

    Реализованный в Chainsaw парсер базы данных SRUM отличается от других парсеров тем, что не полагается на жёстко заданные значения таблиц. Информация извлекается непосредственно из куста SOFTWARE, который является обязательным аргументом. Цель — избежать ошибок, связанных с неизвестными таблицами.

    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
    
    Пример команды

    Проанализировать базу данных SRUM (куст SOFTWARE обязателен)

    root@kitploit:~
    ./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json
    
    Вывод
    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"
    
    Forensic insights

    Информацию о новых криминалистических выводах, связанных с этим артефактом, можно найти в вики: 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
    

    Command Example

    Dump the SOFTWARE hive

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

    Acknowledgements

    • EVTX-ATTACK-SAMPLES by @SBousseaden
    • Sigma detection rules
    • EVTX parser library by @OBenamram
    • TAU Engine Library by @AlexKornitzer
    • Shimcache analysis feature developed as a part of CC-Driver project, funded by the European Union’s Horizon 2020 Research and Innovation Programme under Grant Agreement No. 883543
    • DFIRArtifactMuseum by Andrew Rathbun (@bunsofwrath12)
    Скачать инструмент