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

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

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

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

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

Категории

Все категории
Loading categories
uniFuzzer — Инструмент для фаззинга бинарных файлов с закрытым исходным кодом на основе Unicorn и LibFuzzer | Kitploit
Инструменты/GitHubGitHub/pagalaxylab/unifuzzer
Безопасность встроенных системБезопасность IoTФаззингАнализ Бинарных Файлов
GitHubpagalaxylab/unifuzzer

uniFuzzer

Инструмент для фаззинга бинарных файлов с закрытым исходным кодом на основе Unicorn и LibFuzzer

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

Популярное

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

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

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

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

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

uniFuzzer

uniFuzzer — это инструмент для фаззинга закрытых бинарных файлов, основанный на Unicorn и LibFuzzer. В настоящее время он поддерживает фаззинг 32-битных LSB ELF файлов на ARM/MIPS, которые обычно встречаются в IoT-устройствах.

中文介绍

Особенности

  • очень мало хаков и лёгкость сборки
  • может быть нацелен на любую указанную функцию или фрагмент кода
  • фаззинг, управляемый покрытием, с приличной скоростью
  • зависимости разрешаются и загружаются автоматически
  • переопределение библиотечных функций через PRELOAD

Сборка

  1. Реверсируйте целевой бинарный файл и найдите интересующие функции для фаззинга.
  2. Создайте файл .c в каталоге callback, который должен содержать следующие колбэки:
  • void onLibLoad(const char *libName, void *baseAddr, void *ucBaseAddr): Вызывается каждый раз, когда зависимая библиотека загружается в Unicorn.
  • int uniFuzzerInit(uc_engine *uc): Вызывается сразу после загрузки всех бинарных файлов в Unicorn. Здесь можно настроить стек/кучу/регистры.
  • int uniFuzzerBeforeExec(uc_engine *uc, const uint8_t *data, size_t len): Вызывается перед каждым раундом выполнения фаззинга.
  • int uniFuzzerAfterExec(uc_engine *uc): Вызывается после каждого раунда выполнения фаззинга.
  1. Запустите make и получите инструмент фаззинга с именем uf.

Запуск

uniFuzzer использует следующие переменные окружения в качестве параметров:

  • UF_TARGET: Путь к целевому ELF-файлу
  • UF_PRELOAD: Путь к библиотеке предзагрузки. Убедитесь, что библиотека имеет ту же архитектуру, что и цель.
  • UF_LIBPATH: Пути, в которых находятся зависимые библиотеки. Для разделения нескольких путей используйте :.

Фаззинг можно запустить следующей командой:

root@kitploit:~
UF_TARGET=<цель> [UF_PRELOAD=<предзагрузка>] UF_LIBPATH=<путь_к_библиотекам> ./uf

Демонстрация

Предоставлена демонстрация для базового использования. Демонстрация содержит следующие файлы:

  • demo-vuln.c: Это цель для фаззинга. Она содержит простую функцию с именем vuln(), которая уязвима к переполнению стека/кучи.
  • demo-libcpreload.c: Это для хука PRELOAD. В ней определены пустой printf() и упрощённые malloc()/free().
  • callback/demo-callback.c: Определяет необходимые колбэки для фаззинга демонстрационной функции vuln().

Сначала установите gcc для mipsel (пакет gcc-mipsel-linux-gnu в Debian) для сборки демонстрации:

root@kitploit:~
# целевой бинарный файл
# '-Xlinker --hash-style=sysv' указывает gcc использовать 'DT_HASH' вместо 'DT_GNU_HASH' для поиска символов,
# так как uniFuzzer в настоящее время не поддерживает 'DT_GNU_HASH'
mipsel-linux-gnu-gcc demo-vuln.c -Xlinker --hash-style=sysv -no-pie -o demo-vuln

# библиотека предзагрузки
mipsel-linux-gnu-gcc -shared -fPIC -nostdlib -Xlinker --hash-style=sysv demo-libcpreload.c -o demo-libcpreload.so

Или вы можете просто использовать файлы demo-vuln и demo-libcpreload.so, которые были скомпилированы с помощью указанных выше команд.

Затем запустите make для сборки uniFuzzer. Обратите внимание: если вы скомпилировали MIPS-демонстрацию самостоятельно, некоторые адреса могут отличаться от предварительно собранной, и demo-callback.c следует обновить соответствующим образом.

Наконец, убедитесь, что готова библиотека libc для MIPS. В Debian она находится в /usr/mipsel-linux-gnu/lib/ после установки пакета libc6-mipsel-cross. Именно это значение следует указать в UF_LIBPATH:

root@kitploit:~
UF_TARGET=<путь к demo-vuln> UF_PRELOAD=<путь к demo-libcpreload.so> UF_LIBPATH=<путь к lib для MIPS> ./uf

Хак в Unicorn

Unicorn очищает JIT-кэш QEMU из-за этой проблемы, что замедляет скорость фаззинга, так как целевой бинарный файл приходится перекомпилировать JIT при каждом раунде выполнения.

Для повышения производительности мы можем закомментировать tb_flush(env);, как указано в той проблеме.

TODO

  • поддержка системных вызовов
  • поддержка других архитектур и форматов бинарных файлов
  • поддержка GNU_HASH
  • поддержка IFUNC
  • интеграция настройки окружения и предоставление API
Скачать инструмент