
PoC для эксплуатации Aligned Chunk Confusion в Segment Heap ядра Windows
Этот репозиторий содержит PoC-эксплойт, использующий технику эксплуатации под названием Aligned Chunk Confusion. Подробности о технике можно найти в статье.
Этот эксплойт использует переполнение кучи в ядре Windows для повышения привилегий с Low до SYSTEM.
Целью исследования была разработка универсального эксплойта для уязвимости переполнения кучи в пуле ядра.
При эксплуатации переполнения кучи важен размер уязвимого объекта (того, который переполняется), поскольку он влияет на то, где и как объект будет выделен. Тип пула, в котором он будет выделен, также важен по тем же причинам.
Поэтому, чтобы быть универсальным, эксплойт должен:
Представленный эксплойт может работать как в PagedPool, так и в NonPagedPool; в нём используются схожие техники с разными объектами.
Эксплуатируемая уязвимость не является реальной; она сконструирована с помощью драйвера, предоставляющего полностью контролируемое переполнение кучи.
Эксплойт является PoC и не идеально стабилен. В основном он работает с размером от 0x130 до 0x300, но его можно адаптировать для работы с любым размером. Стабильность эксплойта также можно значительно улучшить, используя более эффективные техники массирования кучи.
Драйвер можно скомпилировать с помощью Visual Studio, используя решение в каталоге Driver.
Makefile позволяет скомпилировать весь эксплойт, написанный на C.
Для этого требуется gcc-mingw-w64-x86-64.
make
Его можно скомпилировать в режиме отладки, который добавит проверки с использованием драйвера и более подробный вывод.
make debug
Эта работа была представлена на SSTIC 2020 и на OPCDE 8. Слайды обеих презентаций доступны здесь.