일본의 연구원인 Kento Oki가 Windows 운영 체제 커널에 서명되지 않은 악성 코드를 로드하도록 하는 PatchGuard의 취약점을 발견했다. Kernel Patch Protection으로 알려진 PatchGuard는 루트킷 감염 예방이나 커널 수준에서 악성 코드 실행을 방지하기 위해 64-비트 버전 윈도우 OS 커널에 패치되는 것을 막을 목적으로 설계된 보호 유틸리티이다. 이 기능은 2005년 윈도우 XP 및 윈도우 서버 2003 서비스 팩 1의 x64 에디션과 함께 처음 도입됐다.
Kento는 이 공격에 대한 기술적 세부 사항을 블로그에 게시했으며, 공격과 관련된 PoC 코드 도 공개했다.[그림 1]
[그림 1] PatchGuard를 우회하는 PoC 코드(출처: https://www.godeye.club/)
이 소식은 The Record에서 처음 보도했으며, 해당 언론 측에서는 마이크로소프트가 아직까지 취약점을 해결하지 못했다고 지적했다. The Record는 "Kento는 지난주 이메일을 통해 수년 동안 발견된 3개의 다른 PatchGuard 우회 취약점을 패치하지 않고 무시했기 때문에, 이 취약점을 수정하려고 서두르지 않을 것을 알고 있었다. 그래서 Microsoft에 버그를 알리지 않았다.”고 보도했다.
모든 64 버전의 윈도우가 PatchGuard 기능을 지원하기 때문에, 이 문제는 매우 위험한 것으로 간주된다. 공격자가 커널을 패치하면 악성 코드를 커널 모드로 실행할 수 있다. 즉, 가장 높은 수준의 권한으로 실행된 악성코드는 일반적인 보안 솔루션에서 탐지되지 않을 수 있다.
수 년 동안 보안 전문가들은 GhostHook, InfinityHook, ByePg 등 PatchGuard를 우회하기 위해 여러 공격을 고안했다. 이러한 공격을 실행하기 위해서는 공격자가 관리자 권한으로 코드를 실행해야 하므로, Microsoft에서는 공격의 심각도를 낮게 간주했다. 결국, 마이크로 소프트는 PatchGuard 우회 공격을 패치하지 않았고, 보안 문제가 아니라고 분류했다. 전문가들은 이러한 해킹 기술이 윈도우 시스템에 루트킷을 설치하고 보안 조치를 우회하는 데 악용될 수 있다고 지적했다.
[출처]
https://securityaffairs.co/wordpress/118427/hacking/microsoft-patchguard-kpp-bypass.html
https://www.godeye.club/2021/05/22/001-bypass-patchguard-pssetcreateprocessnotifyroutine.html
https://github.com/kkent030315/NoPatchGuardCallback
보안관제센터 Team MIR