Статьи

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

12.08.2012

/

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

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

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

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

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

Прочитать подробно и по шагам про настройку Teensy можно в соответствующей статье на Хабре. От себя я могу добавить несколько рекомендаций по работе контроллером:
1. Teensy стоит 16 долларов (с доставкой до Краснодара - 23$). Покупать Teensy стоит сразу с адаптером карты памяти. В таком случае "флешка" будет эмулировать сразу два устройства одновременно - клавиатуру и съёмный диск, что в разы увеличит маскировку;
2. Существуют готовые аналоги с памятью и в подходящем корпусе - например, USB RubberDucky;
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" на "KingstoneDataTraveler 2Gb". Теперь наш Teensy станет очень похож на USB флеш-память от Kingstone;
4. Много интересного материала по использованию Teensy есть в блоге NikhilMittal, который является автором фреймворка для teensy Kautilya;
5. Если первым делом вбить команду "cmd /Q /D /T:7F /F:OFF /V:OFF /K" и "@echo off && mode con:COLS=15 LINES=1 && title . &&cls", то окно cmd будет выглядеть так (справа стандартное, слева - с твиком), что также серьезно скажется на маскировке.
stat2_2.jpg

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

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

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

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

stat2_3.jpg

Бочка дёгтя

Собственно основной недостаток HID-эмулятора связан с отсутствием обратной связи: в память контроллера ничего нельзя записать с ПК, нельзя передать никакие параметры и нельзя никак управлять запуском команд. Стоит целевому ПК на полсекунды притормозить с открытием командной строки, как стройный скрипт, "вбиваемый" Teensy, превратится в беспорядочный набор символов.

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

Третий недостаток - Teensy требуется время порядка нескольких секунд, чтобы набить более или менее серьезный скрипт. Т.е. маскировка девайса резко падает с увеличением размера нагрузки.

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

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

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

Таким образом, единственным эффективным методом борьбы с подобными устройствами будет опечатывание USB-портов, что резко сузит спектр решаемых задач на ПК пользователя.