
Rootkit para Windows en Intel x64 con más de 25 características, que demuestra técnicas de rootkit compatibles con todas las versiones de Windows 10 y Windows 11.
Nidhogg es un rootkit multifuncional para mostrar la variedad de operaciones que se pueden realizar desde el espacio del kernel. El objetivo de Nidhogg es proporcionar un rootkit todo en uno y fácil de usar con múltiples funcionalidades útiles para operaciones. Además, también se puede integrar fácilmente con tu framework C2.
Nidhogg funciona en cualquier versión de Windows 10 y Windows 11 x64.
Este repositorio contiene un controlador de kernel con un programa en C++ para comunicarse con él.
Si quieres saber más, consulta la wiki para obtener una explicación detallada.
[!IMPORTANT]
Todas las funcionalidades han sido probadas completamente hasta Windows 11 25H2. Si encuentras un problema, por favor abre un issue después de verificar que no exista uno ya abierto.
[!WARNING]
Al realizar una carga reflectiva, hay funcionalidades que se deshabilitarán por defecto y la descarga automática ordenada de módulos ocultos y el desenganche de callbacks tampoco funcionará. Es responsabilidad del usuario asegurarse de descargar manualmente cualquier módulo oculto al finalizar el proceso y desenganchar cualquier callback si el controlador objetivo se está descargando. No hacerlo puede provocar inestabilidad del sistema o fallos.
Desde la versión v0.3, Nidhogg se puede cargar de forma reflectiva con kdmapper pero debido a que PatchGuard se activará automáticamente si el controlador registra callbacks, Nidhogg no registrará ningún callback. Esto significa que si estás cargando el controlador de forma reflectiva, estas funcionalidades estarán deshabilitadas por defecto:
Desde la versión v2.0, Nidhogg tiene una nueva capacidad llamada "Nidhogg Object File" (NOF) para ejecución de COFF en modo kernel. Esto significa que puedes escribir tu propio código en modo kernel y compilarlo en un archivo COFF que tiene acceso a:
Esta funcionalidad no es compatible con Virtualization Based Security (VBS) ya que viola tanto HVCI como kCFG.
Desde la versión v1.0, Nidhogg puede ejecutar NidhoggScripts - una herramienta que permite ejecutar varios comandos uno tras otro, creando así playbooks para Nidhogg. Para ver cómo escribir uno, consulta la wiki.
Debido a la difícil mantenibilidad y al hecho de que no es una funcionalidad popular, ha sido deprecada en la versión v2.0 y se eliminará en la próxima versión principal. Será reemplazada por otra capacidad llamada "Nidhogg Object File" (NOF) para ejecución de COFF en modo kernel, que tendrá acceso a la API de Nidhogg.
Desde la versión v1.0, Nidhogg también puede ejecutar NidhoggScripts como operaciones iniciales. Esto significa que si detecta el archivo out.ndhg en la raíz del directorio del proyecto (el mismo directorio que el archivo Python), ejecutará el archivo cada vez que el controlador esté en ejecución.
Debido a la difícil mantenibilidad y al hecho de que no es una funcionalidad popular, ha sido deprecada en la versión v2.0 y se eliminará en la próxima versión principal. Será reemplazada por otra capacidad llamada "Nidhogg Object File" (NOF) para ejecución de COFF en modo kernel, que tendrá acceso a la API de Nidhogg.
[!CAUTION]
Se sabe que las siguientes funcionalidades activan PatchGuard, aún puedes usarlas bajo tu propio riesgo.
Para ver los comandos disponibles, puedes ejecutar NidhoggClient.exe o consultar la wiki para obtener información detallada sobre cómo usar cada comando, los parámetros que acepta y cómo funciona.
NidhoggClient.exe
# Uso simple: Ocultar un proceso
NidhoggClient.exe process hide 3110
Para compilar el cliente, necesitarás tener instalado Visual Studio 2022 y luego simplemente construye el proyecto como cualquier otro proyecto de Visual Studio.
Para compilar el proyecto, necesitarás las siguientes herramientas:
Clona el repositorio y construye el proyecto:
git clone https://github.com/Idov31/Nidhogg.git --recurse-submodules
Para probarlo en tu entorno de pruebas, ejecuta estos comandos con cmd elevado:
bcdedit /set testsigning on
Después de reiniciar, crea un servicio y ejecuta el controlador:
sc create nidhogg type= kernel binPath= C:\Path\To\Driver\Nidhogg.sys
sc start nidhogg
Para depurar el controlador en tu entorno de pruebas, ejecuta este comando con cmd elevado y reinicia tu computadora:
bcdedit /debug on
Después del reinicio, puedes ver los mensajes de depuración en herramientas como DebugView.
Muchas gracias a las personas que contribuyeron a este proyecto: