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 точку доступа с заданными параметрами и т.д.
Бочка дёгтя
Собственно основной недостаток HID эмулятора связан с отсутствием обратной связи: в память контроллера ничего нельзя записать с ПК, нельзя передать никакие параметры и нельзя никак управлять запуском команд. Стоит целевому ПК на полсекунды тормознуть с открытием командной строки, как стройный скрипт превратиться в хлам.
Второй существенный недостаток - труднопрогнозируемое время установки USB драйверов в операционной системе при первом подключении устройства. Т.к. команды в teensy начинают выполняться практически сразу после подачи питания на USB порт, в код программы приходится включать большую задержку (5-10 секунд). Если за это время Windows не успеет поставить драйвера - teensy в лучшем случае отработает в холостую (в худшем выложит пользователю в открытое окно Word'a всю свою начинку :)).
Третий недостаток - Teensy требуется время порядка нескольких секунд чтобы набить более или менее серьезный скрипт. Т.е. маскировка девайса резко падает с увеличением размера нагрузки.
Искушенный пользователь может вмиг вычислить teensy по мелькнувшему окну cmd и по установке драйвера составного USB устройства. Однако teensy позволяет, к примеру, подключить к контроллеру фотодиод и запускать нагрузку тогда, когда все уйдут домой из офиса и выключат свет!
Teensy++ (старший брат teensy) позволяет эмулировать ещё и мышку! Тщательно рассчитав пиксели, можно написать скрипт, который будет нажимать кнопки в GUI различных приложений. Однако наглядность процесса и отсутствие обратной связи с контроллером делают всё же такой тип атак малоэффективным.
Искушенный пользователь может вмиг вычислить teensy по мелькнувшему окну cmd и по установке драйвера составного USB устройства. Однако teensy позволяет, к примеру, подключить к контроллеру фотодиод и запускать нагрузку тогда, когда все уйдут домой из офиса и выключат свет!
Teensy++ (старший брат teensy) позволяет эмулировать ещё и мышку! Тщательно рассчитав пиксели, можно написать скрипт, который будет нажимать кнопки в GUI различных приложений. Однако наглядность процесса и отсутствие обратной связи с контроллером делают всё же такой тип атак малоэффективным.
На данный момент все известные мне средства защиты, блокирующие teensy, делают это по vendor-id и product-id, что конечно же очень легко обойти.
Ну и финальный вывод и еще одно правило компьютерной гигиены: не суй в свой компьютер всякую гадость!
[UPDATE] Много чего поменялось с тех пор, как я написал эту статью. Читайте продолжение, но уже на Хабре http://habrahabr.ru/post/153571/
[UPDATE] Много чего поменялось с тех пор, как я написал эту статью. Читайте продолжение, но уже на Хабре http://habrahabr.ru/post/153571/
Чтонибудь попроще для защиты есть, кроме как не сувать?
ОтветитьУдалитьМожет быть отключить политики, поставить галочку в реестре?
Тинзи - это клавиатура. Ты же не будешь запрещать политиками клавиатуру?
УдалитьА выглядит она так-же ужасно как на картинке или может быть замаскирована под флешку?
Удалитьесть уже готовые замаскированные девайсы - http://hakshop.myshopify.com/products/usb-rubber-ducky
УдалитьЭту придется маскировать + перепаивать разъем с миниЮСБ на полноценный =(
Насколько я помню в аккорде есть настройка позволяющая использовать только известные устройства, в том числе и usb. Вновь воткнутая teensy попросту не будет работать )
ОтветитьУдалитьЕсли они блокируют по vendor_id+product_id (95% что это так), то в тинзи можно выставить эти идентификаторы, подсмотрев модель клавиатуры компьютера. Или сделать "дубликат" легальной флешки.
УдалитьНу если vendor_id ты ещё можешь подделать и попытаться угадать тот, который разрешен системой защиты, то product_id врядли ты угодаешь.
УдалитьТо есть если применяется подход - запрещено всё, что не разрешено явно по id то штука не сработает.
product_id можно угадать по модели девайса. Если нет физического доступа к устройству, можно купить точно такое же в магазине и узнать его ИД.
Удалитьну вот...опять порты опечатывать ))
ОтветитьУдалитьСкажите пожалуйста, а как вы заставляете подключенную SD карточку отображаться как MassStorage девайс?
ОтветитьУдалить