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

Скоро жизнь антивирусных компаний может сильно усложниться. «Конец (простого) анализа зловредов :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)

  • Недавно "думал" о написании своего подобного инструмента. Все идеи упираются в проблему первого ключа - он должен быть известен как минимум процессору и исполняемым приложению => известен всем. Поэтому всегда без эмуляции можно разреверсить криптованную программу.

    А теперь интересный вопрос: почему не существует до сих пор крипто-интерпретаторов?
    Т.е условно.:
    1) Пусть у нас есть некоторый исполняемый бинарь X
    2) Берем бинарь и разделяем на некотоыре куски(например блоки без переходов ) X = X_1 & X_2 & ... X_N
    3) Изменяем каждый такой блок по динамически генерируемому правилу(при кажом шифровании одного и того же бинаря правила должны различаться) и запоминаем все правила
    4) Генерируем из всех правил интерпретатор измененного бинаря
    Если в качестве дополнительных аргументов при шифровании блока использовать любые данные, известны на момент до старта шифрования, но неизвестны после - то полная расшифровка равносильна полной эмуляции. Осталось научиться генерировать подобный интерпретатор программно.

    Где я ошибаюсь, почему идея неверная? Стоит пробовать или уже кто-то сделал подобное?

  • вы чё как дети ведётесь на сказки и магию, процессор ведь откуда-то берёт начальные вводные, с них оперирую идёт дальше накачивая регистры для дешифра, так же и вы в той же последовательности способны на листочке тетради всё исследовать.. неужели НЕРЕАЛЬНО пронаблюдать за кодом?? Или тут обсуждается квантовый компьютер с его непонятной инопланетной технологией квант-байтстелс-4D-вируса))) вот лол так лол читать подобное, неужели в ЦПУ зашиты все ключи дешифра?) Ну так а если он их берёт откуда-то о и никто не мешает так же и вам от туда их взять! Несмотря на процессор.. или я по своему не прав?

  • Не понимаю в чем проблема... АВП видет, что программа зашифрована, загружает её в свою виртуалку и запускает на этом же процессоре. Анализирует команды и действия программы. Да, конечно это займёт чуть больше времени, но даже если пользователь скачает и сразу запустит зловред, скажем через 5 секунд, АВП срабатывает, вырубает все процессы и очищает диск. Эти пять секунд никакого приемущества зловреду не дают...

    • Ой ли... За 5 секунд можно много чего наворотить.

      • отформатировать таблицу разделов например

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

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

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

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

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

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

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

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