[하루한줄] CVE-2021-1678 : MSRPC Printer Spooler Relay
URL
Security Advisory: MSRPC Printer Spooler Relay (CVE-2021-1678)
Target
- 2021년 1월 12일 패치 이전
- Windows 7, 8.1, 10
- Windows Server 2008, 2012, 2016, 2019
Explain
2021년 1월 12일 Patch Tuesday에서 CVE-2021-1678이 패치되었습니다. 이 취약점을 통해 해커는 NTLM(NT Lan Manager) 인증 세션을 릴레이 하여 프린터 스풀러 MSRPC 인터페이로 원격 코드 실행이 가능합니다.
NTLM 릴레이는 해커가 클라이언트와 서버 사이에서 메시지나 정보들을 전달합니다. 해커는 클라이언트인 척 하지만, 서버는 클라이언트가 해커인지 알지 못하며 NTLM 인증 중 서버에서 제공한 정보를 통해 서버에 인증이 가능합니다. NTLM 인증은 보호 기능이 없으면 모든 프로토콜에서 다른 프로토콜로 릴레이 할 수 있습니다. 해당 취약점은 NTLM 릴레이 공격을 통해 MSRPC를 타게팅하여 이루어집니다.
MSRPC는 인증에 대한 여러 가지 단계가 있지만 RPC_C_AUTHN_LEVEL_CONNECT
는 사용자 인증을 통한 전송에 암호화나 서명을 하지 않으므로 NTLM 릴레이 공격을 악용할 수 있습니다. RPC 인터페이스 중 IRemoteWinspool
은 패킷 보안이 필요하지 않으므로 다음과 같은 방법으로 RPC 명령을 실행할 수 있습니다.
- NTLM 세션이 해커에 의해 제어되는 릴레이 머신에 설정
- 해커는
IRemoteWinspool
인터페이스에 바인딩하고RPC_C_AUTHN_LEVEL_CONNECT
권한을 선택 - NTLM 인증이 RPC 채널에서 해커에 의해 릴레이 됨
- PrinterDemon 공격 흐름과 같이 PRC 명령이 실행됨:
RpcAsyncInstallPrinterDriverFromPackage
(Opnum 62) - “generic/text” 프린터 드라이버 설치RpcAsyncOpenPrinter
(Opnum 0)RpcAsyncXcvData
(Opnum 33) - 포트 추가RpcAsyncAddPrinter
(Opnum 1) - 드라이버에 따른 프린터 추가RpcAsyncStartDocPrinter
(Opnum 10) - 새 문서 시작RpcAsyncWritePrinter
(Opnum 12) - 새 문서 작성
해당 취약점은 IRemoteWinspool
의 RpcManager::VerifyRpcValidProtocolSequence
에서 RPC_C_AUTHN_LEVEL_PKT_PRIVACY
이상의 레벨에서만 접근 가능하도록 패치되었습니다.
Reference
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.