Содержание статьи
Как известно, компьютер свято верит всему, что сообщает подключенное устройство. Поэтому он может принять мое устройство за клавиатуру и считывать с него данные, хотя на самом деле это не она. Я маскирую устройство под HID (Human Interface Device) — точнее, под клавиатуру.
К классу HID относятся USB-устройства для взаимодействия с человеком: клавиатуры, мыши и игровые контроллеры. Сегодня соберем такое устройство и наделим его обратной совместимостью со скриптами для Flipper Zero и USB Rubber Ducky. Но сначала взглянем на альтернативы.
Утки из чужого сарая
Что, если ничего не мастерить, а вместо этого купить готовое устройство? Это возможно. Начнем с профессиональных решений, а закончим DIY-платформами.
Flipper Zero
Первый в списке, конечно же, знаменитый Flipper Zero.

Вещь, безусловно, интересная, но лично мне не хватает некоторых функций. Главная проблема — даже простейшая защита антивируса рушит все планы, а стандартный API не позволяет легко ее обойти. Для байпаса пришлось бы писать собственный интерпретатор скриптов, чего совершенно не хочется. Но есть и огромный плюс: Flipper Zero вводит пейлоад в разы быстрее других решений. Для моих целей это очень хорошо, однако Flipper Zero стоит недешево, поэтому такой вариант я отбросил.
USB Rubber Ducky
Не менее интересная штука команды Hak5. После покупки сразу чувствуешь себя членом правительственной APT-группировки.

За отдельные деньги в комплект можно добавить IDE для написания пейлоадов, карманное руководство или даже целый онлайн‑курс. Есть и интересные функции. Например, такая флешка может определить версию операционной системы, выполнить нужный код для Windows или macOS или вообще отключиться, если цель не соответствует условиям.
Есть и небольшой минус: сменить пейлоад на лету нельзя. Придется подключить флешку к своему компу и перекинуть на нее файл с новым пейлоадом. Да и стоит такая игрушка недешево. На официальном сайте «утка» стоит от 100 до 230 баксов плюс доставка. В Россию ее, судя по всему, не доставляют. Даже китайский маркетплейс не спасает: цены там не кусаются, а сразу отгрызают конечности.

Arduino, ESP, Digispark и прочие
Есть еще интересные платформы и микроконтроллеры вроде Arduino, ESP и Digispark. Я работал со всеми ними и могу объяснить, почему в этот раз выбрал не их.
Arduino
Вещица хорошая, но не каждая плата подойдет для наших задач. К тому же при смене нагрузки Arduino придется каждый раз перепрошивать — привет, паяльник и программатор USB. А для удобного добавления новых скриптов понадобится модуль SD, который стоит денег и увеличивает размеры устройства.
Из плюсов — активное сообщество и множество пользовательских библиотек. Конечно, кому‑то удобнее и привычнее писать для Arduino на C++, но лично мне после знакомства с Raspberry Pi возвращаться не хочется.
Если тебе ближе Arduino, глянь статью «Очень плохая флешка. Разбираем атаку BadUSB в деталях». Но выбор за тобой, мой друг.
ESP
По большому счету это та же Arduino, только на большинстве плат есть встроенный Wi-Fi. На такой плате можно сделать веб‑сервер и управление с телефона. Программируется она так же, на C-подобном языке. Однако стандартные платы ESP8266 и ESP32 намного больше, чем Arduino Pro Micro или наша «малинка».
Digispark
Самый маленький, но и самый спорный вариант. Почему? Во‑первых, плата очень компактная, а значит, места для нормальной обвязки и дополнительных модулей быстро перестает хватать. Язык программирования такой же — похожий на C, с набором функций для управления платой.

Из плюсов отмечу штекер USB Type-A. В этом отличие платы: у остальных вариантов — USB Type-C или MicroUSB. На мой взгляд, на этом плюсы заканчиваются.
Когда я пользовался Digispark, прошивка устанавливалась не с первого раза, да и скрипт работал медленно. Впрочем, возможно, мне просто попался бракованный экземпляр, но не будем об этом.
Программа для этих плат устроена интересно: в ней должны быть две функции — void и void . Первая выполняется один раз при запуске, а вторая повторяется в бесконечном цикле. В остальном язык похож на C.
А если не микроконтроллеры?
Десять лет назад Антон Жуков, бывший редактор рубрики «Взлом», написал статью «Гадкий утенок. Превращаем обычную флешку в USB Rubber Ducky».
Способ, конечно, интересный, но, на мой взгляд, сильно устарел: при таком подходе каждый раз придется менять пейлоад через прошивку. Кто‑то скажет, что ему хватит и одного пейлоада, но лично меня такой вариант совсем не устраивает.
Выбираем базу
Что ж, аналоги обсудили, перейдем к инкубации нашей утки.

За основу возьмем YD-RP2040. Ты спросишь: «А на фига не оригинал?» Отвечу: оригинал дороже, а памяти в нем меньше — 2 Мбайт против 16 Мбайт. В качестве экрана возьмем OLED-дисплей 128 × 64 на контроллере SSD1306. Он дешевый и чуть шире нашей платы, а главное — отлично подходит для проекта. Добавим дешевых двухконтактных кнопок. Можно еще взять макетную плату, ползунковый переключатель и аккумулятор LiPo, но об этом чуть позже.

Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
