
Руткит для Windows на Intel x64 с более чем 25 функциями, демонстрирующий методы руткитов, совместимый со всеми версиями Windows 10 и Windows 11.
Nidhogg — это многофункциональный руткит, демонстрирующий разнообразие операций, которые можно выполнять из пространства ядра. Цель Nidhogg — предоставить универсальный и простой в использовании руткит с множеством полезных функций для операций. Кроме того, его можно легко интегрировать с вашим C2-фреймворком.
Nidhogg работает на любой версии x64 Windows 10 и Windows 11.
Этот репозиторий содержит драйвер ядра и программу на C++ для взаимодействия с ним.
Если хотите узнать больше, загляните в вики для подробного объяснения.
[!IMPORTANT]
Все функции полностью протестированы вплоть до Windows 11 25H2. Если вы столкнулись с проблемой, пожалуйста, откройте issue, предварительно убедившись, что такой проблемы ещё нет.
[!WARNING]
При рефлексивной загрузке некоторые функции будут отключены по умолчанию, и автоматическая корректная выгрузка скрытых модулей и восстановление хуков колбэков работать не будут. Пользователь обязан вручную выгрузить любые скрытые модули при завершении процесса и восстановить все хуки колбэков, если целевой драйвер выгружается. Невыполнение этого требования может привести к нестабильности системы или сбоям.
Начиная с версии v0.3, Nidhogg можно рефлексивно загружать с помощью kdmapper, но, поскольку PatchGuard будет автоматически запущен, если драйвер регистрирует колбэки, Nidhogg не будет регистрировать никаких колбэков. Это означает, что при рефлексивной загрузке драйвера следующие функции будут отключены по умолчанию:
Начиная с версии v2.0, Nidhogg обладает новой возможностью под названием «Объектный файл Nidhogg» (NOF) для выполнения COFF в режиме ядра. Это означает, что вы можете написать свой собственный код в режиме ядра и скомпилировать его в COFF-файл, который имеет доступ к:
Эта функция несовместима с виртуализированной безопасностью (VBS), так как нарушает как HVCI, так и kCFG.
Начиная с версии v1.0, Nidhogg может выполнять NidhoggScripts — инструмент, позволяющий выполнять несколько команд одну за другой, создавая таким образом плейбуки для Nidhogg. Чтобы узнать, как написать такой скрипт, загляните в вики.
Из-за сложности поддержки и невысокой популярности эта возможность была объявлена устаревшей в версии v2.0 и будет удалена в следующем крупном релизе. На смену ей придёт другая возможность — «Объектный файл Nidhogg» (NOF) для выполнения COFF в режиме ядра, который будет иметь доступ к API Nidhogg.
Начиная с версии v1.0, Nidhogg также может выполнять NidhoggScripts в качестве начальных операций. Это означает, что если он обнаружит файл out.ndhg в корневой директории проекта (той же папке, где находится Python-файл), он будет выполнять этот файл каждый раз при запуске драйвера.
Из-за сложности поддержки и невысокой популярности эта возможность была объявлена устаревшей в версии v2.0 и будет удалена в следующем крупном релизе. На смену ей придёт другая возможность — «Объектный файл Nidhogg» (NOF) для выполнения COFF в режиме ядра, который будет иметь доступ к API Nidhogg.
[!CAUTION]
Следующие функции, как известно, запускают PatchGuard; вы можете использовать их на свой страх и риск.
Чтобы увидеть доступные команды, запустите NidhoggClient.exe или загляните в вики для получения подробной информации о том, как использовать каждую команду, какие параметры она принимает и как работает.
NidhoggClient.exe
# Простой пример: сокрытие процесса
NidhoggClient.exe process hide 3110
Для компиляции клиента необходимо установить Visual Studio 2022 и затем просто собрать проект, как любой другой проект Visual Studio.
Для компиляции проекта вам понадобятся следующие инструменты:
Клонируйте репозиторий и соберите проект:
git clone https://github.com/Idov31/Nidhogg.git --recurse-submodules
Чтобы протестировать драйвер в вашей тестовой среде, выполните следующие команды с повышенными правами (cmd от администратора):
bcdedit /set testsigning on
После перезагрузки создайте службу и запустите драйвер:
sc create nidhogg type= kernel binPath= C:\Path\To\Driver\Nidhogg.sys
sc start nidhogg
Чтобы отлаживать драйвер в вашей тестовой среде, выполните эту команду с повышенными правами и перезагрузите компьютер:
bcdedit /debug on
После перезагрузки вы сможете видеть сообщения отладки в таких инструментах, как DebugView.
Большое спасибо тем, кто внёс вклад в этот проект: