Что такое Rubber Ducky? Rubber Ducky – это устройство, выглядящее как обычная USB-флешка, но способное автоматически выполнять заданные действия на компьютере. В данной статье мы рассмотрим, как создать собственный Rubber Ducky на базе дешевого микроконтроллера. Rubber Ducky представляет собой флешку со встроенным микроконтроллером, эмулирующим USB-клавиатуру. При подключении к компьютеру она автоматически “нажимает” заранее запрограммированные клавиши, имитируя действия пользователя. Таким образом, злоумышленник может использовать Rubber Ducky для быстрого и незаметного выполнения вредоносных действий: установки ПО, кражи данных, изменения системных настроек и т.д. Создание собственного Rubber Ducky Для создания своего Rubber Ducky нам понадобится: Плата Digispark на ATtiny85 ПО Arduino IDE Немного терпения В качестве “мозга” нашего устройства будет использован микроконтроллер ATtiny85 – маленький 8-битный чип фирмы Atmel. Он обладает достаточной вычислительной мощностью и памятью для решения наших задач. Для удобства мы воспользуемся готовой платой Digispark, на которую этот микроконтроллер уже установлен. Плата имеет разъем USB и позволяет легко запрограммировать ATtiny85. Для написания кода для микроконтроллера нам потребуется среда разработки Arduino IDE с установленными драйверами Digispark. Программирование Rubber Ducky Сначала нужно установить дравера, скачайте их по ссылке https://github.com/LilyGO/DigiSpark-ATtiny85-driver-install Для линукс командой sudo apt-get install libusb-1.0-0-dev Code sudo apt-get install libusb-1.0-0-dev Тут вы найдете подробности как установить libusb на linux https://askubuntu.com/questions/629619/how-to-install-libusb В Arduino IDE https://www.arduino.cc/en/software в окне настроек мы должны найти поле «Диспетчер URL-адресов дополнительных плат» и вставить внутрь следующий URL-адрес: http://digistump.com/package_digistump_index.json Code http://digistump.com/package_digistump_index.json Подключаем плату Digispark и пишем следующий простой код: #define kbd_en_us #include “DigiKeyboard.h” void setup() { DigiKeyboard.update(); DigiKeyboard.delay(5000); } void loop() { DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); delay(250); DigiKeyboard.println(“notepad”); delay(250); DigiKeyboard.println(F(“Hello World”)); while(1); } Code #define kbd_en_us #include “DigiKeyboard.h” void setup() { DigiKeyboard.update(); DigiKeyboard.delay(5000); } void loop() { DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); delay(250); DigiKeyboard.println(“notepad”); delay(250); DigiKeyboard.println(F(“Hello World”)); while(1); } Этот код при подключении к компьютеру вводит текст “Hello World” в notepad. Для эмуляции нажатия клавиш используются функции библиотеки DigiKeyboard. Вы можете поменять клавиатуру платы на ту которую использует ваш компьютер, по ссылке вы найдете все доступные раскладки. https://github.com/ernesto-xload/DigisparkKeyboard Раскладка меняется в коде вот тут #define kbd_en_us Загружаем код на плату и проверяем работу нашего DIY Rubber Ducky. При подключении к компьютеру в открытом текстовом редакторе должно появиться слово “Hello World”. Учтите, во время загрузки кода подключаем плату только когда arduino ide нас попросит об этом в консоле. Мы рассмотрели принцип работы Rubber Ducky и создали собственное подобное устройство при помощи дешевого микроконтроллера. Теперь вы можете использовать его для образовательных целей и исследований в области кибербезопасности. Главное помнить, что несанкционированное использование Rubber Ducky является незаконным. Видео инструкция -