Teensy - это готовая плата с программируемым микроконтроллером + miniUSB интерфейс для взаимодействия с компьютером.
Параллельно с тысячами всевозможных добрых способов применения teensy, существуют парочка ... альтернативных :).
При подключении к компьютеру, teensy может эмулировать нажатие клавиш клавиатуры и выполнять произвольные команды в операционной системе от имени пользователя.
Теперь чуть подробней...
name='more'> Когда вы подключаете новую клавиатуру к своему компьютеру, 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-windowsarduino-1.0.1hardwareteensycoresusb_hidusb_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/