Bad USB — как новая атака реализована в разных устройствах

История превращения накопителей с интерфейсом USB в хакерский инструмент получила продолжение. Обратная разработка прошивки популярного контроллера переводит методику на новый уровень доступности. Теперь атаку под названием Bad USB может провести любой желающий, не обладая при этом достаточными познаниями для самостоятельного написания микрокода.

Все операции с памятью на USB-Flash обрабатываются контроллером, управляющий микрокод которого хранится в служебной области адресного пространства. У пользователя нет доступа к ней штатными средствами, а некоторые модели и вовсе требуют использования аппаратного программатора. Сегодня для упрощения процедуры записи и обновления прошивки многие производители выполняют эту операцию непосредственно через интерфейс USB. Обычная прошивка – это закрытый (проприетарный) код, поэтому считается, что изменить его может только сам разработчик.

На проходившей в штате Кентукки ежегодной конференции DerbyCon Адам Коудил (Adam Caudill) и Брэндон Уилсон (Brandon Wilson) в совместном докладе рассказали об успешной обратной разработке прошивки для контроллера Phison 2303 (2251-03) и показали практические варианты реализации атаки Bad USB.

Универсальный контроллер Phison 2251-03 (фото: Adam Caudill and Brandon Wilson).
Универсальный контроллер Phison 2251-03 (фото: Adam Caudill and Brandon Wilson).

Такой двухканальный контроллер USB 3.0 со встроенным восьмиразрядным микропроцессором архитектуры Intel 8051 встречается во многих съёмных носителях. Для демонстрации авторами был выбран сменный носитель Patriot Supersonic Xpress ёмкостью 8 ГБ.

Изначально Phison 2303 поддерживает создание нескольких дисковых разделов. Он может ограничивать доступ к одному из них паролем, скрывая присутствие других логических дисков. Последнее обстоятельство используется в некоторых вариантах атаки Bad USB. Во-первых, на скрытом разделе удобно хранить «боевую нагрузку». Во-вторых, так можно подсунуть «сейф без задней стенки»: пользователь будет продолжать считать скрытый раздел своего USB-Flash носителя защищённым, в то время как контроллер с изменённой прошивкой откроет его при вводе любого пароля.

Также Phison 2303 позволяет изменять идентификаторы производителя, продукта и серийный номер, что удобно для имитации других устройств. Однако этот контроллер был выбран прежде всего потому, что его прошивку можно обновлять непосредственно по USB и безо всякой проверки подлинности. Соответственно, её можно заменить не просто на новую официальную версию, а записать вместо неё свою, содержащую любые изменения и дополнительный функционал.

Перевод USB-Flash в служебный режим замыканием контактов (фото: wired.com).
Перевод USB-Flash в служебный режим замыканием контактов (фото: wired.com).

Обратная разработка и модификация подразумевает получение копии исходной прошивки. Для этого USB-Flash накопитель надо перевести в служебный режим с помощью инженерной утилиты, или просто закоротив определённые контакты в момент подключения.

Оригинальная прошивка занимает не весь отведённый для неё объём, поэтому увеличение размера микрокода после добавления новых функций не стало проблемой.

По результатам реверс-инжиниринга была создана альтернативная прошивка с открытым исходным кодом. Её можно записать на любой USB-Flash носитель с соответствующим контроллером, превратив его в хакерский инструмент.

При подключении к компьютеру такая флэшка (от flash, а не flesh) с модифицированной прошивкой может опознаваться как другое устройство и скрыто выполнять функции, предусмотренные атакующей стороной. В приводимой на DerbyCon презентации флэшка опознаётся как клавиатура и отправляет команды от имени вошедшего в систему пользователя. В большинстве случаев им окажется администратор, а если и нет – существуют способы повышения привилегий, основанные на различных эксплоитах.

В примере флэшка запускает «Блокнот» и пишет в нём текст с ASCII графикой, но это могут быть совершенно любые действия. Как вариант – загрузка трояна через Wget или скрытая отправка приватных данных.

Автоматическое создание текстового документа с ASCII-графикой с помощью BadUSB (изображение: DerbyCon 4.0).
Автоматическое создание текстового документа с ASCII-графикой с помощью BadUSB (изображение: DerbyCon 4.0).

Вероятность успеха такой сложной тактики в неизвестном системном окружении считается низкой, однако она ненулевая. Действительно, для слепой атаки этот метод подходит мало: трудно предугадать конфигурацию компьютера, к которому подключат хакнутую флэшку, и перечень незакрытых на нём уязвимостей. Скорее, метод упрощает проведение целенаправленной атаки на компьютер конкретного пользователя, чьи данные требуется получить или от чьего имени совершить какую-то операцию.

Сходным образом реализована атака Bad USB группой Offensive Security в специализированном дистрибутиве Kali Linux NetHunter. Это дальнейшее развитие проекта BackTrack, предназначенного для выполнения тестов на проникновение с использованием мобильных устройств. Его можно установить на современные смартфоны и планшеты серии Nexus. Поддерживаются Asus Nexus 7 (версии 2012 и 2013 года), Samsung Nexus 10 и LG Nexus 5. Любой из этих гаджетов NetHunter превращает в мощный инструмент для выполнения аудита безопасности.

NetHunter - реализация Bad USB на гаджетах серии Nexus (изображение: kali.org).
NetHunter — реализация Bad USB на гаджетах серии Nexus (изображение: kali.org).

В режиме Bad USB на Nexus с NetHunter выполняется вариант атаки посредника (MITM). Смартфон или планшет подключается к компьютеру по USB под предлогом зарядки или копирования файлов. Далее гаджет подменяет сетевую карту, выполняя перенаправление трафика.

Фрагмент файла kali_linux_nethunter_nexus7_2012.zipsystemxbinstart-badusb
Фрагмент файла kali_linux_nethunter_nexus7_2012.zipsystemxbinstart-badusb

Появление подробных инструкций и готовых программных инструментов для реализации Bad USB с использованием различных серийно выпускаемых устройств свидетельствует о широком интересе к данному виду атаки. Не надо быть аналитиком, чтобы спрогнозировать резкое повышение частоты её применения в ближайшее время.

В ОС Windows можно вручную ограничить подключение по USB, разрешив его только для определённых устройств. Для этого необходимо изменить http://www.sql.ru/forum/847468/podkluchenie-konkretnogo-usb-ustroystva права доступа к соответствующим ключам реестра в разделе [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumUSBSTOR].

Вероятно, разработчики антивирусных решений скоро добавят отдельные модули для более гибкого дополнительного контроля над подключаемыми по USB устройствами. Ограничивать доступ к сменным носителям и разрешать активацию согласно «белому списку» уже сейчас умеют ESET Endpoint Antivirus, Kaspersky Endpoint Security, компонент «Родительский контроль» у Dr.Web AV-Desk и другие современные средства комплексной защиты. Другое дело, что в случае Bad USB таких мер может оказаться недостаточно. Скорее всего, пользователь сам разрешит подключение опасного устройства, опрометчиво считая его неспособным навредить.

Реализация Bad USB с использованием серийно выпускаемых устройств (коллаж А.В.).
Реализация Bad USB с использованием серийно выпускаемых устройств (коллаж А.В.).

Особо подчеркну, что Bad USB – это не какая-то недавно открытая проблема на уровне самого интерфейса. Речь идёт лишь о том, что благодаря работе нескольких гиков пользователю без соответствующей квалификации стало значительно проще вмешаться в работу контроллеров некоторых устройств, допускающих обновление прошивки без использования специализированной техники.

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

В самой возможности сделать это мне трудно усмотреть что-то негативное. Часть пользователей получит более глубокие представления о работе современных устройств и ещё один стимул быть осторожнее. Просто теперь флэшку нельзя считать безопасной, даже если её дисковый раздел совершенно чист.

Что будем искать? Например,ChatGPT

Мы в социальных сетях