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

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

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

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

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

Категории

Все категории
Loading categories
BinAbsInspector — Статический сканер уязвимостей бинарных файлов, использующий абстрактную интерпретацию на Ghidra Pcode. Обнаруживает классы CWE, такие как переполнение буфера, использование после освобождения и внедрение команд, с помощью символьного выполнения с Z3. | Kitploit
Инструменты/GitHubGitHub/keensecuritylab/binabsinspector
Статический анализСканеры уязвимостейОбратная инженерияФаззингАнализ Бинарных Файлов
GitHubkeensecuritylab/binabsinspector

BinAbsInspector

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

Популярное

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

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

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

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

Смотреть все инструменты →
Репозиторий
1.7k245682 лет назадПроверено 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/
      2. или вы можете собрать и установить 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.
$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

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 (Переполнение буфера (запись за границами))

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

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

├── 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 для улучшения производительности.
Здесь мы хотели бы поблагодарить их за огромную помощь!

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