Платформа для анализа программ на основе эмулятора QEMU
Платформа ИСП РАН для анализа программ построена на базе открытого эмулятора QEMU, который используется при необходимости кроссплатформенной разработки. Поддерживает механизмы обратной отладки и интроспекции, а также режим полносистемной эмуляции для отладки низкоуровневого ПО.
Особенности и преимущества
QEMU поддерживает более 10 архитектур процессоров (i386 и x86-64, ARM и Thumb, MIPS, PowerPC и др.). Реализует отладку по сетевому протоколу GDB RSP и совместим с IDA Pro, GDB и средами разработки. В режиме полносистемной эмуляции подходит для отладки низкоуровневого ПО, такого как загрузчик и ОС. Исходный код QEMU систематически проверяется двумя статическими анализаторами (Coverity и Svace), что делает анализ потенциально вредоносного ПО в эмуляторе более безопасным. Эмулятор с поддержкой обратной отладки и интроспекции доступен на GitHub (https://github.com/ispras/swat), как и набор инструментов автоматизации (https://github.com/ispras/qdt, https://github.com/ispras/i3s).
Платформа ИСП РАН на основе QEMU – это:
- Запись и воспроизведение работы виртуальной машины:
- При каждом воспроизведении виртуальная машина ведёт себя одинаково и точно так же, как при записи. Все воздействия извне зафиксированы и повторяются самим эмулятором. Это упрощает отладку ошибок, связанных с параллельной работой (состояние гонки, взаимные блокировки).
- На базе воспроизведения реализована GDB-совместимая обратная отладка, которая заключается в откате к предыдущим снимкам состояния виртуальной машины и поиске предпоследнего срабатывания точки останова или предыдущей инструкции.
- Записывается минимум информации, что позволяет вести длительную запись, необходимую для отладки редко повторяющихся ошибок.
- Низкое относительное замедление, вносимое записью, позволяет контролировать ПО, взаимодействующее с удалённой неконтролируемой системой в реальном времени.
- Получение высокоуровневой информации о работе гостевой ОС (интроспекция ВМ) без внесения каких-либо изменений в ядро ОС или установки программ мониторинга:
- Возможность получить последовательность совершаемых системных вызовов, обращений к именованным функциям в динамических библиотеках, список работающих процессов, список открытых файлов и загруженных в память модулей.
- Поддержка любого образа виртуальной машины на основе Linux, в том числе образов встраиваемого ПО различных устройств.
- Отладка с помощью встроенного в эмулятор сервера WinDbg, что позволяет отображать информацию о гостевом ПО в терминах абстракций ядра Windows. При этом не требуется включение отладочного режима работы гостевой ОС.
- Ускорение разработки расширений для QEMU:
- Сокращение времени на подготовку средств динамического анализа для образцов кода, требующих специализированной аппаратуры.
- Автоматизированное добавление процессорных архитектур с использованием генератора декодеров машинных команд и Си-подобного языка описания семантики инструкций.
- Система автоматического первичного тестирования виртуальной машины. Для работы системы требуются только утилиты GNU Binutils и компилятор языка Си.
- Автоматизированная разработка моделей устройств.
- Генерация виртуальной машины (в форме исходного кода модуля QEMU) как из существующих, так и из новых устройств по описанию на языке Python с использованием графического интерфейса пользователя со схематичным изображением системы.
- API для автоматизации процесса отладки на языке Python по протоколу GDB RSP: отладка гостевого кода, кода эмулятора и обоих одновременно.
- Удобство практического использования:
- Свободное расширение возможностей QEMU благодаря открытому исходному коду и собственным инструментам ускоренной разработки ИСП РАН.
- Анализ бинарного кода без внедрения программ в гостевую систему.
- Модульная структура механизма интроспекции с возможностью расширения за счёт новых плагинов.
- Удобное API для самостоятельной разработки плагинов интроспекции.
- Возможность адаптации под конкретные нужды пользователя.
- Поддержка актуальных версий QEMU с новой периферией и процессорными ядрами.
Для кого предназначена платформа ИСП РАН на основе QEMU?
- Разработчики загрузчиков, драйверов, ОС и другого системного ПО.
- DevOps-команды (воспроизводимость ошибок, кросс-разработка, масштабирование тестирования в облачной среде).
- Аналитики потенциально вредоносного ПО.
- Специалисты по сертификации ПО.
Поддерживаемые гостевые среды
Эмулируемые платформы: i386, x86-64, ARM, MIPS, PowerPC и другие.
Гостевые системы, поддерживаемые интроспекцией: Windows XP (x86), Windows 10 (x86-64) и Linux 2.x-5.x на платформах x86, x86-64, ARM, AArch64.
Опыт внедрения
Реализованный механизм воспроизведения принят мировым сообществом разработчиков QEMU и включен в версию 3.1.
Схема работы
Разработчик/участник
Перейти к списку всех технологий