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

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

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

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

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

Категории

Все категории
Loading categories
Shinigami — A dynamic unpacking tool | Kitploit
Инструменты/GitHubGitHub/buzzer-re/shinigami
Dynamic Analysis (Sandboxing)Reverse EngineeringShellcodeMalware AnalysisBinary Analysis
GitHubbuzzer-re/shinigami

Shinigami

A dynamic unpacking tool

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

Популярное

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

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

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

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

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

Shinigami

Build Release

описание изображения

Shinigami — это экспериментальный инструмент, предназначенный для обнаружения и распаковки вредоносных имплантов, внедряемых через process hollowing или типовые процедуры упаковщиков.

Как это работает

Инструмент работает путём перехвата NT-функций, связанных с Process Hollowing, и пометки новых исполняемых страниц памяти битом page guard. Этот приём позволяет Shinigami обнаруживать непрямые изменения потока выполнения, обычно вызываемые шелл-кодом или распакованным кодом, что часто указывает на вредоносное ПО. Shinigami создаёт целевой исполняемый файл в приостановленном состоянии и внедряет DLL-библиотеку под названием «Ichigo». Эта библиотека автоматически перехватывает все необходимые функции для обнаружения и извлечения импланта. После того как артефакт полностью извлечён, инструмент завершает процесс.

Эффективность Shinigami может варьироваться в зависимости от конкретного вредоносного ПО, на которое он нацелен. Тем не менее, он станет ценным дополнением к любому набору инструментов для анализа вредоносных программ и может оказаться полезным при обнаружении и анализе вредоносного ПО, использующего process hollowing или типовые процедуры упаковщиков.

Важно: Это инструмент динамической распаковки, и его не следует запускать на вашем личном компьютере или в лаборатории статического анализа

Текущие методы распаковки

Process Hollowing

Основной способ Shinigami по извлечению имплантов, внедрённых с помощью process hollowing, заключается в перехвате двух NT-функций: NtResumeThread и NtWriteVirtualMemory. Вот как это работает:

  • NtResumeThread Хук

    • Shinigami ищет по всей ранее выделенной через NtAllocateVirtualMemory памяти, чтобы проверить, содержит ли она сигнатуру DOS-заголовка. Если она найдена, он извлекает удалённый PE-файл, исправляет его так, чтобы секции были выровнены, и сохраняет на диск в формате filename_dumped.bin.
  • NtWriteVirtualMemory Хук

    • Shinigami определяет, пытается ли исполняемый файл записать PE-файл в удалённый процесс, перехватывая NtWriteVirtualMemory. Если PE-файл найден, он извлекается с использованием указателя Buffer и сохраняется на диск как filename_before_written.bin; этот вариант используется только при передаче флага --stop-at-write.

Универсальный распаковщик

Модуль универсальной распаковки Shinigami помечает вновь выделенные области памяти битом PAGE_GUARD; этот бит также применяется, если у какой-либо существующей области памяти права заменены на исполняемые. Используя guard pages, он может отслеживать, какая область памяти будет использоваться для размещения шелл-кода или PE-образов.

Для каждого обнаруженного шелл-кода Shinigami сохраняет на диск сам исходный шелл-код. Он также сканирует эту область памяти на наличие PE-файлов и сохраняет их. Shinigami рассматривает каждое выполнение шелл-кода как новый этап, поэтому в итоге в вашем рабочем каталоге появятся файлы с именами filename_shellcode_STAGENUM.bin or .exe.

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

У инструмента есть несколько параметров:

root@kitploit:~
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name

Positional arguments:
  program_name                  Name of the program to execute

Optional arguments:
  -h, --help                    shows help message and exits
  -v, --version                 prints version information and exits
  -o, --output                  Directory to dump artefacts
  --stop-at-write               Unhollow: Stop the execution when the PE file is being to be written
  --verbose                     Display a verbose output
  -p, --only-executables        Only extract PE artefacts
  -e, --exported                Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)

Некоторые важные параметры:

-o, --output: Указывает каталог для сохранения извлечённых артефактов. По умолчанию извлечённые артефакты сохраняются в каталог output в текущем рабочем каталоге. Вы можете указать другой каталог, передав его путь в качестве аргумента.

--stop-at-write: Этот аргумент используется во время распаковки процесса, подвергшегося Process Hollowing. Когда Shinigami обнаруживает, что PE-файл записывается в hollowed-процесс, он останавливает выполнение и сохраняет извлечённый PE-файл. Эта опция может быть полезна, если вы хотите избежать выполнения всего hollowed-процесса и вам нужно только извлечь распакованный код.

--verbose: Выводит подробный журнал. Это может быть полезно для отладки или понимания внутреннего устройства Shinigami.

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

Unhollow

Тестирование на Dridex

После завершения извлечения процесс завершается, и у вас останется (надеюсь) извлечённый PE-файл:

Извлечённый имплант

Обнаруженный имплант будет сохранён в формате, описанном в разделе методы обнаружения.

Распаковка

Распаковка случайного загрузчика, описанного здесь

В приведённом выше примере Shinigami автоматически обнаружил поведение типового загрузчика и извлёк все выполнявшиеся шелл-коды и образы внутри него, не требуя каких-либо специальных переключателей для включения или отключения процедуры распаковки. Это стало возможным благодаря тому, что Shinigami использует часть функций модуля Unhollow, применяя общие хуки из библиотеки Gancho.

Emotet

Распаковка DLL Emotet

Shinigami также поддерживает DLL и умеет восстанавливать внедрённые бинарные файлы с отсоединёнными DOS-заголовками. В частности, такие вредоносные образцы, как Emotet, используют этот приём для обхода сканеров PE в памяти. Shinigami обнаруживает отсутствующие части (DOS-заголовок) и использует эвристики для их восстановления.

Установка

Забирайте подходящую вам версию на странице Релизы.

Сборка и доработка

Будет замечательно, если вы поможете этому проекту; если хотите, вот зависимости и шаги:

  • Установите Visual Studio >= 2019 с рабочей нагрузкой C++.
  • Установите Zydis, быстрый и лёгкий дизассемблер x86/x86-64; рекомендую использовать способ vcpkg.
    • Zydis используется для повышения точности перехвата API и гарантии того, что ни один опкод не будет потерян при копировании.
  • Откройте файл решения Shinigami.sln в Visual Studio и соберите/доработайте проект.

Пожалуйста, открывайте issue или pull request для любых изменений, которые вы хотели бы внести.

Заключение

Этот классный образ-талисман вдохновлён аниме Bleach и создан с помощью Dall-E.

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