Компания «Криптонит» провела интересное исследование, результатами которого спешим поделиться.
Наша команда из Лаборатории информационной и сетевой безопасности провела реверс-инжиниринг ПЗУ промышленного устройства и получила доступ к данным, которые считались защищенными.
Точно такие же «защиты» используются в тысячах других устройств – от принтеров и МФУ до автомобилей Mazda и модуля видеозаписи на Международной космической станции.
Казалось бы, очевидно, что профессиональные и промышленные устройства требуют защиты критически важных данных от сбоев электропитания и несанкционированного доступа.
Для этого придумано множество вариантов: отказоустойчивые файловые системы, криптоконтейнеры и специализированные драйверы — менеджеры для управления «сырым» массивом флэш-памяти, позволяющие обращаться с ним как с жестким диском и ограничивать доступ к определенным зонам.
Однако в этом наборе технологий часто используются разработки с закрытым исходным кодом.
В результате производители предпочитают выбирать удобное решение и слепо ему доверять, поскольку оценить его безопасность можно только методами реверс-инжиниринга.
Поэтому мы решили его реализовать, руководствуясь принципом «доверяй, но проверяй!» Для эксперимента в компанию Kryptonite был доставлен образец промышленного устройства, в котором использовался общий стек технологий: менеджер управления флэш-памятью 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 с использованием кодов Бозе-Чодхури-Хоккенгама (BCH) длиной 10 байт, способных исправлять до 4 битовых ошибок на 512 байт данных.
Для этого мы использовали программу, написанную на C#, реализующую алгоритм, найденный в дизассемблированном драйвере.
После исправления битовых ошибок мы создали новый дамп без блоков ECC, подготовленный для трансляции диспетчером FlashFX на логический уровень.
Для поиска смещений разделов, типов файловых систем и определения наличия шифрования или сжатия использовалась программа DataExtractor из пакета PC3000-Flash PAK. Дальнейшее исследование полученного дампа проводилось с помощью утилиты анализа прошивки Binwalk и самописных программных средств.
Также использовался популярный архиватор 7-Zip, поскольку он способен извлекать данные из различных файловых систем и скомпилированных библиотек.
С ним нет необходимости искать специализированные распаковщики для каждого формата, что существенно экономит время.
Основная часть реверс-инжиниринга программного обеспечения была выполнена в интерактивном дизассемблере IDA Pro. С его помощью в библиотеке flashfx.ko был найден транслятор памяти FlashFX Tera, а в библиотеке reliance.ko — реализация файловой системы Reliance Nitro v2.x, которая использовалась для определения формата заголовка при извлечении разделов.
и файлы.
В дампе памяти обнаружен контейнер файлов Flash Pack неизвестного проприетарного формата.
Чтобы его открыть, мы декомпилировали код приложения, используемого для настройки исследуемого устройства, и нашли в нем парсер для данного типа контейнера.
На следующем этапе методом поиска открытого исходного кода (OSINT) были обнаружены реализации проприетарных форматов зашифрованных файловых контейнеров в репозитории крупного зарубежного разработчика программного обеспечения и системного интегратора с использованием веб-сервиса Bitbucket. В результате все уровни защиты были последовательно сняты, и мы получили полный доступ ко всем данным в «защищенной» встроенной памяти.
Можно ли было предотвратить такое нападение? Да.
Например, использование блока памяти с защитой от атаки повторного воспроизведения (RPMB) или другого варианта аппаратной защиты от несанкционированного доступа к участку памяти с критически важными данными.
Большинство современных устройств работают на процессорах архитектуры ARM, поддерживающих виртуализацию аппаратных ресурсов, позволяющую создать изолированную среду (TrustZone).
Выводы
Опыт показывает, что архитекторы программного обеспечения часто выбирают стек технологий, основываясь только на простоте реализации и игнорируя пробелы в безопасности.Закрытый характер таких разработок еще больше усложняет их независимый аудит. Используя широко доступные инструменты чтения и анализа флэш-памяти, а также методы обратного проектирования, Kryptonit смог обойти защиту на основе технологии Tuxera и получить доступ к критически важным данным, хранящимся в ПЗУ промышленного устройства.
Этот метод применим к тысячам других устройств, выпущенных с 2009 года по настоящее время.
Они используют один и тот же популярный набор запатентованных технологий, которые ошибочно считаются надежными.
Результаты исследования могут быть использованы для анализа безопасности устройств, хранящих критически важные данные в формате FlashFX Tera & Reliance Nitro, а также для восстановления данных с их накопителей в случае неисправности.
Теги: #информационная безопасность #Восстановление данных #обратный инжиниринг
-
Игры По Физике - «Играй И Учись»
19 Oct, 24 -
В Сша Нет Широкополосной Связи
19 Oct, 24