Получение доступа к защищённым данным во встроенной памяти

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

В компании «Криптонит» завершили интересное исследование, результатами которого мы спешим поделиться. Наша команда лаборатории информационной и сетевой безопасности провела реверс-инжиниринг ПЗУ промышленного устройства и получила доступ к данным, которые считаются защищёнными. Точно такие же средства «защиты» используются в тысячах других устройств — от принтеров и МФУ до автомобилей Mazda и модуля записи видео на Международной космической станции.

Казалось бы, очевидно, что в устройствах профессионального и промышленного назначения требуется обеспечить защиту критически важных данных от сбоев питания и несанкционированного доступа. Для этого придумана масса вариантов: отказоустойчивые файловые системы,  криптоконтейнеры и специализированные драйверы — менеджеры управления «сырым» массивом флеш-памяти, позволяющие обращаться к нему как к жёсткому диску и ограничивать доступ к определённым зонам.

Однако зачастую в этом наборе технологий используются разработки с закрытым исходным кодом. Как следствие — производители предпочитают выбрать удобное решение и доверять ему вслепую, поскольку оценить его безопасность можно только с помощью методов обратной разработки. Вот мы и решили её выполнить, руководствуясь принципом «доверяй, но проверяй!».

Для эксперимента в «Криптонит» доставили образец промышленного устройства, в котором использовался распространённый технологический стек: менеджер управления флэш-памятью FlashFX Tera и защищённые файловые контейнеры FlashPack внутри транзакционной файловой системы Reliance Nitro. Такая связка широко применяется в самом разном оборудовании, выпущенном за последние 13 лет.

Забегая вперёд, скажем, что в ходе исследования был найден способ получения доступа к защищённым данным, а также сформулированы базовые рекомендации по противодействию подобным атакам.


Менеджер FlashFX Tera и транзакционная файловая система Reliance Nitro были представлены в 2009 году частной компанией Datalight, которая была основана бывшим инженером Boeing, а  с 2019 года стала дочерней фирмой Tuxera — финского разработчика ПО. В настоящее время Tuxera FlashFX Tera поддерживает более 300 микросхем флэш-памяти различных типов. Он работает с любой 32/64-разрядной операционной системой, а также имеет предварительно портированные версии для Linux , Android, Windows CE и VxWorks.


Началось исследование как обычно — с дампа памяти. Чтение ПЗУ исследуемого устройства производилось с помощью программно-аппаратного комплекса PC3000-Flash, использующего технологию прямого доступа к микросхемам NAND Flash. Его подключение осуществлялось через адаптер PC3000 Spider Board, позволяющего выполнить подключение к технологическим выводам микросхемы NAND Flash без пайки за счёт 25 подвижных игольчатых контактов.

В процессе длительного хранения микросхем NAND Flash без поддержания питающего напряжения растёт вероятность перетекания зарядов между ячейками памяти. Также она увеличивается из-за демонтажа экранированной ПЗУ, поскольку для снятия защитного экрана от ЭМИ приходится нагревать его паяльной станцией. Перетекание зарядов приводит к появлению битовых ошибок, частота которых зависит главным образом от типа флэш-памяти и особенностей её технического исполнения.

Поэтому после чтения дампа была выполнена коррекция битовых ошибок ECC кодами Боуза-Чоудхури-Хоквингема (БЧХ) длиной 10 байт, способными исправить до 4-х битовых ошибок на 512 байт данных. Для этого использовалась написанная нами программа на языке C#, реализующая алгоритм, обнаруженный в дизассемблированном драйвере. После корректировки битовых ошибок мы создали новый дамп без блоков ECC, подготовленный к трансляции диспетчером FlashFX на логический уровень.

Для поиска смещений разделов, типов файловых систем, определения наличия шифрования или сжатия применялась программа DataExtractor из  состава ПАК PC3000-Flash. Дальнейшее изучение полученного дампа выполнялось при помощи утилиты для анализа прошивок Binwalk и самописных программных инструментов. Также использовался популярный архиватор 7-Zip, поскольку он способен извлекать данные из различных файловых систем и скомпилированных библиотек. С ним отпадает необходимость искать специализированные распаковщики для каждого формата, что существенно экономит время.

Основная часть программного реверс-инжиниринга осуществлялась в интерактивном дизассемблере IDA Pro. С его помощью в библиотеке flashfx.ko был найден транслятор памяти FlashFX Tera, а в библиотеке reliance.ko обнаружена реализация файловой системы Reliance Nitro v2.x, по которой был определён формат заголовков для извлечения разделов и файлов.

В дампе памяти был обнаружен файловый контейнер Flash Pack неизвестного проприетарного формата. Чтобы его открыть, мы декомпилировали код приложения, с помощью которого осуществлялось конфигурирование исследуемого устройства, и нашли в нём парсер для данного типа контейнеров.

На следующем этапе методом поиска по открытым источниками (OSINT) в репозитории крупного зарубежного разработчика ПО и системного интегратора Bitbucket были обнаружены реализации проприетарных форматов файловых контейнеров и способов их шифрования.  В итоге последовательно были сняты все слои защиты, и мы получили полный доступ ко всем данным в «защищённой» встроенной памяти.

Можно ли было предотвратить такую атаку? Да. Например, используя блок памяти с защитой от атаки повторного воспроизведения (RPMB), или другой вариант аппаратной защиты от НСД к разделу памяти с критически важными данными. Большинство современных устройств работают на процессорах архитектуры ARM, в которых поддерживается виртуализация аппаратных ресурсов, позволяющая создавать изолированную среду (TrustZone).

Выводы

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

Используя широкодоступные инструменты чтения и анализа флеш-памяти, а также методы реверс-инжиниринга, в компании «Криптонит» смогли обойти защиту на базе технологий Tuxera и получить доступ к критически важным данным, хранящимся в ПЗУ промышленного устройства.

Данный метод применим к тысячам других устройств, которые выпускались с 2009 года по настоящее время. В них используется тот же популярный набор проприетарных технологий, который ошибочно считается надёжным.

Результаты исследования могут использоваться для анализа безопасности устройств, хранящих критически важные данные в формате FlashFX Tera & Reliance Nitro, а также для восстановления данных с их накопителей в случае неисправности.

Источник: https://habr.com/ru/company/kryptonite/blog/666596/


Интересные статьи

Интересные статьи

На очереди SQL-секция конференции ЮMoneyDay, и она очень мощная, потому что уже проверена осенним митапом про базы данных. Даже если были на нём — в докладах много нового.Начнём с антифрода: как мы&nb...
Мой опыт использования кувшинных фильтров для получения питьевой воды в условиях городской квартиры Читать далее
Многие компании в определенный момент приходят к тому, что ряд процессов в бизнесе нужно автоматизировать, чтобы не потерять свое место под солнцем и своих заказчиков. Поэтому все...
Рассказываю из личного опыта, что где и когда пригодилось. Обзорно и тезисно, чтобы понятно было, что и куда можно копать дальше — но тут у меня исключительно субъективный личный оп...
Меня зовут Роман Нестер, я профессор НИУ ВШЭ. Я занимаюсь данными последние 10 лет. Например, мы с партнёрами сделали стартап Segmento, который использует большие данные в рекламе и его купил у н...