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

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

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

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

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

Категории

Все категории
Loading categories
DotDumper — Автоматический распаковщик и регистратор для файлов, нацеленных на DotNet Framework | Kitploit
Инструменты/GitHubGitHub/advanced-threat-research/dotdumper
Динамический анализ (песочница)Криминалистика памятиОбратная инженерияОтладчикиФорензикаАнализ вредоносных программАнализ Бинарных Файлов
GitHubadvanced-threat-research/dotdumper

DotDumper

Автоматический распаковщик и регистратор для файлов, нацеленных на DotNet Framework

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

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Логотип DotDumper — самосвал

DotDumper

Автоматический распаковщик и логгер для файлов, нацеленных на DotNet Framework! Этот инструмент был представлен на Black Hat USA 2022. На Black Hat Asia 2023 были опубликованы DotDumperGUI и DotDumperNative, а также версия 1.1-stable DotDumper. Эти три инструмента предназначены для совместного использования: DotDumper 1.1-stable требует наличия DLL от DotDumperNative, а DotDumperGUI служит графическим интерфейсом для открытия и фильтрации JSON-вывода результатов работы DotDumper.

Автоматическое обнаружение и классификация любого файла надёжным способом часто считается Святым Граалем анализа вредоносного ПО. Трудностей и препятствий на пути к этому немало, поэтому создание такой системы высоко ценится. Когда речь идёт о двоичных файлах, ориентированных на DotNet, наш новый инструмент с открытым исходным кодом DotDumper призван помочь на нескольких ключевых этапах: логирование (в памяти) активности, дамп интересующих сегментов памяти и извлечение характеристик из заданного образца.

Содержание

  • Зачем нужен DotDumper?
  • Возможности
    • Использование интерфейса командной строки
    • Логирование и дамп
    • Рефлексия
    • (Управляемые) хуки
    • Лёгкая расширяемость
  • Поддержка тайм-аута песочницы
  • Отличия от известных инструментов
  • Планы на будущее

Зачем нужен DotDumper?

Коротко говоря, ручная распаковка — утомительный процесс, требующий от аналитиков непропорционально много времени. Обфусцированные двоичные файлы ещё больше увеличивают время, необходимое аналитику для распаковки конкретного файла. При масштабировании организациям требуется множество аналитиков, ежедневно препарирующих вредоносное ПО, вероятно, в сочетании с масштабируемой песочницей. Потерянное драгоценное время можно было бы использовать для изучения интересных кампаний или образцов с целью выявления новых угроз, а не для разбора массового повседневного вредоносного ПО. В конце концов, аналитики ищут иголки в стоге сена.

Итак, чем же DotDumper отличается? Запуск образца вредоносного ПО на базе DotNet с помощью DotDumper предоставляет файлы журналов ключевых, контекстуализирующих и общих вызовов функций в трёх форматах (читаемый человеком простой текст, JSON и XML), а также копии полезных сегментов памяти. Таким образом, аналитик может быстро просмотреть журнал вызовов функций. Кроме того, сброшенные файлы можно просканировать для их классификации, что даёт дополнительное понимание образца вредоносного ПО и содержащихся в нём данных. Это сокращает время, жизненно важное для процессов триажа и реагирования на инциденты, и высвобождает время аналитиков SOC и исследователей для более сложных задач анализа.

Возможности

Для логирования и дампа контекстуализирующих вызовов функций и их результатов DotDumper использует смесь рефлексии и управляемых хуков, полностью написанных на чистом C#. Ниже будут выделены и подробно описаны ключевые возможности, в сочетании с выдержками из результатов работы DotDumper над упакованным образцом стилера AgentTesla, хеши которого приведены ниже.

Тип хешаЗначение хеша
SHA-256b7512e6b8e9517024afdecc9e97121319e7dad2539eb21a79428257401e5558d
SHA-1c10e48ee1f802f730f41f3d11ae9d7bcc649080c
MD-523541daadb154f1f59119952e7232d6b

Использование интерфейса командной строки

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

Меню интерфейса командной строки DotDumper

Минимальное требование для запуска образца — указать аргумент «-file» вместе с именем файла или путём к файлу. Если указан полный путь, он используется. Если указано только имя файла, проверяется текущий рабочий каталог, а также папка, в которой находится исполняемый файл DotDumper.

Если имя каталога не указано, имя папки «-log» устанавливается равным имени файла образца без расширения (если таковое имеется). Папка располагается в той же директории, что и DotDumper, и в ней будут сохранены журналы и сброшенные файлы.

В случае библиотеки или альтернативной точки входа в двоичный файл необходимо переопределить точку входа с помощью «-overrideEntry true». Кроме того, необходимо указать полностью квалифицированный класс, включая пространство имён, с помощью «-fqcn My.NameSpace.MyClass». Это сообщает DotDumper, какой класс выбрать, из которого будет извлечено указанное имя функции (с помощью «-functionName MyFunction»).

Если выбранная функция требует аргументов, необходимо указать количество аргументов с помощью «-argc» и количество требуемых аргументов. Типы и значения аргументов должны быть указаны в формате «string|myValue int|9». Обратите внимание, что если в значениях используются пробелы, аргумент в командной строке необходимо заключить в кавычки, чтобы он был передан как один аргумент.

Другие реже используемые опции, такие как «-raceTime» или «-deprecated», безопасны в настройках по умолчанию, но могут потребовать настройки в будущем из-за изменений в DotNet Framework. В настоящее время они доступны в интерфейсе командной строки, чтобы при необходимости можно было легко внести изменения, даже если вы используете старую версию DotDumper.

Логирование и дамп

Логирование и дамп — две основные функции DotDumper. Чтобы минимизировать время анализа, логирование должно предоставлять аналитику контекст. Это достигается за счёт предоставления следующей информации для каждого зарегистрированного вызова функции:

  • Трассировка стека на основе вызывающего функцию кода
  • Информация об объекте сборки, из которой поступил вызов, такая как имя, версия и криптографические хеши
  • Родительская сборка, из которой поступил вызов, если это не исходный образец
  • Тип, имя и значение аргументов функции
  • Тип, имя и значение возвращаемого значения функции, если таковое имеется
  • Список файлов, сброшенных на диск, которые соответствуют данному вызову функции

Обратите внимание, что для каждого сброшенного файла имя файла равно его хешу SHA-256.

Чтобы прояснить вышесказанное, ниже приведён фрагмент журнала. В фрагменте показаны детали для упомянутого образца AgentTesla, где он загружает второй этап с помощью функции Assembly.Load из DotNet.

Журнал для перехваченного вызова функции Assembly.Load(byte[] rawAssembly)

Во-первых, указывается местное системное время вместе с типом возврата, именем и аргументами исходной функции. Во-вторых, приводится трассировка стека, показывающая, что главная функция образца ведёт к конструктору, инициализирует компоненты и вызывает две пользовательские функции. Функция Assembly.Load была вызвана из «NavigationLib.TaskEightBestOil.GGGGGGGGGGGGGGGGGGGG(String str)». Это даёт аналитику контекст для поиска кода вокруг этого вызова, если он представляет интерес.

Скачать инструмент