Содержание статьи
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
При работе с эмуляцией клавиатуры на Arduino мы применяем примерно следующий API:
void setup(){ // Код, выполняющийся только один раз при подключении устройства по USB Keyboard.begin(); // Включаем режим контроллера клавиатуры delay(2000); // Пауза в миллисекундах Keyboard.press(KEY_LEFT_SHIFT); // Зажать клавиши Keyboard.press(KEY_RETURN); delay(100); Keyboard.releaseAll(); // Отпустить зажатые клавиши Keyboard.print("cmd /c evil command"); // Набрать текст на клавиатуре Keyboard.write(KEY_RETURN); // Нажать клавишу }void loop(){ delay(3600000); something(); } // Код, выполняющийся постоянно
Как только код написан, происходит компиляция и заливка программы в контроллер:
- Сервис → Плата: Arduino Micro
- Сервис → Последовательный порт: /dev/ttyACM0
- Файл → Загрузить
Если все прошло успешно, то через несколько секунд флешка перезагрузится и выполнит все запрограммированные нажатия прямо на твоем ПК. Но, понятное дело, эти нажатия клавиш будут далеко не простые...
Атака на разблокированные компьютеры
Данная атака была красиво продемонстрирована в сериале Mister Robot, ниже ты можешь полюбоваться кадром из этого фильма.
Суть атаки заключается в том, чтобы пользователь подобрал подброшенную нами флешку и подключил к своему компьютеру, который расположен, возможно, где‑то глубоко в корпоративной или даже промышленной сети. После того как флешку вставят в USB-порт, она выполнит залитый в нее код посредством запрограммированных нажатий клавиш, что впоследствии откроет удаленный доступ злоумышленнику.
Как мы помним, наше USB-устройство — не то, чем ожидает его увидеть пользователь. В данном случае пользователь предполагает, что это обычный съемный диск, но внезапно это клавиатура...
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»