Практический курс · модуль 4 из 4 · статический анализ бинарных файлов В ghidra | CRS-GHD-04

Инженерный анализ бинарных файлов в Ghidra: разбор заголовков, декомпиляция и проверка цепочки поставок

Сторонние бинарные плагины, скомпилированные расширения для Python и проприетарные консольные агенты поставляются без исходных текстов, но получают полный доступ к памяти процесса и сетевым интерфейсам сервера. Открытый программный комплекс Ghidra разбирает машинные инструкции x86-64 и ARM64 через промежуточное представление P-code. Инженер получает читаемый псевдокод на языке Си и карту вызовов вообще без запуска подозрительного файла.

1. Строение сегментов ELF64 и схема декомпиляции через P-code в Ghidra

СТРОЕНИЕ МОДУЛЯ ELF64 И БЕСКОНТАКТНАЯ ДЕКОМПИЛЯЦИЯ P-CODE В GHIDRA (CRS-GHD-04) СТРОЕНИЕ МОДУЛЯ ELF64 И БЕСКОНТАКТНАЯ ДЕКОМПИЛЯЦИЯ P-CODE В GHIDRA (CRS-GHD-04) ОБРАЗЕЦ ELF64 (chmod a-x) .text (R-X · машинный код) .rodata (R-- · строки и адреса) .plt / .got (RELRO · импорты) GNU_STACK (RW- · NX без RWE) ЯДРО СТАТИЧЕСКОГО АНАЛИЗА GHIDRA Транслятор Sleigh → регистровый P-code x86-64 · ARM64 · RISC-V Дерево символов и перекрёстные ссылки XREFs STR FUN PLT Граф функций и псевдокод Си Поиск system / popen / strcpy Пакетный режим analyzeHeadless SHA-256 · AI-SUP-09 · DEV-CIC-07
Бесконтактный конвейер разбора скомпилированного модуля: из обезвреженного файла ELF64 извлекаются таблицы динамических импортов и ссылки из секции .rodata, после чего транслятор P-code восстанавливает граф ветвлений и код на языке Си.

2. Чтение заголовков, опасных импортов и восстановленного графа управления

Любой незнакомый исполняемый файл или динамическую библиотеку исследуют строго на отдельной виртуальной машине с отключённой сетью, предварительно сняв право на запуск командой chmod a-x. До открытия графической среды инженер фиксирует контрольную сумму SHA-256 и читает заголовки утилитой readelf -W -h -l -d. Такая проверка сразу показывает запрет исполнения данных на стеке (NX) и защиту таблиц переходов (RELRO).

После загрузки файла в проект Ghidra окна Symbol Tree и Defined Strings открывают полный список внешних библиотечных вызовов и строковых констант из секции .rodata. Переход по перекрёстным ссылкам (XREFs) от импортов system, popen, execve, connect или dlopen мгновенно выводит аналитика прямо на те участки кода, которые способны запустить командную оболочку или установить внешнее соединение.

Декомпилятор Ghidra переводит машинные команды конкретного процессора во внутренний регистровый язык P-code, восстанавливая типы переменных, условия ветвления и циклы в виде наглядного текста на языке Си. Сопоставление окна декомпилятора с графом переходов Function Graph помогает выявить зашитые пароли отладки, небезопасное копирование буферов (strcpy, sprintf) и скрытые сетевые маяки до допуска компонента на рабочий сервер.

Команды первичного осмотра бинарных файлов и инструменты навигации Ghidra
Команда, фильтр или режим Наблюдаемый технический артефакт Прикладной вывод для инженера
chmod a-x sample.bin && sha256sum sample.binСнятие флага запуска и фиксация 256-битного криптографического отпечатка файлаИсключает случайное выполнение образца и закрепляет точный идентификатор артефакта в протоколе
readelf -W -h -l -d sample.binТочка входа, права сегментов памяти (GNU_STACK) и список внешних библиотекПодтверждает неисполняемый стек, режим защиты таблиц связывания RELRO и состав зависимостей
nm -D sample.binТаблица динамических символов импорта и экспорта скомпилированного модуляЗа секунду показывает наличие вызовов запуска оболочки, прямых сокетов и опасных строковых операций
Ghidra: Window -> Defined Strings + XREFsКарта перекрёстных ссылок от строковых литералов в .rodata к точкам вызоваВедёт от найденного сетевого адреса, имени переменной или ключа прямо к обрабатывающей функции
analyzeHeadless /tmp/proj LabProj -import sample.binПакетный консольный импорт и автоанализ файла в Ghidra без графического окнаПозволяет встроить повторяемую проверку сторонних бинарных сборок в закрытый сборочный стенд

3. Лабораторный практикум пакетного разбора и контроль цепочки поставок

ПОСЛЕДОВАТЕЛЬНОСТЬ ЛАБОРАТОРНОГО ПРАКТИКУМА (CRS-GHD-04) ПОСЛЕДОВАТЕЛЬНОСТЬ ЛАБОРАТОРНОГО ПРАКТИКУМА (CRS-GHD-04) 1. Сумма и заголовок chmod -x и readelf -h 2. Таблица импорта и строк Секция .rodata и ссылки 3. Декомпилятор и P-code Восстановление логики Си 4. Граф вызовов и вывод Поиск закладок и вызовов
Порядок бесконтактного анализа: снятие прав запуска и расчёт SHA-256, чтение заголовков ELF, поиск ссылок XREFs и декомпиляция в Ghidra.

В практическом задании ниже инженер снимает флаг запуска со сторонней разделяемой библиотеки и проверяет права сегментов памяти. Затем выгружается список чувствительных импортов и выполняется пакетный консольный разбор через сценарий analyzeHeadless.

# 1. Снятие флага исполнения и расчёт контрольной суммы SHA-256 образца
chmod a-x ./plugin_connector.so && sha256sum ./plugin_connector.so

# 2. Проверка неисполняемого стека (GNU_STACK без флага E) и опасных импортов
readelf -W -l ./plugin_connector.so | grep -E "GNU_STACK|GNU_RELRO"
nm -D ./plugin_connector.so | grep -E "system|popen|execve|socket|connect|strcpy|gets"

# 3. Пакетный консольный разбор модуля в Ghidra на изолированной машине без сети
/opt/ghidra/support/analyzeHeadless /tmp/ghidra_work TriageRepo \
  -import ./plugin_connector.so -readOnly

Статический разбор скомпилированных библиотек закрывает слепую зону при приёмке закрытых плагинов и нативных модулей к языковым моделям. В энциклопедии INDRA защита от вредоносных зависимостей и подмены артефактов детально разобрана в классах AI-SUP-09 и DEV-CIC-07, а собственные пакеты на странице /ru/packages/ поставляются в открытом исходном коде с проверяемыми суммами SHA-256.

4. Инженерные ответы по модулю CRS-GHD-04

Отличие статического разбора в Ghidra от запуска программы под отладчиком gdb

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

Назначение промежуточного представления P-code внутри декомпилятора Ghidra

Перевод машинных команд разных процессоров (x86-64, ARM64, RISC-V) в единый набор элементарных операций P-code позволяет одинаково точно восстанавливать потоки данных и псевдокод на языке Си для серверных и встраиваемых программ.

Разбор очищенных бинарных библиотек после удаления локальных отладочных имён функций

Даже при удалённой таблице отладочных символов разделяемая библиотека обязана хранить внешние вызовы системных функций в секции .dynsym, поэтому переходы от таблицы PLT и строковых констант .rodata надёжно выводят на ключевые обработчики.

Роль флагов неисполняемого стека GNU_STACK и режима Full RELRO при входном контроле сборок

Отсутствие права исполнения у сегмента GNU_STACK блокирует запуск машинного кода из области данных стека, а режим Full RELRO переводит общую таблицу смещений GOT в режим только для чтения до передачи управления приложению.

Три пакета корпоративного пилота и автономной поставки

После бесплатной экспресс-проверки инженерная дирекция выбирает подходящий пакет внедрения внутри собственной сети без передачи коммерческой тайны во внешние облака.
Пакет А · 3 рабочих дня

Периметр, шифрование и локализация по № 152-ФЗ

На вход подаются публичные домены и конфигурация веб-сервера; заказчик получает готовый патч заголовков, локализацию шрифтов и паспорт проверки по ГОСТ Р 34.11-2012.
Пакет Б · 7 рабочих дней

Автономная верификация прикладных шлюзов пакетом indra-core

На вход подаются схемы OpenAPI и изолированный тестовый стенд; заказчик получает парную проверку по тридцати классам атак с нулевым числом ложных тревог, защитные правила для mcp-sentinel и сто пять квитанций криптожурнала.
Пакет В · 10 рабочих дней

Защита автономных агентов и шлюз MITR (приказ № 117)

На вход подаются манифесты mcp.json и схемы инструментов агента; заказчик получает формальные политики допустимости и перехват опасных вызовов до открытия сокета.
Запрос автономного дистрибутива И пилота на стенде

Получить автономный комплект или согласовать пилот

Дистрибутив для автономной установки без доступа к внешней сети (--no-index --find-links) и скрипты независимой перепроверки выдаются по запросу для лабораторных и пилотных испытаний. Оставьте рабочую почту в форме ниже без перезагрузки страницы или напишите напрямую на адрес af@isslab.ai.
Прямая почта для связи: af@isslab.ai
Герб верификационного стенда INDRA
Институт-разработчик и оператор платформы · проверяемые реквизиты

Институт-разработчик и оператор стенда

Автономная некоммерческая организация «Научно-исследовательский институт системного синтеза» (ОГРН 1267700083617, ИНН 9731161602, КПП 773101001, 121352, город Москва, улица Давыдковская, дом 18, помещение VIII). По научно-инженерной программе ИБ 3.0 институт разрабатывает и сопровождает пограничный шлюз MITR и верификационный стенд INDRA, выпускает монографию «Доказанное действие» и открытые программные пакеты под лицензией Apache-2.0 без привлечения сторонних субподрядчиков.
Институт: isslab.ru Боевой шлюз MITR: asi5.ru ОГРН 1267700083617 Бесплатные инструменты (6)