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

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

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

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

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

Категории

Все категории
Loading categories
RogueAssemblyHunter — Rogue Assembly Hunter — это утилита для обнаружения 'интересных' модулей .NET CLR в запущенных процессах. | Kitploit
Инструменты/GitHubGitHub/bohops/rogueassemblyhunter
Оборонительные ИнструментыКриминалистика памятиФорензикаАнализ вредоносных программРеагирование на Инциденты
GitHubbohops/rogueassemblyhunter

RogueAssemblyHunter

Rogue Assembly Hunter — это утилита для обнаружения 'интересных' модулей .NET CLR в запущенных процессах.

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

Популярное

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

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

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

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

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

__________ _____ . .
_
____ \ ____ ____ __ __ ____ / _ \ ______ ______ ____ _ | | | .. | // _ \ / __| | _/ __ \ / /\ \ / // __// __ \ / | __ | |< | | | | ( <> ) // > | /\ / / | \ \ _ \ /| Y Y \ _\ \ |_ | || /_/_ /|/ _ > _| /____ >____ >___ >|| / /____/ | / // / / / / / / / /
___ ___ __
/ | \ __ __ / | ___________ / ~ \ | / \ __/ __ _ __
\ Y / | / | \ | \ /| | / _| /|
/|
| /
| _
>
|
/ / /

Rogue Assembly Hunter

Rogue Assembly Hunter — это утилита для обнаружения «интересных» модулей .NET CLR в запущенных процессах.

  • Автор: @bohops
  • Лицензия: MIT
  • Проект: https://github.com/bohops/RogueAssemblyHunter

Описание

.NET — это очень мощная и функциональная платформа разработки и среда выполнения для создания и запуска управляемых приложений .NET. За последние несколько лет .NET был принят на вооружение Red Teams (и подобными им) для инструментирования тактик в поддержку наступательных операций. В частности, переход от оборонительного PowerShell к .NET был логичным шагом (для многих) из-за повышенной видимости и оппортунистической наблюдаемости, присутствующих в PowerShell v5+. В связи с этим, наступательные средства и тактики .NET успешно использовались для обхода средств защиты на основе хоста, обхода контроля приложений, а также для создания/подготовки/доставки/выполнения вредоносного кода (аналогично PowerShell).

С точки зрения предотвращения, Microsoft делает больше для борьбы с угрозами, инструментированными через .NET, и для минимизации общей поверхности атаки .NET. Например, Microsoft добавила возможности проверки AMSI в .NET Framework 4.8, а механизмы WDAC/WLDP весьма эффективны. С точки зрения обнаружения/реагирования, дополнительная видимость и исследование экосистемы .NET всегда полезны для поиска новых способов борьбы с угрозами, ориентированными на .NET.

В 2017 году Джо Дезимоне (@dez_) написал замечательную статью под названием Hunting For In-Memory .NET Attacks. Актуальная и сегодня, статья описывает современные векторы атак на .NET, а также методы обнаружения по требованию и на основе событий. В дополнение к статье Джо выпустил инструмент (Get-ClrReflection) для активного обнаружения (и извлечения) модулей .NET CLR в памяти, у которых отсутствует корректная ссылка на диск. Вдохновленный работой Джо и используя возможности исследования библиотеки диагностики времени выполнения CLRMD (+ последующие возможности доступа к данным mscordacwks.dll), был создан Rogue Assembly Hunter для:

  • Исследования (всех) запущенных управляемых процессов .NET на предмет интересных модулей CLR (например, модулей, образующих «сборку»)
  • Исследования одного управляемого процесса .NET (по PID) на предмет интересных модулей CLR
  • Наблюдения за вновь создаваемыми процессами и попытки их исследования на предмет интересных модулей CLR
  • Поддержки нескольких возможностей «охоты» для обнаружения модулей, загруженных в память, статуса подписи модулей (если загружены с диска), модулей, загруженных из необычных каталогов, и модулей-самозванцев (например, поддельные файловые ссылки).
  • Поддержки функциональности экспорта модулей CLR (быстрый порт из Get-ClrReflection)
  • Вдохновения на создание более интересных инструментов и тактик

Основные требования и зависимости

  • Запуск от имени привилегированного пользователя/контекста процесса
  • .NET Framework 4.6.1+
  • .NET CLRMD — библиотека исследования Microsoft.Diagnostics.Runtime (пакет NuGet)
  • ILMerge — статический компоновщик (пакет NuGet)
  • ...и вспомогательные пакеты NuGet в Visual Studio.

Заметки, советы и оговорки

  • Запускайте от имени привилегированного пользователя с высоким/системным уровнем целостности.
  • «Охоты» являются экспериментальными и не гарантируют полных/корректных результатов. Остерегайтесь ложных срабатываний (например, подписанные модули) и проверяйте соответствующим образом.
  • RogueAssemblyHunter использует CLRMD для подключения к активным процессам, что может приводить к интересным результатам.
  • Из-за сканирующей природы RogueAssemblyHunter возможны состояния гонки и пропущенные результаты. Рассмотрите возможность настройки с помощью ключей --checks и --sleep для улучшения (особенно в режиме watch). В некоторых случаях может быть сложно «поймать» загрузку конкретной сборки из-за скорости выполнения (например, execute-assembly и жертвенные процессы).
  • Архитектура («разрядность») и версии .NET имеют значение (например, 4+) для взаимодействия с удаленными процессами с помощью библиотек .NET CLRMD.
    • Для максимального исследования/покрытия собирайте и запускайте эту программу для x86 и x64 сценариев.
    • Режим полного сканирования процессов попытается подключиться ко всем запущенным процессам независимо от «разрядности». В противном случае он потерпит неудачу при несоответствии архитектур.
  • Протестировано на Windows 10 Pro 2H1H и Windows Server 2016 Standard 1607. Может работать на других версиях с соответствующим .NET Framework.
  • Исходный код проекта Visual Studio с пакетами NuGet, скриптом PowerShell и скомпилированными бинарными файлами включен в этот проект.
  • Файл Notice.md содержит отказ от ответственности и информацию о лицензии.
  • Используйте на свой страх и риск (и не обращайте внимания на мой ужасный код ;) )!

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

root@kitploit:~
[*] Параметры:
    
    --mode=<.>   : Обязательно | Выберите режим анализа. Варианты: sweep, process и watch.

    --hunt=<.>   : Необязательно | Выберите тип сканирования для поиска интересных модулей CLR. Укажите all (по умолчанию), memory-only, unusual-dir,
                   sig-status, imposter-file или list.

    --export=<.> : Необязательно, экспериментально | Укажите путь к файлу для экспорта загруженных модулей CLR для сканирования в памяти и сканирования модулей-самозванцев 
                   (например, --hunt=memory-only/imposter-file/all).

    --pid=<.>    : Необязательно | Укажите целевой процесс по PID. Должен использоваться с параметром/значением --mode=process.

    --checks=<.> : Необязательно | Укажите количество циклов сканирования. Это может помочь уменьшить пропуски из-за состояний гонки, но может также повторять вывод результатов.
                   Значение по умолчанию: 1.

    --sleep=<.>  : Необязательно | Укажите количество секунд задержки. Это может помочь уменьшить пропуски из-за состояний гонки, задерживая цикл проверки.
                   Значение по умолчанию: 0 секунд.

    --debug      : Необязательно | Отображать информацию об исключениях (например, ошибки подключения к процессу).

    --nobanner   : Необязательно | Подавить отображение баннера. Полезно для выполнения через скрипт PowerShell или для сценариев, использующих автоматизацию.

    --suppress   : Необязательно | Не сканировать процесс RogueAssemblyHunter при --mode=sweep или --mode=watch.

    --help       : Необязательно | Показать эту справку. Это переопределит любые другие параметры командной строки и завершит приложение. *Это значение по умолчанию без параметров.


[*] Режимы (--mode=)

    - sweep   : Сканировать/просматривать все процессы (Примечание: Успешно сканируются только процессы с одинаковой архитектурой/«разрядностью». Компилируйте для запуска на x86/x64 и т.д.).

    - process : Сканировать один процесс. Используйте с --pid=<PID>.
    
    - watch   : Сканировать новые процессы при их создании. Настройте атрибуты сканирования с помощью --checks и --sleep. (Примечание: Это экспериментально. Вероятны состояния гонки.)


[*] Охоты (--hunt=)

    - all           : Значение по умолчанию. Анализировать со всеми опциями охоты (кроме 'list').

    - memory-only   : Охота в памяти. Анализировать модули CLR, не обеспеченные диском.

    - unusual-dir   : Охота на необычные каталоги. Анализировать модули CLR, загруженные вне «нормальных» каталогов.
                      Отредактируйте '_huntUnusualDirectoryFilter' для настройки.

    - sig-status    : Охота на подписи файлов. Анализировать модули CLR с аномальным статусом подписи (например, неподписанные). Примечание: Это экспериментально. Возможны ложные срабатывания.
                      Отредактируйте '_huntSigExclusionsFilter' для настройки.
    
    - imposter-file : Охота на неожиданные модули CLR. Анализировать модули CLR с подозрительным дисковым файлом. Экспериментально.
    
    - list          : Пройти по всем модулям CLR и вывести их список.


[*] Примеры использования
    
    - Пример 1 : Сканировать процессы и выполнить все охоты для доступных 64-битных процессов (кроме 'list') —
                  RogueAssemblyHunter_x64.exe --mode=sweep
    
    - Пример 2 : Сканировать процессы, вывести список всех модулей CLR в доступных 32-битных управляемых процессах и показать информацию об ошибках —
                  RogueAssemblyHunter_x86.exe --mode=sweep --hunt=list --debug

    - Пример 3 : Наблюдать за новыми процессами, сканировать все модули CLR (если управляемые и 64-битные), не сканировать процесс RogueAssemblyHunter и выполнить 2 проверки с задержкой 3 секунды между ними — 
                  RogueAssemblyHunter_x64.exe --mode=watch --suppress --checks=2 --sleep=3

    - Пример 4 : Сканировать один процесс по PID, вывести только модули CLR в памяти и экспортировать модули CLR в указанный путь —
                  RogueAssemblyHunter_x86.exe --mode=process --pid=4650 --hunt=memory-only --export=c:\evilassemblies\
    
    - Пример 5 : Сканировать процессы, вывести только модули CLR в памяти для доступных 64-битных процессов, не сканировать процесс RogueAssemblyHunter и не показывать заголовочный баннер —
                  RogueAssemblyHunter_x64.exe --mode=sweep --hunt=memory-only --suppress --nobanner

Файлы релиза: Invoke-RogueAssemblyHunter и скомпилированные бинарные файлы

Для удобства в папку \Release включены скрипт PowerShell и два скомпилированных бинарных файла (RogueAssemblyHunter_x64.exe и RogueAssemblyHunter_x86.exe). Вы можете изменить их для своих сценариев использования (например, развертывание, внедрение, проверки, задержка и т.д.).

Пример использования:

Запустить Invoke-RogueAssemblyHunter в режиме sweep и проверить все опции охоты

root@kitploit:~
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter

Запустить Invoke-RogueAssemblyHunter в режиме watch и проверить все опции охоты

root@kitploit:~
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter -ScanMode watch

SHA256 хеши:

root@kitploit:~
e804711a8b6469f1b13b388de47dfa6dde1c85279d365db7b6e19e1644990fa6  Invoke-RogueAssemblyHunter.ps1
cc985d918e566671aa209142abc55bd798ca6c1a18730b785ac8c18d489736c3  RogueAssemblyHunter_x64.exe
ae3aead43871e263cd8465d5356c4daaae0635714321f872c931ec825008287a  RogueAssemblyHunter_x86.exe

План развития

  • Анализ управляемых дампов (.dmp)
  • Улучшение проверки статуса подписи
  • Улучшения вывода (например, json)
  • Стабильность и исправление ошибок

Благодарности, вдохновение и ресурсы

  • Hunting For In-Memory .NET Attacks | Джо Дезимоне (@dez_)
  • Get-ClrReflection | Джо Дезимоне (@dez_)
  • Get-InjectedThread | Джаред Аткинсон (@jaredcatkinson)
  • pe-sieve | hasherezade (@hasherezade)
  • CLR MD — Analyzing Live Process | Harsha
  • How to enumerate Modules in each App Domain using ClrMD | Сукеш Ашок Кумар
  • WMIProcessWatcher | Тим МалкомВеттер (@malcomvetter)
Скачать инструмент