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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
NativeBypassCredGuard — NTAPI 함수만 사용하여 WDigest.dll을 패치함으로써 Credential Guard를 우회합니다. | Kitploit
도구/GitHubGitHub/ricardojoserf/nativebypasscredguard
Password AttacksIDS/IPS EvasionPost-ExploitationRed Teaming
GitHubricardojoserf/nativebypasscredguard

NativeBypassCredGuard

NTAPI 함수만 사용하여 WDigest.dll을 패치함으로써 Credential Guard를 우회합니다.

저장소 보기
2703411년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

NativeBypassCredGuard

NativeBypassCredGuard는 ntdll.dll이 내보내는 NTAPI 함수만 사용하여 WDigest.dll을 패치함으로써 Credential Guard를 우회하도록 설계된 도구입니다. C#과 C++ 두 가지 버전으로 제공됩니다.

이 도구는 디스크에 있는 WDigest.dll 파일에서 "39 ?? ?? ?? ?? 00 8b ?? ?? ?? ?? 00" 패턴을 찾은 다음(References 섹션의 첫 번째 게시물에 설명된 대로, 이 패턴은 모든 Windows 버전의 이 파일에 존재합니다), 필요한 메모리 주소를 계산하고, 마지막으로 WDigest.dll 내부의 두 변수인 g_fParameter_UseLogonCredential(1로)과 g_IsCredGuardEnabled(0으로)의 값을 패치합니다.

이로 인해 메모리에 일반 텍스트 자격 증명 저장이 강제되어, 이후 사용자가 로그인할 때 자격 증명이 평문으로 저장됩니다. 결과적으로 다음에 LSASS 프로세스를 덤프하면 비밀번호가 평문으로 포함될 수 있습니다.

사용되는 NTAPI 함수는 다음과 같습니다:

poc

  • NtOpenProcessToken 및 NtAdjustPrivilegesToken을 사용하여 SeDebugPrivilege 권한 활성화
  • NtCreateFile 및 NtReadFile을 사용하여 디스크의 DLL 파일에 대한 핸들을 열고 바이트 읽기
  • NtGetNextProcess 및 NtQueryInformationProcess를 사용하여 lsass 프로세스에 대한 핸들 얻기
  • NtReadVirtualMemory 및 NtQueryInformationProcess를 사용하여 WDigest.dll 기준 주소 얻기
  • NtReadVirtualMemory를 사용하여 변수 값 읽기
  • NtWriteProcessMemory를 사용하여 변수에 새 값 쓰기

NTAPI 함수만 사용하면 ntdll.dll 라이브러리를 다시 매핑하여 사용자 모드 후크와 보안 메커니즘을 우회할 수 있으며, 이는 이 도구의 선택적 기능입니다. 사용하는 경우, 일시 중단(suspended) 모드로 생성된 프로세스에서 깨끗한 버전의 ntdll.dll을 얻습니다.


사용법

root@kitploit:~
NativeBypassCredGuard.exe <OPTION> <REMAP-NTDLL>

옵션 (필수):

  • check: 현재 값 읽기
  • patch: 새 값 쓰기

ntdll 다시 매핑 (선택):

  • true: ntdll 라이브러리 다시 매핑
  • false (또는 생략): ntdll 라이브러리를 다시 매핑하지 않음

예제

값 읽기 (ntdll 다시 매핑 없이):

root@kitploit:~
NativeBypassCredGuard.exe check

img1

값 패치 (ntdll 다시 매핑과 함께):

root@kitploit:~
NativeBypassCredGuard.exe patch true

img2


참고 사항

  • 이 도구는 64비트 시스템용으로 설계되었으므로 64비트 바이너리로 컴파일해야 합니다

  • lsass에 대한 핸들을 열 수 없거나 PEB 구조를 읽을 수 없는 경우 작동하지 않습니다. 후자의 경우, ntdll!NtReadVirtualMemory와 ntdll!NtQueryInformationProcess를 사용하여 lsass 프로세스에서 기준 주소를 가져오는 대신 kernel32!LoadLibrary를 사용하여 프로세스에 WDigest.dll을 로드해 기준 주소를 얻을 수 있습니다(C 버전에 이 코드가 주석 처리되어 있습니다). 하지만 그러면 ntdll.dll이 아닌 kernel32.dll이 내보내는 함수를 사용하게 되며, 프로세스가 해당 DLL을 로드하는 것은 아마 이상해 보일 것입니다 :)

  • 0x3rhy님이 이 프로젝트를 기반으로 BOF 파일을 만들었습니다: BypassCredGuard-BOF


참고 자료

  • Revisiting a Credential Guard Bypass by itm4n - DLL의 .text 섹션에서 검색할 패턴을 가져온 훌륭한 분석 자료

  • WDigest: Digging the dead from the grave by neuralhax - g_fParameter_UseLogonCredential에 다른 값을 사용할 수 있음을 입증한 놀라운 블로그로, 아직 테스트하지는 않았지만 useLogonCredential_Value 변수로 실험해 볼 수 있습니다

  • Exploring Mimikatz - Part 1 - WDigest by xpn - WDigest 자격 증명 캐싱을 리버스 엔지니어링하고 설명하는 훌륭한 블로그 게시물

도구 다운로드