Как в домашних условиях смастерить Rubber Ducky со встроенной пиротехникой

  • Автор темы klobald
  • Дата начала
K

klobald

Представь: ты втыкаешь в USB какую-то флешку, и вдруг в браузере открывается окно, где грустный клоун крутит ручку шарманки. Когда мелодия кончается, флешка делает «бам» и… в лучшем случае обсыпает тебя конфетти. Из этой статьи ты узнаешь, как скрестить девайс для атак BadUSB с устройством самоуничтожения и заодно научишься кое-каким мейкерским приемам.​


Если говорить об этом устройстве как о флешке, которая может испускать дым, то, конечно, полезных применений у нее будет немного — разве что использовать в качестве декораций в кино про хакеров для особо драматичной сцены (да и видео с PoC выходит отличным!). Однако есть масса способов усовершенствовать полезную нагрузку. Например, можно заменить ее на «звуковую гранату», которая подарит немного веселья команде безопасности и сдержит их импульс немедленно выдернуть посторонний предмет из компьютера. После подключения инъектор нажатий на клавиши отработает как тебе нужно, а потом завоет сирена и не будет выключаться до тех пор, пока батарейка не умрет. Это возможно потому, что софт контролирует переключатель, способный подавать столько питания, сколько дает порт USB.

В общем, тут можно использовать много вариантов небольших схемок. А если ты можешь поставить корпус побольше, например взять формат сменных дисков на 2,5 дюйма, то выбор становится еще богаче. Это отлично сочетается с устройствами, которые работают от батарейки. Например, боевые девайсы для работы с Wi-Fi (взлом, глушилки и прочее), которые будут получать питание от батарейки, только когда их принесут в целевую зону.

Это описание проекта с основными данными об электронной схеме. Подробная информация о каких-либо опасных манипуляциях умышленно не сообщается. Видео с демонстрацией нельзя воспроизвести без дополнительной работы, познаний и компонентов.​


Мотивация
Этот небольшой проект начался с того, что я наткнулся в твиттере на нелепую картинку: на ней была изображена петарда, спрятанная внутри флешки. У всех, кто видел эту картинку, была примерно одна реакция: весело, конечно, но зло. Я стал раздумывать о возможности совместить что-то подобное с Rubber Ducky, чтобы иметь и программный пейлоад, и физический.

Не буду останавливаться на неудачных экспериментах, которыми я занимался, пока искал разные подходы и делал улучшения. Большая часть этих твиков требовала умений, которыми я не владею. Но какое же веселье, если не спотыкаешься на каждом шагу? Я раньше никогда не протипировал печатных плат, не писал прошивок, не работал ни с Android, ни с чипами AVR.

Изначально я планировал использовать Hak5 Rubber Ducky, который стоит 50 долларов. Единственный выходной интерфейс у него — это LED на 3,3 В. Я подыскал миниатюрный MOSFET, который выдерживал 3 А и более при минимальном напряжении переключения около 1 В. Идеально: я мог подключиться к питанию светодиода и переключать что угодно, для чего хватит мощности USB.

Нужно было только найти способ управлять светодиодом, потому что Duckyscript делать этого не позволяет. Однако даже с кастомной прошивкой я смогу получить только очень ограниченный контроль над светодиодом. Потом я обнаружил проекты типа «USB Rubber Ducky за доллар» (или 3–5 долларов), в которых использовался чип ATtiny85. Это куда более удачный подход. В качестве бонуса в большинстве схем заодно получаешь два незанятых порта GPIO!

В поисках наименее затратного способа получить такое устройство, который бы не растянулся на месяцы в ожидании товара из Китая, я понял, что Digispark за 5 долларов — это практически готовые платы, и они продаются на Amazon. Там же обнаружилось несколько клонов

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

по 3 доллара за штуку и по 1,5 доллара — на eBay. Причем у них есть не только нужный мне ATtiny85, но и большинство других компонентов, необходимых для проекта.


Список деталей
Вот как в итоге выглядит список деталей.

Основные детали
  • Здравый смысл — 1 шт. Старайся оберегать себя и других от разнообразных опасностей;
  • ATtiny85 — 1 шт. (с клона Digispark);
  • сопротивление на 68 Ом — 2 шт. (с клона Digispark);
  • сопротивление на 1,5 кОм — 1 шт. (с клона Digispark);
  • стабилитрон на 3,6 В — 2 шт. (с клона Digispark);
  • МОП-транзистор (MOSFET)

    Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

    — 1 шт. (тут есть разные варианты. Например, ZXMN2F34FHTA тоже будет неплохо работать);
  • сопротивление примерно на 680 Ом (см. важное примечание о безопасности в инструкции по сборке).
Опциональные детали и инструменты
  • Старая флешка в выдвижном исполнении. Нам пригодится ее корпус и штекер USB;
  • печатная плата для прототипирования

    Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

    (это то, что использовал я, наверняка более опытные товарищи найдут более удачный способ собрать схему);

  • Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

    (я использовал ее для замыкания соединений на плате);
  • припой, паяльная паста, канифоль;
  • паяльник или паяльная станция.
Детали для пейлоада
  • Тут все полностью зависит от того, что ты собираешься добавлять. Пейлоад будет получать напряжение в 5 В на ту продолжительность времени, которую ты настроишь (по крайней мере, пока устройство подключено, если нужно — добавляй батарейку).
  • Для чего-то типа «звуковой гранаты» можно напрямую подключать коннекторы 5 В.
  • Для чего-то драматичного вроде дымовых шашек… эту информацию я, пожалуй, опущу, чтобы кто-нибудь из читателей не наделал глупостей. Прости, но мне придется еще в паре мест проделать с текстом такую подлянку.


Собираем все вместе
Если хочешь сделать большое устройство, например в формате внешнего диска на 2,5″, тогда можешь просто взять Digispark и добавить MOSFET для управления нашим физическим пейлоадом. А вот если ты захочешь затолкать все в крошечный формат USB-флешки, то придется ужать все компоненты. Первым делом на составные части придется разобрать Digispark. Это мне вышло дешевле и оказалось удобнее, чем покупать все компоненты по отдельности. Так что дальше будет подразумеваться, что ты пойдешь по тому же пути.



Схема
В целом тут ничего принципиально нового. Схему я успешно позаимствовал из проектов по клонированию Rubber Ducky на ATtiny85.

4874a9486883f44b56f3d027d64630aa.jpg

В моем варианте к пятому пину просто присоединен МОП-транзистор. Наименьший и наиболее чистый пример в таком варианте — это uDuck. Схема максимально простая и поддерживает самый минимум функций USB. Стабилитроны снижают напряжение на линиях передачи данных до 3,6 В. Сопротивления помогают устройству соответствовать спецификациям USB (скорость распознавания, мощность и так далее) — важно для совместимости. Я видел схемы, в которых часть (или даже все) сопротивления и стабилитроны убирают, отчего совместимость и надежность сильно падают.

Еще несколько вещей, о которых стоит знать.

  • Сопротивление между истоком и стоком МОП-транзистора требует изучения. Когда сопротивление слишком высоко или резистора вообще нет, полезная нагрузка будет срабатывать при загрузке. Дело в том, что ATtiny подает на контакты напряжение при включении. Спасибо Грэму Сазерленду (@gsuberland) за помощь в этом вопросе.
  • Можно сделать двойной триггер, продублировав схему с МОП-транзистором на шестом пине.


Дизайн платы
Учитывая нестандартный расклад печатной платы, я не знаю, как это изобразить правильно. Красный — это полоски медной ленты. Обрати внимание на места, где она загибается за углы. Зеленый — это места, где будут припаяны концы проводов, идущих к USB. Синий — контакты для проводов к физическому пейлоаду. Почему медная лента? Потому что я не знаю, что делаю, а это сработало после того, как я раз десять потерпел неудачу с другими вариантами.

99de80e365b35b6ac281c4fae43878a2.jpg

Вот одна из плат обмотана лентой перед пайкой. Отверстия не используются — они просто часть платы SMTpad, которую я разрезал на кусочки. Ты, возможно, заметил, что я убрал подложку в том месте, где будет сопротивление на 600 Ом для МОП-транзистора. Это помогает избежать случайного замыкания.

a7124f9c2209175c87c8bfa9d32e68db.jpg

Вот как все это выглядит после пайки. Видно остатки зеленой платы флешки, которую я разрезал.

de8152c232c86cd4ebdd07769fdffd10.jpg

А вот все установлено в корпус. Штекер USB хорошо бы закрепить.

9d37b18172672e9a9656e6bf5e7b7756.jpg

Программируем ATtiny85
Когда работаешь с ATtiny из Digispark, программирование значительно облегчается, поскольку бутлоадер уже есть. Открываешь Arduino IDE, делаешь скетч, говоришь ему загрузиться, а потом втыкаешь плату в USB.

Кто-то уже даже сделал конвертер под названием digiduck для уже существующих скриптов на Duckyscript. В качестве бонуса можно использовать команды LIGHT ON и LIGHT OFF в скрипте, чтобы сработал пейлоад MOSFET. Функция LIGHT ON подает напряжение на пины 5 и 6, к которым он подключен. Если то же самое сделать на обычной Digispark, загорится синий светодиод, который включается, когда на пятый пин подается ток. Это очень полезно для тестирования.

Ниже приведен скетч, который использовался в исходном видео с конфетти. Открывается терминал, затем звук выкручивается на полную громкость и видео с Vimeo открывается на полный экран (мультик

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

). Ничего потрясающего с точки зрения атак через HID. На 22-й секунде используется digitalWrite, чтобы подать напряжение на МОП-транзистор. Через три секунды подача тока к пейлоаду прекращается.

#include "DigiKeyboard.h" #define KEY_TAB 43 #define KEY_DOWN 81 #define KEY_DELETE 42 #define KEY_PRINTSCREEN 70 #define KEY_SCROLLLOCK 71 #define KEY_INSERT 73 #define KEY_PAUSE 72 #define KEY_HOME 74 #define KEY_PAGEUP 75 #define KEY_END 77 #define KEY_PAGEDOWN 78 #define KEY_RIGHTARROW 79 #define KEY_RIGHT 79 #define KEY_DOWNARROW 81 #define KEY_LEFTARROW 80 #define KEY_UP 82 #define KEY_UPARROW 82 #define KEY_NUMLOCK 83 #define KEY_CAPSLOCK 57 #define KEY_MENU 118 void setup() { pinMode(1, OUTPUT); pinMode(0, OUTPUT); digitalWrite(0, LOW); digitalWrite(1, LOW); DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_GUI_LEFT); DigiKeyboard.delay(500); DigiKeyboard.sendKeyStroke(0); DigiKeyboard.println("terminal"); DigiKeyboard.delay(50); DigiKeyboard.sendKeyStroke(0); DigiKeyboard.sendKeyStroke(KEY_ENTER); DigiKeyboard.delay(1500); DigiKeyboard.sendKeyStroke(0); DigiKeyboard.println("osascript -e 'set volume 4' && open
"); DigiKeyboard.sendKeyStroke(0); DigiKeyboard.delay(22000); DigiKeyboard.sendKeyStroke(0); digitalWrite(0, HIGH); digitalWrite(1, HIGH); DigiKeyboard.delay(3000); digitalWrite(0, LOW); digitalWrite(1, LOW); } void loop() { }

Можешь заметить, что digiduck переводит LIGHT ON/OFF как digitalWrite с параметрами (0, HIGH) или (1, HIGH). Это соответствует пину 5 (0) или 6 (1) на ATtiny. Это означает несколько светодиодов или в этом случае несколько триггеров.


Убираем пятисекундную задержку при старте
Одно из раздражающих свойств Digispark — это пятисекундная задержка при загрузке. Именно эта задержка позволяет загружать новые скетчи при подключении. Если ее убрать, то для загрузки программы нужно будет замыкать два пина ATtiny. Для борьбы с задержкой понадобится новый загрузчик. Загрузить его можно при помощи программатора, но куда веселее использовать уязвимость типа «скольжение по цепочке NOP» (NOPslide), чтобы загрузить его из памяти, которая обычно используется для скетчей. Однако для записи прошивки все равно понадобится убрать некоторые предохранители внутри чипа. А это, к сожалению, все же требует использовать высоковольтный (12 В) программатор. Говорят, в некоторых версиях Digispark биты-предохранители не выставлены, но в моей они были.



Высоковольтный программатор
Если ты выберешь путь с высоковольтным программатором, то тут большой выбор устройств — например, долларов за 60. Однако вполне можно обойтись Arduino Nano v3 за 4 доллара и макетной платой. Кто-то сделал скетч для Arduino, который автоматически очищает предохранительные биты, что для нас очень удобно. Шаги 1–3 из

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

по этой операции привели меня к желаемому результату.

Вместо того чтобы подключать ATtiny напрямую к макетке, я использовал зажим SOIC-8, чтобы программировать чип напрямую. Также я заменил двенадцативольтовую батарейку на пятивольтовый бустер за 5 баксов. Все это я так часто использовал, что перенес с макетной платы на более постоянную ProtoBoard.

acc0ceae3fc5c23d869c119f15633995.jpg

Пишем новый загрузчик
Теперь, когда предохранители удалены, мы можем загружать новый бутлоадер. Как я уже говорил, ты можешь сделать это при помощи программатора. С минимальными изменениями сгодится уже использованный нами высоковольтный программатор. Но это далеко не так весело, как что-то, что делать не предполагалось.

Существует проект

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

, в рамках которого разрабатываются новые прошивки. Если покопаться в глубинах этого проекта, то найдется утилитка под названием upgrade, которая использует скольжение по NOP для загрузки новых бутлоадеров по USB. Ты пишешь micronucleus BootloaderName.hex — и готово. Я использовал бинарную версию micronucleus-1.11-entry-jumper-pb0-upgrade.hex. Помни, что после изменения загрузчика пропадет пятисекундная задержка и у тебя больше не будет возможности замыкать первый и пятый контакты (или другие, если у тебя другой бутлоадер) на землю, чтобы залить новый скетч для ATtiny.


Ту-ду и вишлист
  • Нормальная печатная плата для удобства пайки;
  • возможность получать пользовательский ввод и расширить потенциальный набор функций.

Фейлы
Я не записывал каждый шаг, но у меня остались фотографии нескольких фейлов, случившихся в процессе.

Digispark и MOSFET.

63ce19a5879577398552ed405b50f0d1.jpg

40849180cfc4058900b321e5f249c36a.jpg

Первый тест пятивольтового триггера.

96da2c6de50705cf54ecba709c3cfff7.jpg

Попытка уменьшить Digispark в надежде все же упихать его в корпус флешки.

c7b7b572ab42f2c0bcbc026c5ed3ac12.jpg

Попытка приделать контакты к корпусу SOT-23 МОП-транзистора, чтобы использовать его на макетной плате. Ножки отвалились, стоило взять его в руки.

1e0646181c8afa63d751e69561ab2531.jpg

А вот более удачная попытка поместить MOSFET на макетную плату. Это первый раз, когда я испытал всю прелесть медной ленты!

f1c9099f0f6cb8b939c6ac670a8d5493.jpg
 
Похожие темы
Support81 «Менеджер» с архивом и черным ходом через Yandex. Как группировка APT31 годами шпионила за российскими IT-компаниями Новости в сети 1
Support81 От 314 до 968 млрд рублей. Как российский рынок кибербезопасности станет монополией за 6 лет Новости в сети 0
Support81 Перевод крупной суммы по СБП на свой же счёт будет расцениваться банком как подозрительный Новости в сети 0
Support81 Перехват DNS – что это за атака и как она работает? Новости в сети 0
Support81 Суверенный Рунет. Мишустин подписал постановление о том, как им будут управлять (и от чего защищать) Новости в сети 0
Support81 $120000000 испарились за утро: как хакерам удалось обойти 10 аудитов и причем здесь ракетная программа КНДР Новости в сети 0
Support81 Одна буква — миллионные потери. Как русская «Е» обманула разработчиков и присвоила их крипту Новости в сети 0
Support81 «Ага, туннель! Придушим». Ваш VPN тоже лагает на 4G? Объясняем, как операторы видят ваш трафик (и что с этим делать) Новости в сети 0
Support81 «Магический пакет» творит чудеса: как хакеры превратили Linux-сервер в невидимку Новости в сети 0
Support81 Касперский против ChatGPT: как антивирус вычислил вредонос, написанный ИИ Новости в сети 0
Support81 Не Таиланд, а рабство в Мьянме: как туристический рай стал перевалочной базой для похитителей россиян Новости в сети 0
Support81 Оригинальный соучредитель Tesla, управлявший компанией до прихода Маска, заявил, что Cybertruck выглядит как «мусорный контейнер» Новости в сети 0
wrangler65 Как стать хакером для «самых маленьких» Ч.2 Полезные статьи 0
wrangler65 Как стать хакером для «самых маленьких» Ч.1 Полезные статьи 0
Support81 Как война в Украине стала полигоном для наркокартелей Новости в сети 0
Support81 Вайб-кодинг звучал как шутка, пока Opal от Google не начал делать сайты по вашему описанию Новости в сети 0
Support81 Серые токены, чёрные схемы: как российский бизнес уходит в крипту до принятия закона Новости в сети 1
Support81 Нажали Play — хакер уже в системе. Как работает звуковой троян Новости в сети 0
Support81 Белым по белому: как стать «гением» в науке с помощью ChatGPT Новости в сети 0
Support81 Телефон против владельца: как Android помогает хакерам воровать криптовалюту Новости в сети 0
Support81 Операторы хакерского форума BreachForums, как сообщается, арестованы во Франции Новости в сети 0
Support81 Российская ИБ стала как медицина в глубинке — врач один, а если заболеет, то все умрут Новости в сети 0
Support81 Важно! Мобильный аудит Wi-Fi сетей: как быстро найти уязвимости с помощью Stryker Уязвимости и взлом 0
wrangler65 Интересно Как МВД России ищет киберпреступников и как оставаться анонимным в 2025 Анонимность и приватность 0
Support81 JPEG, пицца и разоблачения: как Error Level Analysis считывает ложь по пикселям Новости в сети 0
Support81 Ваш VPN — это троян. Он выглядит как защита, но работает как слежка Новости в сети 0
Support81 От идеологии к наживе: как хактивисты превращаются в киберпреступников Полезные статьи 0
Support81 Дарквеб 2024: эксплойты по цене машины, логи — как хлеб в магазине Новости в сети 0
Support81 Важно! Как Tor стал символом свободы, паранойи и мифов одновременно Анонимность и приватность 0
Support81 Письмо от «шефа», фальшивая переписка и счёт на услуги — как российские компании теряют деньги, не заметив подмены Новости в сети 0
Support81 За деньги — да: как преступники «купили» службу поддержки Coinbase Новости в сети 0
Support81 Открыл PSD — получил троян. Как хакеры «кошмарят» графических дизайнеров Новости в сети 0
Support81 Услуги 18+, отмывание и прописка в США — как один Telegram-рынок объединил КНДР и китайскую мафию Новости в сети 0
Support81 Seed → POST-запрос → пустой баланс: как устроена быстрая и чистая кража крипты через FreeDrain Новости в сети 0
Support81 Одна атака — минус миллиард: как Marks & Spencer потерял состояние за пару дней Новости в сети 0
Support81 Из пепла: как 4chan смог перезапустить себя после разрушительного взлома Новости в сети 0
Support81 CouchDB как проходной двор: эксплойты для критической SSH-уязвимости уже гуляют по сети Новости в сети 0
Support81 Фишинг с печатью Google — как злоумышленники смогли обмануть DKIM Новости в сети 0
Support81 Исповедь хакера: как случайный эксперимент оставил без связи тысячи людей в Бразилии Новости в сети 0
Support81 Фейковые айтишники, настоящие миллиарды и немного ядерной программы: как прокачанные фишеры замиксовали $1,5 млрд Новости в сети 0
Support81 Microsoft дала ИИ настоящий инструмент программиста — и он впервые узнал, как сложно быть человеком Новости в сети 0
Support81 25 000 за воздух: как «таможенники» из Telegram разводят на доверии Новости в сети 0
Support81 $21 млн в крипте: как офицеры КСИР прикрылись «борьбой с мошенничеством» Новости в сети 0
Support81 Шифрование не спасет: как хакеры читают "защищенные" сообщения без взлома Новости в сети 0
Support81 Невидимая империя зла: как ИИ, дети и крипта строят цифровую империю Новости в сети 1
Support81 DNS без штанов: как нас сдают провайдерам по умолчанию Новости в сети 0
Support81 Комната 641А: как инженер AT&T раскрыл систему массовой слежки Новости в сети 0
Support81 "Чудо-решение" или маркетинг: как Google создает иллюзию объективности для продвижения технологий Новости в сети 0
Support81 Фрод в рекламе: как мошенники крадут бюджеты и что с этим делать Новости в сети 0
Support81 Невидимый взломщик: как обычные разговоры позволяют взломать GPT-4o Новости в сети 0

Название темы