Ограничения Teensy. Есть один нюанс, который сильно усложняет Teensy жизнь.
Поскольку мы используем эмуляцию HID- устройства, то мы можем говорить с системой, но не можем ее услышать. Это основное ограничение при написании пэйлоадов для Teensy, которое делает пэйлоады менее чувствительными к состоянию системы. Разработчику боевых нагрузок придется заранее определить все возможные ситуации и реакцию системы, потому что во время выполнения прочитать ответ системы будет невозможно.
Единственная вещь, которую Teensy может считать, когда используется в качестве клавиатуры, — это состояние кнопок CAPS, NUM и SCROLL. Еще одним ограничением является маленький размер памяти устройства, но с этим можно жить, особенно если подключить к Teensy дополнительный носитель данных, например SD- карту.
Hello world для железки. Teensy, как и платы Arduino, использует похожий процессор Atmel AVR, поэтому можно взять ту же среду разработки — Arduino Development Environment (arduino. ADE. Последняя бесплатно доступна для всех популярных ОС (Windows, Linux, Mac OS X) и, помимо редактирования кода, позволяет залить программу в микроконтроллер. Чтобы полноценно использовать ее для работы с Teensy, необходимо также установить дополнительный аддон Teensyduino (pjrc. Надстройка, в частности, сразу предоставляет возможность перевести Teensy в режим эмуляции клавиатуры: это делается в ADE через меню «Tools —> Boards —> USB Keyboard». Если вставить девайс в компьютер, то он сразу определится как клава. Однако происходить ничего не будет — пока ничего не запрограммировано.
Среда разработки Arduino Development Environment с установленным плагином для совместимости с Teensy. Что представляет собой программа или, как ее называют в здешней терминологии, скетч для Teensy? Разработка осуществляется с помощью С- подобного синтаксиса.
Программисту доступны переменные, методы, условные операторы, указатели — короче говоря, все, что нужно для счастья. Любой скетч должен содержать функции setup() и loop(): первая вызывается один раз во время запуска, а вторая в цикле выполняет написанный внутри нее код. Функции могут быть даже пустыми, однако присутствовать должны — иначе компиляция будет завершаться неудачей. Приведу пример простейшего кода: int count = 0; void setup() .
Причем ввод будет повторяться, потому что вызов осуществляется из функции loop(). Задержка, реализованная с помощью delay(), нужна для того, чтобы повторение ввода не происходило слишком быстро. В документации подробнейшим образом описываются более сложные случаи эмуляции и клавиатуры, и мышки, и джойстика — я же на этом описание программирования Teensy закончу. В ходе своего исследования я уже создал все необходимые скетчи, которые могут понадобиться пентестеру, и оформил их в виде готового набора инструментов Kautilya (code.
Тулкит Kautilya. В ходе лекций о Teensy я заметил, что очень часто у пентестеров банально не хватает времени для программирования микроконтроллера под свои нужды. В результате они просто отказываются от этого инструмента. Я решил максимально упростить задачу и написал на Ruby скрипт, спрашивающий некоторые параметры и на выходе выдающий готовый скетч, который можно загрузить в Teensy. Благодаря этому снабдить микроконтроллер боевой нагрузкой можно вообще без знания о том, как пишутся программы для микроконтроллера.
Управление тулкитом Kautilya осуществляется через консольное меню. Чтобы лучше понимать, что зашито внутри Kautilya, предлагаю рассмотреть, как бы выглядел пентест Windows 7 машины с помощью HID- устройства, если бы необходимо было начинать с нуля. Скорее всего, это были бы следующие этапы: Распознать операционную систему с точки зрения USB- буфера. Выяснить поддерживаемые команды и научиться с их помощью реализовывать нужные нам действия в системе с помощью Power.
Shell- и/или VBS- скриптов. Определить встроенные механизмы безопасности (такие как UAC и политика запуска Power. Shell- скриптов), которые могут проверять привилегированные команды, и затем найти способ их обходить. Узнать время, затрачиваемое ОС на выполнение различных команд. Записать команды и скрипты на плату Teensy. Узнать, какие фокусы может выкинуть командная строка, когда Teensy будет передавать команды (эмулировать ввод с клавиатуры) на машину жертвы. Постараться быть как можно незаметней на компьютере жертвы.
Протестировать пэйлоад и сделать окончательный скетч. Скомпилировать скетч и залить на Teensy. Присоединить девайс к машине жертвы или сделать так, чтобы она сделала это сама (например, с помощью социальной инженерии). Получить результат : ). INFOАвтор этой статьи живет в Индии, а тулкит Kautilya назван в честь индийского стратега, экономиста и политолога Чанакья (Каутилья — один из его псевдонимов). Следующие несколько строк могут выглядеть как самореклама ; ).
Kautilya автоматизирует шаги с первого по восьмой. Другими словами, с использованием тулкита исследователю достаточно: Выбрать через консольное меню Kautilya готовую боевую нагрузку и указать опции — в результате будет сгенерирован готовый скетч (*.
Залить скетч на плату Teensy. Присоединить девайс к машине- жертве.
Наслаждаться победой! В настоящий момент тулкит содержит в себе пэйлоады для Windows 7 и Linux (протестирован на Ubuntu 1.
Чтобы не быть голословным, предлагаю изучить некоторые из них и посмотреть, как они работают, если на машине жертвы используется Windows 7. Создаем скетч для дампа пользовательских паролей. Есть ли способ защититься? Я вижу два основных способа защиты от подобных атак на Windows- системах: Запретить установку съемных устройств — это можно сделать с помощью групповой политики безопасности (gpedit. Если перейти в «Административные шаблоны —> Система —> Установка устройства —> Ограничения на установку устройств», то ты увидишь различные настройки для ограничения установки устройств. Я бы рекомендовал включить опцию «Запретить установку съемных устройств», после этого ни одно устройство подключить к системе будет уже нельзя.
Кроме того, запрещено будет и обновление драйверов для уже установленных устройств. Установить новое устройство сможет только администратор, да и то только после активации опции «Разрешить администраторам заменять политики ограничения установки устройств». Имей в виду: если речь идет об организации, то это непременно обернется кошмаром для пользователей, которые, не обнаружив привычный Plug’n’Play, сразу же замучают админа просьбами посмотреть их компьютер.
А что делать? Поступить радикально и запретить физический доступ к USB- портам. К сожалению, чаще всего это не представляется возможным — в большой компании всегда останется лазейка. Некоторые производители материнских плат заявляют, что их защитные решения умеют блокировать подобные зловредные устройства (в том числе собранные на базе Teensy).
Но я бы рекомендовал не сильно доверять подобным заявлениям: проверял я тут одну защиту, и она была бесполезна чуть больше чем полностью. Запрещаем установку внешних устройств для предотвращения атак через USB- устройства. Примеры использования. Payload: скачать и выполнить. Как я уже говорил, боевая нагрузка выбирается через консольное меню Kautilya.
Один из простых пэйлоадов — Download and Execute, который загружает файл из интернета и запускает его на целевой системе. Естественно, при создании программы для микроконтроллера необходимо указать, откуда этот файл нужно взять. Интересно, что для хостинга бинарника предлагается разместить его на сервисе Pastebin. Kautilya/extras. В момент выполнения на машине- жертве программа скачивает текстовый файл, преобразует его обратно в исполняемый exe’шник и выполняет его в фоновом режиме. Это может быть windows reverse meterpreter (по сути, реверс- шелл): если подключить девайс с таким скетчем к исследуемому компьютеру, то пентестер очень скоро получит meterpreter- сессию. Причем нагрузка умеет обходить execution policy и не отображает никаких окон на целевом компьютере.