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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/keensecuritylab/binabsinspector
Статический анализСканеры уязвимостейОбратная инженерияФаззингАнализ Бинарных Файлов
GitHubkeensecuritylab/binabsinspector

BinAbsInspector

Статический сканер уязвимостей бинарных файлов, использующий абстрактную интерпретацию на Ghidra Pcode. Обнаруживает классы CWE, такие как переполнение буфера, использование после освобождения и внедрение команд, с помощью символьного выполнения с Z3.

Популярное

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

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

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

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

Смотреть все инструменты →
Репозиторий
1.7k245142 лет назадПроверено Kitploit
Поделиться

Что такое BinAbsInspector?

BinAbsInspector (Binary Abstract Inspector) — это статический анализатор для автоматического реверс-инжиниринга и поиска уязвимостей в бинарных файлах, который является долгосрочным исследовательским проектом, разрабатываемым в Keenlab. Он основан на абстрактной интерпретации с поддержкой Ghidra. Работает с Pcode от Ghidra вместо ассемблера. В настоящее время поддерживает бинарные файлы на архитектурах x86, x64, armv7 и aarch64.

Установка

  • Установите Ghidra в соответствии с документацией Ghidra
  • Установите Z3 (протестированная версия: 4.8.15)
  • Обратите внимание, что библиотека Z3 состоит из двух частей: пакета Java и нативной библиотеки. Пакет Java уже включен в каталог "/lib", но мы рекомендуем заменить его на собственный пакет Java для совместимости версий.
    • Для Windows загрузите предварительно собранный пакет отсюда, распакуйте zip-файл и добавьте переменную среды PATH, указывающую на z3-${version}-win/bin
    • Для Linux установка с помощью пакетного менеджера НЕ рекомендуется, есть два варианта:
      1. Вы можете загрузить подходящий предварительно собранный пакет отсюда, распаковать zip-файл и скопировать z3-${version}-glibc-${version}/bin/*.so в
/usr/local/lib/
  • или вы можете собрать и установить z3 в соответствии с инструкцией по сборке Z3 с помощью make и GCC/Clang
  • Для macOS аналогично Linux.
  • Загрузите zip-файл расширения со страницы релизов
  • Установите расширение в соответствии с примечаниями по расширениям Ghidra
  • Сборка

    Соберите расширение самостоятельно, если вы хотите разработать новую функцию, обратитесь к руководству разработчика.

    • Установите Ghidra и Z3
    • Установите Gradle 7.x (протестированная версия: 7.4)
    • Клонируйте репозиторий
    • Выполните gradle buildExtension в корне репозитория
    • Расширение будет создано в dist/${GhidraVersion}_${date}_BinAbsInspector.zip

    Использование

    Вы можете запустить BinAbsInspector в безголовом режиме, режиме GUI или с помощью Docker.

    • В безголовом режиме Ghidra.
    root@kitploit:~
    $GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
    

    <projectPath> -- Путь к проекту Ghidra.
    <projectName> -- Имя проекта Ghidra.
    <scriptParams> -- Аргументы для нашего анализатора, предоставляющие следующие параметры:

    ParameterDescription
    [-K <kElement>]Лимит размера KSet K
    [-callStringK <callStringMaxLen>]Максимальная длина строки вызова K
    [-Z3Timeout <timeout>]Тайм-аут Z3
    [-timeout <timeout>]Тайм-аут анализа
    [-entry <address>]Адрес входа
    [-externalMap <file>]Конфигурация модели внешних функций
    [-json]Вывод в формате JSON
    [-disableZ3]Отключить Z3
    [-all]Включить все проверки
    [-debug]Включить вывод отладочного журнала
    [-check "<cweNo1>[;<cweNo2>...]"]Включить конкретные проверки
    • В графическом интерфейсе Ghidra

      1. Запустите Ghidra и импортируйте целевой бинарный файл в проект.
      2. Проанализируйте бинарный файл с настройками по умолчанию.
      3. Когда анализ завершен, откройте Window -> Script Manager и найдите BinAbsInspector.java.
      4. Дважды щелкните на записи BinAbsInspector.java, установите параметры в окне конфигурации и нажмите OK.
      5. Когда анализ завершен, вы увидите отчеты CWE в окне консоли; двойной щелчок по адресам из отчета позволяет перейти к соответствующему адресу.
    • С помощью Docker

    root@kitploit:~
    git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
    cd BinAbsInspector
    docker build . -t bai
    docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>
    

    Реализованные проверки

    На данный момент BinAbsInspector поддерживает следующие проверки:

    • CWE78 (Внедрение команд ОС)
    • CWE119 (Переполнение буфера (общий случай))
    • CWE125 (Переполнение буфера (чтение за границами))
    • CWE134 (Использование строки формата, контролируемой извне)
    • CWE190 (Целочисленное переполнение или циклический переход)
    • CWE367 (Время проверки — время использования (TOCTOU))
    • CWE415 (Двойное освобождение)
    • CWE416 (Использование после освобождения)
    • CWE426 (Недоверенный путь поиска)
    • CWE467 (Использование sizeof() для типа указателя)
    • CWE476 (Разыменование нулевого указателя)
    • CWE676 (Использование потенциально опасной функции)
    • CWE787 (Переполнение буфера (запись за границами))

    Структура проекта

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

    root@kitploit:~
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── bai
    │   │           ├── checkers                       checker implementatiom
    │   │           ├── env
    │   │           │   ├── funcs                      function modeling
    │   │           │   │   ├── externalfuncs          external function modeling
    │   │           │   │   └── stdfuncs               cpp std modeling
    │   │           │   └── region                     memory modeling
    │   │           ├── solver                         analyze core and grpah module
    │   │           └── util                           utilities
    │   └── resources
    └── test
    

    Вы также можете собрать javadoc с помощью gradle javadoc; документация API будет сгенерирована в ./build/docs/javadoc.

    Благодарности

    Мы используем Ghidra в качестве основы и часто прибегаем к JImmutable Collections для улучшения производительности.
    Здесь мы хотели бы поблагодарить их за огромную помощь!

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