
Rootkit para Windows em Intel x64 com mais de 25 recursos, demonstrando técnicas de rootkit compatíveis com todas as versões do Windows 10 e Windows 11.
Nidhogg é um rootkit multifuncional para demonstrar a variedade de operações que podem ser realizadas a partir do espaço do kernel. O objetivo do Nidhogg é fornecer um rootkit completo e fácil de usar com múltiplas funcionalidades úteis para operações. Além disso, ele também pode ser facilmente integrado ao seu framework C2.
O Nidhogg funciona em qualquer versão x64 do Windows 10 e Windows 11.
Este repositório contém um driver de kernel com um programa em C++ para se comunicar com ele.
Se quiser saber mais, consulte o wiki para uma explicação detalhada.
[!IMPORTANT]
Todas as funcionalidades foram totalmente testadas até o Windows 11 25H2. Se encontrar um problema, por favor, abra uma issue após verificar se não há uma issue já aberta.
[!WARNING]
Ao fazer carregamento reflexivo, algumas funcionalidades serão desabilitadas por padrão e o descarregamento automático de módulos ocultos e o desacoplamento de callbacks não funcionará corretamente. É responsabilidade do usuário garantir o descarregamento manual de quaisquer módulos ocultos ao encerrar o processo e desacoplar quaisquer callbacks se o driver alvo estiver descarregando. A falha em fazer isso pode levar à instabilidade ou travamentos do sistema.
Desde a versão v0.3, o Nidhogg pode ser carregado reflexivamente com kdmapper, mas como o PatchGuard será acionado automaticamente se o driver registrar callbacks, o Nidhogg não registrará nenhum callback. Isso significa que, se você estiver carregando o driver reflexivamente, essas funcionalidades serão desabilitadas por padrão:
Desde a versão v2.0, o Nidhogg possui uma nova capacidade chamada "Nidhogg Object File" (NOF) para execução de COFF em modo kernel. Isso significa que você pode escrever seu próprio código em modo kernel e compilá-lo em um arquivo COFF que tem acesso a:
Esta funcionalidade não é compatível com Virtualization Based Security (VBS), pois viola tanto HVCI quanto kCFG.
Desde a versão v1.0, o Nidhogg pode executar NidhoggScripts - uma ferramenta que permite executar vários comandos um após o outro, criando assim playbooks para o Nidhogg. Para ver como escrever um, consulte o wiki.
Devido à difícil manutenibilidade e ao fato de não ser uma funcionalidade popular, ela foi depreciada na versão v2.0 e será removida na próxima versão principal. Será substituída por outra capacidade chamada "Nidhogg Object File" (NOF) para execução de COFF em modo kernel, que terá acesso à API do Nidhogg.
Desde a versão v1.0, o Nidhogg também pode executar NidhoggScripts como operações iniciais. Isso significa que, se ele encontrar o arquivo out.ndhg na raiz do diretório do projeto (o mesmo diretório do arquivo Python), ele executará o arquivo sempre que o driver estiver em execução.
Devido à difícil manutenibilidade e ao fato de não ser uma funcionalidade popular, ela foi depreciada na versão v2.0 e será removida na próxima versão principal. Será substituída por outra capacidade chamada "Nidhogg Object File" (NOF) para execução de COFF em modo kernel, que terá acesso à API do Nidhogg.
[!CAUTION]
Sabe-se que as seguintes funcionalidades acionam o PatchGuard; você ainda pode usá-las por sua conta e risco.
Para ver os comandos disponíveis, execute NidhoggClient.exe ou consulte o wiki para informações detalhadas sobre como usar cada comando, os parâmetros que ele aceita e como funciona.
NidhoggClient.exe
# Uso simples: Ocultar um processo
NidhoggClient.exe process hide 3110
Para compilar o cliente, você precisará ter o Visual Studio 2022 instalado e, em seguida, compile o projeto como qualquer outro projeto do Visual Studio.
Para compilar o projeto, você precisará das seguintes ferramentas:
Clone o repositório e compile o projeto:
git clone https://github.com/Idov31/Nidhogg.git --recurse-submodules
Para testá-lo em seu ambiente de teste, execute os seguintes comandos em um cmd elevado:
bcdedit /set testsigning on
Após reiniciar, crie um serviço e execute o driver:
sc create nidhogg type= kernel binPath= C:\Path\To\Driver\Nidhogg.sys
sc start nidhogg
Para depurar o driver em seu ambiente de teste, execute este comando em um cmd elevado e reinicie o computador:
bcdedit /debug on
Após a reinicialização, você pode ver as mensagens de depuração em ferramentas como DebugView.
Muito obrigado a essas pessoas que contribuíram para este projeto: