Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DNSRPC-BOF — Beacon Object File(BOF) 구현으로, MS-DNSP를 사용하여 ServerLevelPluginDll 엣지를 악용함으로써 ADIDNS 서버에서 원격 코드 실행을 얻는 데 사용되는 dnscmd.exe 기능을 구현합니다. | Kitploit
도구/GitHubGitHub/paradoxis/dnsrpc-bof
ExploitationPost-ExploitationPenetration TestingRed TeamingPayload Development
GitHubparadoxis/dnsrpc-bof

DNSRPC-BOF

Beacon Object File(BOF) 구현으로, MS-DNSP를 사용하여 ServerLevelPluginDll 엣지를 악용함으로써 ADIDNS 서버에서 원격 코드 실행을 얻는 데 사용되는 dnscmd.exe 기능을 구현합니다.

저장소 보기
505141개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

DNSRPC-BOF

dnscmd.exe 기능의 Beacon Object File(BOF) 구현으로, MS-DNSP1를 사용하여 ServerLevelPluginDll 엣지2 3 4를 악용해 ADIDNS 서버에서 원격 코드 실행을 얻는 데 사용됩니다. 악용에는 DnsAdmins 그룹의 구성원인 사용자 계정에 대한 액세스 권한이 필요합니다.

[!NOTE] BOF는 C 예외를 기본적으로 지원하지 않기 때문에, 이 확장은 RtlRaiseException 메서드에 후킹하여 RPC 호출 중에 제어 흐름을 BOF로 되돌립니다. 이 방법은 다소 임시방편적이지만, Microsoft의 RPC 구현이 제어 흐름에 RpcTryExcept를 많이 사용하기 때문에 필요합니다. 테스트 환경에서는 잘 작동했지만, 이 기술로 인해 비콘 불안정이 발생할 수 있다는 점을 인지하십시오.

컴파일

프로젝트를 컴파일하려면 MinGW가 설치된 시스템에서 make를 사용하거나:

root@kitploit:~
make

Windows에서 Visual Studio용 x64 네이티브 도구 명령 프롬프트를 사용하는 경우 .\build.bat를 사용할 수 있습니다:

root@kitploit:~
.\build.bat

두 컴파일 단계 모두 .o 파일과 .exe 파일을 생성하여 랩 환경에서 BOF 기능을 실험해 볼 수 있습니다.

사용법

ADIDNS 서버와 상호 작용하기 위해 다음 BOF가 생성되었습니다:

  • dnsrpc_probe - ADIDNS 서버가 활성 상태인지 확인
  • dnsrpc_info - 현재 ADIDNS 서버 설정 가져오기
  • dnsrpc_coerce_write - dnsrpc_set_plugin_dll 플러그인으로 DC를 망가뜨리기 전에 DC가 지정된 네트워크 공유에 도달할 수 있는지 테스트하기 위해 ADIDNS 서버가 네트워크 공유에 파일을 쓰도록 강제하는 유틸리티
  • dnsrpc_set_plugin_dll - 서버가 다시 시작될 때 로드할 DLL 구성
  • dnsrpc_restart_server - ADIDNS 서버에 다시 시작 명령 실행
  • dnsrpc_cleanup - dnsrpc_coerce_write 및 dnsrpc_set_plugin_dll 명령이 남긴 레지스트리 아티팩트 정리. 도메인 컨트롤러 자체에서 실행해야 합니다.

또한 dnssrv_plugin.c에 예제 페이로드가 제공되어 있습니다.

[!WARNING] 어떤 이유로든 DC가 dnsrpc_set_plugin_dll로 지정한 DLL 페이로드에 접근할 수 없으면 DC가 다시 시작되지 않아 전체 도메인이 마비될 가능성이 높습니다. 실수로 대상을 파괴하기 전에 dnsrpc_coerce_write를 사용하여 DC가 실제로 공유에 연결할 수 있는지 테스트하는 것이 좋습니다. DNS가 다운되면 사람들은 화를 내는 경향이 있습니다.

또한 dnsrpc_restart_server는 2분간의 DNS 중단을 초래합니다. BOF를 여러 번 호출하면 제한 시간이 매번 늘어나므로 절약해서 사용하십시오.

개발

개발 환경에서 BOF를 테스트하려면 TrustedSec의 COFFLoader와 같은 도구를 사용할 수 있으며, Windows에서 다음과 같이 컴파일할 수 있습니다:

root@kitploit:~
cl.exe /W4 /DCOFF_STANDALONE /DDEBUG beacon_compatibility.c COFFLoader.c /Fe:COFFLoader.exe /link advapi32.lib

그런 다음 BOF(예: dnsrpc_info BOF)를 실행하려면 인수를 생성하여 COFFLoader에 전달합니다:

root@kitploit:~
> python beacon_generate.py
Beacon Argument Generator
Beacon>addWString DC01
Beacon>generate
b'0e0000000a00000044004300300031000000'
Beacon> exit

> cl.exe /c /GS- dnsrpc_info.c /Fo:dist\dnsrpc_info.o
> COFFLoader.exe go dist\dnsrpc_info.o 0e0000000a00000044004300300031000000
...
        $SG77912
: Section: 3, Value: 0xA08
        $SG77914H
: Section: 3, Value: 0xA48
        $SG77915X
: Section: 3, Value: 0xA58
        .chks64: Section: 11, Value: 0x0
        X: Section: 0, Value: 0x0
Back
Returning
Ran/parsed the coff
Outdata Below:

server name: DC01.research.lan
server version: 4F7C000A (10.0 build 20348)
rpc structure version: 2 (longhorn)
directory services available: yes
admin configured: yes
allow update: yes
is read-only domain controller: no
boot method: 3 (registry)
no recursion: no
round robin: yes
secure responses: yes
forward timeout: 3
recursion retry: 3
recursion timeout: 8
max cache ttl: 86400
directory services polling interval: 180
scavenging interval: 0
log level: 0x00000000
directory services container: cn=MicrosoftDNS,cn=System,DC=research,DC=lan
domain name: research.lan
forest name: research.lan
log file path: (none)
server addresses: fe80:0000:0000:0000:4cbe:0281:82dd:76ed, 172.16.50.107
listen addresses: (none)
forwarders: 8.8.8.8, 1.1.1.1

IDL 정의를 다시 컴파일하려면 다음 명령을 사용할 수 있습니다:

root@kitploit:~
midl /W1 /char signed /env x64 /target NT100 /Oicf dnsrpc.idl

개발 중 _DEBUG 플래그는 최종 바이너리에 wmain을 추가하고, _VERBOSE 플래그는 추가 디버그 로깅을 포함하는 데 사용됩니다. 자세한 내용은 build.bat 및 Makefile을 참조하십시오.

라이선스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하십시오. 이 도구의 사용으로 인한 오용이나 손해에 대해 어떠한 책임도 지지 않습니다. 명시적 허가가 있는 환경에서만 사용하십시오.

Footnotes

  1. https://raw.githubusercontent.com/paradoxis/dnsrpc-bof/HEAD/%3Chttps:/learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dnsp/9500a7e8-165d-4b13-be86-0ddc43100eef%3E ↩

  2. https://raw.githubusercontent.com/paradoxis/dnsrpc-bof/HEAD/%3Chttps:/medium.com/@esnesenon/feature-not-bug-dnsadmin-to-dc-compromise-in-one-line-a0f779b8dc83%3E ↩

  3. https://raw.githubusercontent.com/paradoxis/dnsrpc-bof/HEAD/%3Chttps:/www.semperis.com/blog/dnsadmins-revisited/%3E ↩

  4. https://raw.githubusercontent.com/paradoxis/dnsrpc-bof/HEAD/%3Chttps:/www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/from-dnsadmins-to-system-to-domain-compromise%3E ↩

도구 다운로드