Содержание статьи
- Обходим всю современную киберзащиту майкрософтовского Edge
- Что такое CFG
- Что такое shims («прокладки»)
- Новый тренд в разработке эксплоитов: атаки, ориентированные на данные
- Windows отдувается за уязвимости Linux: увеличиваем привилегии через WSL
- Big Data на службе выявления не охраняемых CFG-подсистемой «ворот»
- 16 байт, которые позволили обойти CFG-защиту
- Реверсим движок Windows Defender
Обходим всю современную киберзащиту майкрософтовского Edge
В Windows 10 по умолчанию активированы такие защитные механизмы, как ASLR (Address Space Layout Randomization — рандомизация распределения адресного пространства), DEP (Data Execution Prevention — предотвращение выполнения кода, размещенного в сегменте данных) и CFG (Control Flow Guard — охрана потока управления). Благодаря им киберзлодею значительно сложнее манипулировать памятью операционной системы. Самый перспективный из этих защитных механизмов — CFG. Если атакуемое приложение защищено механизмом CFG, то руки взломщика остаются связанными, даже если у него есть произвольный доступ (на запись и на чтение) ко всему адресному пространству оперативной памяти.
Что такое CFG
CFG представляет собой механизм безопасности, призванный предотвращать ситуации, когда «косвенные переходы» (косвенные call/jmp) перенаправляют поток управления в неожиданные места адресного пространства. Впервые появившийся в Windows 8.1, CFG на данный момент реализован в Windows 10 в качестве расширенной функции безопасности.
Суть работы CFG в следующем: во время компиляции перед каждым критичным «косвенным переходом» вставляется специальная функция, контролирующая корректность потока управления. Затем эта специальная функция проверяет, уже в рантайме, целевые адреса перехода при помощи заранее предопределенной CFG-карты (CFG bitmap).
Однако хакеры не сидят на месте и постоянно придумывают все новые и новые трюки для обхода непрерывно совершенствующихся механизмов киберзащиты. В этой презентации докладчик (инженер из Trend Micro) делится некоторыми из разработанных им трюков. В том числе:
- Трюк, при помощи которого можно обойти CFG и DEP и обеспечить себе возможность произвольного выполнения кода. На примере браузера Edge этот трюк эксплуатирует темную сторону системного механизма «прокладок» и не требует применения традиционной техники ROP.
- Трюк, при помощи которого можно обойти ASLR. Эксплуатируя логические недоработки в механизме «сборщика мусора», который используется в языках программирования для управления памятью при работе с динамическими переменными (в частности, в таких популярных JS-движках, как jscript9 и chakra), злодей может обойти ASLR без необходимости эксплуатировать какую-либо уязвимость.
Что такое shims («прокладки»)
Shims представляют собой небольшие фрагменты кода, которые перехватывают API-вызовы приложений — для их согласования между различными версиями ОС. Иначе говоря, прокладки предназначены для «исправления совместимости»: чтобы приложения, разработанные для более ранних версий ОС и ее API, могли корректно выполняться и в текущей версии ОС. «Прокладка» может либо какую-то возможность отключать в текущей версии ОС, либо эмулировать определенное поведение старой версии API.
Новый тренд в разработке эксплоитов: атаки, ориентированные на данные
Поскольку практически все разработчики приложений стали повально делать акцент на контроле целостности потока управления (в частности, пользоваться майкрософтовским механизмом CFG), традиционные методы эксплуатации уязвимостей (направленные на захват контрольного потока) стали трудноосуществимы. Как теперь жить хакерам? Неужели им придется повесить на крюк свои черные шляпы и отправиться на моря проживать свои неправедно нажитые капиталы?
Оказывается — нет, о хакерской пенсии речь пока не идет. Взломщики начали искать способ эксплуатировать уязвимости, не затрагивая потока управления... и нашли его. Они придумали атаку, ориентированную на данные (DOA, data-oriented attack), принципиальное отличие которой в том, что она направлена на фальсификацию в приложении критических данных, а не на то, чтобы изменить поток управления.
DOA-атаки позволяют злодею в числе прочего подключать к приложению нежелательные или отключенные модули (и затем эксплуатировать уязвимости, содержащиеся в коде этих модулей) и изменять атрибуты у некоторых страниц оперативной памяти. Первый вариант для киберзлодеев в особенности интересен, потому что современные приложения, как правило, тянут за собой прицепом большие куски невостребованного бинарного кода, который вроде бы к программе отношения не имеет, но волочится за ней мертвым грузом. Порой для DOA-атаки достаточно изменить лишь несколько битов данных. В докладе продемонстрировано на примере браузера Edge (Windows 10), как при помощи DOA-атаки можно обходить защитные механизмы CFG/DEP.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»