Перейти к содержанию
Новое AiManual теперь в MAX Подписаться
Публикация AiManual

AI-ассистированный реверс-инжиниринг прошивок сетевого оборудования: метод за 3 промпта

Практический кейс: LLM-агент Cursor с Composer 2.5 Fast за 3 промпта распаковал прошивку коммутатора SNR-2990X-24FQ, дизассемблировал все бинарники и нашёл скры

Коротко

Что будет в материале

  1. 01

    Введение: зачем реверсить прошивку сетевого оборудования с помощью AI

  2. 02

    Инструментарий и объект исследования

  3. 03

    Метод за 3 промпта: пошаговый разбор

  4. 04

    Найденные сокровища: скрытые команды и бэкдоры

LLM-агент Cursor с Composer 2.5 Fast за три последовательных промпта распаковал прошивку коммутатора SNR-2990X-24FQ, дизассемблировал все исполняемые файлы и нашёл недокументированную команду 'show hidden' с бэкдором через serial console. Без ручного анализа бинарных сигнатур и без написания парсеров. Только промпты на естественном языке.

Этот кейс демонстрирует сдвиг в практике реверс-инжиниринга: LLM берёт на себя рутинную декомпозицию образов, генерацию скриптов для извлечения компонентов и семантический анализ дизассемблированного кода. Исследователь фокусируется на постановке гипотез и верификации находок. Результат - полный доступ к Linux Shell и Broadcom Shell на устройстве, которое официально не предоставляет таких интерфейсов.

Материал построен вокруг воспроизводимой методологии: конкретные промпты, ожидаемые результаты на каждом шаге, инструменты и ограничения. Если вы работаете с EoS/EoL-оборудованием или исследуете безопасность встроенных систем, эта схема масштабируется на другие устройства с FIT-образами и initramfs.

Введение: зачем реверсить прошивку сетевого оборудования с помощью AI

По данным отраслевых опросов 2025-2026 годов, около 40% сетевых устройств в корпоративных сетях имеют статус End-of-Sale или End-of-Life. Производитель прекратил выпуск обновлений прошивки, документация неполна, а исходный код недоступен. При этом оборудование продолжает работать на критических участках инфраструктуры - замена требует бюджета и времени.

Классический реверс-инжиниринг прошивок решает три задачи: аудит безопасности (поиск бэкдоров и уязвимостей), восстановление утраченной функциональности и продление жизненного цикла устройств. Но ручной анализ требует глубокой экспертизы в архитектуре целевого процессора, форматах образов (U-Boot FIT, initramfs, SquashFS) и инструментах вроде Ghidra или IDA Pro. Один специалист тратит дни на распаковку и первичный анализ.

LLM-агенты меняют это соотношение. Модель, имеющая контекстное окно в сотни тысяч токенов, способна одновременно удерживать структуру прошивки, дизассемблированные листинги и генерировать гипотезы о назначении кода. Cursor с Composer 2.5 Fast в описываемом кейсе выполнил полный цикл анализа за время, сопоставимое с написанием трёх развёрнутых промптов. На выходе - две недокументированные возможности: команда 'show hidden' с эскалацией до shell и бэкдор через serial console по последовательности Ctrl+C → Ctrl+] → Ctrl+].

Анализ прошивок с помощью AI вписывается в более широкий тренд автоматизации задач безопасности. Например, инструмент SkillSpector от NVIDIA применяет гибридный подход со статическим анализом и LLM-верификацией для поиска уязвимых навыков AI-агентов. Схожая логика - автоматизация того, что раньше требовало ручного ревью, - работает и для прошивок.

Инструментарий и объект исследования

Коммутатор SNR-2990X-24FQ: что внутри коробки

SNR-2990X-24FQ - управляемый L3-коммутатор производства SNR, OEM-версия устройства DCN. Построен на чипсете Broadcom (предположительно StrataXGS Trident или схожего семейства), оснащён процессорной платой с ARM-ядром и 512 МБ оперативной памяти. Прошивка поставляется в виде монолитного образа, внутри которого - ядро Linux, initramfs и device tree, упакованные в формат U-Boot FIT (Flattened Image Tree).

Этот аппарат типичен для сегмента: сотни тысяч подобных коммутаторов работают в сетях операторов связи и дата-центров. Производитель предоставляет CLI с ограниченным набором диагностических команд. Документация не описывает внутреннюю структуру прошивки. Ровно та ситуация, в которой ручной реверс-инжиниринг оправдан, но трудозатратен.

Cursor Composer 2.5 Fast: LLM-агент для анализа бинарных файлов

Composer 2.5 Fast - режим агента в IDE Cursor, оптимизированный под задачи анализа кода. В отличие от классических инструментов вроде Ghidra или IDA Pro, которые предоставляют среду для ручной навигации по дизассемблированному коду, Composer работает как ассистент: получает промпт с контекстом, самостоятельно выбирает инструменты (binwalk, dd, objdump, radare2), генерирует скрипты и интерпретирует результаты.

Ключевое преимущество для реверс-инжиниринга прошивок - способность агента удерживать в контексте всю цепочку извлечения: от идентификации формата образа до семантического анализа строк и обработчиков сигналов в дизассемблированных бинарниках. Composer не заменяет Ghidra для глубокого интерактивного анализа, но закрывает 80% рутинных операций: определение границ разделов, поиск магических чисел, генерацию скриптов для пакетного дизассемблирования.

Архитектура прошивки SNR-2990X-24FQ - ядро, initramfs, FIT-образы - стандартна для Linux-встраиваемых систем. Это принципиально: метод переносим на другие устройства с аналогичной структурой.

Метод за 3 промпта: пошаговый разбор

Промпт 1: Распаковка firmware и извлечение компонентов

Первый промпт формулирует задачу максимально конкретно: «У меня есть файл прошивки коммутатора SNR-2990X-24FQ. Определи формат образа, извлеки все компоненты - ядро, initramfs, device tree. Используй binwalk и утилиты для работы с U-Boot образами. Если найдёшь вложенные архивы, отметь их для следующего шага».

Агент выполняет цепочку действий без дополнительных подсказок. Сначала binwalk сканирует образ и находит сигнатуры: заголовок U-Boot FIT, маркер ядра ARM, границы initramfs. Затем через утилиту unmkimage (из пакета u-boot-tools) извлекает три компонента в отдельные файлы. На выходе - каталог с ядром (vmlinuz), initramfs (cpio-архив) и device tree blob (.dtb).

Промежуточный результат: структура прошивки полностью декомпозирована. Исследователь видит, что initramfs содержит корневую файловую систему с бинарниками коммутатора, скриптами инициализации и конфигурационными файлами. Composer автоматически предлагает проверить initramfs на вложенные cpio-архивы - это критично, потому что производители иногда вкладывают дополнительные уровни упаковки.

Промпт 2: Поиск вложенных архивов и дизассемблирование

Второй промпт: «Распакуй initramfs, проверь на вложенные cpio-архивы. Найди все исполняемые файлы ELF в распакованной файловой системе и дизассемблируй их с помощью objdump. Собери вывод в структурированный каталог».

Агент распаковывает initramfs через cpio, обнаруживает дополнительный cpio-архив внутри (производитель использовал двухуровневую упаковку), извлекает и его. Затем сканирует файловую систему на наличие ELF-заголовков, формирует список из десятков исполняемых файлов и генерирует shell-скрипт для пакетного дизассемблирования через objdump -d. Результат - директория с .asm-файлами для каждого бинарника.

На этом этапе проявляется главное преимущество LLM-агента: он не просто выполняет команды, но и интерпретирует промежуточные результаты. Обнаружив второй cpio-архив, Composer не ждёт отдельного указания - он распаковывает его и включает содержимое в анализ. При ручном подходе этот шаг легко пропустить, особенно если вложенный архив не имеет явного расширения.

Промпт 3: Охота на скрытые команды и бэкдоры

Третий промпт - ключевой: «Проанализируй дизассемблированные файлы. Найди строки, похожие на скрытые команды CLI (например, 'show hidden', 'debug', 'diag'). Проверь обработчики сигналов (SIGINT, SIGTSTP) на предмет нестандартного поведения. Отметь все места, где программа сравнивает ввод с жёстко закодированными строками».

Агент проходится по .asm-файлам, извлекает все строковые литералы, фильтрует их по ключевым словам и находит несколько совпадений. Строка «show hidden» обнаруживается в бинарнике основного CLI-процесса. Анализ кода вокруг этой строки показывает, что команда вызывает функцию, открывающую shell с повышенными привилегиями. Дальнейший трейсинг приводит к команде «superdiag», которая активирует доступ к Broadcom Shell - низкоуровневой диагностической оболочке чипсета.

Параллельно Composer анализирует обработчики сигналов. В коде обработчика прерываний serial console обнаруживается нестандартная логика: при получении Ctrl+C программа переходит в состояние ожидания следующего символа. Если следующий символ - Ctrl+], программа ожидает ещё один Ctrl+]. После этой последовательности аутентификация обходится, и вызывается shell. Классический бэкдор, оставленный на этапе разработки или отладки.

Методология перекликается с подходами, описанными в статье о построении AI-агентов с нуля: оркестрация LLM, управление памятью (контекстом) и обработка ошибок - те же принципы, применённые к задаче реверс-инжиниринга.

Найденные сокровища: скрытые команды и бэкдоры

Команда 'show hidden': путь к Linux Shell

Команда «show hidden» не документирована в официальном CLI коммутатора. При вводе в пользовательском режиме она не отображается в автодополнении и не описана в help. Однако обработчик команд распознаёт строку и вызывает внутреннюю функцию spawn_shell(), которая запускает /bin/sh с правами root.

Цепочка полного доступа выглядит так:

  1. Подключиться к коммутатору по SSH или через serial console.
  2. Войти с обычной учётной записью (уровень привилегий не важен).
  3. Ввести «show hidden» - открывается Linux Shell.
  4. В shell ввести «superdiag» - активируется Broadcom Shell с доступом к регистрам чипсета, таблицам маршрутизации на уровне ASIC и отладочным счётчикам.

Практическая ценность для администратора: возможность диагностики на уровне чипсета без замены прошивки на стороннюю. Риски: любой, кто имеет доступ к CLI (включая злоумышленника, подобравшего пароль), получает полный контроль над устройством.

Бэкдор через serial console: Ctrl+C → Ctrl+] → Ctrl+]

Вторая находка опаснее. Обработчик прерываний serial console содержит жёстко закодированную последовательность, которая обходит аутентификацию. Достаточно физического доступа к консольному порту. Алгоритм:

  1. Подключиться к serial console (стандартные параметры: 115200 8N1).
  2. Дождаться приглашения ко входу.
  3. Нажать Ctrl+C - обработчик входит в режим ожидания escape-последовательности.
  4. Нажать Ctrl+] - обработчик подтверждает первый символ.
  5. Нажать Ctrl+] ещё раз - аутентификация обходится, запускается root shell.

Анализ дизассемблированного кода показал, что эта логика находится в обработчике SIGINT. При получении сигнала программа проверяет, пришёл ли ввод с serial console (через проверку tty-устройства), и если да - запускает конечный автомат ожидания двух Ctrl+]. Никакого логирования, никаких проверок учётных данных. Код выглядит как отладочный хук, забытый перед релизом.

Ограничения метода и возможности масштабирования

Метод не универсален. Он опирается на стандартные форматы: U-Boot FIT, cpio-initramfs, ELF-бинарники. Если прошивка использует проприетарную упаковку или обфускацию, LLM-агент может не распознать структуру. В таких случаях требуется предварительный анализ в Ghidra или IDA Pro для определения формата, после чего Composer снова становится полезным для автоматизации.

Второе ограничение - галлюцинации LLM при интерпретации дизассемблированного кода. Модель может приписать несуществующую функциональность или пропустить subtle-баги. Каждая находка требует верификации: воспроизведения на реальном устройстве и ручной проверки критических участков кода. В описываемом кейсе обе находки подтверждены экспериментально.

Требования к ресурсам: Composer 2.5 Fast работает в облаке Cursor, для анализа прошивки объёмом 32 МБ достаточно стандартного тарифа. Локальная альтернатива - связка из локальной LLM и скриптов на Python - требует GPU с объёмом видеопамяти от 16 ГБ для моделей уровня Qwen 27B, что сопоставимо с конфигурацией из кейса по запуску Qwen на Orange Pi AI Studio Pro.

Масштабирование на других вендоров возможно для устройств с Linux-прошивками на базе FIT-образов: Cisco IOS XE (гостевая Linux-среда), Juniper Junos (FreeBSD-ядро, но схожие принципы упаковки), MikroTik RouterOS (собственный формат, требует адаптации первого промпта). Для устройств с монолитными проприетарными прошивками (например, старые Cisco IOS) метод потребует существенной модификации.

Заключение: AI как новый инструмент в арсенале исследователя безопасности

Три промпта - и полный цикл реверс-инжиниринга прошивки выполнен. Ядро извлечено, initramfs распакован, все исполняемые файлы дизассемблированы, найдены две недокументированные возможности с эскалацией привилегий. Время - часы вместо дней. Порог входа снижен: исследователю не нужно знать все магические числа U-Boot или синтаксис objdump, агент генерирует команды сам.

Ключевой вывод: LLM-агенты не заменяют экспертизу, но мультиплицируют её. Они берут на себя рутину и позволяют исследователю сосредоточиться на постановке гипотез и верификации. Для администраторов EoL-оборудования это практический инструмент аудита. Для специалистов по безопасности - способ быстрее находить скрытые механизмы доступа.

Метод требует ответственного применения. Найденные бэкдоры и скрытые команды - это уязвимости, которые должны быть закрыты или как минимум задокументированы для владельцев устройств. AI ускоряет их обнаружение, но решение о раскрытии и использовании остаётся за человеком. Если вы сталкивались с похожими находками в прошивках других вендоров - методика воспроизводима, и сообщество только выиграет от обмена промптами и результатами.

Подписаться на канал