Rubber Ducky – это устройство, выглядящее как обычная USB-флешка, но способное автоматически выполнять заданные действия на компьютере. В данной статье мы рассмотрим, как создать собственный Rubber Ducky на базе дешевого микроконтроллера.
Что такое Rubber Ducky?
Rubber Ducky представляет собой флешку со встроенным микроконтроллером, эмулирующим USB-клавиатуру. При подключении к компьютеру она автоматически “нажимает” заранее запрограммированные клавиши, имитируя действия пользователя.
Таким образом, злоумышленник может использовать Rubber Ducky для быстрого и незаметного выполнения вредоносных действий: установки ПО, кражи данных, изменения системных настроек и т.д.
Создание собственного Rubber Ducky
Для создания своего Rubber Ducky нам понадобится:
- Микроконтроллер ATtiny85
- Плата Digispark
- Кабель micro-USB
- ПО 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
Тут вы найдете подробности как установить 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
Подключаем плату 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);
}
Этот код при подключении к компьютеру вводит текст “Hello World” в notepad. Для эмуляции нажатия клавиш используются функции библиотеки DigiKeyboard. Вы можете поменять клавиатуру платы на ту которую использует ваш компьютер, по ссылке вы найдете все доступные раскладки. https://github.com/ernesto-xload/DigisparkKeyboard
Раскладка меняется в коде вот тут #define kbd_en_us
Загружаем код на плату и проверяем работу нашего DIY Rubber Ducky. При подключении к компьютеру в открытом текстовом редакторе должно появиться слово “Hello World”.
Заключение
Мы рассмотрели принцип работы Rubber Ducky и создали собственное подобное устройство при помощи дешевого микроконтроллера. Теперь вы можете использовать его для образовательных целей и исследований в области кибербезопасности. Главное помнить, что несанкционированное использование Rubber Ducky является незаконным.
Больше примеров вы найдете тут – https://www.patreon.com/itprosta/shop/digispark-attiny85-codes-7424?source=storefront