Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
gustave — GUSTAVE — это платформа для фаззинга ядер встроенных ОС. Она основана на QEMU и AFL (и всех их форк-серверных родственниках). Она позволяет фаззить ядра ОС как простые приложения. | Kitploit
Инструменты/GitHubGitHub/airbus-seclab/gustave
Безопасность встроенных системФаззингАнализ Бинарных Файлов
GitHubairbus-seclab/gustave

gustave

GUSTAVE — это платформа для фаззинга ядер встроенных ОС. Она основана на QEMU и AFL (и всех их форк-серверных родственниках). Она позволяет фаззить ядра ОС как простые приложения.

Репозиторий
203215 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

(c) Airbus 2021, sduverger

GUSTAVE - фаззер ядер встраиваемых ОС

Что это такое?

GUSTAVE — это платформа для фаззинга ядер встраиваемых ОС. Она основана на QEMU и AFL (а также на всех их forkserver-собратьях). Она позволяет фаззить ядра ОС как обычные приложения.

Благодаря QEMU, он кроссплатформенный. Можно рассматривать GUSTAVE как реализацию forkserver AFL внутри QEMU с детальным анализом цели.

Какие ядра поддерживаются?

GUSTAVE в основном разработан для фаззинга ядер встраиваемых ОС. Вероятно, это не лучший инструмент для фаззинга больших и сложных ядер, таких как в Windows, Linux или macOS.

Однако, если у вас есть цель, которую можно подготовить с одним-двумя приложениями для загрузки без взаимодействия с пользователем, возможно, стоит попробовать GUSTAVE.

Как это работает?

Инструмент afl-fuzz из проекта AFL используется для автоматического фаззинга вашей цели. Однако AFL не может напрямую фаззить ядро ОС и ожидает, что его цель будет напрямую разбирать сгенерированные тестовые наборы.

Короче говоря, afl-fuzz запустит QEMU с интеграцией GUSTAVE в качестве своей цели. В свою очередь, GUSTAVE будет обрабатывать:

  • синхронизацию forkserver
  • перевод сгенерированных тестовых наборов в системные вызовы цели
  • мониторинг ядра цели (покрытие выполнения и доступ к памяти)

Как и в режиме AFL/QEMU-user, используемом в проекте AFL++, GUSTAVE реализует двоичную инструментацию на уровне TCG IR QEMU для покрытия кода.

Однако вы можете отключить это и пересобрать код целевого ядра, оставив только определенные части под анализ покрытия кода. Вам придется внедрить шайбы AFL на этапе сборки для обновления битовых карт трассировки. Это был наш первоначальный подход (см. Публикации).

В отличие от существующих решений, GUSTAVE не заботится о мониторинге kernel panics. Мы рассматриваем их как управляемые ошибки и хотим обнаружить незаконное поведение, которое не вызвало никаких предупреждений.

Для этой цели GUSTAVE использует байт-ориентированную битовую карту фильтрации памяти за O(1), чтобы обнаружить недопустимые обращения из ядра. Возможны большие споры о том, что считать недопустимым с точки зрения ядра. Но в ограниченных, высокодетерминированных средах встраиваемых систем вы можете чувствовать себя комфортно, определяя легитимные области памяти для вашей прошивки и отслеживая обращения за их пределы.

Как это соотносится с существующими решениями?

Существуют сопоставимые подходы, такие как:

  • PowerFL
  • Project Triforce
  • afl-unicorn
  • kAFL

Проектные решения GUSTAVE подразумевают следующие отличия:

  • действительно независимость от цели (ОС, архитектура), при условии поддержки со стороны QEMU
  • охватывает все системные вызовы, реализованные в целевом ядре
  • не требуется специальных разработок внутри цели

Однако вам всё равно нужно сообщить GUSTAVE:

  • как ваша цель обрабатывает системные вызовы
  • какова легитимная структура памяти вашей цели

Текущее состояние?

Оборудование хоста

На данный момент поддерживается только хост x86, но так как многие рабочие среды основаны на этой архитектуре, мы не считаем это серьезным ограничением.

Ограничение связано с тем, как мы изначально реализовали бэкенд фильтрации памяти на уровне tcg-target для быстрого пути загрузки/сохранения QEMU. Недавняя архитектура обратных вызовов памяти TCGPlugin может быть альтернативным подходом для поддержки любого хоста.

Оборудование гостя

Мы реализовали и протестировали поддержку Intel x86 и PowerPC. Реализация GUSTAVE не зависит от архитектуры. Если вы можете запустить свою цель с помощью QEMU, вы можете фаззить её с GUSTAVE с небольшими усилиями.

Мы предоставляем примеры плат с интеграцией GUSTAVE: Intel 440FX и PowerPC PREP. Реализовать свою собственную плату очень просто и заключается в обёртке функции MACHINE_INIT для данной архитектуры.

Мы также добавили поддержку инструментальных шайб GUSTAVE для x86 и PowerPC в afl-gcc на случай, если вы не хотите использовать двоичную инструментацию TCG.

Пример цели

Мы предоставляем разработки, специфичные для микроядра POK:

  • прошивка с простыми приложениями
  • генератор ABI системных вызовов для x86/PPC
  • фильтрующая битовая карта

Как использовать?

Вам потребуется:

  • собрать AFL
  • собрать QEMU с интеграцией GUSTAVE
  • создать или сгенерировать фильтрующую битовую карту
  • написать JSON-файл конфигурации для вашей цели
  • запустить это в терминале

Прочитайте руководство для цели POK.

Публикации

Материалы различных докладов о GUSTAVE можно найти на https://airbus-seclab.github.io/.

Скачать инструмент