Страницы

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

На днях наконец-таки мне дошла посылка из Штатов с 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/

10 комментариев:

  1. Чтонибудь попроще для защиты есть, кроме как не сувать?

    Может быть отключить политики, поставить галочку в реестре?

    ОтветитьУдалить
    Ответы
    1. Тинзи - это клавиатура. Ты же не будешь запрещать политиками клавиатуру?

      Удалить
    2. А выглядит она так-же ужасно как на картинке или может быть замаскирована под флешку?

      Удалить
    3. есть уже готовые замаскированные девайсы - http://hakshop.myshopify.com/products/usb-rubber-ducky
      Эту придется маскировать + перепаивать разъем с миниЮСБ на полноценный =(

      Удалить
  2. Насколько я помню в аккорде есть настройка позволяющая использовать только известные устройства, в том числе и usb. Вновь воткнутая teensy попросту не будет работать )

    ОтветитьУдалить
    Ответы
    1. Если они блокируют по vendor_id+product_id (95% что это так), то в тинзи можно выставить эти идентификаторы, подсмотрев модель клавиатуры компьютера. Или сделать "дубликат" легальной флешки.

      Удалить
    2. Ну если vendor_id ты ещё можешь подделать и попытаться угадать тот, который разрешен системой защиты, то product_id врядли ты угодаешь.

      То есть если применяется подход - запрещено всё, что не разрешено явно по id то штука не сработает.

      Удалить
    3. product_id можно угадать по модели девайса. Если нет физического доступа к устройству, можно купить точно такое же в магазине и узнать его ИД.

      Удалить
  3. Скажите пожалуйста, а как вы заставляете подключенную SD карточку отображаться как MassStorage девайс?

    ОтветитьУдалить