Бирусы атакуют!

Бирусы атакуют!USB has become so commonplace that we rarely worry about its security implications. USB sticks undergo the occasional virus scan, but we consider USB to be otherwise perfectly safe - until now.

This talk introduces a new form of malware that operates from controller chips inside USB devices. USB sticks, as an example, can be reprogrammed to spoof various other device types in order to take control of a computer, exfiltrate data, or spy on the user.

We demonstrate a full system compromise from USB and a self-replicating USB virus not detectable with current defenses.

We then dive into the USB stack and assess where protection from USB malware can and should be anchored.

BADUSB - ON ACCESSORIES THAT TURN EVIL

ВложениеРазмер
birus.jpg11.98 КБ

Насколько я понял, описываемый тип вирусов содержит блок, предназначенный для выполнения не на CPU, а на внутреннем микроконтроллере USB-устройства? В устройство он может передаваться командой Download Microcode. Аналогичные вещи можно делать для SATA/IDE.

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

Аватар пользователя icbook

Непонятно, в какой момент должно инициализироваться зловредное ПО на стороне хоста? Ведь контроллер USB-устройства, будь он хоть трижды умным, мощным и автономным, должен следовать в русле выполнения хостового ПО. Ну, и Download Microcode по типу Cypress – это тоже вещь в себе. Тут Вы совершенно правы.
Больше похоже на страшилку, не правда ли? С определенной долей оговорок, касающихся задействованной "потусторонней" памяти в процессе хенд-шейка. В связи с этим и реанимирован термин "бирус".

Если вирус модифицирует firmware хост-контроллера USB, то результат может быть
значительно серъезнее: получится bus-master устройство, вышедшее из подчинения
центрального процессора и способное выполнять чтение и запись памяти по любым
адресам. Уместно вспомнить, что для некоторых дискретных контроллеров USB
(например Renesas), загружаемое при каждом старте Firmware может храниться


в составе BIOS. Сказанное отностится ко многим дискретным контроллерам, не
только к контроллерам USB. А вот ресурсы в составе южного моста чипсета менее
открыты для таких действий.

Что это даст вирусу? Два примера:

Защиту памяти, используемую в технологии виртуализации VT-x так обойти можно:
при VT-x супервизор мониторит настройку bus-master устройств гостевыми задачами
в расчете на то, что устройство будет обращаться только по запрограммированным
адресам (то есть полностью подчиняется хосту).

Защиту памяти, используемую в технологии виртуализации VT-d так обойти нельзя:
там каждое bus-master устройство снабжается своим модулем DMA remapping,
который контролирует финальный результат - адреса, формируемые устройством,
а не последовательность его инициализации. Ситуация "некорректный bus-master
адрес при корректной настройке устройства" здесь будет перехвачена.

Аватар пользователя savely

Цитата:
там каждое bus-master устройство снабжается своим модулем DMA remapping

О! Меня тут живо интересует вопрос - откуда берется "свой модуль DMA remapping" для некоего bus-master устройства, воткнутого в слот?
Насколько я въехал на данный момент - таблицы ремаппинга живут в АCPI. И существуют там для заведомо известных устройств (т.е. набортных).
А вот как с произвольными внешними девайсами - что-то я не вкурил пока...

А кому счас легко...

Модуль DMA remapping является частью компонента, в составе которого реализован
порт PCI Express, к которому подключено устройство. Порты PCI Express в современных
платформах реализованы средствами процессора и чипсета (Platform Controller Hub),
соответственно в CPU и PCH, если они поддерживают VT-d есть такие модули.


В ACPI есть таблица с сигнатурой "DMAR" которая декларирует наличие и
конфигурацию модулей DMA remapping. А также минимальные сведения, необходимые
для работы bus-master устройств до старта ОС. А вот таблицы трансляции адресов,
которые интерпретирует модуль DMA remapping при трансляции виртуальных адресов в
физические для всех устройств создает операционная система, поддерживающая
виртуализацию. Эти таблицы похожи на Paging Tables для процессора, знакомые
нам со времен Intel 386.
См. "Intel Virtualization Technology for directed I/O. Architecture Specification."

Аватар пользователя savely

Ясно - RTFM.:)) Сказать в вопросе больше - не могу. Ответ на "где мы находимся? - на воздушном шаре" получен. Вопросов больше не имею.

А кому счас легко...

Напротив, все очень просто. Устройство, установленное в слот обслуживает модуль DMA remapping,
входящий в состав чипсета или процессора, в зависимости от того, куда подключен рассматриваемый
слот: к порту обслуживаемому чипсетом или процессором.

При написании собственного VT-d монитора (или вируса), стартующего до или вместо ОС, чтобы организовать DMA-remapping для заданного устройства, делать нужно так:

1) Локализовать ACPI-таблицу DMAR (DMA Remapping Table).
2) Проверить поддерживается ли DMA remapping для PCIe порта, используемого устройством (по адресу устройства - Bus/Device/Function).
3) Извлечь из таблицы DMAR базовый адрес блока регистров управления блока Remapping Unit.
4) Подготовить в оперативной памяти таблицы трансляции, постранично описывающие виртуальное адресное пространство, создаваемое для bus-master устройства.
5) Настроить блок Remapping Unit, используя memory-mapped i/o регистры, локализованные на шаге 3. А именно - установить указатель на корневую таблицу трансляции, созданную на шаге 4 и включить трансляцию, установить бит TE(Translation Enable)=1.

Начиная с этого момента, выдача bus-master устройством адреса X будет приводить к появлению на шине памяти адреса F(X), где функция F(X) определяется содержимым страниц, созданных на шаге 4.

Сказанное справедливо как для On-Board устройства, так и устройства в слоте PCIe.

Аватар пользователя savely

Спасибо.

А кому счас легко...

Аватар пользователя icbook

> Если вирус модифицирует firmware хост-контроллера USB...

Тема беседы -- вирус на внешнем USB-носителе. Вырисовывается пошаговая схема: этот вирус сначала искажает работу USB хост-контроллера. Очевидно же, что это может происходить только со стороны системного хоста.

Модифицировать прошивку USB-устройства можно и без искажения прошивки
хост-контроллера, дав команду Download Microcode на обычном исправном контроллере.
Да, признаю, отклонился от темы (или развил ее), перейдя на хост-контроллеры,
так как искажение прошивки хост-контроллера значительно опаснее по причинам,
детально рассмотренным в обсуждении.
Но в любом случае, какую бы цепочку событий мы не рассматривали, все начинается с хоста,
то есть кода, выполняемого на CPU.
На "страшилку" может быть и похоже, но слишком много "страшилок" и в жизни и в технике
в последнее время стали реальностью.

Аватар пользователя icbook

Идея выполнения автономным контроллером USB-флешки злонамеренного ПО становится то ли страшилкой, то ли фактом в силу того, что некто Карстен Нол (deutscher Kryptospezialist) это демонстрирует чуть ли не прилюдно: macrumors.com/2014/07/31/usb-security-threat/

Там речь не только о флэшках, но и об устройствах ввода.
Да, я понял в чем ошибка: пока мы тут с умным видом рассуждаем про
VT-d и ACPI DMAR, инфицированная USB-клавиатура просто наберет
" FORMAT C: " в нужный момент...

Аватар пользователя icbook

Там в комментариях именно в таком несерьезном духе трёп и идет. Забавно, когда говорят "obsolete legacy ports like USB".
Лично мне понравился этот комментарий: Also, is this computer herpes?

UPD. «Палочка Нолла»:)

Аватар пользователя Baza

ну, возможность получить такой превед, это критично.

достаточно вспомнить где делается 99% клав, мышей и флэшек

Либо нечему гореть, либо нечем поджечь!

Простите, а кроме брифинга, полноценная статья-то есть? И как до нее добраться?

Magically yours
Raistlin

Аватар пользователя icbook

Отслеживайте по имена автора: Karsten Nohl

То есть ее еще нет на сайте? Потому что по имени автора находится ссылка на тот же брифинг.

Magically yours
Raistlin

Аватар пользователя Compiller

А где бы это клаву такую прикупить, или какую-нибудь готовую программируемую типа Logitech со встроенным дисплеем можно использовать?

Дрессируем коров :)

Аватар пользователя Compiller

Или надо что-нибудь типа kinesis-ergo.com/wp-content/uploads/2013/07/advantage-usb-manual.pdf такой?

Дрессируем коров :)

Аватар пользователя apple_rom
Аватар пользователя savely

Блин, явление Христа народу.:)
Если при втыкании девайса появилась клавиатура - спросим. А если твоя новая клавиатура и есть BadUSB?:)

А кому счас легко...

дык все отдается на откуп юзверю, если он свято верит, что новый девайс и есть клавиатура - проблемы как бы и нет lol
а что помешает BadUSB прикинуться "йа-йа-натюрлих-клава" и активизироваться плохишом впоследствии - неизвестно lol наверное, следующим этапом будет параноидальная проверка "верю-не верю" при каждом запуске системы?

Аватар пользователя savely

Ну, по уму - тот же TPM сейчас есть на всех матерях, организовать взаимную аутентификацию "мать-девайс"
(при поддержке ОС и UEFI) проблем не вижу. Но это вопрос совместимости. Как SecureBoot тот же.

Хотя... Потом сопрут ключи, как обычно (в смысле - история с подписью драйверов):)))

А кому счас легко...

Да, BadUSB тема интересная, я даже видео об этом снимал, там я прошил флешку на контроллере Phison 2251-03 кастомной прошивкой которая по сути сделала из флешки клавиатуру и та в свою очередь могла выполнять команды от имени текущего пользователя.

Если кому интересно вот ссылка - youtube.com/watch?v=ovfZXeGvjN8

PS: Прошивку и утилиты для создания и патчинга прошивок брал здесь - github.com/adamcaudill/Psychson

DesignerMix - спасибо! добавил видео в закладки. Как-нибудь попробую. Жаль, сейчас почти не занимаюсь флешками, ранее много приносили на восстановление (только в этом ключе работал) работоспособности, сейчас их стоимость слишком мала. Конечно, большие объёмы (и цены) могут вернуть интерес к восстановлению, и вновь вернусь к флешкам когда-нибудь. За то время много скопилось разных утилит и прошивок для разных контроллеров. Так что часть инструментов из видео знакома.
Остальное, в принципе, дело техники. Для "хорошего" дела можно и контроллеров накупить отдельно.
Останется только творческая работа по созданию сценариев применения клавиатурных комбинаций, да социальной инженерии (как внедрить на нужный компьютер), но это всё решаемо.

Жаль только, что виртуальная клава не может интерактивно взаимодействовать с ОС (она только отправляет команды драйверу), и не знает, что открыто в данный момент, и не знает быстродействия компа (а ведь есть такие, что на каждое нажатие клавиш ещё долго думают, и половину нажатий просто проигнорируют), и не учитывает состояние загрузки ОС. Можно ведь флешку воткнуть ещё ДО включения компа - тогда при включении вирт клава вполне сможет зайти, например, в биос, и поставить пароль на загрузку, на изменение настроек, и даже на жесткий диск! а если биос позволяет, то и ещё круче что-то...

г. Пугачёв - ремонт компьютерных комплектующих, мониторов LCD, ноутбуков.
т. 89276219324

AVX - Да, атака во многом зависит от окружения но ведь уязвимость только только начали воплощать на практике и над прошивкой колдует огромное сообщество которое может придумать и другие пути для ее реализации (помимо виртуальной клавиатуры и примера с несколькими разделами). Например здесь уже нашли и другие уязвимые контроллеры - opensource.srlabs.de/projects/badusb

Аватар пользователя Compiller

securitylab.ru/news/463546.php
Понеслась...

Дрессируем коров :)

Аватар пользователя icbook

И про SMM они знают. Вот же!..

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей