
CVE-2022-41120/CVE-2022-44704에 대한 PoC: ClipboardChange RPC를 통한 Sysmon의 임의 파일 삭제/쓰기 취약점으로, Windows에서 로컬 권한 상승으로 이어집니다.
Sysmon의 임의 파일 삭제/쓰기 취약점(CVE-2022-41120/CVE-2022-44704)에 대한 개념 증명
취약점은 RPC를 통해 도달할 수 있는 ClipboardChange 이벤트를 처리하는 코드에 있습니다. 로컬 사용자는 RPC 서버로 데이터를 보낼 수 있으며, 해당 데이터는 이후 C:\Sysmon 디렉터리(기본 ArchiveDirectory)에 기록된 다음 삭제됩니다. 14.11 이전 버전에서 Sysmon은 디렉터리가 낮은 권한의 사용자에 의해 생성되었는지 또는 정크션(junction)인지 확인하지 않았으며, 이는 NT AUTHORITY\SYSTEM 사용자 권한으로 임의 파일 삭제/쓰기(문자열만 쓸 수 있어 다소 제한적임)를 수행하는 데 악용될 수 있습니다. 14.11/14.12 버전에서는 초기 수정 이후 Sysmon이 디렉터리가 존재하는지 확인하고, 디렉터리가 존재하면 파일 쓰기/삭제를 거부했습니다. 이 패치는 Sysmon이 먼저 C:\Sysmon 디렉터리를 생성하도록(CreateDirectory API 사용) 한 뒤, SetFileSecurity가 호출되어 C:\Sysmon 디렉터리의 DACL이 변경되기 전에 해당 디렉터리에 대한 핸들을 열어 우회되었습니다.
모든 테스트는 Windows 10에서 수행되었습니다.
제 PoC에서는 임의 파일 삭제/쓰기를 연쇄적으로 사용하여 먼저 프린터 드라이버의 설치 정보 파일을 삭제한 다음 수정된 .INF 파일을 작성했습니다(스풀러 서비스가 기본적으로 활성화되어 있고 낮은 권한의 사용자가 Windows 클라이언트에서 프린터 드라이버를 다시 설치할 수 있기 때문입니다). 설치 정보 파일은 서비스 생성, 레지스트리 수정, 파일 복사 등 모든 종류의 작업을 수행하는 데 악용될 수 있습니다. 저는 프린터 기본 DLL 중 일부를 c:\windows\system32에 복사하고 낮은 권한의 사용자가 수정할 수 있도록 해당 파일에 권한을 설정하기로 선택했으며, 이는 CopyFiles 지시문(https://learn.microsoft.com/en-us/windows-hardware/drivers/install/inf-copyfiles-directive)을 사용하여 수행됩니다. 파일이 복사되면 상승된 cmd.exe 프로세스를 생성하는 DLL로 덮어쓰여집니다. Windows 설치 프로그램 동작을 악용하여 임의 파일 삭제만으로 LPE를 수행하는 것도 가능합니다(@KLINIX5가 찾은 트릭이며 ZDI에서 여기 https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks 에 문서화했습니다).
모든 테스트는 13.3414.12 버전에서 수행되었습니다.
취약한 최소 버전이 정확히 무엇인지는 알 수 없지만, ClipboardChange 이벤트가 12.0 버전에서 도입되었으므로 12.014.12 버전이 취약하다고 생각합니다.
이 취약점을 악용하려면 ArchiveDirectory를 사용하는 이벤트(ClipboardChange 및 FileDelete)가 활성화되어 있으면 안 됩니다. 이 두 이벤트가 사용되면 ArchiveDirectory가 생성되고 안전한 권한이 설정되기 때문입니다.
취약한 버전을 사용 중이고 업데이트할 수 없다면 ArchiveDirectory(기본값 C:\Sysmon)를 생성하고 NT AUTHORITY\SYSTEM 계정만 액세스할 수 있도록 권한을 설정할 수 있습니다.