Обратная разработка аппаратного обеспечения бывает очень сложна — но иногда для неё может потребоваться только уютное кресло и Google Translate.
Просматривая заголовки, связанные с информационной безопасностью, следует исходить из того, что сообщения о распространённом саботаже, нарушающем цепи поставок обычно ложные. Нет, я не утверждаю, что атака такого рода не может произойти; просто подобные фокусы сложны, времязатратны и рискованны. К такому прибегаешь, только если других вариантов не осталось. Как правило, гораздо проще выкрасть учётные данные или заставить кого-нибудь скачать вредоносный файл.
Недавно юный предприниматель взбаламутил соцсети, заявив, что приобретённый им в Китае девайс для подключения Ethernet-to-USB сразу был начинён вредоносом, который «ускользал от виртуальных машин», «считывал клавиатурный ввод» и «использовал характерные русскоязычные элементы».
Эти откровения собрали миллионы просмотров, но детали проблемы выглядели весьма туманно. Автор поста продемонстрировал неоднозначный отчёт о сканировании из антивируса, сделанный в Crowdstrike Falcon, но пример казался насквозь фальшивым: бинарник представлял собой самоизвлекаемый EXE-файл, созданный при помощи 7-Zip. Это широко известный свободно распространяемый архиватор, разработанный Игорем Павловым. Те самые «характерные русскоязычные элементы» отсылали к национальности автора, все остальные детали в основном выглядели типично для самоизвлекаемых архивов, устанавливающих драйверы. Наконец, складывалось впечатление, что содержимое архива соответствует подписанному общедоступному драйверу 2.0.7.0 для чипа RJ45-to-USB, изготавливаемого шэньчженьской компанией CoreChips. В сопутствующем .inf-файле она также называется Corechip Semiconductor.
Признаки вредоноса |
Противодействие обнаружению/неуловимость |
Создаёт процесс в режиме останова (вероятно, для инъекции процесса) |
Осведомлённость о среде выполнения |
Читает ключ реестра, специфичный для виртуальной машины |
Читает реестр для VMWare-специфичных артефактов |
Входная выборка содержит известный фокус для обхода VM |
Установка/долговременное сохранение |
Сбрасывает системный драйвер |
Записывает данные в удалённый процесс |
Да, предполагается, что примерно так и должен действовать подобный вирус.
В справке по драйверу идёт отсылка к чипу под названием SR9900; практически отсутствует информация как по этому чипу, так и по его изготовителю. Но я немного покопался в данных и полагаю, что это точный клон Realtek RTL8152B. В англоязычном брифе по продукту подразумевается, что «SR» означает “Supereal”. Это название фигурирует в контексте контрафактных чипов FTDI FT232RL, которые недавно были настоящим проклятьем для всей отрасли.
Родословная этого чипа важна не только из-за потенциального одурачивания через имитацию IP, но и потому, что исходная архитектура Realtek достаточно древняя; спецификация датируется 2013 годом. Устройство поддерживает 100BASE-TX и USB 2.0, то есть, здесь нам слышатся отголоски эры Windows 7. Это было время неудобств: тогда CD-дисководы уже выходили из моды, но невозможно было рассчитывать, что любой компьютер постоянно будет онлайн. Поэтому на некоторых устройствах, позиционируемых как внешние накопители, было целесообразно держать их собственные драйверы. С точки зрения безопасности, это было ничуть не лучше или не хуже, чем любой другой импровизированный способ доставки файла.
Иными словами, с учётом исторического контекста, хранение драйвера на устройстве или сам этот драйвер не воспринимались как нечто изрядно странное.
Тем не менее, автор темы подразумевал, что на этом история не оканчивается. В топике рассылались снимки устройства в разобранном виде, при этом указывали на скудно заполненную макетную плату с последовательной интегральной схемой типа 25x40, подключённой рядом с вышеупомянутым SR9900:
Почему этому устройству требовалось 512 кБ флэш-памяти? Она была выделена для прошивки, или именно там злоумышленники хранили украденные пакеты?... За спрос не бьют! Вредоносное аппаратное обеспечение действительно существует. Им пользуются как разведслужбы, так и частные пентестеры. Хм, даже я сам лет десять с лишним назад соорудил для работы вредоносную плазменную лампу. Однако мы здесь собрались не чтобы подискутировать, возможно ли собрать вредоносный адаптер RJ45-to-USB. Нас интересовало, прав ли автор поста, что в данном конкретном случае «опять торчат китайские уши».
К сожалению, что в SR9900, что в RTL8152B одинаково зыбко описано, зачем именно нужна сопутствующая интегральная схема с флэш-памятью. Я выкопал следующий архитектурный обзор, но и в нём ничего особенного не сообщается:
Поиск нужных схем по картинкам также ни к чему не привёл. Я нашёл несколько вариантов конструкции, в которых фигурировал оригинальный чип Realtek, но к последовательным пинам ничего не было подключено:
Я уже был отправиться на тёмную сторону (amazon.com) и просто приобрести такую флешку с одной лишь целью — дампировать содержимое чипа памяти. Работать с шиной последовательного периферийного интерфейса (SPI) не составляет труда. В сущности, вы сообщаете тактовый сигнал с такой частотой, с какой вам удобно. Можно даже пальцем на кнопку нажимать. На переднем фронте каждого такта периферия считывает один бит с линии «serial in», и в то же время хост отправляет один бит обратно через «serial out». Ни тебе рукопожатий, ни заголовков, ни разрядов чётности, ни потока управления.
«Прикладной» протокол флэш-чипа столь же прост и обычен практически для любых последовательных интегральных схем памяти. Чтобы заставить его работать, хост отправляет инструкцию READ размером 1 байт (0x03), за которой следуют три адресных байта. Чип начинает отправлять данные сразу же после того, как получит четырёхбайтную последовательность, и поток бит продолжает идти до тех пор, пока с хоста поступает тактовый сигнал:
Но затем, когда товар очутился у меня в корзине, на меня снизошло озарение. Я отправился на сайт CoreChips и через Google Translate попытался найти оригинальный китайский текст, который переводился бы на английский как “SR9900 series chip Windows system mass production tool” (Инструмент массового производства систем Windows с чипом серии SR9900). Я поискал подходящую строку и вышел на несколько старых китаеязычных форумных тредов. Один из них вывел меня на скачивание файла, защищённого паролем и пэйуоллом. Этот архив назывался «SR9900(A)设计资料1018.rar». Раскошелившись ещё на $2.99, я стал счастливым обладателем архива, в котором находился очень винтажный на вид производственный инструмент SR9900:
Вместе с ним предоставлялся 168-килобайтный образ файловой системы 9660 (!), в котором был и самоизвлекаемый драйвер для Windows. Инструмент программирования досимвольно копирует файл .iso во флэш-память SPI. Ага: чип, в сущности, играет роль «программно-определяемого» CD-ROM, служит импровизированной заменой для физического носителя, который вам пришлось бы использовать с такой аппаратурой ранее. Образ диска можете скачать здесь; пароль к файлу — “rj45”.
В качестве лирического отступления: образ CD-ROM был создан при помощи «ULTRAISO V9.3 CD & DVD CREATOR, (C) EZB SYSTEMS» — ещё одного откровенно винтажного инструмента, дошедшего до нас из времён Windows XP:
Если хотите его попробовать, учтите, что для работы этого инструмента требуется процессор Intel Pentium с частотой 166 МГц или выше.
В подтверждение того, что я не ошибся с находкой, в архиве также лежал документ под названием “SR9900(A)设计前必看.docx”. В нём содержался пассаж следующего содержания:
«При использовании SR9900 в качестве сетевой USB‑карты (качество на уровне потребительского рынка периферии) SPI может послужить в качестве виртуального оптического диска при установке системного драйвера для Windows (SPI‑энергонезависимая память с заранее записанным драйвером SR9900 для работы под Windows)»
Также подчёркивалось, что использовать чип с флэш-памятью необязательно.
Вот к чему мы пришли: предсказуемый и немного унылый вывод, что странное ещё не значит плохое. Мы проделали эту работу, вполне обойдясь без аппаратной лаборатории; хватило всего лишь запастись терпением и изобретательно погуглить.
Честно говоря, осталась ещё одна невскрытая карта: в самой интегральной схеме SR9900 содержится два маленьких микроконтроллерных ядра — USB и Ethernet — и на каждом из них выполняется свой внутренний код. Если нам кажется, что производитель чипа в чём-то темнит, то почему бы не заглянуть в них. В Realtek предоставляется свободно распространяемый драйвер Linux для RTL8152, способный немного пропатчить память прошивки. Лично мне не кажется, что там имеет место какое-либо шифрование или цифровое подписывание.
Стоит ли беспокоиться, что кто-нибудь пришлёт нам из дальних стран вредоносную флешку? Если вы — учёный, занятый в иранской ядерной программе, то, пожалуй, стоит! Если вы состоите в совете директоров критически важной гражданской компании, то, пожалуй, некоторая осторожность также не повредит. Возможно, кто-то занимается промышленным шпионажем и заносит в Excel-табличку список всех ваших поставщиков — так, на всякий случай.
Но если я всего лишь администрирую домашнюю сеть, то, думаю, ничего страшного не случится.
Комментарии (10)
snuk182
20.01.2025 19:36Вроде как это стандартная схема работы с 3G-модемами, еще с двухтысячных -- тело определяется системой как сам модем, виртуальный дисковод с дровами и софтом, картой памяти (если под таковую есть гнездо).
NutsUnderline
20.01.2025 19:36у меня эмуляция оптического привода в RTL8152B работала не как надо на старых виндах (7, XP)- при загрузке всегда появлялся этот диск а сетевуха не работала. win10 и linux сразу активируют режим сетевухи, я этот адаптер использую с одноплатниками
me21
20.01.2025 19:36В моём usb-модеме переключение режимов диск/сетевуха осуществлялось либо утилитой, которая шла вместе с ним, либо можно было в реестре ключик поправить, тогда утилиту ставить не надо было, сразу сетевуха появлялась. Это на вин10, может быть, на более старых версиях для вашего модема тоже какой-то малоизвестный способ есть?..
Frankenstine
20.01.2025 19:36при загрузке всегда появлялся этот диск а сетевуха не работала
ЕМНИП достаточно сделать "Извлечь" для этого диска и сетевушка заработает.
NutsUnderline
20.01.2025 19:36это да ( я правда помниться перетыкал) но мне то как раз надо было чтобы после перезагрузки работало сразу
Frankenstine
20.01.2025 19:36В линуксах это относительно просто делается umount скриптом, как только устройство появляется, через udev rules. Но проблема у вас была на старых виндах (7, XP), так что там пришлось бы, кхм, помучаться.
lonelymyp
20.01.2025 19:36В времена виндовс XP примерно, у меня была штука конструктивно состоящая видимо из двух таких адаптеров =) сделана была в виде кабеля с двумя усб разъёмами.
Втыкалась в усб двух соседних компьютеров, на каждом из них появлялся виртуальный сидирум с драйвером, после установки драйвера, по этому кабелю можно было пересылать файлы с одного ПК на другой. За давностью лет точно не помню как именно оно работало, но оно работало, скорость была не фонтан даже по тем меркам.
nerudo
Сотрудники АНБ резко возмущены, что кто-то кроме них распространяет по миру закладки.
Если даже в конкретно этом экземпляре все чисто, завтра на смену на китайской фабрике придет другой работник и подложит свой софт. Аргумент про неуловиго Джо не работает в мире массовых ботнетов (10 старушек - рубль!)
LavaLava
Но мир массовых ботнетов перешёл на iot, кожаные мешки, которые даже флешку умудряются вставить с третьего раза, больше не нужны.
https://habr.com/ru/companies/ddosguard/articles/875062/