🐸 Микро анонс!
Скоро мы приступим к редактуре предпоследней части эпопеи про кучу, кто не успел прочитать про нее ранее -> вкатываемся.
"У меня с кучами разговор короткий - привет куча, я твой друг, дасвиданья!"
Переполнение кучи. Часть 1:
• Основы эксплуатации unlink() и перезаписи указателей на функции
• Эксплуатация фильтра необработанных исключений (UEF)
• Эксплуатация векторной обработки прерываний (VEH)
Переполнение кучи. Часть 2:
• Рассмотрены ещё несколько структур кучи и используемых ею алгоритмов аллокации и освобождения памяти, таких как: RtlAllocateHeap() RtlFreeHeap(), слияние, разделение блоков. Такие структуры как: кучи, сегменты, списки lookaside и freelist, заголовки чанков и т.д.
• Безопасный unlink
• Куки заголовков кучи
• Техника эксплуатации: перезапись чанка в списке lookaside aka "перезапись ListHead"
Переполнение кучи. Часть 3:
• Описана еще одна популярная атака вставкой во freelist[0]
• Описан плагин для ImmunityDebugger !heaper
Переполнение кучи. Часть 4:
• Теория битмапа FreeListInUse
• Описана атака Николаса Вайзмана (Nicolas Wiseman) "инверсия битмапа FreeListInUse"
• Объясняю, как я облажался с RtlCommitRoutine :/ и как, наверное, это можно исправить
• Heaper получает возможность анализа битмапа FreeListInUse. Для удобной работы с кодом создан репозиторий на GitHub