Hardware Hacking: Инъекции в беспроводной интерфейс клавиатуры

Перевод @n3m351da @in51d3 2020

Оригинальный текст

Вступление

Я изучал работы Bastille и мне стало интересно проверить, реализуемы ли инъекции в беспроводной интерфейс клавиатуры. К моему удивлению, мне удалось воспроизвести такую атаку на недорогую клавиатуру Logitech, которая была у меня сравнительно давно. Эта клавиатура (Logitech K400r) все еще доступна в моем местном магазине Walmart по цене менее 20 долларов. К таким атакам наиболее уязвимы беспроводные устройства, использующие донгл-приемник Unifying.

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

Сценарий подобной беспроводной атаки может быть реализован с помощью довольно недорогого радио-передатчика, крошечного скрипта и на расстоянии до 100 метров!

Оборудование: Crazy Radio PA dongle

Клавиатура: Logitech K400r

FCC ID: JNZYR0019

Для этого проекта, получение информации FCC не является необходимостью, однако было полезно узнать, что оно предназначено для беспроводной работы в диапазоне WiFi на частотах в диапазоне 2,405–2,474 ГГц.

Полезная нагрузка для инъекции:

При подготовке к атаке нам необходимо создать короткий текстовый файл на основе языка сценариев Rubber Ducky (дополнительная информация). Используя любой текстовый редактор (nano, vi, блокнот и т. д.), введите следующее и сохраните файл:

DELAY 500
GUI r
DELAY 500
STRING notepad.exe
ENTER
DELAY 1000
STRING Hello World!

Пример использования текстового редактора nano

  • GUI r имитирует зажатие клавиши Windows нажатие кнопки ‘r’, чтобы открыть окно "Run" ("Выполнить").

  • STRING notepad.exe набирает notepad.exe в окне "Run", открывая Блокнот.

  • STRING Hello World! вводит в открытом окне Блокнота текст "Hello World!"

Примечание. Для обеспечения надежной работы при использовании Rubber Ducky может потребоваться прописать в скрипте задержки. При реализации нашей атаки с использованием CrazyRadio задержки не потребуются. Это связано с тем, что мы не загружаем USB драйверы и не пытаемся обнаружить USB-донгл, вставленный в порт. Задержки в моем случае предназначены для демонстрационных целей. Если бы мы хотели выполнить наш сценарий и внедрить полезную нагрузку как можно быстрее, чтобы избежать обнаружения нашего воздействия человеком, то мы бы не использовали бы задержки.

Загружаем JackIt

git clone https://github.com/insecurityofthings/jackit.git
cd jackit
pip install -e

Запускаем JackIt с полезной нагрузкой ‘hello.txt’

Когда целевое устройство найдено, нажимаем CTRL-C и вводим номер целевого устройства из списка для отправки на него полезной нагрузки

ПРИМЕЧАНИЕ: Для проведения этой атаки не требуется знать MAC-адрес. Все, что требуется, - это целевой USB адаптер и наличие записи ТИПА - Logitech HID, Microsoft HID и т. д. (Если сканирование не определит устройство - поле ТИП будет пустым, то скрипт не отработает)

УСПЕХ!!! Видео

Облачная инъекция в PowerShell

Поняв, что внедрение полезной нагрузки с помощью беспроводного интерфейса стало возможным, моим следующим шагом стала попытка внедрения полезной нагрузки PowerShell. Сначала я создал репозиторий github для размещения моего сценария инъекции в PowerShell.

  • Сначала я создал репозиторий github для размещения моего сценария инъекции в PowerShell.

  • Затем, я изменил свой сценарий «hello.txt» для запуска PowerShell вместо блокнота и изменил строку инъекции с Hello World! на командлет PowerShell Invoke Expression (IEX), который загружает сценарий PS1 и выполняет его на целевом компьютере.

  • Запуск JackIt с модифицированным скриптом «hello.txt» дал желаемый результат! Я смог внедрить выполнение PowerShell из облака, используя известные уязвимости в Logitech HID.

Заключение

Я рад, что начал с уязвимой клавиатуры, поскольку эта атака не сработала ни с одной из имеющихся у меня мышей, хотя они явно являются приемниками Logitech Unify и имеют оранжевую звездочку на USB адаптерах. Я подозреваю, что это может быть связано с тем, что Logitech реализовали обновляемую прошивку USB адаптера, в то время как многие мыши используют одноразовую программируемую флэш память.

Microsoft выпустила обновление безопасности, которое проверяет, есть ли передаваемая полезная нагрузка, поступающая от USB адаптера "QWERTY" и если ТИП устройства - мышь, то пакет будет проигнорирован. Однако, насколько я могу судить, это обновление безопасности не является обязательным. Основываясь на этой информации, я решил заказать несколько мышей Microsoft и протестировать эти устройства, чтобы продолжить свои исследования.

Тем не менее, я подозреваю, что в дикой природе существуют сотни тысяч уязвимых клавиатур и мышей, и к этому часто упускаемому из виду вектору атаки нужно относиться серьезно. Большинство пользователей могут подумать: «О, это просто клавиатура… это просто мышь… какой вред они могут причинить?». Дело в том, что инъекция нажатий клавиш, которая отображает «Hello World!» с легкостью может стать инъекцией PowerShell, которая запускает Metasploit, загружает вредоносное ПО или вирус, извлекает конфиденциальные данные, повышает привилегии, закрепляется в системе и т. д.

Возможное смягчение последствий может заключаться в использовании Bluetooth или проводных устройств или удалении USB адаптеров, в то время, когда они не используются, или своевременном получении обновлений прошивки и безопасности. Очевидно, что эти параметры могут ухудшить общий «пользовательский опыт», поэтому большинство из них могут быть не реализованы вообще.