
Windows의 UAF에 대한 LPE 익스플로잇(CVE-2021-40449).
CVE-2021-40449를 위한 익스플로잇입니다. win32kfull!GreResetDCInternal의 UAF를 통한 Windows LPE입니다.
UAF 취약점과 함께 이 익스플로잇을 가능하게 하는 다른 프리미티브들이 사용됩니다:
SystemHandleInformation 매개변수를 사용한 NtQuerySystemInformation() 함수를 통해 ring0에서 익스플로잇의 access token 주소 누출.rtlSetAllBits()를 가젯으로 사용하여 익스플로잇의 access_token.privileges를 0xFF로 덮어씀.EnumDeviceDrivers() 함수를 통해 ntoskrnl.exe 모듈의 기본 주소를 누출하여 ring0에서 rtlSetAllBits() 주소 누출.BitMapHeader를 익스플로잇의 access_token.privileges를 덮어쓸 수 있도록 제작.NtSetInformationThread() 프리미티브를 통해 제작된 BitMapHeader를 할당하고 SystemBigPoolInformation 매개변수를 사용한 NtQuerySystemInformation() 함수를 통해 big pool에서 할당 주소 누출.EnumPrinters()를 통해 시스템의 프린터를 열거하고 그중 하나의 드라이버를 로드한 다음 사용자 모드 콜백 함수 DrvEnablePDEV()에 대한 호출을 후킹합니다.DrvEnablePDEV() 함수로 호출을 프록시하고, 익스플로잇 작업을 수행한 다음 프록시된 호출에서 반환된 값을 GDI에 반환합니다.DrvEnablePDEV()에서 ResetDC()에 대한 두 번째 호출을 통해 UAF 트리거.CreatePalette() 프리미티브를 사용하여 동일한 크기의 제작된 객체를 스프레이하여 해제된 PDC 객체 회수.SeDebugPrivilege 권한을 악용하여 winlogon.exe 프로세스에 셸코드를 주입하여 NT AUTHORITY\SYSTEM 권한 획득.자세한 내용은 Kaspersky의 이 기사에서 확인할 수 있습니다.
Win10 Redstone(build 14393)에서 테스트됨.