Криптотрюк против реверс-инжиниринга

Скоро жизнь антивирусных компаний может сильно усложниться. «Конец (простого) анализа зловредов :D», — написал в твиттере известный торговец эксплоитами the grugq, когда увидел анонс хакерской конференции SyScan со списком докладов. Конференция пройдёт в марте в Сингапуре.

Среди докладчиков упомянут Якоб Торри (Jacob Torrey), который намерен представить новую схему шифрования исходного кода программ под названием Hardened Anti-Reverse Engineering System (HARES).

Технология предусматривает, что код программы расшифровывается непосредственно процессором в последний момент перед исполнением. Это затрудняет анализ программы инструментами для реверс-инжиниринга. Такой анализ, как известно, проводится для изучения образцов вредоносного ПО, декодирования функций программы с целью снятия защиты от копирования и т.д.

«Это делает приложение полностью непрозрачным, — говорит Якоб Торри, который работает в нью-йоркской компании Assured Information Security в сфере информационной безопасности.

Если технология работает как заявлено, то её могут использовать разработчики ПО вроде Adobe или Autodesk в качестве DRM-подобного механизма. Ну и, конечно, авторы зловредов.

Если конкретнее, то для реализации описанного алгоритма используется десинхронизация буфера TLB (Split TLB) на процессорах Intel и AMD. Код программы разделяется на части в оперативной памяти, при этом часть с зашифрованными инструкциями каким-то образом расшифровывается ключом не из памяти, а из процессора. То есть для других программных приложений эти инструкции никак не могут быть доступны. Такой метод защищает даже от сложных методов с физической заморозкой оперативной памяти.

Не совсем понятно, как конкретно происходит дешифровка. Остаётся надеется, что на конференции 26-27 марта автор всё подробно разъяснит.

Анатолий Ализар: Бывший автор новостной ленты «Хакера». Увлекается современными технологиями, оружием, информационной безопасностью, носимой электроникой и в целом концепцией Internet of Things.

Комментарии (24)

  • Как будто раньше крипторов не было. Я на ассеблере криптор писал в 2004-м. новинка запоздала =)

    • все новое - хорошо забытое старое ))

    • А можно ссылку на хакерскую конференцию, где ты её показывал, а там посмотрели и сказали: "Да! Это правда работает, а не фейк."? А то в комментах-то многие могут писать.

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

    • Ну ты и болван, читать статью не пробовал? Сказано же, что процесс расшифровки устроен так, что расшифрованный фрагмент доступен только процессору, т.е. не содержится в оперативке.

  • Причем здесь крипторы как таковые? Речь о новом принципе в работе зашиты приложения.

  • >Не совсем понятно, как конкретно происходит дешифровка

    Наоборот всё понятно. Я думал на досуге об этом.
    1 каждый процессор имеет в своём составе физически неклонируемую функцию (PUF), её обозреваемый снаружи (с помощью специальной инструкции) шифротекст (в процессоре зашито 2 публичных ключа letni, на выход даётся аутентифицированный (подписанный) шифротекст) может получить любая программа. Сама PUF используется для вывода ключа для расшифровки программы вместе с секретным ключом, который тоже зашит в процесор, и хранится в базе letni. Используется CTR-режим, ключ для каждого блока выводится из адреса в памяти секретного ключа, которым является PUF.

    Возможно, тут где-то есть уязвимость к атаке по сторонним каналом, так как от кода зависит, что будет делать процессор, что скажется на памяти, на регистрах, которые должны быть видны, иначе ОС не сможет переключать контекст, на энергопотреблении. Посмотрим, что тот чувак скажет.

    2 копирасты пишут программу и договариваются с letni о деньгах и посылают им бинарник или исходники
    3 при продаже лицензии копирасты просят от пользователя шифротекст puf, через апи посылают запрос letni, letni им возвращает зашифрованный бинарник.
    4 копирасты пересылают бинарник пользователю.

    Преимущества схемы для фашисто-копирастов:
    1 исходник зашифрован, расшифровывается только внутри процессора, в памяти - мусор.
    2 ключ можно получить, только уничтожив процессор (и он будет бесполезен), надавив на интел или применив атаку по сторонним каналам
    3 Интел может мониторить, какие платные программы кто покупал
    4 можно запретить продажу некоторых или всех платных программ определённым лицам, организациям и государствам. Для этого нужно просто перестать шифровать для них программы. Конечно, копирасты могут сделать версию без дрм, но тогда она может утечь, и весь контракт с letni псу под хвост.
    Можно перманентно прекратить продажу, уничтожив ключи в базе letni.

    • Хотя нет, там что-то про TLB-split говорится. Надо об этом почитать.

  • На самом деле, нечто подобное давным-давно применял протектор Armadillo. Страницам памяти с кодом выставлялся атрибут PAGE_NOACCESS, поэтому при обращении к таким страницам возникала ошибка Page Fault, которая обрабатывалась криптором. Страница, к которой произошло обращение, расшифровывалась, другая, ранее расшифрованная, зашифровывалась снова. Конечно, можно лишь догадываться, насколько улучшен алгоритм, но непробиваемым он никак не выглядит.

  • Круто круто круто
    Люблю внимательных исследователей. Вообще считаю что на сегодня кучу багов ещё буду находить не в самом коде какой-либо программы, а все больше уязвимостях будут находить в фундаментальных технологиях. Будущие хакинга ещё грядёт.

  • Вот только вчера об этом думал, всё гениалное посто.

    • "всё гениалное посто" - Вы имели в виду "genial posto"? Не все здесь понимают по-португальски, Большая Шишка. :)

  • > используется десинхронизации буфера
    Журнал оккупировали цыгане!

  • Мое мнение что подобный способ обфускации будит ложить машину , если говорить об обычных машинах среднестатического пользователя. Кэш проца не резиновый. Даже маленькая программа криптованная таким способом будет ложить машину в глубокий даун.

    Может я ошибаюсь, но чует мое сердце. ждем подробностей доклада.

    • Вот-вот, мне вспомнился трюк, описанный давным-давно в Infected Voice с отключением промахов кэша, неужели реинкарнация? :)

Похожие материалы