В последние годы мы отучились воспринимать Windows как нечто невероятно дырявое. Эта операционка определенно стала более стойкой к хакерским атакам, и основной поток ненависти пользователей она теперь собирает с помощью своих глючных апдейтов. Впрочем, последние доклады с ИБ-конференций показывают, что и с безопасностью у нее все далеко не идеально.
 

Обходим всю современную киберзащиту майкрософтовского Edge

Henry Li, Jack Tang. Cross the Wall — Bypass All Modern Mi10tigations of Microsoft Edge // Black Hat. 2017

В 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) делится некоторыми из разработанных им трюков. В том числе:

  1. Трюк, при помощи которого можно обойти CFG и DEP и обеспечить себе возможность произвольного выполнения кода. На примере браузера Edge этот трюк эксплуатирует темную сторону системного механизма «прокладок» и не требует применения традиционной техники ROP.
  2. Трюк, при помощи которого можно обойти ASLR. Эксплуатируя логические недоработки в механизме «сборщика мусора», который используется в языках программирования для управления памятью при работе с динамическими переменными (в частности, в таких популярных JS-движках, как jscript9 и chakra), злодей может обойти ASLR без необходимости эксплуатировать какую-либо уязвимость.

 

Что такое shims («прокладки»)

Shims представляют собой небольшие фрагменты кода, которые перехватывают API-вызовы приложений — для их согласования между различными версиями ОС. Иначе говоря, прокладки предназначены для «исправления совместимости»: чтобы приложения, разработанные для более ранних версий ОС и ее API, могли корректно выполняться и в текущей версии ОС. «Прокладка» может либо какую-то возможность отключать в текущей версии ОС, либо эмулировать определенное поведение старой версии API.

 

Новый тренд в разработке эксплоитов: атаки, ориентированные на данные

Bing Sun, Chong Xu, Stanley Zhu. The Power of Data-Oriented Attacks: Bypassing Memory Mitigation Using Data-Only Exploitation Technique // Black Hat. 2017

Поскольку практически все разработчики приложений стали повально делать акцент на контроле целостности потока управления (в частности, пользоваться майкрософтовским механизмом CFG), традиционные методы эксплуатации уязвимостей (направленные на захват контрольного потока) стали трудноосуществимы. Как теперь жить хакерам? Неужели им придется повесить на крюк свои черные шляпы и отправиться на моря проживать свои неправедно нажитые капиталы?

Оказывается — нет, о хакерской пенсии речь пока не идет. Взломщики начали искать способ эксплуатировать уязвимости, не затрагивая потока управления... и нашли его. Они придумали атаку, ориентированную на данные (DOA, data-oriented attack), принципиальное отличие которой в том, что она направлена на фальсификацию в приложении критических данных, а не на то, чтобы изменить поток управления.

DOA-атаки позволяют злодею в числе прочего подключать к приложению нежелательные или отключенные модули (и затем эксплуатировать уязвимости, содержащиеся в коде этих модулей) и изменять атрибуты у некоторых страниц оперативной памяти. Первый вариант для киберзлодеев в особенности интересен, потому что современные приложения, как правило, тянут за собой прицепом большие куски невостребованного бинарного кода, который вроде бы к программе отношения не имеет, но волочится за ней мертвым грузом. Порой для DOA-атаки достаточно изменить лишь несколько битов данных. В докладе продемонстрировано на примере браузера Edge (Windows 10), как при помощи DOA-атаки можно обходить защитные механизмы CFG/DEP.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии