Некоторые производители поставляют свои прошивки в незашифрованном виде, без защиты от реверс-инжиниринга и даже с debug-символами. Еще 5 лет назад, для того чтобы раскопать что-то в такой прошивке приходилось копаться с binwalk, делать свои скрипты и просматривать множество файлов вручную на предмет чего-нибудь интересного.
В этой статье за 3 промпта будет препарирована для свитча SNR-2990X-24FQ (файлы прошивок опубликованы в публичном доступе https://data.nag.wiki/SNR Switches/Firmware/SNR-S2990X-24FQ/all/ ). На самом деле, это OEM-свитч Digital China, который поставляется в разные страны и разными поставщики под своими брендами или под оригинальным брендом DCS.
Используется Cursor и его модель Composer 2.5 Fast (в целях экономии)
Промпт 1: Изучи файл SNR-S2990X-24FQ_R2.0_7.5.3.2(R0010.0185).img, это прошивка для свитча. нужно распаковать прошивку и извлечь всё что можно — ядро, загрузки, fdt, rootfs и все что найдёшь. все файлы, похожие на архив надо распаковать
Результат 1: Найден header, trailer, основная часть прошивки в формате FIT, из FIT извлечены initramfs, ядро и два бинарника nos и nos_console
Промпт 2: Проверь еще раз все файлы, который ты извлёк, нет ли среди нет архивов или вложенных архивов и если найдешь, то распакуй. Затем, дизассемблируй все файлы, похожие на исполняемые
Комментарий к промпту 2: модель всё-таки не из топа, поэтому на всякий случай просим перепроверить всё ли распаковано
Результат 2: Все исполняемые файлы дизассемблированы (использовался r2)
Промпт 3: В папке extracted находится распакованная прошивка свитча. найди в ней скрытые возможности такие как доступ к linux shell и другим скрытым возможностям свитча
Результат 3: Пара невалидных идей, а именно поправить /etc/inittab и /etc/profile (хотя доступа к ним нет из родного CLI), бэкдор через консольный кабель (RS232), а также найдена скрытая команда ‘show hidden’, которая показывает список скрытых команд. Среди списка скрытых команд была найдена ‘superdiag’, внутри которой есть команды ‘tshell’ и ‘bcmsh0’, а это выполнение команд через Linux Shell и Broadcom Shell:
switch#superdiagswitch(sdiag)#tshell uname -s -mLinux armv7lswitch(sdiag)#bcmsh0 show unitUnit 0 chip BCM56151_A0 (current)the func return 0x0
Относительно бэкдора, был найден symbol backdoor_key и по нему было найдено, что если подключиться через serial console и использовать комбинации Ctrl+C → Ctrl+] → Ctrl+] или Ctrl+C → Ctrl+] → Ctrl+] → Пробел, то будет осуществлен доступ к Linux shell / BCM Shell соответственно. К сожалению, у меня нет под рукой такого свитча и проверить этот бэкдор возможности не имею, но вполне возможно что он действительно существует, надеюсь, кто-нибудь проверит и отпишется в комментариях.
Напоследок можно сказать, что не смотря на то, что здесь нет вау-эффекта как например поиск новой уязвимости в redis через Kimi K3, подобный почти бесплатный реверс-инжиринг может быть вполне актуален, особенно когда устройство EoS/EoL/ТП недоступна, получение дополнительных инструментов диагностики не помешает. В данном примере было потрачено примерно 20 минут времени (в основном, на дизассемблирование) и около 10$ за многократные вызовы LLM в агентском режиме.
P.S. В действительности, со свитчами DCN нет проблем с тех.поддержкой, если вы покупаете их через нормальных поставщиков и изначально эти промпты были применены к другому устройству, где это реально потребовалось, но поскольку прошивок к нему нет в публичном доступе, то читатель не смог бы повторить описанное самостоятельно.
ссылка на оригинал статьи https://habr.com/ru/articles/1063724/