BadUSB

BadUSB — класс хакерских атак, основанных на уязвимости устройств USB. Из-за отсутствия защиты от перепрошивки в ряде устройств USB злоумышленник может изменить или полностью заменить исходную прошивку и заставить устройство имитировать любое другое устройство. BadUSB используется для доставки и выполнения вредоносного кода[1].

Описание

USB-устройства содержат микроконтроллер, который отвечает за взаимодействие с хостом по интерфейсу USB. При инициализации микроконтроллер сообщает хосту, помимо прочей служебной информации, классы, к которым принадлежит устройство. Хост загружает соответствующий драйвер и взаимодействует с устройством на основе информации о классе. Одно физическое устройство может реализовывать сразу несколько классов и для хоста представляться как несколько отдельных устройств: например, веб-камеры поддерживают одновременно класс видеоустройств и класс аудиоустройств[2].

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

Каждый контроллер индивидуален, и для каждого требуется разрабатывать отдельную вредоносную прошивку или патч. Универсального программного обеспечения, которое бы подходило для любого микроконтроллера, написать невозможно. Процесс перепрошивки также различается в зависимости от конкретной модели контроллера. Это заметно снижает вероятность массового распространения BadUSB, однако не защищает от целенаправленных атак[3].

История

Термин BadUSB был введён в августе 2014 года на конференции BlackHat USA 2014 исследователями из Security Research Labs Карстеном Нолом и Джейкобом Леллом, которые выступили с докладом «BadUSB — On Accessories that Turn Evil». Они провели реверс-инжиниринг USB-контроллера Phison 2251-03 (2303) и разработали микропрограммы для ряда атак. Перепрошивка контроллера осуществлялась с помощью приложения DriveCom. Были продемонстрированы атаки с имитацией клавиатуры, сетевой карты, взломом защиты флеш-накопителей и сокрытием раздела накопителя. Рассматривались также способы защиты от атак BadUSB[1][3].

5 августа 2014 года был опубликован эксплойт BadAndroid, превращающий смартфон на базе Android в сниффер сетевого трафика[4].

26 сентября 2014 года был опубликован исходный код микропрограммы и патчей для контроллера Phison 2251-03, включающих атаку с подменой клавиатуры, взломом пароля накопителя и сокрытием раздела[5].

Область уязвимости

Уязвимости подвержены любые устройства с незащищёнными контроллерами USB: флеш-накопители, веб-камеры, мыши, клавиатуры, устройства на базе Android. BadUSB не требует специального программного обеспечения на компьютере-жертве и функционирует под управлением любых операционных систем, поддерживающих устройства USB-HID[3][6].

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

Некоторые виды атак

Имитация клавиатуры

Устройство распознаётся компьютером-жертвой как клавиатура и по истечении заданного времени отправляет последовательность нажатий клавиш. Таким образом, злоумышленник может выполнить любые действия, доступные авторизованному пользователю, исключительно через клавиатуру. Например, можно скачать из интернета и запустить вредоносное программное обеспечение[3].

Существенным недостатком данного метода является отсутствие доступа к информации на экране — а значит, отсутствует обратная связь на действия заражённого устройства. Например, злоумышленник не может узнать текущую раскладку клавиатуры или убедиться, что вход в систему выполнен[3].

Имитация сетевой карты

Устройство распознаётся компьютером-жертвой как сетевой адаптер и может, таким образом, перехватывать либо перенаправлять сетевой трафик. В том числе оно может отвечать на DHCP-запросы адресом DNS-сервера злоумышленника, не предоставляя шлюз по умолчанию; в этом случае трафик жертвы будет резолвиться через DNS-сервер злоумышленника, но сам выход в интернет так и останется через другой, реальный интерфейс[3].

Boot Injection

Устройство, обладающее достаточным объёмом памяти для хранения вредоносного кода (например, флеш-накопитель), может определить момент включения компьютера и в период инициализации BIOS загрузить вредоносное ПО для последующего заражения системы. Это становится возможным, поскольку характер обмена между хостом и контроллером USB позволяет определить тип хостовой ОС — например, Windows, Linux, macOS, а также BIOS[7].

Выход из виртуального окружения

Атака использует возможность повторной инициализации устройства[2]. При выполнении во виртуальной машине вредоносный код заражает любое подключённое USB-устройство; затем микропрограмма осуществляет переинициализацию и видится системе как два независимых устройства — одно новое, другое из уже подключённых к виртуальной машине. Новое устройство будет автоматически подцеплено основной хостовой ОС, а старое останется в виртуальной машине, что позволяет вывести заражение за пределы виртуального окружения — от гостевой к хостовой ОС[7].

Противодействие

В докладе «BadUSB — On Accessories that Turn Evil» был предложен ряд защитных мер против BadUSB, однако, по оценке исследователей, полноценная реализация подобных решений займёт длительное время[3][7].

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

Марк Шаттлворт, основатель Canonical Ltd., также высказался по вопросу безопасности USB и предложил в качестве решения проблему полностью открыть исходные коды устройств и их прошивок[8].

Несмотря на то, что ряд комплексных антивирусных решений — таких как ESET Endpoint Antivirus, Kaspersky Endpoint Security, компонент «Родительский контроль» в Dr.Web AV-Desk — позволяют ограничивать доступ к сменным носителям и разрешать их подключение только по «белому списку», в случае с BadUSB этих мер недостаточно. Сам пользователь может разрешить подключение вредоносного устройства, ошибочно сочтя его безопасным. По мнению корреспондента «Компьютерры» Андрея Василькова, разработчикам антивирусного ПО в будущем потребуется внедрять отдельные модули для гибкого и дополнительного контроля подключаемых по USB устройств[9].

Поддержка защиты от атак BadUSB появилась в Kaspersky Endpoint Security 10 с обновлением от 7 декабря 2015 года[10].

Решения Dr.Web с 11-й версии защищают от BadUSB для устройств, имитирующих клавиатуру[11].

Примечания

Ссылки

  • BadUSB Sources (англ.). — Опубликованный исходный код некоторых уязвимостей, продемонстрированных в докладе «BadUSB — On Accessories that Turn Evil». Дата обращения: 23 июня 2024.