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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/elliotkillick/ldrlockliberator
Persistence MechanismsExploitationPost-ExploitationRed TeamingPayload Development
GitHubelliotkillick/ldrlockliberator

LdrLockLiberator

DLLMain이 유일한 방법일 때를 위한 도구

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

LdrLockLiberator

DLLMain이 유일한 방법일 때를 위한

LdrLockLiberator는 DllMain 또는 잠금이 존재할 수 있는 다른 곳에서 코드를 실행할 때 Loader Lock을 벗어나거나 우회하기 위한 기법 모음입니다. 이는 "Perfect DLL Hijacking" 문서와 함께 공개되었습니다. 우리는 여러분께 라이브러리 로더의 잠금을 해제하고 (여러분 자신의 컴퓨터에서) 로더로 원하는 대로 할 수 있는 열쇠를 제공합니다!

이 기법들은 가능한 한 범용적이고, 깨끗하며, 100% 안전하도록 설계되었습니다. 메모리 보호나 포인터를 수정하지 않고도 작동하도록 설계되었습니다. 이는 최신 익스플로잇 완화 조치와의 호환성을 유지하는 데 중요합니다. 공식적으로 지원되는 유일한 아키텍처는 x86-64입니다(32비트는 거의 사라졌습니다).

DllMain이 Windows에서 그렇게 문제가 많은 반면 Unix 계열 운영 체제는 여기서 어려움을 겪지 않는 아키텍처적 이유를 알고 싶으신가요? 부디, 맘껏 읽어보세요!

기법

LdrFullUnlock

말 그대로입니다. Loader Lock을 잠금 해제하고, 로더 이벤트를 설정하고, LdrpWorkInProgress를 뒤집습니다. 최상의 안정성을 위해 RUN_PAYLOAD_DIRECTLY_FROM_DLLMAIN을 정의하지 않은 상태로 유지하는 것이 좋습니다.

프로덕션 코드에서 이 기법을 사용하지 마십시오. 이는 순전한 호기심과 하나도 빠짐없이 파헤치고자 하는 의지의 부산물로 만들어졌습니다. 이 코드로 무엇을 하든 그 책임은 당신에게 있습니다.

종료 시점에 탈출하기

우리는 DLL 코드에서 프로그램이 종료될 때 Loader Lock을 벗어나기 위해 일반적으로 EXE에서 사용하는 CRT atexit를 사용합니다. 동적 로드(LoadLibrary 사용)의 경우 LdrAddRefDll을 사용하여 라이브러리를 고정(LDR_ADDREF_DLL_PIN)함으로써 이후의 FreeLibrary가 메모리에서 우리 DLL을 제거하지 못하게 하여 100% 안전하게 만듭니다.

잠금을 우리에게 유리하게 사용하기

곧 공개 예정!

샘플

제공된 샘플은 C:\Program Files\Windows Defender\Offline\OfflineScannerShell.exe의 MpClient.dll을 하이재킹합니다. 다른 DLL 및 프로그램 조합에 쉽게 적용할 수 있도록 소스 코드 주석에 지침이 제공되어 있습니다(주로 정적 로드의 경우 익스포트만 업데이트하면 됩니다)!

개념 증명으로 기본 페이로드로 ShellExecute를 실행합니다. 그러나 원하는 대로 무엇이든 실행하도록 만들 수 있습니다!

컴파일

Visual Studio

이 프로젝트의 루트에 있는 LdrLockLiberator.c는 Visual Studio 2022에서 컴파일되도록 테스트되었습니다.

솔루션 탐색기 창에서 현재 Visual Studio 프로젝트를 선택한 다음 메뉴 표시줄에서 프로젝트 > 속성으로 이동하여 NTDLL에 연결합니다. 상단의 구성 드롭다운 메뉴에서 모든 구성 및 모든 플랫폼을 선택합니다. 이제 링커 > 입력으로 이동한 다음 추가 종속성에 ntdll.lib를 추가합니다.

WDK

올바른 WDK 설치

  1. WDK 다운로드 페이지로 이동합니다.
  2. 올바른 WDK 버전 다운로드를 시작하려면 Windows 7 WDK 7.1.0 링크를 클릭합니다.
  • 원래 MSVCRT(C:\Windows\System32\msvcrt.dll)에 대한 링크를 공식적으로 지원하는 마지막 공개 WDK입니다.
  • SHA-256 체크섬: 5edc723b50ea28a070cad361dd0927df402b7a861a036bbcf11d27ebba77657d
  1. 다운로드한 ISO를 마운트한 다음 KitSetup.exe를 실행합니다.
  2. 기본 옵션을 사용하여 설치 프로세스를 진행합니다.

컴파일

  1. 시작 메뉴에서 "x64 Free Build Environment"를 검색한 다음 엽니다.
  2. 이 리포지토리의 LdrLockLiberatorWDK로 이동합니다(cd 사용).
  3. build를 실행합니다.

완료! DLL이 빌드되어 사용할 준비가 되었습니다!

WDK의 대안으로 MinGW로 컴파일해도 아마 작동할 것입니다.

라이선스

MIT License - Copyright (C) 2023-2024 Elliot Killick [email protected]

도구 다운로드