Институт системного программирования им. В.П. Иванникова РАН


Скачать сборник технологий

Платформа для анализа программ на основе эмулятора 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.

Схема работы

Платформа для анализа программ на основе эмулятора QEMU

Разработчик/участник

Компиляторные технологии

Перейти к списку всех технологий