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

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

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

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

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

Категории

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

chainsaw

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

Репозиторий
3.6k30116 дней назадПроверено Kitploit

Популярное

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

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

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

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

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

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


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

Возможности

  • 🎯 Охота за угрозами с использованием правил обнаружения Sigma и пользовательских правил обнаружения Chainsaw
  • 🔍 Поиск и извлечение криминалистических артефактов по строковым совпадениям и regex-шаблонам
  • 📅 Создание временных шкал выполнения путём анализа артефактов 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 (системный монитор использования ресурсов)
      • Пробелы (обнаружение пропусков в журналах событий)
    • Выгрузка
  • Благодарности

Расширенную информацию можно найти в Wiki этого инструмента: https://github.com/WithSecureLabs/chainsaw/wiki

Почему Chainsaw?

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

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

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

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

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

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

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

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

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

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

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

Краткое руководство по началу работы

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

Начиная с выпуска 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:~
However, if you want to build chainsaw yourself, using Nix, you can once again utilize `flake.nix`, which is provided with this repository. 
To build the binary, please run the following, in the root dir of cloned repo```
nix build .#

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

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

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

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

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

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

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

Если вы всё ещё хотите использовать версию 1 Chainsaw, вы можете найти скомпилированные бинарные файлы в разделе релизов или получить доступ к исходному коду в ветке 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 с соответствующим regex-шаблоном, вывод в формате 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), не вызывая шумного события "log cleared" (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 (монитор использования системных ресурсов)

Анализатор базы данных SRUM, реализованный в Chainsaw, отличается от других анализаторов тем, что не полагается на жёстко заданные значения таблиц. Информация извлекается напрямую из куста 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"
Криминалистические сведения

Информация о новых криминалистических возможностях, связанных с этим артефактом, доступна в вики: https://github.com/WithSecureLabs/chainsaw/wiki/SRUM-Analysis.

Дамп

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

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

Выполнить дамп куста SOFTWARE

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

Благодарности

  • EVTX-ATTACK-SAMPLES от @SBousseaden
  • Sigma правила обнаружения
  • EVTX parser библиотека от @OBenamram
  • TAU Engine библиотека от @AlexKornitzer
  • Функция анализа Shimcache разработана в рамках проекта CC-Driver, финансируемого Европейской программой исследований и инноваций Horizon 2020 в соответствии с Соглашением о гранте № 883543
  • DFIRArtifactMuseum от Andrew Rathbun (@bunsofwrath12)
Скачать инструмент
Тип событияИдентификатор события
Создание процесса (Sysmon)1
Сетевые подключения (Sysmon)3
Загрузка образов (Sysmon)7
Создание файла (Sysmon)11
События реестра (Sysmon)13
Скрипт-блоки PowerShell4104
Создание процесса4688
Создание запланированной задачи4698
Создание службы7045