Опыт применения инструментальных средств испытаний

advertisement
Опыт применения инструментальных средств испытаний
при проведении сертификации средств защиты
информации в условиях отсутствия исходных текстов
Центр безопасности информации. Стрелец В.Н.
В настоящем докладе предлагается один из подходов к сертификации
программного обеспечения (в том числе программных средств защиты информации) в
условиях отсутствия исходных текстов. Суть подхода состоит в том, что динамический
анализ сертифицируемого программного обеспечения выполняется в специально
разработанной программной среде, которая моделирует аппаратное обеспечение
компьютера. Этой средой является эмулятор ЭМУ.
Слайд – “Параметры сеанса эмуляции ”














Эмулятор включает математические модели следующих устройств ПЭВМ:
центральный процессор (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, программное обеспечение
пользовательских ПЗУ и современные операционные системы свидетельствует об
адекватности математических моделей оборудования, применяемых в эмуляторе.
Накопленный опыт использования эмулятора позволяет считать его весьма
удобным инструментом для исследования широкого класса программ.
Слайд – “Теперь питание компьютера можно отключить… ”
Download