Главная » Песочница 2 » BadUSB Rubber Ducky своими руками
BadUSB Rubber Ducky своими руками

BadUSB Rubber Ducky своими руками

Не для кого не секрет, что хакеры используют для атак небольшие девайсы, внешне очень похожие на флешку называемые BadUSB. Чтобы заполучить удаленный контроль нужно всего навсего подключить такое устройство к серверу. Для начала все очень похоже на Rubber Ducky, за одним большим исключением, Rubber Ducky — это разовая акция, последствия которой весьма предсказуемы. Мы же хотим рассказать о гораздо более универсальной модификации BadUSB.

Хочу подчеркнуть, что ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный материалами данной статьи, т.к. она предназначена только для профессиональных пентестеров, руководителей службы CISO (информационной безопасности), а так же для «белых хакеров».

Лучше, чем Rubber Ducky

Наверняка ты уже слышал про Rubber Ducky. Это устройство из разряда BadUSB для HID-атаки. Подобного рода девайсы умеют эмулировать клавиатуру и позволяют отправить любые команды, словно их набрал текущий пользователь.

В этих устройствах есть простой микроконтроллер и память, в которую записывается скетч (код для Arduino и подобных отладочных плат). Он содержит функцию эмуляции нужного устройства и набор выполняемых им действий. Как показывает практика, обычно это клавиатура и последовательность «нажимаемых» на ней клавиш.

Конечно, у этих девайсов есть и свои недостатки. Во-первых, нужно тщательно разведать полную конфигурацию компьютера-жертвы. Во-вторых, перед реальной атакой нужно проверить, как она будет выполняться на максимально подобной тестовой системе, и внести необходимые правки — в частности, подобрать оптимальные задержки. В реальных условиях, скорее всего, будет проблематично второй раз приблизиться к атакуемому компьютеру, а если хоть один скан-код клавиши будет отправлен не вовремя, то все окажется напрасным. В-третьих, можно использовать только один скетч. Нельзя дописать какую-то функцию на лету или прервать и перезапустить набор действий. Мы изготовим устройство, лишенное этих недостатков.

Создание WiFi Ducky

Практически это будет тот же самый Rubber Ducky, только с модулем WiFi. Суть в том, что при его подключении к компьютеру скетч не выполняется сразу при подаче питания на плату (хотя такая функция тоже есть). В этот момент создается точка доступа, которая ждет подключения. Соединиться с ней можно как со смартфона, так и с ноутбука и уже оттуда в любой удобный момент совершать необходимые действия.

За основу можно взять Arduino MKR1000 с Wi-Fi-модулем Atmel ATSAMW25 на борту, добавить библиотеку WiFi101 и готовый код отсюда. Однако обойдется это в 35 долларов. Также есть готовый проект Cactus WHID. Он стоит уже 14 долларов и выглядит как флешка, но доработать его будет сложнее.

Я предлагаю собрать более дешевый (меньше десяти долларов) и функциональный девайс под называнием WiFi Ducky. Его автор — Stefan Kremser с ником «Космокурица», а железо для его крутых самоделок продается в отдельном магазине на AliExpress. Там можно купить готовые DIY-модули, скачать код с гитхаба и повторить все шаг за шагом, однако мы пойдем немного другим путем.

Возьмем два устройства:

Arduino Pro Micro;

BadUSB Arduino Pro Micro
Arduino Pro Micro

WeMos D1 mini с микроконтроллером ESP-8266EX и WiFi-модулем стандарта 802.11b/g/n на борту.

BadUSB WeMos D1 mini
WeMos D1 mini

Нам необходимо будет соединить их, но вначале — прошить.

Все описанные действия выполнялись на операционной системе Windows 7 x64.

Прошивка Arduino Micro Pro

Начнем с платы Arduino. Скачиваем и устанавливаем Arduino IDE. При установке этого программного обеспечения заодно установятся все драйверы для этого устройства, так что дополнительно ничего не надо будет устанавливать. Чтобы подключить ее к компьютеру, необходимо запастить OTG-адаптером или кабелем с надлежащими выходами, так как на плате расположен разъем mini-USB.

После установки программного обеспечения запускаем его и подключаем Arduino к компьютеру. В меню «Инструменты» в разделе «Плата» выбираем Arduino/Genuino Micro. Далее в том же меню выбираем COM-порт, на котором определено устройство. На этом настройка программного обеспечения завершена.

Следующим шагом идем по ссылке, где расположен скетч. На него достаточно взглянуть, чтобы понять, что он делает: преобразует команды типа STRING в поддерживаемый Arduino синтаксис типа Keyboard.print(“”), и активирует нужные контакты. Копируем его и вставляем в Arduino IDE. Нажимаем кнопку «Загрузка» и через две-три минуты получаем сообщение о том, что скетч успешно загружен. Теперь при подаче питания на плату контроллер активирует контакты TX, RX, GND и RAM, после чего переходит в режим ожидания команд.

Прошивка WeMos D1 mini

Добрались до следующего компонента нашей злой утки на стероидах. В этот раз нам потребуется перейти с micro-USB на USB Type-А. При первом подключении к компьютеру Windows ругнется на неопределенное устройство, поэтому необходимо скачать драйвер CH341 c официального сайта.

Тут ничего сложного: извлекаем из архива EXE-файл, запускаем его с правами администратора и нажимаем INSTALL. После этих нехитрых манипуляций в диспетчере устройств эта плата должна определиться как USB-SERIAL СР340. Поделюсь горьким опытом: если установить неверный драйвер, то устройство определится, но название будет другое, и ничего не заработает. Будь предельно внимательным!

Правильное определение WeMos D1 mini
Правильное определение WeMos D1 mini

Теперь устройство готово к прошивке, и нам нужен прошивальщик. Я воспользуюсь NodeMCU firmware programmer. Заходим на GitHub и скачиваем его в соответствии с версией твоей операционки. У меня это Win64. Еще необходимо скачать саму прошивку. Их будет несколько вариаций, я скачивал esp8266_wifi_duck_4mb.bin, как наиболее увесистый и функциональный вариант.

После этого запускаем и настраиваем прошивальщик. В поле COM Port выбираем тот порт, на котором определилась плата. Обычно программа сама его «видит» и подставляет необходимое значение. Далее переходим во вкладку Config, где в первой строке нажимаем на шестеренку и указываем путь до прошивки, которую скачали. Значение остается 0x00000. Во вкладке Advanced советую выставить параметр Baudrate на 115200. У меня прошивка записалась на такой скорости, а если у тебя возникнет ошибка, то просто уменьши ее. Остальное оставляем без изменения. В итоге должно получиться как на скриншоте.

Значения программы NODEMCU FIRMWARE PROGRAMMER на вкладке Advanced
Значения программы NODEMCU FIRMWARE PROGRAMMER на вкладке Advanced

Когда все нехитрые манипуляции будут выполнены, возвращаемся на вкладку Operation и нажимаем Flash. Ниже кнопки расположен индикатор, который покажет приблизительное время загрузки прошивки в память, а зеленая галочка с надписью NODEMCU TEAM даст знать, что прошивка закончилась.

Работа паяльником

После того как обе платы подготовлены и прошиты, необходимо соединить их в одного «Франкенштейна». Для этого подключаем проводами контакты в соответствии с таблицей:

Для начала лучше соединить их без пайки (на монтажной плате очень удобно) и проверить работоспособность. Подключаем к компьютеру Arduino Micro Pro и тестируем. Если устройство завелось и работает как надо, то можно собирать его уже с припоем. Мелких деталей там нет, перегреть особо нечего, так что получится даже у того, кто недавно поссорился с паяльником.

Вот как получилось у меня.

badusb из флешки
Как примерно должно получиться

Проверяем и разбираем функциональность

Самое время проверить, не сломалась ли какая-то из плат во время пайки. Подключаем Arduino Micro Pro к компьютеру и ждем, пока установится универсальный драйвер для HID-устройства. «Ардуина» должна сигнализировать двумя красными и одним зеленым светодиодами.

С телефона, планшета или ноутбука смотрим список точек доступа WiFi. Должна появиться новая AP под названием WiFi Duck. Если ее видим, значит, все работает. Можно вскинуть руки, закричать «It’s Alive!» и дьявольски захохотать во вспышках молний.

badusb из флешки
Точка доступа WiFi Duck

Подключаемся к ней. Пароль — quackquack (это дефолтный, его можно будет изменить в настройках). Теперь открываем браузер, идем по адресу 192.168.4.1 (это дефолтный адрес ESP-8266EX в режиме AP) и видим панель управления нашим устройством.

На web-интерфейсе все по-спартански, ничего лишнего. Четыре страницы, или вкладки, — две рабочие и две информационные:

Scripts. Эта вкладка предназначена для работы с уже готовыми скриптами. Изначально она пуста, но кнопкой UPLOAD NEW SCRIPT можно загрузить написанный скетч в форматах .ino и .txt из памяти устройства (с которого зашли), после чего выполнить его в любое удобное время. Можно скрипты писать самому или найти в интернете готовые решения, например тут. Не все из них рабочие, необходимо будет заранее протестировать (оболочка позволяет редактировать их). Памяти на все это дело предостаточно — почти 3 Мбайт.

Страница Scripts
Страница Scripts

Live Execute. На этой странице расположено поле, в которое мы пишем скетч. Его можно сразу выполнить или сохранить. При сохранении он отобразится на странице Scripts. Язык написания скетча отличается от привычного в Arduino, поэтому ниже поля для ввода дана инструкция с командами и описанием каждой из них.

Страница Live Execute
Страница Live Execute

Settings. Это страница настроек точки доступа. Тут можно поменять название точки доступа, пароль, сделать ее скрытой. Также можно указать скрипт, который будет выполняться сразу при подключении устройства к компьютеру.

Страница Settings
Страница Settings

Info. Эта страница больше носит информационный характер. Тут находится ссылка на автора проекта, SDK, веб-сервер, скрипты и их интерпретатор. Можно также обновить версию прошивки ESP8266 «по воздуху»

Страница Info
Страница Info

Пишем скрипты для атак

Наше кибероружие подготовлено и начищено, осталось зарядить его скриптами. Обрати внимание на расстановку пауз в них (DELAY). Они нужны для того, чтобы код не начал выполняться слишком рано — прежде, чем целевой компьютер успеет на него отреагировать. Советую делать паузы побольше, исходя из того, что система жертвы будет медленней твоей тестовой. Это может быть из-за отсутствия на ней SSD, меньшего объема оперативки, медленного процессора и так далее.

Смоделируем такую ситуацию: WiFi Ducky уже подключен к цели, а мы находимся где-то неподалеку. В системе есть учетная запись пользователя с правами локального администратора, и она сейчас активна. Нам необходимо выполнить какое-то действие. Для начала создадим скрипт, который создаст еще одного пользователя и добавит его в группу «Администраторы».

Если скетч запустится с правами учетной записи обычного пользователя, то появится сообщение: «Системная ошибка 5. Отказано в доступе». Под админом он выполнится менее чем за полсекунды, после чего окно консоли закроется.

Для русифицированных версий Windows придется указать имя группы «Администраторы» по-русски: net localgroup Администраторы hacker /add. Однако для этого потребуются дополнительные действия.

Отлично, теперь необходимо дождаться, пока пользователь заблокирует компьютер и уйдет, к примеру, на обед. Запускаем скрипт, который разблокирует компьютер под нашим пользователем:

Вуаля! Мы работаем за компьютером жертвы без его ведома с новой учетной записью. Конечно, если в системе всего две учетные записи — исходная и наша.

Далее, к примеру, можно загрузить с заранее подготовленного FTP-сервера pwdump:

После чего мы можем сдампить хеши паролей:

…и загрузить файл обратно на сервер:

Останется воспользоваться радужными таблицами для расшифровки, и мы уже владеем учетными записями для продолжения атаки. Устройство все еще в компьютере, и делать мы можем что угодно в радиусе приема «злого WiFi».

Дорабатываем и совершенствуем

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

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

Если будет возможность не просто подобраться к системному блоку, а вскрыть его, то неплохо было бы обзавестись кабелем, который подключается к материнской плате напрямую. Это сильно уменьшит шансы того, что устройство в скором времени обнаружат.

Если устройство будет внутри системного блока, то можно воспользоваться D1 mini Pro V1.1.0, так как у нее есть разъем под внешнюю антенну — она увеличит радиус действия.

Заключение

Мы сделали усовершенствованную модель Bad USB Rubber Ducky — WiFi Ducky. Это довольно опасное устройство размером со спичечный коробок, причем его создание не требует больших вложений. Возможность изготовить его самостоятельно сильно облегчается наличием готовых плат Arduino и скетчей для них.

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

Можно записать в память WiFi Ducky скрипты, а затем выполнять их в любое время и на любой операционной системе — встроенной памяти хватит на тысячи строк кода. Дистанционное управление добавляет устройству универсальности по сравнению с локальными девайсами класса BadUSB. С ним можно делать на удаленном компьютере что угодно, словно ты сам сидишь за его клавиатурой.

Это будет уже не спайка двух отладочных плат, торчащая из USB-порта, а серьезный WiFi Ducky — более миниатюрный и надежный, не привлекающий внимания.

Защититься от такого девайса можно точно так же, как и от Rubber Ducky: необходимо заблокировать добавление нового HID-устройства средствами операционной системы либо комплексными системами защиты (Kaspersky, HEAT Software и прочие Endpoint Security).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *