Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-97798-exploit — CVE-2026-97798 Windows 오류 보고 - SYSTEM 권한으로의 명령 주입 | Kitploit
도구/GitHubGitHub/g4sp4rcs/cve-2026-97798-exploit
Privilege EscalationVulnerability AnalysisExploitationPost-ExploitationRed TeamingPayload Development
GitHubg4sp4rcs/cve-2026-97798-exploit

CVE-2026-97798-exploit

CVE-2026-97798 Windows 오류 보고 - SYSTEM 권한으로의 명령 주입

저장소 보기
4257일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-97798 — SYSTEM 권한으로 이어지는 Windows 오류 보고 인수 주입

[!WARNING] 이 저장소는 승인된 취약점 연구 및 통제된 실험실 검증을 위한 것입니다. 개념 증명은 호환되는 faultrep.dll!SpawnDataCollector 구현을 정확히 하나 식별할 수 없을 때 안전하게 실패합니다.

CVE-2026-97798은 Windows 오류 보고(WER) 시간 여행 디버깅(Time Travel Debugging) 경로의 로컬 권한 상승 취약점입니다. 권한이 없는 호출자는 WER 권한 경계를 넘어 공격자가 제어하는 명령줄 구문을 보존할 수 있습니다. 이후 권한이 상승된 수집기가 해당 입력을 인수 경계를 보존하지 않고 TTTracer.exe 명령줄에 연결합니다. 따라서 주입된 -out 및 -launch 스위치는 TTD 레코더에 의해 레코더 옵션으로 해석되어, 공격자가 선택한 실행 파일이 수집기의 상승된 토큰으로 실행되도록 합니다.

포함된 단일 파일 PoC는 이 기본 요소를 대화형 NT AUTHORITY\SYSTEM 셸로 전환합니다. 이는 표준 사용자 계정과 중간 무결성의 UAC 필터링된 관리자 계정 모두에서 검증되었습니다.

대화형 SYSTEM 셸

동영상

저장소 내용

경로설명
src/CVE-2026-97798.cpp완전한 단일 이미지 익스플로잇 소스
bin/CVE-2026-97798.exe재현 가능한 x64 실험실 빌드
build.ps1결정적 LLVM-MinGW 빌드 스크립트
assets/system-shell.png격리된 VM에서 캡처한 whoami 증거

아직 보고서 PDF는 포함되어 있지 않습니다. 장문 논문은 여전히 편집 중입니다.

근본 원인

취약한 흐름은 여러 구성 요소를 거칩니다:

low/medium-integrity process
  -> faultrep.dll!CElevatedDataCollection::ControlTimeTravelDebugging
  -> faultrep.dll!SpawnDataCollector
  -> Windows Error Reporting service (elevated collector)
  -> CDataCollection::ControlTimeTravelDebugging
  -> TtdControl::LaunchRecordingProcess
  -> TTTracer.exe / TTDRecord.dll command-line parser
  -> attacker-controlled -launch target

요청에는 합법적인 실행 파일로 시작하지만 추가 TTD 스위치를 덧붙인 Process 값이 포함되어 있습니다. 취약한 구현은 취약한 정확한 이름 기반 차단 목록을 적용한 뒤 나중에 프로세스 문자열을 권한 있는 레코더 명령줄에 직접 포맷팅합니다. 프로세스 값이 하나의 인수로 직렬화되지 않기 때문에, TTTracer가 결과를 파싱할 때 그 공백이 인수 구분자가 됩니다.

개념적으로, 주입된 부분은 다음과 같습니다:

Process=CVE-2026-97798-payload.exe
  -out ..\..\Users\Public\Documents\CVE97798\trace
  -launch ..\..\Users\Public\Documents\CVE97798\CVE-2026-97798-payload.exe
  --payload;

상대 경로는 의도된 것입니다. WER은 이 데이터를 .ttdconfig 경로명에도 포함시키는데, 절대 드라이브 접두사는 콜론을 도입하여 ERROR_INVALID_NAME으로 실패합니다. 순회 스타일 경로는 이러한 파서 충돌을 피하면서 제어된 공용 디렉터리로 정규화됩니다.

이는 일반적인 셸 명령 주입이 아닌 인자 주입 문제(CWE-88)입니다. 취약한 싱크에서 cmd.exe /c가 필요하지 않습니다. TTTracer 자체가 주입된 스위치를 해석합니다.

단일 파일 PoC 설계

일반적인 사용에는 CVE-2026-97798.exe만 필요합니다. 동일한 PE 이미지가 여러 내부 모드에서 자기 자신을 다시 진입합니다:

  1. 로드된 PE64 예외 테이블을 파싱하고 WER 수집기 opcode와 프로토콜 불변 조건을 포함하는 고유 함수로부터 faultrep.dll!SpawnDataCollector를 동적으로 확인합니다. 빌드별 RVA는 포함되지 않습니다.
  2. 통합 콘솔 클라이언트를 시작하고 증명 상태를 생성합니다.
  3. WER 권한 상승된 수집기를 획득하고 조작된 TTD 요청을 제출합니다.
  4. TTTracer가 페이로드 모드에서 동일한 이미지를 실행합니다.
  5. 페이로드가 명명된 파이프를 통해 실제 cmd.exe를 노출하여, 표시되는 사용자 세션 콘솔이 세션 0에서 생성된 셸과 상호 작용할 수 있게 합니다.

배포되는 아티팩트는 하나의 EXE로 유지됩니다. 런타임에 동일한 이미지의 두 가지 별칭을 준비합니다: 하나는 통합 콘솔용, 하나는 권한 상승된 페이로드용입니다. 페이로드 별칭은 TTTracer의 -onlaunch 대상으로도 사용되므로, 레코더는 실제로 실행하는 프로세스를 관찰하고 해당 짧은 페이로드 단계가 끝나면 종료됩니다. PoC는 각 트리거 전과 성공적인 페이로드 후에 오래된 TTD 상태를 재설정하여, 중단된 실행이 다음 실행을 HRESULT 0x80070032로 실패하게 만드는 것을 방지합니다.

표준 사용자의 경우 권한 상승된 수집기 경로가 SYSTEM에 직접 도달합니다. UAC 필터링된 관리자의 경우 WER이 먼저 연결된 높은 관리자 토큰으로 페이로드를 실행합니다—계정 이름은 변경되지 않지만 TokenIsElevated=true입니다. 그런 다음 PoC는 동일한 이미지를 SYSTEM으로 다시 진입합니다. 먼저 직접 SYSTEM 토큰 프로세스 생성을 시도하고, 대체 수단으로 단기 Task Scheduler 항목을 사용합니다. 대체 작업은 실행 직후 삭제됩니다.

검증된 환경

구성 요소검증된 값
OSWindows 11 24H2 x64, 빌드 26100.9550
취약한 faultrep.dll10.0.26100.9549
수정된 비교 대상faultrep.dll 10.0.26100.9711
TTTracer / TTDRecord1.11.580.0
동적 확인자 검사9549: RVA 0x4CEB0; 9711: RVA 0x4E40C
PoC SHA-256C7B8FAFB132D69E9BD5A398AE183107155129C7080A87D56EFE55572450B4147

확인자는 x64 예외 테이블을 순회하며 수집기의 대형 프레임 설정, 요청 opcode 0xD0000002, 메시지 크기 0x578, 대기 시간 제한 10000, 그리고 세 가지 예상 대기/서비스 오류 매핑을 가진 함수 하나를 요구합니다. 이는 제공된 두 faultrep.dll 빌드 모두에 대해 검사되었고, 관련 없는 PE 이미지에 대해 부정 테스트되었습니다. 빌드 번호나 RVA는 저장되지 않습니다. 향후 빌드가 해당 구현을 충분히 변경하여 일치가 모호하거나 불완전해지면, PoC는 간접 호출을 수행하기 전에 중지됩니다.

사용법

취약한 빌드의 일회용 스냅샷을 사용하십시오. 권한이 없는 PowerShell 또는 명령 프롬프트에서:

.\bin\CVE-2026-97798.exe

성공하면 통합 콘솔에 다음이 출력됩니다:

[CVE-2026-97798] Exploit shell token:
nt authority\system

기계 판독 가능한 증명은 아래에 작성되어 있습니다:

C:\Users\Public\Documents\CVE97798\system-proof.txt

The resolver는 취약점을 트리거하지 않고 오프라인 x64 DLL에 대해서도 테스트할 수 있습니다:

.\bin\CVE-2026-97798.exe --resolve C:\path\to\faultrep.dll

설치된 시스템 DLL을 사전 점검하려면 취약한 경로를 트리거하지 않고도 다음을 수행할 수 있습니다:

.\bin\CVE-2026-97798.exe --preflight

필터링된 관리자 검증에 성공하면 다음과 같은 결과가 생성되었습니다:

cve=CVE-2026-97798
user=NT AUTHORITY\SYSTEM
is_system=true
is_elevated=true
payload_session=0
shell_session=0
spawn_error=0

빌드

x64 LLVM-MinGW 툴체인을 설치하고 x86_64-w64-mingw32-clang++.exe를 PATH에 배치하거나, 해당 파일의 절대 경로를 명시적으로 전달하세요:

.\build.ps1

# or
.\build.ps1 -Compiler C:\toolchains\llvm-mingw\bin\x86_64-w64-mingw32-clang++.exe

빌드는 정적이며 PE 링커 타임스탬프를 억제하므로, 동일한 소스와 툴체인 입력은 동일한 실행 파일 해시를 생성합니다.

정리

먼저 PoC 콘솔을 닫으십시오. 관리자 권한의 실험실 콘솔에서 TTD 상태가 여전히 활성 상태로 남아 있는 경우:

Stop-Process -Name TTTracer,TTDInject -Force -ErrorAction SilentlyContinue
C:\Windows\System32\TTTracer.exe -cleanup
Remove-Item -Recurse -Force C:\Users\Public\Documents\CVE97798

일회용 VM 스냅샷을 되돌리는 것이 권장되는 최종 정리 방법입니다.

탐지 및 완화

유용한 텔레메트리에는 WER에서 발생하는 예상치 못한 TTTracer.exe 실행, 반복되거나 비정상적인 -onlaunch, -out, -launch 스위치를 포함하는 명령줄, 그리고 사용자가 쓰기 가능한 디렉터리에서 실행되는 레코더 자식 프로세스가 포함됩니다. TTTracer 단독으로 경보를 발생시키기보다는 WER 활동, TTTracer 명령줄, 생성자 PID, 토큰 권한 상승, 파일 해시를 함께 연관 지어 분석하십시오.

faultrep.dll 버전 10.0.26100.9711 이상 또는 이를 대체하는 이후 업데이트가 포함된 Microsoft 업데이트를 설치하십시오. 수정된 구현은 신뢰할 수 없는 데이터가 레코더에 도달하기 전에 레거시 TTD 요청 경로를 비활성화합니다.

참고 자료

  • Microsoft Security Response Center — CVE-2026-97798
  • Microsoft Learn — Time Travel Debugging command-line utility
  • MITRE CWE-88 — Argument Injection
도구 다운로드