Когда мы слышим слово «взлом», нам обычно не приходит в голову, что он может быть этичным. Но на самом деле в жизни встречается и такое явление. Это называется «реверс-инжиниринг» и сегодня на его основе компании разрабатывают новые решения и борются с киберугрозами. Вместе Алексеем Усановым, руководителем R&D центра направления исследований безопасности аппаратных решений Positive Labs, Positive Technologies и экспертом документального фильма «Как получить доступ ко всему: реверс-инжиниринг», разбираемся, как разбор чужого кода и систем делает нашу повседневность спокойнее.
Реверс-инжиниринг как искусство пониманияРеверс-инжиниринг (или обратная разработка) — это метод анализа готового устройства, механизма или программы для понимания принципа их работы, структуры и создания технической документации. Он нужен для того, чтобы можно было воспроизвести, отремонтировать или модернизировать объект, не имея исходных чертежей или кода.
Современные устройства состоят из «железа» и «софта» — внутреннего кода, который называется прошивкой, отвечающей за логику работы устройства. Одна из ключевых задач реверс-инжиниринга — повышение безопасности этих компонентов. Для этого в ходе исследования специалисты пытаются извлечь не только саму прошивку, а все скрытые внутри данные: например, ключи шифрования, сертификаты и другую чувствительную информацию, которая может храниться в микроконтроллерах или зашифрованной памяти. Фактически повторяют действия злоумышленников, но в легальном поле. Если выясняется, что такие данные защищены недостаточно надежно, исследователи сообщают об этом разработчикам. Так реверс-инжиниринг позволяет устранить уязвимости до того, как ими смогут воспользоваться злоумышленники.
«Реверсить» устройства нас заставляет сама природа сложных систем. Любой серьезный продукт сегодня — это черный ящик. Даже если у вас есть исходный код, вы не знаете, как компилятор оптимизировал инструкции и как поведет себя кристалл при скачке напряжения. Мы занимаемся исследованием безопасности, и реверс — это один из основных методов познания. Как в медицине: чтобы лечить, нужно знать анатомию. Мы анатомируем код и схемотехнику, чтобы найти то, что автор не предусмотрел, но что обязательно проявится при эксплуатации.

При этом реверс-инжиниринг — широкое понятие, и методы зависят от предметной области. В случае с «железом» речь идёт об алгоритме: разобрать, изучить, из каких компонентов состоит устройство (какие чипы используются, какие контроллеры стоят, как подключены датчики), проанализировать работу схем и протестировать, как устройство реагирует на команды.
Тогда на первом этапе анализируется аппаратная часть, но без цели полностью восстановить схему или топологию платы. Определяются ключевые компоненты, собираются сведения о них и предпринимаются попытки получить доступ к прошивке / секретам, активировать отладочные функции или запустить свой код внутри устройства.
Только после получения прошивки начинается собственно реверс-инжиниринг кода.
Анализ кода, будь то высокоуровневые программы, системный софт или прошивки, строится по универсальной схеме: образ загружается в дизассемблер (иногда в декомпилятор), после чего ищутся и анализируются участки, которые нужны для решения задачи.
Банк в кармане: кто и как охраняет наши деньгиКаждый день миллионы людей оплачивают покупки смартфоном. Мало кто задумывается, что приложение банка — это крепость, которую постоянно атакуют, а защищают ее в том числе результаты реверс-инжиниринга.
Профессиональный реверс-инжиниринг сегодня — это сложный междисциплинарный процесс, в котором инструментарий далеко выходит за пределы одних лишь дизассемблеров и отладчиков. Безусловно, такие дизассемблеры и декомпиляторы, как IDA Pro, Ghidra, x64dbg или GDB являются основой для анализа кода, когда прошивка уже извлечена. Однако современные устройства, особенно те, что имеют хотя бы базовый уровень защиты, требуют гораздо более широкого арсенала.

На практике это выглядит так: исследователь загружает бинарный файл приложения в дизассемблер или декомпилятор и изучает, как именно реализованы критические механизмы — аутентификация, хранение токенов, работа с биометрией, защита от подмены трафика. Например, если часть логики проверки одноразового кода реализована на стороне клиента, это может позволить злоумышленнику модифицировать приложение и обойти ограничения. Реверс позволяет обнаружить такую архитектурную ошибку.
Другой пример — анализ защиты от перехвата трафика. Специалисты проверяют, корректно ли реализован механизм certificate pinning. Если приложение продолжает устанавливать соединение даже при подмене сертификата, значит, возможна атака «человек посередине», и данные пользователя могут быть перехвачены.
Похожий подход используется и вне банковской сферы. В современных автомобилях десятки электронных блоков управления работают под управлением прошивок. Реверс-инжиниринг помогает исследователям понять, как реализована проверка обновлений по воздуху (OTA) и действительно ли прошивка подписывается корректно и насколько хорошо защищены мультимедиа автомобилей от атак по множеству беспроводных каналов, как выстроена безопасность функций удаленного управления автомобилем с помощью мобильных приложений и многое другое.

Отдельный вектор исследований — как и какие данные собирает автомобиль, насколько хорошо они обезличиваются и передаются на сервер производителя. Бывает, что разработчики забывают отключить сбор расширенных данных после тестирования устройства и отправляют на сервер критичные данные пользователя, которых там быть не должно. Анализ бинарного кода и криптографических протоколов позволяет выявить такие риски до того, как они станут проблемой.
Еще одно направление — борьба с вредоносным ПО. Когда появляется новый банковский троян или мобильный вирус, реверсеры разбирают его так же, как банковское приложение: изучают бинарный код, восстанавливают алгоритмы работы, смотрят, какие серверы используются для управления, как шифруются данные. Это позволяет создать антивирус.
Современные технологии и старый добрый рентгеновский аппаратРеверс-инжиниринг зачастую требует нестандартного подхода и мышления (именно поэтому хорошие специалисты в этой сфере — на вес золота), и иногда, чтобы заглянуть внутрь устройства, приходится использовать даже рентгеновское оборудование — оно позволяет увидеть скрытые слои платы, расположение датчиков и элементов устройства, не прибегая к физическому разрушению корпуса. В том числе, так можно обойти механизмы защиты от несанкционированного вскрытия (tamper protection).

Когда стандартные интерфейсы отладки заблокированы, в ход идут методы активного воздействия — атаки с внесением неисправностей (fault injection). Специалист может манипулировать питанием микроконтроллера, создавать электромагнитные импульсы или даже направлять на кристалл лазерный луч, чтобы вызвать контролируемый сбой в работе процессора. Такие сбои могут, например, заставить устройство пропустить проверку защиты и выдать заветные данные. Ещё одно направление — анализ по побочным каналам (side‑channel analysis): исследуя электромагнитное излучение, потребляемую мощность или время выполнения операций, можно получить секреты и другую конфиденциальную информацию.
А иногда нужно применить сканирующий электронный микроскоп, позволяющий буквально «глазами» увидеть структуры внутри кристалла и при помощи специализированного ПО, нередко с элементами искусственного интеллекта, извлечь нужную информацию. Реверс-инжиниринг в ИБ — это точная инженерная дисциплина, задача которой — заботиться о безопасности наших устройств и сервисов. Спрос на специалистов в этой сфере только увеличивается по мере усложнения разработок, ведь вслед за тем, как технологии все плотнее и глубже проникают в нашу жизнь, задача обеспечения их безопасности, возрастает кратно.
Источник: www.ferra.ru