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

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

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

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

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

Категории

Все категории
Loading categories
manul — Manul — это параллельный фаззер, управляемый покрытием, для бинарных файлов с открытым исходным кодом и чёрного ящика на Windows, Linux и MacOS. | Kitploit
Инструменты/GitHubGitHub/mxmssh/manul
Динамический анализ (песочница)Анализ уязвимостейФаззингАнализ Бинарных Файлов
GitHubmxmssh/manul

manul

Manul — это параллельный фаззер, управляемый покрытием, для бинарных файлов с открытым исходным кодом и чёрного ящика на Windows, Linux и MacOS.

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

Популярное

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

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

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

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

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

Manul

Travis AppVeyor

Логотип

Manul — это фаззер с отслеживанием покрытия, работающий параллельно, для бинарных файлов с открытым и закрытым исходным кодом на Windows, Linux и macOS (бета), написанный на чистом Python.

Быстрый старт

pip3 install psutil
git clone https://github.com/mxmssh/manul
cd manul
mkdir in
mkdir out
echo "AAAAAA" > in/test
python3 manul.py -i in -o out -n 4 "linux/test/test_afl @@"

Установка Radamsa

sudo apt-get install gcc make git wget
git clone https://gitlab.com/akihe/radamsa.git && cd radamsa && make && sudo make install

Нет необходимости устанавливать radamsa на Windows, Manul распространяется с нативной библиотекой radamsa на этой платформе.

Список публичных CVE

CVE IDsПродуктОбнаруживший
CVE-2019-9631 CVE-2019-7310 CVE-2019-9959PopplerMaksim Shudrak
CVE-2018-17019 CVE-2018-16807 CVE-2019-12175Bro/ZeekMaksim Shudrak

Если вам удалось найти новую ошибку с помощью Manul, пожалуйста, свяжитесь со мной, и я добавлю вас в список.

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

Короткая демонстрация

Зависимости

  1. Python3 (Python2 устарел с 1 января 2020 года, но Manul всё ещё должен работать нормально под Python2)
  2. psutil
  3. pywin32 (pip install pywin32) на платформе Windows (требуется только для режима постоянной работы DBI).

Фаззинг с отслеживанием покрытия

В настоящее время Manul поддерживает два типа инструментирования: на основе AFL (afl-gcc, afl-clang и afl-clang-fast) и DBI.

Фаззинг с отслеживанием покрытия (режим инструментирования AFL)

Инструментируйте вашу цель с помощью afl-gcc или afl-clang-fast и Address Sanitizer (рекомендуется для лучших результатов). Например:

CC=afl-gcc CXX=afl-g++ CFLAGS=-fsanitize=address CXXFLAGS=-fsanitize=address cmake <путь_к_вашей_цели>
make -j 8
USE_ASAN=1 CC=afl-clang-fast CXX=afl-clang-fast++ cmake <путь_к_вашей_цели>
make -j 8

Подробнее см. эти инструкции.

Фаззинг с отслеживанием покрытия в режиме DBI

В этом режиме вам не нужно инструментировать цель, но необходимо загрузить последнюю версию фреймворка DynamoRIO для Windows или Linux.

Manul распространяется с предварительно скомпилированными клиентами x86/x64 для Linux и Windows. Вы можете найти их в следующих папках:

linux/dbi_32|dbi_64/libbinafl.so (клиент DynamoRIO)
win/dbi_32|dbi_64/binafl.dll

К сожалению, DynamoRIO официально не поддерживается на MacOS.

Использование DynamoRIO для фаззинга бинарных файлов с закрытым исходным кодом

Вы можете найти последние пакеты релизов DynamoRIO на странице загрузки DynamoRIO.

Вы должны раскомментировать следующие строки в файле manul.config и указать правильный путь к загрузчику и клиенту DynamoRIO.

# Выберите фреймворк DBI для предоставления покрытия обратно в Manul ("dynamorio" или "pin"). Пример dbi = dynamorio
dbi = dynamorio
# Если параметр dbi не None, необходимо указать путь к загрузчику DBI и клиенту DBI.
dbi_root = /home/max/DynamoRIO/bin64/drrun
dbi_client_root = /home/max/manul/linux/dbi_64/libbinafl.so
dbi_client_libs = None

Кроме того, вы можете повысить производительность вашей кампании фаззинга с закрытым исходным кодом, используя постоянный фаззинг в памяти. В этом режиме вы должны указать Manul инструментировать конкретную функцию (да, вам нужно найти её, дизассемблировав ваш бинарный файл), и он будет запускать её в цикле, раскомментировав следующие строки:

dbi_persistence_mode = 1
dbi_target_module = afl_test
dbi_target_method = open_file
#dbi_target_offset = 0x3198 # опционально можно указать смещение этой функции вместо имени
dbi_fuzz_iterations = 1000

Авторы winAFL предоставляют очень хорошее объяснение того, как это работает на самом деле здесь. Manul использует большую часть кода библиотеки инструментирования winAFL для связи с целью и её инструментирования.

ВАЖНОЕ ПРИМЕЧАНИЕ: Для фаззинга 32-битных бинарных файлов следует использовать 32-битный загрузчик и 32-битный клиент, а для 64-битных бинарных файлов — 64-битный загрузчик и 64-битный клиент!

Компиляция библиотеки клиента DynamoRIO

Для компиляции библиотеки инструментирования необходимо использовать последнюю версию DynamoRIO. Исходный код библиотеки инструментирования можно найти в dbi_clients_src, расположенной в главной папке Manul.

64-битный Linux

cd dbi_clients_src
wget <DynamoRIO-x86_64-Linux-X.XX.XXXX-X.tar.gz> - загрузите последнюю версию DynamoRIO
tar xvf DynamoRIO-x86_64-X.XX.XXXX-X.tar.gz
mkdir client_64
cd client_64
cmake ../dr_cov/ -DDynamoRIO_DIR=/home/max/manul/dbi_clients_src/DynamoRIO-x86_64-Linux-X.XX.XXXX-X.tar.gz/cmake
make
32-битный Linux
cd dbi_clients_src
wget <DynamoRIO-i386-Linux-X.XX.XXXX-X.tar.gz> - загрузите последнюю версию DynamoRIO
tar xvf DynamoRIO-x86_64-X.XX.XXXX-X.tar.gz
mkdir client_64
cd client_64
CFLAGS=-m32 CXXFLAGS=-m32 cmake ../dr_cov/ -DDynamoRIO_DIR=/home/max/manul/dbi_clients_src/DynamoRIO-i386-Linux-X.XX.XXXX-X.tar.gz/cmake
make

На Windows проще всего скомпилировать библиотеку, установив Visual Studio (протестировано на версиях 2017 и 2013), запустив Командная строка перекрестных средств VS20XX и выполнив следующие команды:

64-битная Windows
cd dbi_clients_src
<Загрузите и извлеките последнюю версию DynamoRIO>
mkdir client_64
cd client_64
cmake -G"Visual Studio 15 Win64" ..\dr_cov\ -DDynamoRIO_DIR=C:\Users\max\manul\dbi_clients_src\DynamoRIO-Windows-XXXX.XX.X.X\cmake
cmake --build . --config RelWithDebInfo (или просто Debug, если нужно)
32-битная Windows
cd dbi_clients_src
<Загрузите и извлеките последнюю версию DynamoRIO>
mkdir client_32
cd client_32
cmake -G"Visual Studio 15" ..\dr_cov\ -DDynamoRIO_DIR=C:\Users\max\manul\dbi_clients_src\DynamoRIO-Windows-XXXX.XX.X.X\cmake
cmake --build . --config RelWithDebInfo (или просто Debug, если нужно)

Использование Intel PIN для фаззинга бинарных файлов с закрытым исходным кодом на Linux

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

Аргументы командной строки

Наиболее часто используемые параметры можно указать через командную строку. Больше параметров поддерживается с помощью файла конфигурации (manul.config).

Пример: python3 manul.py -i corpus -o out_dir -n 40 "target @@"

positional arguments:
  target_binary  Целевой бинарный файл и параметры для выполнения (не забудьте заключить в кавычки, например "target e @@").

optional arguments:
  -h, --help     показать это справочное сообщение и выйти
  -n NFUZZERS    Количество параллельных фаззеров
  -s             Запустить слепой фаззинг (без инструментирования кода)
  -c CONFIG      Путь к файлу конфигурации с дополнительными параметрами (см. раздел Параметры файла конфигурации ниже)
  -r             Восстановить предыдущий сеанс

Required parameters:
  -i INPUT       Путь к каталогу с начальным корпусом
  -o OUTPUT      Путь к выходному каталогу

Параметры файла конфигурации

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