Не все флешки одинаково полезны или боевые HID эмуляторы

Аватар пользователя merced2001
Автор: Агеев Артем, itsec.pro
(0)
()
На днях наконец-таки мне дошла посылка из Штатов с Teensy!

Teensy - это готовая плата с программируемым микроконтроллером + miniUSB интерфейс для взаимодействия с компьютером.
Параллельно с тысячами всевозможных добрых способов применения teensy, существуют парочка ... альтернативных :).

При подключении к компьютеру, teensy может эмулировать нажатие клавиш клавиатуры и выполнять произвольные команды в операционной системе от имени пользователя.

Теперь чуть подробней...

Когда вы подключаете новую клавиатуру к своему компьютеру, Windows не спрашивает у вас  пинкод, не проверяет цифровой сертификат производителя, не просит повысить привилегии до администраторских, даже не пытается уведомить пользователя о подключении нового устройства ввода никак, кроме небольшого стандартного значка установки новых драйверов в таскбаре. 
Устройства ввода в операционной системе считаются  абсолютно доверенными и слишком простыми для хакерской атаки. Поэтому и появился такой оригинальный вектор компьютерных атак как использование HID эмуляторов.
В общих чертах атака выглядит так: пользователь вставляет "флешку" чтобы "скинуть документы". После установки драйверов, флешка эмулирует с большой скоростью нажатие клавиш Win+R (открыть командную строку с привилегией администратора), вбивает команду "cmd", нажимает Enter и начинает вбивать команды, потом закрывает консоль, эмулируя нажатие Alt+F4. Если команды небольшие - то процесс занимает доли секунды. Весьма вероятно что пользователь даже не заметит мелькнувшего окна cmd.

Прочитать подробно и по шагам про настройку teensy можно в соответствующей статье на Хабре. Я лишь добавлю пару твиков, которые откопал сам.

1. Teensy стоит 16 долларов (с доставкой до Краснодара - 23$). Покупать teensy стоит сразу с адаптером карты памяти. В таком случае "флешка" будет эмулировать сразу два устройства одновременно - клавиатуру и съёмный диск, что в разы увеличит маскировку;
2. Существуют готовые аналоги с памятью и в подходящем корпусе - например USB Rubber Ducky;
3. Для маскировки устройства следует поменять VENDOR_ID и PRODUCT_ID. Открываем файл \arduino-1.0.1-windows\arduino-1.0.1\hardware\teensy\cores\usb_hid\usb_private.h и меняем соответствующие параметры на параметры флешки Kingstone, к примеру. Кроме того пролистываем файл и меняем параметр STR_PRODUCT с "Teensy" на "Kingstone DataTraveler 2Gb".
4. Много интересного материала по использованию teensy есть на блоге Nikhil Mittal, который является автором фреиморка для teensy Kautilya
5. Если первым делом вбить команду "cmd /Q /D /T:7F /F:OFF /V:OFF /K" и "@echo off && mode con:COLS=15 LINES=1 && title . && cls", то окно cmd будет выглядеть так (справа стандартное, слева - с твиком):
что так же серьезно скажется на маскировке. 

Теперь рассмотрим возможные сценарии, которые можно реализовать с помощью teensy

Самый просто сценарий - добавить пользователя с правами локального администратора в систему: 
net user r00t t00r /add
net localgroup Администраторы r00t /add
Этот сценарий отработает мгновенно и кроме мелькнувшего окна cmd пользователь ничего не заметит.

Но можно осуществить и намного более хитрые атаки, если подключить к работе vbs и powershell. Открыв во фреймворке Kautilya папку lib/src можно найти много интересных нагрузок для teensy:
-  отправить информацию о системе/содержимое заданного файла на сайт pastebin.com с помощью скрытого окна Internet Explorer;
- изменить DNS сервера (т.е. следить за интернет активностью пользователя);
- загрузить и запустить исполняемый файл;
- отредактировать файл HOSTS (нужно для подмены вебстраниц, например, банк-клиента);
- включить протокол RDP и сконфигурировать его для подключения злоумышленника;
- установить кейлоггер или снифер;
- поднять wifi точку доступа с заданными параметрами и т.д.

Самой короткой, изящной и прикольной мне показалась нагрузка, эксплуатирующая до сих пор незакрытую уязвимость повышения привилегий в Windows через запуск командной строки как дебаггера к процессам sethc.exe и utilman.exe.

Бочка дёгтя

Собственно основной недостаток HID эмулятора связан с отсутствием обратной связи: в память контроллера ничего нельзя записать с ПК, нельзя передать никакие параметры и нельзя никак управлять запуском команд. Стоит целевому ПК на полсекунды тормознуть с открытием командной строки, как стройный скрипт превратиться в хлам.
Второй существенный недостаток - труднопрогнозируемое время установки USB драйверов в операционной системе при первом подключении устройства. Т.к. команды в teensy начинают выполняться практически сразу после подачи питания на USB порт, в код программы приходится включать большую задержку (5-10 секунд). Если за это время Windows не успеет поставить драйвера - teensy в лучшем случае отработает в холостую (в худшем выложит пользователю в открытое окно Word'a всю свою начинку :)). 
Третий недостаток - Teensy требуется время порядка нескольких секунд чтобы набить более или менее серьезный скрипт. Т.е. маскировка девайса резко падает с увеличением размера нагрузки.

Искушенный пользователь может вмиг вычислить teensy по мелькнувшему окну cmd и по установке драйвера составного USB устройства. Однако teensy позволяет, к примеру, подключить к контроллеру фотодиод и запускать нагрузку тогда, когда все уйдут домой из офиса и выключат свет!

Teensy++ (старший брат teensy) позволяет эмулировать ещё и мышку! Тщательно рассчитав пиксели, можно написать скрипт, который будет нажимать кнопки в GUI различных приложений. Однако наглядность процесса и отсутствие обратной связи с контроллером делают всё же такой тип атак малоэффективным.

На данный момент все известные мне средства защиты, блокирующие teensy, делают это по vendor-id и product-id, что конечно же очень легко обойти.

Ну и финальный вывод и еще одно правило компьютерной гигиены: не суй в свой компьютер всякую гадость!


[UPDATE] Много чего поменялось с тех пор, как я написал эту статью. Читайте продолжение, но уже на Хабре http://habrahabr.ru/post/153571/
Оцените материал:
Total votes: 18
 
Комментарии в Facebook
 

Вы сообщаете об ошибке в следующем тексте:
Нажмите кнопку «Сообщить об ошибке», чтобы отправить сообщение. Вы также можете добавить комментарий.