
Windows 커널 세그먼트 힙에서 정렬된 청크 혼동을 악용하는 PoC
이 저장소는 Aligned Chunk Confusion이라는 익스플로잇 기법을 사용하는 PoC 익스플로잇을 포함합니다. 기법에 대한 자세한 내용은 논문에서 확인할 수 있습니다.
이 익스플로잇은 Windows 커널 힙의 힙 오버플로를 이용하여 권한을 Low에서 SYSTEM으로 상승시킵니다.
이 연구의 목표는 커널 풀(Pool)의 힙 오버플로 취약점에 대한 범용 익스플로잇을 개발하는 것이었습니다.
힙 오버플로를 익스플로잇할 때 취약한 객체(오버플로를 일으키는 객체)의 크기는 할당 위치와 방식에 영향을 주기 때문에 중요합니다. 또한 할당될 풀의 유형도 같은 이유로 관련이 있습니다.
따라서 범용적으로 동작하려면 익스플로잇은 다음을 충족해야 합니다.
제시된 익스플로잇은 PagedPool과 NonPagedPool 모두에서 동작할 수 있습니다. 서로 다른 객체로 유사한 기법을 사용합니다.
악용되는 취약점은 실제 취약점이 아니라, 완전히 제어 가능한 힙 오버플로를 노출하는 드라이버로 구성된 것입니다.
이 익스플로잇은 PoC이며 완벽하게 안정적이지는 않습니다. 대부분 0x130에서 0x300 크기에서 동작하지만, 어떤 크기에서도 동작하도록 조정할 수 있습니다. 익스플로잇의 안정성은 더 나은 힙 메시징(heap massaging) 기법을 사용하여 크게 개선할 수도 있습니다.
드라이버는 Driver에 있는 솔루션을 사용하여 Visual Studio로 컴파일할 수 있습니다.
makefile은 C로 작성된 전체 익스플로잇을 컴파일할 수 있습니다.
gcc-mingw-w64-x86-64에 의존합니다.
make
디버그 모드로 컴파일할 수 있으며, 드라이버를 사용한 검사와 더 상세한 출력이 추가됩니다.
make debug
이 연구는 SSTIC 2020 및 OPCDE 8에서 발표되었습니다. 두 발표의 슬라이드는 여기에서 확인할 수 있습니다.