Обратная разработка аппаратного обеспечения бывает очень сложна — но иногда для неё может потребоваться только уютное кресло и 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-табличку список всех ваших поставщиков — так, на всякий случай.
Но если я всего лишь администрирую домашнюю сеть, то, думаю, ничего страшного не случится.