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

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

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

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

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

Категории

Все категории
Loading categories
Winstrument — Winstrument is a framework of modular scripts to aid in instrumenting Windows software using Frida for reverse engineering and attack surface analysis. | Kitploit
Инструменты/GitHubGitHub/nccgroup/winstrument
Vulnerability AnalysisDynamic Code Analysis (DAST)Reverse EngineeringBinary Analysis
GitHubnccgroup/winstrument

Winstrument

Winstrument is a framework of modular scripts to aid in instrumenting Windows software using Frida for reverse engineering and attack surface analysis.

Репозиторий
6896 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Winstrument

Winstrument — это фреймворк модульных скриптов для инструментирования Windows-программ с помощью Frida с целью реверс-инжиниринга и анализа поверхности атаки.

Содержание

  • Установка
  • Использование
  • Структура проекта
  • Модули
  • CLI
  • Устранение неполадок
  • Авторские права

Установка

Проект поддерживает Python 3.7. Если у вас уже установлены Python и pip, просто выполните:

root@kitploit:~
pip install winstrument

а затем для запуска программы выполните:

root@kitploit:~
winstrument

Обратите внимание, что инструмент пока является экспериментальным и иногда может зависать или иметь другие проблемы со стабильностью.

В некоторых случаях, например при чистой установке Windows 10, при установке Frida через pip может возникнуть ошибка SSL. Если это произошло, см. раздел Устранение неполадок ниже.

Использование

Чтобы запустить REPL winstrument, просто выполните команду winstrument. Вот краткий пример инструментирования notepad.exe с помощью модуля registry. Полную информацию о доступных командах CLI см. в разделе CLI ниже.

root@kitploit:~
PS C:\winstrument> winstrument
> set target C:\Windows\System32\notepad.exe
> use registry
> run
Spawned 1144
instrumented process with pid: 1144 and path: C:\Windows\System32\notepad.exe

<User closes notepad from GUI>

detached from 1144 for reason process-terminated
> show registry
module    time               target                           function          hkey                subkey                                                                       value
--------  -----------------  -------------------------------  ----------------  ------------------  ---------------------------------------------------------------------------  ---------------------------------
registry  2019-08-19 07:03:07  C:\Windows\System32\notepad.exe  RegGetValueW      0x2f4               SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize                 AppsUseLightTheme
<...>

В приведённом выше примере пользователь указывает целевой процесс, в данном случае notepad.exe. Затем он указывает, что хочет использовать модуль registry, который перечисляет системные вызовы реестра, выполняемые программой. После завершения процесса (пользователь закрывает Блокнот) сохранённый вывод можно просмотреть с помощью команды show registry.

Структура проекта

Основной файл Python winstrument.py инициализирует устройство Frida и запускает экземпляр целевого процесса. cmdline.py предоставляет интерфейс командной строки на основе cmd2. Это основная точка входа скрипта, когда Winstrument запускается непосредственно из командной строки. Команды описаны ниже.

Затем он проходит по каждому включённому модулю, создаёт его экземпляр и вызывает метод load_scripts() этого модуля для инструментирования процесса. Наконец, он вызывает get_output() и on_finish() для каждого модуля после отсоединения от целевого процесса.

Модули содержатся в .py-файлах в каталоге modules/. Модуль представляет собой подкласс base_module.BaseInstrumentation, который определяет внедряемый код, обработку сообщений для этого внедрённого кода и вывод. API модулей более подробно описаны в разделе «Модули» ниже.

Каждый модуль хранит метаданные, такие как его описание, в modules/metadata.toml. Раздел должен быть озаглавлен именем модуля (без учёта регистра). Например, вот раздел, соответствующий модулю dlls:

root@kitploit:~
[DLLS]
description = """Hooks LoadLibrary-family system calls and outputs DLL loads where part of the search path might be
writable by the current user or a low-privileged user group."""

Программа хранит настройки в settings.toml в %APPDATA%/winstrument. Поскольку большинство модулей, если не все, внедряют Javascript в целевой процесс, каталог modules/js/ содержит фрагменты Javascript для Frida, которые загружаются и внедряются модулями. Эти файлы должны иметь то же имя, что и модуль, т.е. модуль dlls.py будет использовать JS из js/dlls.js.

Модули

Как описано выше, каждый модуль является подклассом BaseInstrumentation из base_module.py.

Каждый модуль должен определять своё имя (имя файлов python и js без расширения) как статический атрибут класса с именем modulename. Модули могут использовать или переопределять следующие методы из BaseInstrumentation:

  • __init__(self,*args,**kwargs) — В дополнение к любому специфичному для модуля коду инициализации этот конструктор должен вызывать super().__init__(*args,**kwargs).
  • load_script(self) — Этот метод, как правило, не нужно переопределять, так как реализации в BaseInstrumentation должно быть достаточно для большинства случаев. Для подключения к событиям Frida вместо этого переопределите register_callbacks(). load_script следует использовать для загрузки javascript-файла для инструментирования: вызовите session.create_script из Frida, добавьте нужные обратные вызовы, а затем вызовите метод load() объекта сценария для инструментирования.
  • register_callbacks(self) — Вызывается BaseInstrumentation.load_script перед загрузкой сценария в целевой процесс. Используется для регистрации событий, таких как _session.on('message') и т.д. Версия по умолчанию добавляет обработчик для on_message.

CLI

Оболочка Winstrument предоставляет следующие команды:

  • list — Показать все доступные и загруженные модули
  • load <modulename>/use <modulename> — Включить модуль с указанным именем
  • unload <modulename> — Отключить модуль с указанным именем
  • set [setting [value]] — Без аргументов: показать все настройки и их значения. С одним аргументом: показать значение setting. С двумя аргументами: установить для setting значение value. Настройки сохраняются между запусками.
  • show [modulename [format]] — Показать сохранённые данные из modulename в указанном format. Запуск без аргументов выводит список форматтеров.
  • info <modulename> — Выводит описание модуля с указанным именем.
  • run — Начать инструментирование.

Устранение неполадок

Ошибка pip «SSL Certificate Verify Failed» при установке Frida

Это возникает в основном при новой установке Windows. setup.py Frida пытается загрузить .egg-файл с https://files.pythonhosted.org. В некоторых случаях это не удаётся, потому что SSL-сертификат этого домена не проходит проверку. По-видимому, это побочный эффект того, как Windows загружает корневые сертификаты. Windows, судя по всему, не включает все корневые сертификаты в установку по умолчанию, предпочитая загружать их по мере необходимости при посещении веб-сайтов. В результате корневой сертификат, подписавший SSL-сертификат files.pythonhosted.org, может отсутствовать в системном хранилище доверия.

Чтобы решить эту проблему, вручную откройте https://files.pythonhosted.org в Edge или Chrome, чтобы Windows добавила корневой сертификат в своё хранилище доверия, а затем повторите pip install. Обратите внимание, что посещение страницы в Firefox не поможет, потому что Firefox использует собственное хранилище доверия, а не системное.

Авторские права

Winstrument распространяется под лицензией GPLv3. Подробнее см. в файле LICENSE.

Скачать инструмент
BaseInstrumentation
  • write_message(message) принимает JSON-подобное сообщение в виде dict, записывает его в базу данных sqlite и сохраняет для последующего вывода.
  • post_load(self) Вызывается BaseInstrumentation.load_script после загрузки сценария в целевой процесс. Это может использоваться, например, для вызова rpc-методов, экспортируемых сценарием.
  • get_output(self) — Вызывается основным скриптом, когда целевой процесс отсоединяется. Этот метод должен возвращать список, где каждая запись — это объект MoudleMessage (из data/module_message.py). Обычно переопределять не нужно.
  • on_message(self,message,data) — Обратный вызов для обработки события message Frida, которое вызывается с помощью send во внедрённом JS.
  • on_finish(self) — Обратный вызов, вызываемый основным скриптом, когда целевой процесс отсоединяется. Выполните здесь все необходимые операции по очистке.
  • q/quit/exit — Завершить работу CLI (очевидно).