Опыт применения инструментальных средств испытаний при проведении сертификации средств защиты информации в условиях отсутствия исходных текстов Центр безопасности информации. Стрелец В.Н. В настоящем докладе предлагается один из подходов к сертификации программного обеспечения (в том числе программных средств защиты информации) в условиях отсутствия исходных текстов. Суть подхода состоит в том, что динамический анализ сертифицируемого программного обеспечения выполняется в специально разработанной программной среде, которая моделирует аппаратное обеспечение компьютера. Этой средой является эмулятор ЭМУ. Слайд – “Параметры сеанса эмуляции ” Эмулятор включает математические модели следующих устройств ПЭВМ: центральный процессор (Intel Pentium); оперативная память – массив в оперативной памяти инструментального компьютера; BIOS – образ в виде файла 256 кб; НЖМД (жесткий диск) – образ в виде файла на диске и.к.; НГМД (2 дискеты) – образ в виде файла на диске размером 1.44мб; CMOS (энергонезависимая память, образ в виде файла 256 байт); DMA (прямой доступ к памяти); Клавиатура – используется клавиатура и.к.; контроллер прерываний; таймер; видеоадаптер VGA (с собственным BIOS); монитор (экран компьютера). Мышь Другие устройства В процессе работы программы нажатие клавиш на клавиатуре компьютера воспринимается как нажатие клавиш эмулируемого компьютера. С точки зрения пользователя эмулятор выглядит как классический отладчик программ, включающий традиционный набор возможностей для программ этого класса: пошаговый и непрерывный режим выполнения программы на уровне ассемблерных текстов возможность остановки выполнения программы в заданных контрольных точках; просмотр значений регистров центрального процессора; просмотр содержимого оперативной памяти и стека. Использование режима эмуляции позволило реализовать ряд принципиально новых возможностей, которые отсутствуют в обыкновенных отладчиках: возможность исследования программ, выполняющихся до полной загрузки операционной системы (элементы BIOS, компоненты ОС); просмотр параметров текущего состояния аппаратных устройств ПЭВМ (например, содержимого памяти CMOS, значений регистров и внутренних буферов контроллеров); независимость от операционной системы, под управлением которой выполняется исследуемая программа. Слайд – “ Award BIOS Setup Utility” В качестве примера использования Эмулятора рассмотрим его применение для исследования программного обеспечения BIOS (заявитель – фирма РНТ). Режим эмуляции позволил нам выполнить динамический анализ этой программы. Динамический анализ включал в себя пошаговое выполнение программы, остановку в требуемых контрольных точках, анализ содержимого оперативной памяти и др. этапы. Особенностью анализа такого рода является тот факт, что на этапе работы BIOS у эксперта нет возможности использовать обычные программы-отладчики. Для их работы требуется наличие загруженной операционной системы. Слайд – “ Setup. Ввод пароля” Рассмотрим частную (но наглядную) задачу по определению алгоритма работы с паролями супервизора и пользователя. Вначале определяем номера ячеек CMOS, которые изменяются после ввода пароля Supervisor Password. Для этого запоминаем содержимое всех ячеек в состоянии без пароля. Слайд – “ Setup. Сравнение ячеек ” Затем вводим пароль и сравниваем содержимое памяти. Определяем изменившиеся ячейки. Слайд – “ CMOS. Контрольная точка на чтение ячеек ” Ставим контрольные точки на чтение этих ячеек. Определяем адреса функций, выполняющих чтение этих ячеек. Далее выполняется анализ алгоритма работы этих функций, выявляется формула шифрования, выполняется поиск инженерных паролей. Соболь-PCI В качестве второго примера рассмотрим анализ программного обеспечения, прошиваемого в ПЗУ электронного замка Соболь. Объект исследования: файл прошивки bios.bin; исходные тексты прошивки ПЗУ платы; Слайд – “ Sobol. Первая команда” Состав модели На основе анализа технической документации была разработана программная модель функционирования платы Соболь PCI. Модель содержит следующие функциональные элементы. ПЗУ, содержащее ПО, управляющее функционированием платы на этапе работы BIOS компьютера PCI, представленная в модели в виде специальной области конфигурации устройства SEEPROM – модель двух устройств, предназначенных для хранения переменных данных, необходимых для функционирования платы Контроллер для чтения/записи устройств Touch Memory (TM) Набор устройств ТМ Датчик случайных чисел Три реле для отключения внешних накопителей (гибких дисков и CD) Перемычка, переключающая плату из начального состояния в рабочее состояние Встраивание модели платы в эмулятор Для функционирования модели платы в качестве дополнительного устройства моделируемого компьютера в эмулятор были внесены следующие дополнения. Плата была добавлена в общий список устройств PCI с одновременным присвоением специфических для устройств PCI параметров bus=0, device=0xb, function=0 Порты ввода-вывода платы были зарегистрированы в списке портов вводавывода моделируемого компьютера (16 байт с базой 0xD000) Для первых 8К байт ПЗУ платы выделен базовый адрес 0xC8000 в общем адресном пространстве компьютера В качестве файла, предназначенного для инициализации содержимого ПЗУ, подготовлен файл прошивки реального ПЗУ Для визуализации трассы выполнения программного обеспечения платы подготовлен общий листинга ассемблирования программных модулей Разработан программный интерфейс, позволяющий выполнять специфические для моделируемой платы действия (выбор Touch Memory, просмотр содержимого ПЗУ, SEEPROM, Touch Memory и др.) Технология выполнения динамического анализа Эмулятор позволяет переходить в пошаговый режим выполнения в любой заданной точке исследуемого ПО. Одним из стандартных действий, которое выполняет BIOS, является поиск пользовательских ПЗУ. Этот поиск осуществляется в диапазоне адресов, в который попадают первые 8К байт ПЗУ платы. После проверки сигнатур и контрольных сумм BIOS передает управление по адресу 0xC8003. Именно здесь есть смысл поставить контрольную точку для начала пошагового выполнения. Далее необходимо, двигаясь в пошаговом режиме, отслеживать фрагменты кода, в которых происходит копирование содержимого ПЗУ в ОЗУ с последующей передачей управления на скопированные участки. В процессе трассирования необходимо проверять номера используемых портов ввода-вывода, а также изменение значений отладочных регистров центрального процессора. Слайд – “ Sobol. Int1Hook ” Отладочные регистры центрального процессора на первом этапе работы программы программируются таким образом, что при попытке выполнения кода по адресу 0x7c00 (попытка загрузки ОС посредством передачи управления на копию загрузочного сектора в памяти) произойдет прерывание int1. Собственно, с этого момента и начинает работать основной алгоритм электронного замка. Слайд – “ Sobol. Прислоните персональный идентификатор” Здесь показан диалог, предлагающий пользователю прислонить к считывателю платы персональный идентификатор. Приведено окно, содержащее параметры идентификатора. На следующих слайдах показаны некоторые этапы эмуляции работы электронного замка. Слайд – “ Sobol. Введите пароль ” Слайд – “ Sobol. Тестирование ДСЧ ” Слайд – “ Sobol. Текущий пользователь ” Слайд – “ Sobol. Окно администратора” Слайд – “ Sobol. Журнал событий” Слайд – “ Sobol. Общие параметры системы” Результаты испытаний 1. Выполнена трассировка программы. Вычислено отношение длины пройденной трассы к общей длине кода (без учета длины данных). 2. Проверен диапазон использования портов ввода/вывода. Обращений к портам, не принадлежащим плате, не обнаружено. Диапазон портов ввода/вывода занимает 16 байт. Так же было выявлено, что обращение к PCI-регистрам конфигурации платы осуществляется только через стандартное прерывание BIOS номер 0x1A. 3. Выполнен анализ работы программы с оперативной памятью. Подтверждено использование алгоритма поиска свободного места в ОЗУ для копирования фрагментов ПО, хранящихся в ПЗУ. Выявлено, очищается или нет использованная память по окончании работы программы и загрузки ОС. 4. Выявлено, что ПО не перегружает обработчики векторов прерываний BIOS. На следующих слайдах показано поведение эмулятора после завершения работы BIOS. Очевидными шагами должны быть загрузка различных операционных систем и прикладных программ. Слайд – “Начало загрузки ДОС ” Слайд – “ Нортон” Слайд – “Игровая программа под управлением ДОС ” Слайд – “ Windows NT” Способность эмулятора загружать системный BIOS, программное обеспечение пользовательских ПЗУ и современные операционные системы свидетельствует об адекватности математических моделей оборудования, применяемых в эмуляторе. Накопленный опыт использования эмулятора позволяет считать его весьма удобным инструментом для исследования широкого класса программ. Слайд – “Теперь питание компьютера можно отключить… ”