BinAbsInspector — это инструмент статического анализа двоичных файлов. С помощью этого инструмента исследователи могут перепроектировать и анализировать двоичные файлы в автоматизированной форме, а также пытаться сканировать и выявлять потенциальные уязвимости безопасности. Этот проект представляет собой исследовательский проект, поддерживаемый Keenlab в течение длительного времени и реализующий свои функции на базе Ghidra.
Текущая версия BinAbsInspector поддерживает двоичные файлы на архитектурах x86, x64, Armv7 и aarch64.
В текущей версии BinAbsInspector реализованы следующие детекторы:
CWE78(Внедрение команд операционной системы) CWE119(переполнение буфера(Распространенные случаи)) CWE125(переполнение буфера(Внеполосное чтение данных)) CWE134(Использование строки формата, управляемой извне) CWE190(Целочисленное переполнение) CWE367(TOCTOU) CWE415(двойной выпуск) CWE416(повторное использование после выпуска) CWE426(Ненадежный путь поиска) CWE467(Использование для типов указателейsizeof()) CWE476(Разыменование нулевого указателя) CWE676(Потенциально опасное использованиефункция) CWE787(переполнение буфера(Внеполосная запись данных))
Структура файлов и каталогов проекта следующая:
├── main
│ ├── java
│ │ └── com
│ │ └── bai
│ │ ├── checkers Детектор орудия
│ │ ├── env
│ │ │ ├── funcs функция Модель
│ │ │ │ ├── externalfuncs внешнийфункция Модель
│ │ │ │ └── stdfuncs cpp stdМодель
│ │ │ └── region Модель памяти
│ │ ├── solver Аналитическое ядро и графическая модель
│ │ └── util Другой практичный инструмент
│ └── resources
└── test
Ghidra:【документ】 Z3(v4.8.15):【версия для Windows】【версия Linux】 РасширятьZIPдокумент:【портал】【Установитьдокумент】 https://github.com/KeenSecurityLab/BinAbsInspector/releases
Исследователи могут использовать следующую команду для локального клонирования исходного кода проекта:
git clone https://github.com/KeenSecurityLab/BinAbsInspector.git
Мы можем создавать расширения сами,Если вы хотите разрабатывать новые функции,Можно обратиться кинструментиз【Разработчикдокумент】。
Этапы строительства проекта следующие:
1. Установите Гидру и Z3;
2、УстановитьGradle7.x;
3. Загрузите код проекта;
4. Запустите следующую команду в корневом каталоге проекта:
gradle buildExtension
На этом этапе сгенерированные файлы расширения будут храниться по следующему пути:
dist/${GhidraVersion}_${date}_BinAbsInspector.zip
Исследователи могут запускать BinAbsInspector в автономном режиме, в режиме графического интерфейса или в Docker.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
Параметры приведенной выше команды объясняются следующим образом:
<projectPath> -- Ghidra Путь проекта
<projectName> -- Название проекта Гидра
<scriptParams> -- Параметры анализатора
Поддерживаемые параметры анализатора
параметр | описывать |
---|---|
[-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>...]"] | Включить указанный детектор |
1. Запустите Ghidra и импортируйте целевой двоичный файл в проект; 2. Используйте конфигурацию по умолчанию для анализа двоичных файлов; 3. После завершения анализа откройте «Окно -> Script Manager» и найдите «BinAbsInspector.java»; 4. Дважды щелкните «BinAbsInspector.java», установите параметр в окне конфигурации и нажмите «ОК»; 5. После завершения анализа мы сможем просмотреть экспортированный отчет CWE в окне терминала;
git clone git@github.com:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>
本项目из开发与发布遵循GPL-3.0Открытый исходный код Лицензионное соглашение。
https://github.com/KeenSecurityLab/BinAbsInspector
https://keenlab.tencent.com/
https://github.com/NationalSecurityAgency/ghidra#install
https://github.com/Z3Prover/z3
https://github.com/Z3Prover/z3#building-z3-using-make-and-gccclang
Замечательная рекомендация