CRS-GHD-04
Инженерный анализ бинарных файлов в Ghidra: разбор заголовков, декомпиляция и проверка цепочки поставок
Сторонние бинарные плагины, скомпилированные расширения для Python и проприетарные консольные агенты поставляются без исходных текстов, но получают полный доступ к памяти процесса и сетевым интерфейсам сервера. Открытый программный комплекс Ghidra разбирает машинные инструкции x86-64 и ARM64 через промежуточное представление P-code. Инженер получает читаемый псевдокод на языке Си и карту вызовов вообще без запуска подозрительного файла.
1. Строение сегментов ELF64 и схема декомпиляции через P-code в Ghidra
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) и скрытые сетевые маяки до допуска компонента на рабочий сервер.
| Команда, фильтр или режим | Наблюдаемый технический артефакт | Прикладной вывод для инженера |
|---|---|---|
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. Лабораторный практикум пакетного разбора и контроль цепочки поставок
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 в режим только для чтения до передачи управления приложению.
Три пакета корпоративного пилота и автономной поставки
Периметр, шифрование и локализация по № 152-ФЗ
Автономная верификация прикладных шлюзов пакетом indra-core
OpenAPI и изолированный тестовый стенд; заказчик получает парную проверку по тридцати классам атак с нулевым числом ложных тревог, защитные правила для mcp-sentinel и сто пять квитанций криптожурнала.Защита автономных агентов и шлюз MITR (приказ № 117)
mcp.json и схемы инструментов агента; заказчик получает формальные политики допустимости и перехват опасных вызовов до открытия сокета.Получить автономный комплект или согласовать пилот
--no-index --find-links) и скрипты независимой перепроверки выдаются по запросу для лабораторных и пилотных испытаний. Оставьте рабочую почту в форме ниже без перезагрузки страницы или напишите напрямую на адрес af@isslab.ai.Институт-разработчик и оператор стенда
1267700083617, ИНН 9731161602, КПП 773101001, 121352, город Москва, улица Давыдковская, дом 18, помещение VIII). По научно-инженерной программе ИБ 3.0 институт разрабатывает и сопровождает пограничный шлюз MITR и верификационный стенд INDRA, выпускает монографию «Доказанное действие» и открытые программные пакеты под лицензией Apache-2.0 без привлечения сторонних субподрядчиков.