
CVE-2023-32353에 대한 개념 증명 코드: Windows의 iTunes를 통한 로컬 권한 상승
음악 플레이어 Apple iTunes의 MSI 설치 프로그램에는 일반 권한의 낮은 권한 사용자가 Microsoft Windows 컴퓨터에서 NT AUTHORITY/SYSTEM 컨텍스트로 권한을 상승시킬 수 있는 취약점이 있었습니다. 이 저장소에는 이를 악용할 수 있는 방법을 보여주는 개념 증명(PoC)과, 이 유형의 취약점에 대해 더 배우고자 하는 보안 연구원 및 개발자를 위한 추가 정보가 포함되어 있습니다. 그러나 Q&A 섹션에서 읽을 수 있듯이 적용 가능성은 제한적입니다.
SYSTEM 셸을 얻지 못했습니다. 무엇을 잘못했나요?
개념 증명이므로 탐지되지 않도록 하는 데 많은 고려가 이루어지지 않았습니다. 이를 사용하려면 '버전 10.0.19041.572' 이전의 Windows 10 HOME Edition 설치를 실행해야 합니다. 해당 버전에서 이 취약점이 패치되었기 때문입니다. 저는 Windows 10 1909를 사용하여 테스트했습니다. 또한 "Windows 보안"으로 이동하여 Microsoft Defender/Windows Defender와 관련된 모든 것을 비활성화해야 합니다. 실시간 보호를 사용하여 \RPC Control에 대한 심볼릭 링크 생성을 차단하는 것으로 보이기 때문입니다(이 보호는 재시작할 때마다 자동으로 다시 켜집니다. 기억하세요!).
지금 iTunes를 사용하는 것이 두려워져야 하나요?
아니요, iTunes를 최신 버전으로 업데이트하면 괜찮습니다.
직접 빌드하지 않고 PoC를 실행할 수 있나요?
인터넷에서 .exe 파일을 실행하지 말 것을 강력히 권장하지만, 가상 머신에서 ./x64/Release/ 디렉토리의 Privilege-Escalation-using-Music-Player.exe를 실행하는 것은 작동할 것입니다. 그렇지 않은 경우 Microsoft에서 제공하는 링크에서 최신 VC 재배포 가능 패키지를 설치해 보세요.
실제 취약점은 무엇인가요?
MSI 복구 중에 설치 프로그램은 C:\ProgramData\Apple Computer\iTunes\ 내부에 "SC Info"라는 낮은 권한의 폴더를 만듭니다. 정확히 말하면, C:\ProgramData\Apple Computer\iTunes 디렉토리는 모든 사용자에게 전체 제어 권한을 부여하지 않습니다. 그러나 "SC Info"라는 하위 폴더는 Everyone(낮은 권한/표준 사용자 포함)에게 전체 제어 권한을 부여합니다. C:\ProgramData\Apple Computer\iTunes\ 폴더의 모든 내용을 수동으로 삭제하면(iTunes를 이전에 실행한 적이 있다면 "SC Info" 외에 더 많은 폴더가 있을 수 있음), 낮은 권한의 사용자가 C:\ProgramData\Apple Computer\iTunes\에서 NT AUTHORITY/SYSTEM이 쓸 수 있는 다른 디렉토리로 마운트 지점을 생성할 수 있습니다. 이 개념 증명에서는 "wermgr.exe.local" 기술이 사용되었으며, 이는 현재 Windows 10 버전에서 이미 완화되었고 제가 아는 한 Windows 10 HOME 에디션에만 적용됩니다. 따라서 C:\ProgramData\Apple Computer\iTunes\에서 \RPC Control로 마운트 지점을 만든 다음, \RPC Control\SC Info에서 ??\c:\windows\system32\wermgr.exe.local로 심볼릭 링크를 만들고(설치 프로그램이 iTunes 폴더 내부에 생성하는 폴더 이름인 SC Info를 기억하세요), iTunes 설치 프로그램의 MSI 복구 옵션을 사용하면 C:\Windows\System32 내부에 wermgr.exe.local이라는 디렉토리가 생성되며 Everyone에게 전체 제어 권한이 부여됩니다. 이렇게 하면 SC Info 폴더 생성이 \RPC Control로 리디렉션되고, RPC Control 자체가 폴더 생성을 System32 디렉토리로 리디렉션합니다. 그런 다음(다시 말하지만, 이것은 실제 취약점의 일부가 아니며 권한 상승 취약점 체인을 완성하기 위한 것입니다), NT AUTHORITY/SYSTEM으로 실행되는 서비스가, 낮은 권한의 사용자가 예약된 작업을 호출할 때에도 로드하고 명령을 실행할 특별히 명명된 하위 폴더에 조작된 DLL을 넣을 수 있습니다(예: NT AUTHORITY/SYSTEM으로 실행되는 cmd). 자세한 내용은 실제 코드나 아래 "수동 재현 단계" 섹션을 참조하세요.
개념 증명이므로 Windows Defender/Microsoft Defender를 끄세요(또한 Q&A 섹션을 읽으세요).
버전 12.12.9 이전의 iTunes를 설치합니다(예: 12.12.4.1).
C:\ProgramData\Apple Computer\iTunes의 모든 내용을 삭제하되, iTunes 폴더 자체는 유지합니다.
James Forshaw의 symboliclink-testing-tools를 사용하여 "C:\ProgramData\Apple Computer\iTunes"에서 "\RPC Control"로 마운트 지점을 생성합니다:
CreateMountPoint.exe "C:\ProgramData\Apple Computer\iTunes" "\RPC Control"
"\RPC Control\SC Info"에서 "??\c:\windows\system32\wermgr.exe.local"로 심볼릭 링크를 생성합니다.
CreateDosDeviceSymlink.exe "\RPC Control\SC Info" "??\c:\windows\system32\wermgr.exe.local"
iTunes MSI/iTunes 설치 프로그램 EXE를 사용하여 iTunes 설치를 "복구"합니다(설치 프로그램이 더 이상 없는 경우 C:\ProgramData\Apple Computer\Installer Cache\iTunes <버전>\에서 "iTunes64.msi"를 찾을 수 있습니다).
c:\windows\system32\wermgr.exe.local\로 이동합니다.
"amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.418_none_e6c6b287130d565d"라는 하위 폴더를 생성합니다(시스템에 따라 다를 수 있습니다. C:\Windows\WinSxS\ 디렉토리에서 "amd64_microsoft.windows.common-controls_"로 시작하는 최신 폴더 이름을 사용하세요).
amd64_microsoft.windows.common-controls_* 폴더 안에 "comctl32.dll"이라는 DLL 파일을 넣습니다.
다음 명령을 실행합니다:
schtasks.exe /Run /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"
comctl32.dll 파일 내에서 지정한 동작이 이제 NT AUTHORITY/SYSTEM 컨텍스트에서 실행됩니다. 예: cmd 창이 열립니다.