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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-30051 — Master's Thesis research on CVE-2024-30051 (Windows DWM Heap Overflow). Features a high-reliability exploit with automated heap spray optimization, real-time logging, and empirical success-rate analysis. Portfolio piece demonstrating advanced Windows binary exploitation, heap layout manipulation, and LPE via Desktop Window Manager. | Kitploit
도구/GitHubGitHub/devianntsec/cve-2024-30051
Privilege EscalationMemory ForensicsVulnerability AnalysisExploitationReverse EngineeringPapers & ResearchLearning & EducationPayload DevelopmentBinary Exploitation

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →

소개

Master's Thesis research on CVE-2024-30051 (Windows DWM Heap Overflow). Features a high-reliability exploit with automated heap spray optimization, real-time logging, and empirical success-rate analysis. Portfolio piece demonstrating advanced Windows binary exploitation, heap layout manipulation, and LPE via Desktop Window Manager.

GitHubdevianntsec/cve-2024-30051

CVE-2024-30051

저장소 보기
13개월 전아직 검토되지 않음
공유

CVE-2024-30051 — Windows DWM 힙 오버플로우 EoP · 석사 학위 논문 연구

Platform Language License: MIT Research CVSS

Windows 데스크톱 창 관리자(dwmcore.dll)의 힙 기반 버퍼 오버플로우
로컬 권한 상승 → DWM 프로세스를 통한 무결성 수준 SYSTEM
빌드 대상: Windows 11 22H2 (10.0.22621.3447) · 패치: KB5037771


설명

이 저장소는 Windows 데스크톱 창 관리자 핵심 라이브러리(dwmcore.dll)의 높은 심각도(CVSS 7.8)의 권한 상승 취약점인 CVE-2024-30051에 대한 석사 학위 논문 연구를 포함하고 있습니다.

취약점은 CCommandBuffer::Initialize의 정수 나눗셈 크기 계산 오류에서 비롯됩니다. 이 계산 오류로 인해 new()에 사용된 크기와 memcpy()에 사용된 크기가 달라져 0x8F 바이트의 힙 오버플로우가 발생합니다. 성공적인 익스플로잇은 dwm.exe가 공격자가 제어하는 DLL을 로드하여 window manager\dwm-1 계정으로 무결성 수준 SYSTEM에서 임의 코드를 실행하게 합니다.

내 기여


저장소 구조

root@kitploit:~
CVE-2024-30051-Masters-Thesis/
├── README.md
├── LICENSE
├── setup.bat                        # s11.dll을 필요한 위치로 복사
│
├── exploit/
│   ├── C21.sln                      # Visual Studio 2022 솔루션
│   ├── exploit_src/
│   │   ├── c26f.vcxproj
│   │   ├── c26f.filters
│   │   └── main.cpp                 # 익스플로잇 — 힙 스프레이 + 후킹 + 오버플로우
│   └── payload/
│       ├── payload.vcxproj
│       ├── payload.vcxproj.filters
│       ├── dllmain.cpp              # 페이로드 DLL — SYSTEM 셸 생성 + 정리
│       ├── framework.h
│       ├── pch.h
│       └── pch.cpp
│
└── docs/
    ├── screenshots/                 # 패치 diffing, WinDbg 및 포렌식 캡처
    └── analysis/
        ├── 01-root-cause.md         # CCommandBuffer::Initialize의 정수 나눗셈 버그
        ├── 02-heap-spray.md         # 50세션 실증 데이터 및 통계 결과
        └── 03-timeline.md           # 발견, 공개 및 패치 연대기

빠른 시작

사전 요구 사항

  • Windows 11 22H2(빌드 22621.3447, 패치되지 않음 — KB5037771 없음)
  • C++ 데스크톱 워크로드가 포함된 Visual Studio 2022
  • 스냅샷이 포함된 VM 권장 (재현 가능한 힙 상태에 필요)

1단계 — 페이로드 DLL 빌드

Visual Studio 2022에서 C21.sln을 엽니다. Release x64로 payload 프로젝트를 빌드합니다.

2단계 — DLL 배치

저장소 루트에서 setup.bat을 실행합니다. s11.dll을 C:\Users\Public\Documents\s11.dll(PAYLOAD_DLL_PATH에 정의된 경로)로 복사합니다.

⚠️ DLL은 C26f.exe를 실행하기 전에 반드시 이 정확한 경로에 있어야 합니다. 실행 파일 옆에 배치하면 작동하지 않습니다.

3단계 — 익스플로잇 빌드

Release x64로 C26f 프로젝트를 빌드합니다.

4단계 — 실행

root@kitploit:~
x64\Release\C26f.exe

표준(비상승) CMD에서 실행합니다. 익스플로잇은 최대 10번 자동 재시도합니다. 성공하면 dwm.exe가 s11.dll을 로드하고 SYSTEM 무결성 수준의 CMD를 생성합니다. 세션 로그는 %TEMP%\cve_30051_log.txt에 기록됩니다.


익스플로잇 구성

root@kitploit:~
#define MAX_ATTEMPTS        10      // Max auto-retry attempts per session
#define SPRAY_STEP          0x10    // Hole spacing index (1024 holes)
#define SPRAY_RANGE_START   0x3000  // Spray range start index
#define SPRAY_RANGE_END     0x7000  // Spray range end index
#define SLEEP_POST_SPRAY    0xC8    // ms wait after spray (200ms)
#define SLEEP_POST_HOLES    0xC8    // ms wait after freeing holes (200ms)
#define PAYLOAD_DLL_PATH    "C:\\Users\\Public\\Documents\\s11.dll"

기술 개요

취약점 근본 원인

CCommandBuffer::Initialize(dwmcore.dll 10.0.22621.3447)에서 CD2DSharedBuffer::GetBufferSize가 두 번 호출됩니다. new()에 전달된 크기는 곱셈 전에 0x90으로 정수 나눗셈을 거치는 반면, memcpy()는 원시 값을 사용합니다:

root@kitploit:~
buffer_size = GetBufferSize()   → e.g. 0x23F

size_new    = (0x23F / 0x90) * 0x90  = 0x1B0   ← allocated
size_memcpy = 0x23F                             ← copied

overflow    = 0x23F - 0x1B0 = 0x8F bytes

패치 Diffing 결과

빌드 10.0.22621.3447(취약)과 10.0.22621.3593(패치) 간 BinDiff 비교:

전체 유사도 0.98과 대조되는 0.32의 이상 점수는 취약점 위치의 직접적인 신호입니다.

익스플로잇 체인

root@kitploit:~
1. Hook RtlCreateHeap               → dwmcore 힙 핸들 캡처
2. Hook RtlAllocateHeap             → 기본 청크 주소 캡처
3. Hook NtDCompositionCreateChannel → MappedAddress(공유 메모리 영역) 캡처
4. Hook NtDCompositionCommitChannel → 크기 필드 덮어쓰기 (0x120 → 0x23F)
                                      추가 배치 명령 주입
5. 힙 스프레이 0x10000개의 CHolographicInteropTexture 객체(크기=0x1B0)
6. 0x10 인덱스마다 구멍 해제         → 오버플로우 착지를 위한 갭 생성
7. 페이로드를 오버플로우 버퍼에 쓰기 → KCBTable+0x388 + LoadLibraryA + DLL 경로
8. 모든 스프레이 객체 해제           → 오버플로우 트리거 → LoadLibraryA("s11.dll")
9. dwm.exe가 페이로드 DLL 로드       → SYSTEM 무결성으로 CMD 생성

실증 힙 스프레이 분석 (50세션)

연구 질문

사용 가능한 RAM이 성공적인 힙 스프레이에 필요한 시도 횟수에 영향을 미칩니까?

실험 설계

각 25세션의 두 블록. 세션별 프로토콜: 깨끗한 부팅 후 스냅샷 복원 → 100초 안정화 대기 → 익스플로잇 실행 → 성공 시도 기록.

블록RAM세션성공실패
A8,192 MB25241

결과

통계 테스트

테스트통계량p-value결론
Mann-Whitney UU = 184.0p = 0.031H₀ 기각
Welch's t-testt(23) = −2.695p = 0.011H₀ 기각

주요 결론

  • C1: 부팅 후 DWM 힙은 이론적 예측보다 12.9–19배 더 결정적입니다.
  • C2: RAM 가용성은 스프레이 신뢰성에 통계적으로 유의미한 영향을 미칩니다(p = 0.031).
  • C3: RAM을 절반으로 줄이면 표준편차가 두 배가 됩니다(1.135 → 2.645).
  • C4: 두 구성 모두에서 실패율은 4%로 동질적입니다.
  • C5: 상수 base = heap_base + 0x720은 결정론의 주요 동인이 구멍 밀도가 아니라 재현 가능한 부팅 후 힙 레이아웃임을 확인합니다.
  • C6: RAM이 8GB 이상인 경우 공격자는 처음 5회 시도 내에 성공을 기대할 수 있습니다.

전체 원시 데이터, 세션 로그 형식 및 결정적 힙 관찰 내용은 docs/analysis/02-heap-spray.md에 문서화되어 있습니다.


익스플로잇 후 출력

성공하면 window manager\dwm-1 아래에 CMD 창이 열립니다:

root@kitploit:~
=====================================================
  CVE-2024-30051 - Windows DWM Heap Overflow EoP
  CWE-122  |  CVSS 7.8  |  Elevation of Privilege
=====================================================

  Researched and reproduced by : devianntsec
  Original PoC by              : Ricardo Narvaja (Fortra)
  Target                       : Windows 11 22H2 (22621.3447)

=====================================================

  [*] Current user:
  window manager\dwm-1

  [*] Mandatory Integrity Level:
  Mandatory Label\System Mandatory Level   S-1-16-16384

  [*] Enabled privileges:
  SeImpersonatePrivilege    Enabled

=====================================================
  Shell running under DWM process - SYSTEM level
=====================================================

아티팩트(s11.dll 및 .bat 스크립트)는 지연 정리 프로세스를 통해 5초 후 자동으로 삭제됩니다.


포렌식 아티팩트


기술 문서

문서설명
근본 원인 분석CCommandBuffer::Initialize의 정수 나눗셈 버그, 패치 diffing 방법론

학술적 배경

이 연구는 사이버보안 석사 학위 논문(UCAM — Campus Internacional de Ciberseguridad)의 일부로, 여러 환경에서 N-Day 취약점을 분석합니다.

이 CVE는 논문 내 Windows 데스크톱 애플리케이션 벡터를 나타내며, 다음을 시연합니다:

  • DirectComposition ALPC 채널을 통한 힙 기반 버퍼 오버플로우 익스플로잇
  • N-Day 취약점 위치 탐색을 위한 체계적인 방법으로서의 바이너리 diffing (BinDiff)
  • 외부 도구 없이 진행 중인 프로세스 내 API 후킹
  • RAM 구성에 따른 힙 스프레이 결정론의 실증적 정량화

키워드: EoP · Heap Overflow · DirectComposition · DWM · Patch Diffing · BinDiff · WinDbg · Heap Spray · Empirical Analysis · CVE-2024-30051


저자

Annais Molina (devianntsec) — 사이버보안 석사 과정

GitHub LinkedIn Email


감사의 말

  • Ricardo Narvaja (Fortra/CoreSecurity) — 원본 PoC 및 리버스 엔지니어링 기술 문서
  • Kaspersky GReAT — 최초 취약점 발견 및 책임 공개
  • Microsoft MSRC — 패치 KB5037771 (2024년 5월)

라이선스

MIT 라이선스 — LICENSE 참조


법적 고지

이 저장소는 학술 석사 학위 논문의 일부로서 교육 및 보안 연구 목적으로만 제공됩니다. 모든 테스트는 네트워크에 노출되지 않은 격리된 가상 머신에서 수행되었습니다. 귀하가 소유하거나 명시적인 서면 승인을 받은 시스템에서만 사용하십시오. 시스템에 대한 무단 사용은 불법이며 형사 기소로 이어질 수 있습니다.

© 2026 Annais Molina · 사이버보안 석사 학위 논문
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
도구 다운로드
측면설명
패치 diffingCCommandBuffer::Initialize를 정확한 취약점 위치로 식별하는 완전한 BinDiff 분석 (14,062개 일치 함수 중 유사도 점수 0.32 vs 전역 0.98)
WinDbg 동적 분석모든 4개 후크, 크기 필드 덮어쓰기 및 페이로드 구성의 단계별 검증
실증 힙 스프레이 분석두 가지 RAM 구성(8,192MB 및 4,096MB)에서 공식 통계 테스트를 포함한 50개의 통제된 세션
통계적 발견Mann-Whitney U(p = 0.031) 및 Welch t-검정(p = 0.011)이 RAM 효과를 확인; 관측 평균이 이론적 예측(64회 시도)보다 12.919배 더 나음
페이로드 DLL 경로 중앙화하드코딩된 경로를 #define PAYLOAD_DLL_PATH 전처리기 상수로 추출
세션 로깅각 세션당 전체 타임스탬프 로그가 %TEMP%\cve_30051_log.txt에 기록됨
학술 문서근본 원인, 50세션 힙 스프레이 분석 및 CVE 타임라인
메트릭값
전체 유사도0.98
신뢰도0.99
일치 함수14,062 (99.1%)
CCommandBuffer::Initialize 유사도0.32
기본 블록 — 취약한 버전4
기본 블록 — 패치된 버전20 (16개 검증 블록 추가)
B
4,096 MB
25
24
1
블록RAM평균 시도표준편차95% CI이론 대비 비율 (64)
A8,192 MB3.3751.135[2.896; 3.854]≈ 19× 더 빠름
B4,096 MB4.9582.645[3.841; 6.076]≈ 12.9× 더 빠름
아티팩트위치지속성탐지 도구
dwm.exe의 자식 cmd.exe보안 이벤트 로그예 (프로세스 감사가 활성화된 경우)Event ID 4688
dwm.exe에 접근하는 외부 프로세스Sysmon예Sysmon Event ID 10
실패 시도 시 dwm.exe 충돌애플리케이션 이벤트 로그예Event ID 1000
디스크의 페이로드 DLL s11.dllC:\Users\Public\Documents\처음 약 5초 동안만SHA-256 모니터링
힙 스프레이 분석50세션 실증 데이터, 원시 세션 데이터, 통계 테스트
CVE 타임라인발견, 공개 및 패치 연대기