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

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

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

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

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

Категории

Все категории
Loading categories
autoharness — Инструмент, который автоматически создаёт фаззинг-обёртки на основе библиотеки | Kitploit
Инструменты/GitHubGitHub/parikhakshat/autoharness
Анализ уязвимостейАнализ КодаФаззингАнализ Бинарных Файлов
GitHubparikhakshat/autoharness

autoharness

Инструмент, который автоматически создаёт фаззинг-обёртки на основе библиотеки

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

Популярное

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

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

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

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

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

AutoHarness

Создано Акшатом Парихом

Что это за инструмент?

AutoHarness — это инструмент, который автоматически генерирует для вас фаззинг-обвязки (harness). Идея возникла из актуальной проблемы фаззинга современных кодовых баз: в больших кодовых базах тысячи функций и фрагментов кода, которые могут быть встроены довольно глубоко в библиотеку. Умным фаззерам очень сложно, а иногда и невозможно достичь такого пути выполнения. Даже в крупных проектах по фаззингу, таких как oss-fuzz, всё ещё остаются части кодовой базы, не охваченные фаззингом. Поэтому данная программа пытается в некоторой степени смягчить эту проблему, а также предоставить инструмент, который исследователи безопасности могут использовать для первоначального тестирования кодовой базы. Эта программа поддерживает только кодовые базы, написанные на C и C++.

Установка/Демонстрация

Эта программа использует llvm и clang для libfuzzer, Codeql для поиска функций и python для общего управления. Программа тестировалась на Ubuntu 20.04 с llvm 12 и python 3. Вот начальная настройка.

root@kitploit:~
sudo apt-get update;
sudo apt-get install python3 python3-pip llvm-12* clang-12 git;
pip3 install pandas lief subprocess os argparse ast;

Следуйте инструкции по установке Codeql по адресу https://github.com/github/codeql. Убедитесь, что вы установили инструменты CLI и библиотеки. Для тестирования я поместил и инструменты, и библиотеки в одну папку. Наконец, клонируйте этот репозиторий или скачайте релиз. Вот вывод программы после запуска на nginx с включенным режимом множественных аргументов. Вот команда, которую я использовал.

root@kitploit:~
python3 harness.py -L /home/akshat/nginx-1.21.0/objs/ -C /home/akshat/codeql-h/ -M 1 -O /home/akshat/autoharness/ -D nginx -G 1 -Y 1 -F "-I /home/akshat/nginx-1.21.0/objs -I /home/akshat/nginx-1.21.0/src/core -I /home/akshat/nginx-1.21.0/src/event -I /home/akshat/nginx-1.21.0/src/http -I /home/akshat/nginx-1.21.0/src/mail -I /home/akshat/nginx-1.21.0/src/misc -I /home/akshat/nginx-1.21.0/src/os -I /home/akshat/nginx-1.21.0/src/stream -I /home/akshat/nginx-1.21.0/src/os/unix" -X ngx_config.h,ngx_core.h

Результаты: image Определённо можно повысить успех, дополнительно отлаживая компиляцию и добавляя больше заголовочных файлов и т.д. Обратите внимание, что проект nginx не содержит общих объектов (shared objects) после компиляции. Однако эта программа имеет функцию, которая может преобразовывать PIE-исполняемые файлы в общие библиотеки.

Планируемые возможности (в порядке разработки)

  1. Фаззинг структур

    Текущий способ, реализованный в программе для фаззинга функций с несколькими аргументами, заключается в использовании fuzzing data provider. В этой интеграции есть некоторые улучшения; однако я считаю, что можно включить эту функцию в структуры данных. Проблема, с которой я столкнулся при написании этого кода, связана с Codeql и вложенными структурами. Это становится особенно сложно без написания нескольких запросов, которые различаются для каждой функции. Короче говоря, эта функция требует доработки. Я также думал о простом решении с использованием protobufs.

  2. Создание обвязок на основе реализации

    С помощью Codeql можно сгенерировать граф потока управления, который показывает, как инициализируются параметры в функции. Используя эту информацию, можно создать лучшую обвязку. Другой способ — найти реализации функции, существующие в библиотеке, и использовать эту информацию для обоснованного предположения о реализации функции в качестве обвязки. Текущие проблемы, с которыми я сталкиваюсь, связаны с генерацией графов потока управления с помощью Codeql.

  3. Параллельный фаззинг/Обнаружение ложных срабатываний

    Я могу создать простую программу, которая запускает все обвязки и выявляет любые распространённые ложные срабатывания с помощью ASAN. Также можно создать новый интерфейс, который запускает все обвязки одновременно и отображает их статистику.

Вклад/Ошибки

Если вы найдёте какие-либо ошибки в этой программе, пожалуйста, создайте issue. Я постараюсь найти исправление. Кроме того, если у вас есть идеи о новых функциях или о том, как реализовать улучшения производительности или текущие планируемые возможности, создайте pull request или issue с тегом (contribution).

Важное замечание

Этот инструмент генерирует некоторые ложные срабатывания. Сначала проанализируйте сбои и определите, является ли это настоящей ошибкой или просто ошибкой реализации. Также вы можете включить режим отладки, если некоторые функции не компилируются. Это поможет понять, не пропущены ли какие-то заголовочные файлы или нет ли проблем с компоновкой. Если проект, над которым вы работаете, не имеет общих библиотек, а является исполняемым файлом, убедитесь, что вы скомпилировали исполняемый файл в форме PIE, чтобы эта программа могла преобразовать его в общую библиотеку.

Ссылки

  1. https://lief.quarkslab.com/doc/latest/tutorials/08_elf_bin2lib.html
Скачать инструмент