Мультиплатформенный двоичный анализ с открытым исходным кодом: BARF Project
Анализ бинарного кода является важнейшей задачей во многих областях компьютерных наук и программных дисциплин, начиная от защиты программного обеспечения и анализа программ до обратного проектирования. Ручной двоичный анализ — сложная и трудоемкая задача, и существуют программные средства, которые стремятся автоматизировать процесс или помочь аналитикам. Однако, большинство этих инструментов имеют ряд технических и коммерческих ограничений, которые ограничивают доступ и использование данных инструментов для значительной части академических и практических сообществ. BARF — это бинарный анализ с открытым исходным кодом, который предназначен для поддержки широкого круга задач анализа двоичного кода, которые являются общими для дисциплины информационной безопасности. Это платформа с поддержкой сценариев, которая поддерживает поднятие инструкций из нескольких архитектур, двоичный перевод в промежуточное представление, расширяемый фреймворк для плагинов для анализа кода и взаимодействия с внешними инструментами, такими как отладчики, SMT-решающие устройства и средства контроля инструментов. Эта структура предназначена, в первую очередь, для анализа с участием человека, но может быть полностью автоматизирована.
Проект BARF включает BARF и соответствующие инструменты и пакеты. Пока проект состоит из следующих элементов:
- BARF: Мультиплатформенный двоичный анализ с открытым исходным кодом и фреймворком обратного проектирования.
- PyAsmJIT: JIT для архитектруы Intel x86_64 and ARM.
- Инструменты, созданные на базе BARF:
- BARFgadgets: Позволяет вам искать, классифицировать и проверять ROP приспособления внутри двоичной программы.
- BARFcfg: Позволяет восстановить граф потока управления функциями двоичной программы.
- BARFcg: Позволяет вам восстановить граф вызовов функций двоичной программы.
- BARF: Мультиплатформенный двоичный анализ с открытым исходным кодом и фреймворком обратного проектирования (Подробный доклад) [en]
- BARFing Gadgets (презентация ekoparty2014) [es]
BARF — это пакет Python для двоичного анализа и обратного проектирования. Он может:
- Загружать двоичные программы в разных форматах (ELF, PE и т. д.),
- Поддерживает архитектуру Intel x86 для 32 и 64 бит,
- Поддерживает архитектуру ARM для 32 бит,
- Работает на промежуточном языке (REIL), поэтому весь алгоритм анализа является агностическим
- Имеет интеграцию с Z3 и CVC4 SMT решающими устройствами, что означает, что вы можете выражать фрагменты кода в виде формул и проверять ограничения на них.
BARF зависит от следующих SMT решающих устройств:
- Z3 : Высокопроизводительный корректор теорем, разработанный в Microsoft Research.
-
Ссылка скрыта от гостей: Эффективный автоматизированный метод доказательства теорем с открытым исходным кодом для выполнимости проблем по модулю теорий (SMT).
Код:
$ sudo python setup.py install
Код:
$ sudo python setup.py install --user
- Всего лишь одно SMT решающее устройство необходимо для корректной
работы. Вы можете выбрать между Z3 и CVC4 или установить оба. Вы можете
использовать сценарийlink removed, который скачает и установит оба решающих устройства - Для запуска тестов, вам необходимо будет сначала установить PyAsmJIT first.
Весь фреймфорк разделен на 3 главных компонента: core (ядро), arch и analysis (анализ).
Core
Этот компонент включает в себя следующие существенные компоненты:
- REIL: Предоставляет определения для языка REIL. Он также реализует эмулятор (emulator) и синтаксический анализатор (parser).
- SMT : Предоставляет средства для взаимодействия с Z3 SMT решающим устройством. Также, он предоставляет функциональность для перевода REIL инструкций в SMT выражения
- BI : Модуль Binary Interface отвечает за загрузку двоичных файлов для обработки (он использует [PEFile] и [PyELFTools].)
Каждая поддерживаемая архитектура предоставляется в виде подкомпонента, который содержит следующие модули.
- Architecture : Описывает архитектуру, т. е. регистры, размер адреса памяти.
- Translator : обеспечивает переводчиков в REIL для каждой поддерживаемой инструкции.
- Disassembler : обеспечивает разборку функций (использует Capstone.)
- Parser : преобразует инструкцию в строку объектной формы (предоставляется модулем инструкций).
Пока этот компонент состоит из двух модулей: Control-Flow Graph, Call Graph и Code Analyzer.
Первые два, обеспечивает функциональность для восстановления CFG и CG,
соответственно. Последний является высокоуровневым интерфейсом для
функций, связанных с SMT-решающими устройствами.
Структура директории
Код:
barf/ Framework's main directory.
doc/ Documentation.
examples/ Basic example scripts that show various functionalities.
scripts/ Installation scripts.
tests/ BARF package tests.
tools/ Tools build upon BARF.[/ICODE]
Перевод: [URL='https://codeby.net/members/annadavydova.66672/']Анна Давыдова[/URL]
Источник: [URL='https://n0where.net/multiplatform-open-source-binary-analysis/']n0where.net[/URL]