BadUSB — новый тип уязвимости USB-устройств
Моя вольная компиляция опубликованной на Wired статьи «Why the Security of USB Is Fundamentally Broken».
- изменение файлов;
- исполнение файлов;
- перехват интернет-траффика.
По словам исследоватетей, эту уязвимость настолько сложно устранить, что проще полностью отказаться от работы со стандартом USB. Nohl и Lell оказались едва ли не первыми, кто указал на способ хранения и распространение вредоносного кода данным способом. После нескольких месяцев работы бул получен код, позволяющий обмениваться данными между флэшкой и компьютером. Основной вывод работы состоит в том, что все существующие прошивки можно переписать, спрятав изменения.
«Вы можете отдать флэш-карту на анализ вашим IT-специалистам, и те, удалив некоторые файлы, скажут вам, что карта чиста. Однако, они даже не коснулись того, о чём говорим мы» — Nohl
Проблема не ограничивается флэш-накопителями. Все виды USB-устройств, от клавиатур до смартфонов имеют драйвера, которые могут быть подвержены той же атаке, что и флэш-карты. Nohl и Lell говорят, что проверили это на BadUSB-инфецированном Android-телефоне. В их опыте телефону удалось выдать себя за клавиатуру и начать вводить команды от её лица.
«Он мог сделать всё, что могла бы сделать клавиатура» — Nohl
BadUSB-инфецированные машины могут перехватить Интернет-траффик, изменить настройки DNS; если BadUSB-код находится на телефоне, то телефон может выступать в качестве MITM.
Большинство из нас привыкло не запускать левые исполняемые файлы, однако, этих мер недостаточно для остановки эпидемии BadUSB: ведь USB-устройства не имеют подписи кода, и проверить «оригинальность» прошивки проблематично.
Исследование Nohl и Lell показывает, что BadUSB-инфекция может путешествовать как с устройства на компьютер, так и обратно. Каждый раз, когда флэш-устройство подключено к компьютеру, его прошивка может быть перепрограммирована, и владельцу это будет непросто заметить.
Nohl соглашается, что быстро проблема не решится: она настолько обширная, что надо писать не патч, а полностью перерабатывать концепцию USB. Что надо не подключать устройств USB к компьютерам, которым не доверяете.
«В новом образе мышления вы не можете доверять флэш-носителю просто потому что знаете, что там вируса быть не должно. Доверие может быть только тогда, когда вы знаете, что USB этого устройства никогда не касался компьютера. Это несовместимо с тем, как мы используем устройства сейчас» — Nohl
- Ещё одна статья о сабже (англ)
- Её перевод на TJ (рус)
- Код, опублекованный исследователями
- usb
- badusb
- информационная безопасность
BadUSB — что это такое и с чем его едят

Халло, коллеги. Намедни уважаемый коллега опубликовал в сообществе заметку в которой защищает решение передачи данных через оптический носитель, дескать, USB это не только ценные устройства, но и потенциальная угроза информационной безопасности. Всё так, да не совсем так.
Начну, как водится, с объяснения о чём, собственно, сыр-бор. Дело в том, что USB это последовательная шина. Она исходно была рассчитана на то, что в один порт может быть натолкана целая прорва устройств. Я сегодня очень ленив, поэтому соответствующую картинку чёрно-белого содержания, пожалуйста, представьте себе сами. Такой подход в общем и целом правильный: никто кроме вас не знает, сколько вам потребуется подключить устройств, и вы этого тоже часто не знаете. Суть атаки BadUSB состоит в том, что устройство может оказаться не совсем тем, за что оно себя выдаёт. И действительно — иногда оказывается. Если вы ломали голову, мол, почему современные Android-телефоны требуют руками указать, что нам требуется подключение к компьютеру, а не просто зарядка, то ответ как раз BadUSB. Нехорошие личности повадились встраивать всякую гадость в публичные розетки и даже в кабеля. Атака прекрасно описана в википедии, и состоит в тривиальном факте — до недавних пор производители никак не защищали контроллеры USB от перепрошивки чем попало, включая устройства, которые к нему подключены. В результате к полезным для вас функциям устройство возможно добавить функции полезные кому-то другому. Поэтому, кстати, ваша любимая флешка тоже может превратиться в рассадник заразы.
Однако так ли всё страшно? Во-первых — нет. Контроллеров USB чёртова прорва. Их действительно очень много и КАЖДЫЙ требует индивидуального подхода для заражения вредоносным кодом. Так что панику — отставить, а валидол выбросить. Сейчас есть конфетки повкуснее. Во-вторых любому взаимодействующему с компьютером или смартфоном (иначе говоря с хостом) USB устройству требуется некоторая поддержка от хоста. Что толку представляться сетевым адаптером устройству, которое попросту знать не знает что такое сеть? Это в качестве примера. То есть по факту заражённое устройство может представиться чем угодно, что только бывает по USB. Если «постороннее» устройство в ходе нормальной деятельности составляет угрозу информационной безопасности, то подобная атака действительно представляет вектор угрозы. А посторонним устройством может оказаться абсолютно всё что угодно: виртуальный принтер, который перехватывает документы на печать и по встроенному в устройству мобильному модему шлёт данные врагу. Вроде бы всё правильно, да? Для защиты от вредоносных устройств вполне нормально требовать носитель данных неуязвимый для подобных атак, ведь так?
Нет и вот почему. Как я уже сказал выше — для того, чтобы подобные атаки имели хоть какой-то шанс на успех им требуется взаимодействие с операционной системой хоста. Более того, ущерб целиком и полностью ограничен правами пользователя, под которым подключено устройство. Не сиди под рутом! Сколько можно говорить? Если пользователь работает с критическими данными под административной учётной записью, то никакой информационной безопасности в конторе нет и, в принципе, от размещения прямо за спиной пользователя агентуры Mossad, NIO и Syrbar в этом плане сильно хуже не станет. Правда первые будут требовать прекратить трескать бутерброды с салом, вторые прикидывать можно ли вас самих съесть, а третьи возмущаться фильмом «Борат», но давайте это спишем на неизбежные последствия игнорирования правил, которые старше большинства из нас. А вот ограниченная учётная запись называется ограниченной не просто так. Например, можно запретить изменения в конфигурации устройства, что перекроет кислород к подключению чего бы то ни было вообще, а можно запретить устанавливать вполне конкретные классы устройств. То есть можно запретить устанавливать к чёртовой бабушке всё, что не USB Mass Storage. Это требует некоторой компетенции, но вполне выполнимо. Вкупе с грамотным планированием сети (мы же не будем кого попало пускать во внутреннюю сеть организации, правда? Мы же не дураки какие-то чтобы так делать) эти две меры перекрывают этот вектор риска почти целиком.
В комментариях к заметке, которая вызвала к жизни данный пост, уважаемый автор говорит, что, дескать, так как заражённое устройство представляется оборудованием совершенно стандартным, то воспрепятствовать его установке никак нельзя. Он, естественно, заблуждается, если у вас нет прав на установку новых устройств, то системе абсолютно безразлично есть драйвер или нет. Это, знаете, как с автомобилем. Вы можете проникнуть в гараж, в сам автомобиль, но всё равно никуда не уехать, т.к. из автомобиля слили всё топливо и сняли аккумулятор. Я предлагаю всем желающим провести эксперимент: запретить какое-либо устройство на своей машине и удалить его. Драйвер, смею вас заверить в системе останется, однако до того как вы разрешите устройство обратно хоть обпереподключайтесь — оно не заработает.
Всё та же википедия нам любезно сообщает несколько векторов атаки. Имитация клавиатуры и сетевой карты? Мы перекрыли это, они не установятся и работать не будут. Выход из виртуального окружения? Гм, простите, а вы уверены, что надо подключать что попало к гипервизору? Я уверен, что НЕ надо и любой человек, ответственный за информационную безопасность скажет ровно то же самое. Это тоже мимо, с неизвестно чем при наличии реальной тайны, хоть коммерческой, хоть государственной, мы работаем на отдельных выделенных специально физических машинах. Ах да, загрузка с вредоносной флешки. Мне, право, несколько неловко, но я об этом уже писал. Даже дважды. Secure Boot. Рабочий компьютер, который грузится с бог знает чего? Перечитайте первую половину предыдущего абзаца.
В принципе, нормальные потребительские материнские платы уже умеют даже защищаться от флешек — убийц, просто обрубая питание при превышении тока или напряжения. Однако, защитится от подобных устройств ещё проще — продаются готовые «кондомы», причём чуть ли не на развес. Проверить их работоспособность можно собрав киллера собственноручно, это уровень студента политеха курса эдак второго. Он же сможет, кстати, спаять и сам «кондом». Что мешает фасовать готовые аппаратные комплексы для защищённых станций, если позарез необходима работа именно с чужими устройствами? Я не знаю, стоимость сборки из готовых компонентов да сами готовые компоненты для любой конторы национального масштаба это семечки. Стоимость E-mail рассылки по филиалам с инструкциями как всё оборудовать на месте может себе позволить даже Силенд.
Это, кстати, не единственное решение. Можно изготовить микроконтроллер, который будет модерировать проходящие через него данные USB. Это только в качестве примера. Можно использовать компьютеры с экзотической архитектурой или экзотическими ОС, что для нас одно и то же. По сути это всё то же препятствование запуску вредоносного виртуального устройства. Вариантов решения вопроса чёртово множество, одно из которых — освойте уже системы электронного документооборота и контроль целостности, наконец, и прекратите этот флоппинет в 21-то веке. И не защищайте тех, кто настаивает на решениях времён ардипитеков. Тем более, что CD в своё время тоже доставили пользователям немного радости.
P.S. Вы, конечно, можете меня спросить, мол, @ahovdryk, а как же домашний пользователь? А никак, он в заднице. Особенно если сидит под рутом и суёт в свой компьютер что попало.
BadUSB, первые подробности и возможные контрмеры

На конференции BlackHat, которая проходила в Лас Вегасе 2-7 августа, сотрудниками компании SRlabs был представлен доклад под названием “BadUSB“, который был посвящен уязвимости USB контроллеров. Поскольку информация о докладе уже проходила по Интернет СМИ, я не буду пересказывать все, сосредоточусь на основном: сонм USB устройств (планшеты, смартфоны, флешки, камеры, гарнитуры, принтеры и т.д.), к которому мы так привыкли в повседневной жизни может стать новым вектором кибер-угроз. Проблема заключается в том, что атакующие могут инфицировать не только файловую систему (к чему мы уже привыкли и более-менее научились защищаться), но также возможна модификация прошивки (firmware) USB устройств. Взгляните на слайд ниже:

USB устройство с модифицированной прошивкой опасно т.к. эксплойт запускается в процессе инициализации устройства, а существующие антивирусные решения пока не могут сканировать служебную область памяти (firmware). Кроме того, скомпрометированная система может распространять вирус на остальные устройств, которые пользователь будет подключать к системе. Получаем неконтролируемый рос зараженных аппаратных устройств, которые пока нечем проверять.
BadUSB серьезно расширяет возможности атакующего, взгляните на перечень возможных сценариев:

А теперь о главном – о контрмерах.
Как только информация о BadUSB была опубликована в Интернете, некоторые игроки рынка DLP поспешили заявить о том, что их продукта будет достаточно для защиты от подобных угроз. Фактически заказчикам предлагалось ввести ограничение на использование устройств из “белого списка”. Мера правильная, но недостаточная (смотрите слайд выше). Почему? Потому, что “белые/черные списки” не защитят систему в случае если сотрудник подключит уже инфицированную разрешенную флешку. Этого будет достаточно для того, чтобы инфицированная система стала “нулевым пациентом”. К тому времени когда департамент ИБ обнаружит угрозу все USB устройства из “белого списка” будут инфицированы. Исследователи в своем докладе отмечают, что ограничение на использование определенных устройств само по себе не может быть достаточной мерой, хотя бы потому, что полностью исключить USB заказчик не сможет, а оставшиеся устройства рано или поздно могут быть инфицированы.
Я исхожу из тех соображений, что запущенный эксплойт уже скомпрометировал систему (либо модифицировал BIOS, либо внедрил руткит в системный процесс). Если это уже произошло – мы не имеем права полагаться на те защитные средства, которые запущены из-под ОС. Фактически, ни DLP, ни классический антивирус пока не могут дать гарантии, что злоумышленник не сможет украсть данные из целевой системы. Что нужно предпринять пока разработчики не реализовали эффективного метода проверки прошивок USB устройств?
Мои рекомендации:
(частично они будут опираться на содержимое доклада, частично – на мой опыт работы с решениями McAfee)
- отключить автоматическое обновление BIOS конечных точек, отключить загрузку с USB, защитить BIOS паролем;
- пользователи McAfee VSE могут использовать функционал Access Protection Policy* для усиления защиты ОС от перехвата системных процессов, паролей и т.д.;
- пользователи McAfee Device Control/DLPEndpoint могут использовать “черные/белые” списки USB устройств, однако этого не достаточно;
- там, где это возможно отключить авто обновление прошивки (МФУ, принтеры, сканеры);
- по возможности задействовать McAfee Deep Defender**, который позволит защитить ОС от выполнения эксплойта с BadUSB.
* Теперь пару слов почему я акцентирую внимание на разработках McAfee.
Во-первых , пока обычные (классические) антивирусы не научились сканировать firmware USB устройств, соответственно нет сигнатур, по которым можно было бы детектировать BadUSB и отличать обычные устройства от инфицированных. Функционал Access Protection Policy, о котором незаслуженно забывает большая часть пользователей, позволяет отсекать часть атак, направленных на механизмы ОС. К тому же, данные правила применяются для всех запущенных процессов/драйверов, не зависимо от сигнатур . Т.е. пока нет сигнатур эти настройки должны быть активированы, чтобы предотвратить изменение сетевых настроек (которое уже возможно, докладчики представили рабочий PoC), перехват системных процессов и т.д.
Во-вторых , пока разработчики популярных ОС не осознали критичности BadUSB и не внедрили возможность блэклистинга подключаемых устройств, нужно использовать McAfee Device Control, который позволит отсекать “чужие”/недоверенные устройства как по serial number, VIP/PID так и по классу. Исследователи отмечали в докладе одной из проблем блеклистинга то, что не все устройства имеют уникальный sn. Это правда. Частично эту проблему можно решить если отталкиваться не от sn, а от комбинации vendor IS/product ID либо от класса устройства, что позволяет делать McAfee Device Control / DLP Endpoint, см. слайд ниже:

В-третьих , только McAfee, благодаря алиансу с intel, располагает средствами анализа выполняемого кода, которые не зависят от ОС и работают параллельно. Я говорю о McAfee Deep Defender, который использует возможности процессоров Intel, а конкретно Intel-VT. Фактически, Deep Defender является развитием идеи руткита т.н. blue pill от Joanna Rutkowska , которую McAfee повернули против самих руктитов. Фактически, Deep Defender является гипервизором первого уровня, внутри которого функционирует ОС. За счет такой архитектуры все атаки, направленные на уязвимости ОС (zero-day) а также атаки на BIOS, MBR и .т.д. будут перехватываться и блокироваться Deep Defender`ом. А поскольку он сам запускается не из-под ОС, соответственно атаки, направленные на отключение/обход классических антивирусов ему не страшны, т.к. он не зависит от ОС, которая является целью атакующего.
Пока только McAfee может предоставить такой инструмент. Остальные игроки AV/ИБ рынка могут предложить только классический антивирус, надежность которого зависит от стойкости ОС, из-под которой он запущен. (а мы с вами знаем, что любая ОС, как комплексное ПО, всегда будет содержать в себе уязвимости)
Важно то, что Deep Defender может работать параллельно с классическим антивирусом.
Таким образом, для полноценной защиты, конечные точки предприятия должны быть закрыты следующим перечнем ПО:
- McAfee Deep Defender – защитит от эксплойтов BadUSB, упредит модификацию BIOS
- McAfee Device Control/DLP Endpoint – позволит ограничить использование USB устройств
- McAfee VSE – будет отсекать базовые атаки на механизмы ОС, не используя сигнатуры (которых пока на BadUSB ни у кого нет
Я бы еще добавил McAfee Drive Encryption, который позволит сразу “убить двух зайцев”:
- обеспечить защиту от НСД и pre-boot аутентификацию;
- защита системного раздела и раздела с данными от модификации/кражи в случае когда целевую систему систему загружают с live CD/USB.
Если на шифрование бюджета не хватает – можно обойтись отключением загрузки с внешних накопителей в BIOS и защитой настроек последнего паролем.
В случае использования DLP Endpoint, я также советую на усиление дать ему File & Removable Media Protection (выборочное шифрование файлов и каталогов), которое будет последним эшелоном обороны – даже если эксплойт BadUSB сможет скомпрометировать систему, связка DLP Endpoint + выборочное шифрование позволит шифровать критичные данные при сохранение их на USB, не зависимо от того, кто отдал команду на копирование – пользователь или эксплойт. Даже если данные и покинут систему, воспользоваться ими злоумышленник не сможет. Эту связку я особо рекомендую тем, кто не может воспользоваться DeepDefender. (в случае использования устаревших CPU или версий ОС)
Не смотря на серьезность угрозы и отсутствие специализированых мер на текущий момент, только McAfee может предоставить набор решений, которые уже могут защищать и предотвращать распространение BadUSB. Я лишь делюсь опытом и рассказываю о том, как можно использовать технологии McAfee. Решение принимать Вам.
Презентация доклада BadUSB (pdf файл, ~1.2 Mb)
Более детальная информация о McAfee Deep Defender
Будьте предельно осторожны и помните о BadUSB каждый раз, когда подключаете свое %device_name% к USB порту.
Очень плохая флешка. Разбираем атаку BadUSB в деталях

Об атаках BadUSB «Хакер» уже неоднократно писал. Сегодня мы разберем конкретный пример реализации такой атаки, подробно опишем устройство вредоносной флешки, приведем записанный на нее код и обсудим, как заставить пользователя Windows или Linux подключить ее к своему компьютеру.
BadUSB — это целое семейство атак на USB-порт, при которых подключаемое устройство выдает себя за другой девайс, например:
- HID-устройство (клавиатура или мышка);
- Ethernet — сетевая карта;
- Mass storage (съемный накопитель).
Наиболее интересны первые два варианта. В сегодняшней статье мы рассмотрим вариант с HID-устройством, а в следующей — с сетевой картой. Вариант с HID-устройством — это одна из немногих физических атак, требующих социального фактора, то есть успех зависит от действий пользователя. Однако я вижу еще одно применение, не требующее явного участия человека. Но обо всем по порядку.
info
Эта статья — часть серии публикаций о практических приемах взлома и атак с использованием подручных устройств, которые можно собрать дома. В этих материалах мы раскрываем простые способы получения несанкционированного доступа к защищенной информации и показываем, как ее оградить от подобных атак. Предыдущая статья серии: «Крококряк. Снимаем трафик с витой пары обычными „крокодилами“».
Теория
Итак, BadUSB-HID — это атака, при которой подключаемое к порту USB устройство запрограммировано, как клавиатура (реже — как мышь), но при этом таковой не является. И именно в обманчивости внешнего вида и кроется элемент социальной инженерии.
Самый популярный форм‑фактор такого устройства — флешка. Но, учитывая небольшие габариты самого девайса, оно может быть встроено куда угодно — будь то веб‑камера или даже USB-провод (O.MG Cable). Подходящую форму устройства задает контекст, поскольку выбор должен быть оптимальным в той или иной ситуации.
Миниатюрное устройство с контроллером клавиатуры сразу после подключения выполняет произвольные нажатия клавиш. Возможность заранее запрограммировать эти самые нажатия обычно используется для ввода той или иной команды ОС с помощью соответствующих горячих клавиш, например Win-R или Alt-F2.
BadUSB-HID — это атака:
- на разблокированные ПК — подбрасывание флешки и мгновенный RCE; атака требует приманки для пользователя, чтобы тот подключил устройство к ПК;
- заблокированные ПК — незаметное подключение флешки и отложенный RCE; атака требует незаметного размещения устройства и отсутствия контроля над атакуемой машиной в момент подключения.
В каждом случае мы имеем шанс получить RCE, а значит, игра явно стоит свеч. При этом сама атака обладает крайне высокой скоростью, так как нажатия производятся достаточно быстро. Вполне возможно, пользователь даже ничего не заметит.
Аппаратная часть
На мой взгляд, решающий фактор при реализации девайса BadUSB-HID — это его дешевизна и простота производства. Поскольку характер использования подразумевает подбрасывание таких флешек, для нас это становится расходным материалом.
Несколько простых и известных решений для эмуляции контроллера клавиатуры представлены в следующей таблице.

Зачем заказывать дорогие и привлекающие внимание решения вроде hak5 (с логотипом Rubber Ducky), когда все можно собрать самому и за меньшую стоимость? Если все сделать правильно, нам не будет жалко рассыпать где‑нибудь с десяток таких «флешек».
Вполне очевидным выбором станет плата семейства Arduino. Она недорога, и еще одно преимущество в том, что ее достаточно просто купить в специализированных магазинах электроники внутри страны, то есть в кратчайший срок.
Лично для меня куда большей проблемой оказалось раздобыть корпус. Но, возможно, если в твоем городе нет подходящих магазинов, будет проще приобрести самую дешевую флешку подходящих габаритов и извлечь ее содержимое, оставив только корпус. Либо же распечатать корпус на 3D-принтере.
Так как большая часть плат Arduino идет с micro-USB-интерфейсом, необходимо перепаять разъем под классический USB-штекер, поскольку во флешку с нестандартным интерфейсом пользователь вряд ли поверит. Сама плата при этом конструктивно может быть не приспособлена под пайку штекера USB-A, поэтому можно прикрепить его к корпусу флешки с помощью клея, а саму плату уже припаять парой жестких проводов. Тогда усилие при извлечении флешки пойдет на ее корпус, а не на саму плату.
Чтобы слегка уменьшить ширину платы, можно отпилить пару миллиметров с каждого края в области дополнительных контактов — они нам не понадобятся. В итоге мы сможем уместить нашу Arduino Pro Micro в классический корпус для флешки, как показано на следующем рисунке.

А вот так атакующая флешка выглядит в собранном виде.

Словом, желательно, чтобы у нашего устройства было минимум отличий от обычной флешки. К сожалению, самая мейнстримовая плата Arduino Pro Micro не определяется в Windows 7 и ниже без «дров», но сейчас «десятка» встречается уже куда чаще. Если необходима совместимость с Windows 7 и ниже, то следует приобрести более дорогую плату Teensy либо что‑то аналогичное. Вполне вероятно, что на момент прочтения этой статьи появятся более подходящие аппаратные решения.
Программная часть
Благодаря встроенному загрузчику Arduino поддерживает многократную перепрошивку, так что можно записывать в нее команды повторно под каждую конкретную ситуацию. По сути, мы будем заливать лишь пользовательский прикладной код.
Программы, или скетчи (в нотации Arduino), компилируются под AVR-процессор и прошиваются через USB посредством все той же программы Arduino:
apt install arduino
При работе с эмуляцией клавиатуры на Arduino мы применяем примерно следующий API: