Windows 테마를 통한 NTLM 인증정보 유출
편집 및 추가 설명: 트리샤 하워드(Tricia Howard)
핵심 요약
Akamai 보안 연구원 토머 펠레드(Tomer Peled) 는 최근 Microsoft Themes에서 스푸핑 취약점을 발견했습니다. 이 취약점은 CVSS 점수 6.5로 CVE-2024-21320 으로 지정되었습니다.
해당 취약점은 피해자가 인증정보(일반적으로 SMB를 통한 NTLM 해시 형식)를 공격자의 머신으로 강제로 전송하도록 하는 공격인 인증 강제를 유발할 수 있습니다. 공격자는 나중에 오프라인으로 인증정보를 크랙할 수 있습니다.
피해자가 테마 파일을 컴퓨터에 다운로드하기만 하면 공격자가 취약점을 악용할 수 있습니다. 사용자가 탐색기에서 파일을 볼 때 브라우저는 자동으로 인증정보가 포함된 SMB(Server Message Block) 핸드셰이크 패킷을 공격자의 서버로 전송합니다.
테마는 Windows 운영 체제에 내장된 기능이기 때문에 모든 Windows 버전이 영향을 받습니다.
Microsoft는 2024년 1월 패치 화요일에서 이 취약점을 수정했습니다.
Akamai는 PoC(Proof-of-Concept) 테마 파일과 PoC 비디오를 제공하고 이 취약점을 방어할 수 있는 몇 가지 방법을 제시합니다.
서론
Microsoft는 Windows XP 시절부터 색상, 글꼴, 커서 등 몇 가지 개인 설정 미리 보기 옵션을 기본으로 제공해 왔습니다. 개인 설정 방법은 매우 간단합니다. 바탕화면을 마우스 오른쪽 버튼으로 클릭하고 ‘개인 설정’을 선택한 다음 ‘테마’를 클릭하면 설치된 테마를 볼 수 있습니다. 테마 파일에는 .theme 라는 접미사가 붙으며 MSDN의 이 개요를 사용해 만들 수 있습니다.
무해해 보이는 이 멋진 기능은 교묘한 취약점의 은신처가 될 수 있습니다. Akamai는 2023년 9월 패치 화요일 분석 에서 테마 내 취약점인 CVE-2023-38146의 영향에 대해 간략하게 설명했습니다. 이 취약점을 분석하는 동안 테마 파일의 값을 ‘조작’해본 결과, 특정 매개변수에 유효성 검사가 부족하다는 사실을 발견했습니다.
이 유효성 검사 부족을 악용하면 사용자 상호 작용이 거의 없는 상태에서 공격을 실행할 수 있습니다. 사용자가 해야 할 일은 악성 테마 파일을 다운로드하는 것뿐입니다. 사용자가 탐색기에서 파일을 열람하면 악용이 시작됩니다.
Akamai는 이 취약점에 대해 알아야 할 사항과 방어 방법 및 PoC를 문서화했습니다. 이에 대해 자세히 설명합니다.
작동 방식
테마 파일 형식은 여러 개의 매개변수 블록으로 구성되어 있습니다. 이 게시물에서는 [Theme] 블록(그림 1) 내의 BrandImage 매개변수와 [Control Panel\Desktop] 블록 내의 Wallpaper 매개변수(그림 2) 등 두 가지 매개변수에 대해 설명합니다.
Windows의 모든 파일에는 기능에 해당하는 썸네일이 있습니다. 제품의 로고부터 사용법을 묘사한 이미지(예: 계산기)까지 무엇이든 썸네일이 될 수 있습니다. 테마 파일 썸네일은 배경화면(검은색 사각형), MSstyle 파일(보라색 사각형), 브랜드 이미지( Infection Monkey 이미지, 그림 3)의 세 부분으로 구성됩니다.
이러한 구성요소는 테마 파일 내부에 세 가지 매개변수인 BrandImage, Wallpaper, VisualStyle로 작성됩니다. 이는 모두 UNC 엔드포인트를 가리키는 원격 경로가 될 수 있습니다.
악용 방식
테마 파일을 만들거나 볼 때 Windows는 세 가지 구성요소에서 해당 파일에 적합한 썸네일 만들기를 시도합니다. 이 썸네일 생성 프로세스는 탐색기 프로세스 내에서 자동으로 시작됩니다. 그림 4는 테마 파일의 썸네일 생성을 위한 코드 흐름을 간략하게 설명합니다.
이 작업은 자동으로 시작되므로 공격자가 결과를 조작할 수 있는 방법을 찾기 좋은 위치가 됩니다. 공격자가 이 세 가지 파라미터의 값을 공격자가 제어하는 서버를 가리키는 UNC 경로로 변경해, 피해자의 머신이 자신의 머신에 대한 인증을 시도하기를 바라는 것이 공격자가 할 수 있는 방법 중 하나입니다.
이미지 경로는 UNC 경로를 포함한 모든 정상적인 경로가 될 수 있다는 것을 발견했습니다. ‘BrandImage‘ 또는 ‘Wallpaper‘의 값을 변경하면 피해자의 머신에서 인증 강제 공격으로 이어지는 연결이 이루어졌습니다. 즉, 클라이언트는 원격 서버에 대한 연결의 일부로 NTLM 인증정보를 전송하는 SMB 협상을 수행합니다.
NTLM 유출의 결과
공격자는 피해자의 NTLM 인증정보를 사용해 NTLM을 접속 인증정보로 수락하는 시스템에 대한 공격인 NTLM 릴레이 공격을 수행할 수 있습니다. 공격자는 NTLM 해시를 릴레이함으로써 정상적인 사용자로 인증해 다른 방법으로는 접속할 수 없는 시스템에 접속할 수 있습니다.
또 다른 방법은 무차별 대입으로 피해자의 비밀번호를 해독하기 위해 John the Ripper와 같은 비밀번호 해독 애플리케이션에 NTLM 인증정보를 입력으로 제공해 해독을 시도하는 것입니다.
2023년 3월에 처음 발견된 악명 높은 Outlook 취약점이 얼마나 큰 영향을 미칠 수 있는지를 보여주는 예입니다. 기존에 비슷한 취약점이 발견되었고 실제로 활발하게 악용되고 있어, 이 공격 기법이 공격자들에게 여전히 유용하고 수익성이 높다는 사실이 입증되었습니다.
공격자는 3월에 발견된 취약점을 통해 피해자에게 이메일을 보내는 방식으로 오디오 파일 다운로드를 트리거할 수 있었습니다. 해당 오디오 파일의 경로는 원격 서버(UNC 경로 사용)를 포함해 어디든 가리킬 수 있습니다. Akamai 연구원 벤 바네아 (Ben Barnea)는 이 취약점과 이에 대한 패치를 무력화하는 여러 가지 우회 방법 을 어떻게 발견했는지 자세히 설명했습니다.
패치된 내용
Microsoft는 패치를 통해 입력이 UNC 경로인지 확인하는 함수(‘PathIsUNC‘)에 대한 호출과 테마 파일 사용에 UNC 경로가 허용되는지 여부를 확인하는 레지스트리 값을 추가했습니다(그림 6). 경로가 UNC 경로이고, UNC 경로가 허용되지 않으면 썸네일이 로드되지 않습니다. 허용되는 경우 썸네일은 BrandImage 및 Wallpaper와 함께 생성됩니다.
‘DisableThumbnailOnNetworkFolder‘ 값은 레지스트리 위치 ‘HKCU/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/Mitigation‘에서 찾을 수 있습니다. 이 값은 라이브러리themeui.dll 내에 새로 추가된 함수 ‘ IsUNCPathAllowedForThumbnailImage()‘에서 확인됩니다.
이 취약점에 대한 FAQ 섹션 에서 Microsoft는 “사용자가 특수하게 조작된 파일을 조작하도록 유도하지만, 사용자가 반드시 악성 파일을 클릭하거나 여는 것은 아닙니다."라고 썼습니다. 하지만 Akamai의 리서치 결과 이는 잘못된 것으로 보입니다. 앞서 설명했듯이 파일 콘텐츠의 수정은 필요하지 않으며, 파일을 보는 것만으로도 인증정보 전송이 트리거됩니다.
방어
Windows 11에서는 그룹 정책을 통해 원격 머신이 있는 SMB에서 NTLM 인증 사용을 차단할 수 있습니다. 이렇게 하려면 관리자가 관리 템플릿 > 네트워크 > 랜맨 워크스테이션 > NTLM 차단을 편집 해야 합니다.
Microsoft는 이 취약점을 방어하는 데 도움이 되는 ‘NTLM 제한’이라는 다른 정책을 사용할 것을 제안했습니다. 이 정책은 Microsoft의 매뉴얼을 사용해 활성화할 수 있습니다.
네트워크 관리자는 마이크로세그멘테이션을 통해 네트워크 외부의 원격 위치에 대한 SMB 트래픽을 차단할 수 있습니다. SMB는 주로 도메인 컨트롤러 및 파일 서버와의 통신에 사용되므로, 이러한 연결은 일반적으로 발생하지 않을 것으로 예상됩니다. SMB 트래픽 세분화에 대한 자세한 내용은 마이크로세그멘테이션에 대한 포괄적인 블로그 게시물 을 참조하세요.
결론
인증 강제 공격은 잘 알려져 있으며 공격자들이 측면 이동 및 크리덴셜 스터핑을 위해 광범위하게 사용합니다. 예를 들어, 몇 년 전 Dragonfly 라는 그룹은 수정된 LNK 파일을 사용하고 SMB를 통해 인증정보를 획득했습니다. 테마 파일을 사용해 이러한 종류의 공격을 유발하는 것은 놀랍고 새로운 기법입니다.
이 취약점은 공격자가 정상적으로 보이는 공격 시작 파일을 쉽게 보낼 수 있기 때문에, 기업 내부의 피싱 방지 프로토콜 이 중요하다는 점을 잘 보여줍니다.
Microsoft가 이 공격 기법을 방어하기 위해 관련 그룹 정책을 추가하고 있어 다행입니다. 보안팀 직원에게는 최신 보안 패치로 엔드포인트를 업데이트할 것을 권장합니다.
공개 타임라인
2023/09/20 - MSRC(Microsoft Security Response Center)에 취약점 공개
2023/10/01 - MSRC에 추가 정보 전송
2023/10/18 - MSRC에서 패치의 필요성 인정
2024/01/09 - Microsoft에서 취약점에 대한 패치 출시
2024/03/06 - Akamai 블로그 게시물 게시