
Intel x64용 Windows 루트킷으로, 25개 이상의 기능을 갖추고 있으며 모든 Windows 10 및 Windows 11 버전과 호환되는 루트킷 기술을 시연합니다.
Nidhogg는 커널 공간에서 수행할 수 있는 다양한 작업을 보여주기 위한 다기능 루트킷입니다. Nidhogg의 목표는 운영에 유용한 여러 기능을 제공하는 올인원이면서도 사용하기 쉬운 루트킷을 제공하는 것입니다. 또한 C2 프레임워크와 쉽게 통합할 수 있습니다.
Nidhogg는 x64 Windows 10 및 Windows 11의 모든 버전에서 작동할 수 있습니다.
이 저장소에는 커널 드라이버와 그와 통신하는 C++ 프로그램이 포함되어 있습니다.
자세한 내용은 위키를 확인하십시오.
[!IMPORTANT]
모든 기능은 Windows 11 25H2까지 완전히 테스트되었습니다. 문제가 발생하면 이미 열려 있는 이슈가 없는지 확인한 후 이슈를 열어주세요.
[!WARNING]
반사적 로드를 수행할 때는 기본적으로 비활성화되는 기능이 있으며, 숨겨진 모듈의 자동 정리 및 콜백 복구가 제대로 작동하지 않습니다. 사용자는 프로세스 종료 시 숨겨진 모듈을 수동으로 언로드하고, 대상 드라이버가 언로드될 때 콜백을 복구해야 합니다. 그렇지 않으면 시스템 불안정이나 충돌이 발생할 수 있습니다.
v0.3부터 Nidhogg는 kdmapper로 반사적 로드가 가능하지만, PatchGuard가 드라이버가 콜백을 등록할 경우 자동으로 트리거되므로 Nidhogg는 콜백을 등록하지 않습니다. 즉, 반사적으로 드라이버를 로드하는 경우 다음 기능이 기본적으로 비활성화됩니다:
v2.0부터 Nidhogg는 커널 모드 COFF 실행을 위한 "Nidhogg 오브젝트 파일"(NOF)이라는 새로운 기능을 갖추게 되었습니다. 즉, 자신만의 커널 모드 코드를 작성하여 COFF 파일로 컴파일할 수 있으며, 이 파일은 다음에 접근할 수 있습니다:
이 기능은 VBS(가상화 기반 보안)와 호환되지 않습니다. HVCI 및 kCFG를 위반하기 때문입니다.
v1.0부터 Nidhogg는 NidhoggScripts를 실행할 수 있습니다. 이는 여러 명령을 순차적으로 실행하여 Nidhogg용 플레이북을 만들 수 있는 도구입니다. 작성 방법은 위키를 참조하십시오.
유지 관리가 어렵고 인기가 많지 않아 v2.0에서 지원이 중단되었으며, 다음 주요 릴리스에서 제거될 예정입니다. 이 기능은 Nidhogg의 API에 접근할 수 있는 커널 모드 COFF 실행을 위한 "Nidhogg 오브젝트 파일"(NOF)이라는 다른 기능으로 대체될 예정입니다.
v1.0부터 Nidhogg는 초기 작업으로 NidhoggScripts도 실행할 수 있습니다. 즉, 프로젝트 디렉토리 루트(Python 파일과 동일한 디렉토리)에 out.ndhg 파일이 있으면 드라이버가 실행될 때마다 해당 파일을 실행합니다.
유지 관리가 어렵고 인기가 많지 않아 v2.0에서 지원이 중단되었으며, 다음 주요 릴리스에서 제거될 예정입니다. 이 기능은 Nidhogg의 API에 접근할 수 있는 커널 모드 COFF 실행을 위한 "Nidhogg 오브젝트 파일"(NOF)이라는 다른 기능으로 대체될 예정입니다.
[!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
테스트 환경에서 드라이버를 디버깅하려면 관리자 권한 cmd에서 이 명령을 실행하고 컴퓨터를 재부팅합니다:
bcdedit /debug on
재부팅 후 DebugView와 같은 도구에서 디버깅 메시지를 볼 수 있습니다.
이 프로젝트에 기여해 주신 분들께 감사드립니다: