Gspy hid device windows что это

990x.top

Простой компьютерный блог для души)

Устройства HID (Human Interface Devices) — что это такое?

Приветствую. Данная заметка посвящена категории компонентов, которую можно обнаружить в диспетчере Windows. Постараемся выяснить предназначение, узнать некоторые особенности.

Устройства HID (Human Interface Devices) — что это такое?

Категория USB-устройств для взаимодействия с человеком — например клавиатура, мышка.

Обычно это устройства ввода, при помощи которых можно писать текст, рисовать (графический планшет), управлять курсором и т.д.

Категория HID — как посмотреть?

Windows позволяет просмотреть все подключенные устройства к компьютеру, как внутренние, так и внешние.

Для этого предназначен специальный инструмент — специальный Диспетчер, вызвать который можно так:

  • Зажмите Win + R, появится окошко Выполнить, вставьте команду devmgmt.msc, нажмите ОК.
  • Отобразится окно с перечислением компонентов ПК, они будут разделены на категории.

Команду devmgmt.msc можно также запустить используя диспетчер задач.

С каждым устройством в данной категории можно:

  1. Обновить драйвера.
  2. Посмотреть свойства.
  3. Отключить/Включить.
  4. Удалить вместе с драйверами (без необходимости не рекомендуется делать).

Обновлять драйвера без причины нет смысла. Если вышла новая версия драйвера — не спешите устанавливать. Новая версия может быть глючной, содержать баги. Мышка, клавиатура, встроенная сетевая плата, Wi-Fi — не те устройства, на которые стоит устанавливать последний драйвер, если старый работает стабильно. Это не касается видеокарты.

Заключение

  • HID или Human Interface Devices — основные устройства, которые используются для работы с персональным компьютером (например мышь, клавиатура).
  • Отключать без необходимости не стоит.

HID-клавиатура: что это такое и что делать, если она не работает или не распознается компьютерной системой?

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

Human Interface Device: что это за оборудование в общем смысле?

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

Для их подключения используются либо USB-интерфейсы и соответствующие порты, либо беспроводные модули Wi-Fi и Bluetooth. Последние два, кстати сказать, тоже относят к классу USB HID. С Wi-Fi-модулями все понятно, ведь те же мыши и клавиатуры беспроводными можно назвать весьма условно, поскольку для их подключения к основному компьютерному блоку как раз и нужен тот самый беспроводный переходник, вставляемый в соответствующий USB-порт. С Bluetooth полной ясности нет, поскольку при подключении к тем же ноутбукам со встроенными «синезубыми» модулями порты USB могут не понадобиться вообще.

HID-клавиатура: что это такое?

Теперь несколько слов непосредственно о клавиатурных блоках. Давайте посмотрим, какие есть виды HID-клавиатур. Что это за устройства, нетрудно сообразить, если просто оценить их визуально. Среди них встречаются и стандартные блоки по типу тех, которые используются на стационарных ПК (стандарт PS/2), и уменьшенные по размерам клавиатуры без цифровых панелей по типу тех, что устанавливаются на ноутбуках с диагоналями экрана 13 дюймов и меньше.

Также можно встретить целые мультимедийные системы, игровые усеченные панели, клавиатуры на мягкой подкладке, сворачивающиеся чуть ли не в трубочку, совершенно миниатюрные блоки с 22, 18, 11 или 10 клавишами и т. д. Вообще считается, что теоретически можно создать блок с 256 клавишами (диапазон ввода/вывода 0-255). Но особой популярностью в последнее время пользуются устройства, на которых положения основных кнопок с литерами и символами изменены, что соответствует заводской установке нестандартной раскладки.

Что делать, если USB-клавиатура не работает: простейшее решение

С основными понятиями ясность внесена. Теперь кратко остановимся на ситуациях, связанных с тем, что клавиатура ПК стандарта HID по каким-то причинам не работает. Устранить неполадки можно несколькими простейшими методами. Первым и самым простым решением, поскольку клавиатурный блок подключается либо непосредственно через USB-порт, либо через беспроводный модуль (но тоже через USB), является смена используемого порта. Вполне возможно, что он просто не работает или имеет другой класс (например, клавиатура рассчитана на подключение через интерфейс USB 3.0, а кабель вставлен в порт USB 2.0).

Отличить разъемы и штекеры можно по цвету (USB 3.0 соответствует синяя окраска).

Переустановка драйвера

Если учесть, что для любого, имеющегося в системе устройства (внешнего или внутреннего) и его корректной работы необходимо специальное управляющее программное обеспечение, называемое драйвером, логично предположить, что проблема может быть именно в нем. Убедиться в этом можно совершенно просто, если вызвать «Диспетчер устройств». Если оборудование с неполадками будет обнаружено, его сразу можно будет увидеть в списке HID-устройств, для которых драйвер не установлен или в его функционировании произошли сбои. Обычно производители поставляют носители с драйверами под свою периферию, так что переустановить драйвер можно самостоятельно.

Читайте также:  Unity player для linux

Но в большинстве случаев это не нужно, поскольку все оборудование класса HID должно распознаваться любой компьютерной системой и без этого.

В этой ситуации лучше всего удалить проблемное устройство целиком и полностью, а затем перезагрузить компьютер. По идее, Windows найдет и установит недостающий драйвер сама.

Управляющее ПО USB-контроллеров

Нередко причина может крыться даже не в самом оборудовании или его драйверах, а в управляющем ПО USB-контроллеров.

В этом случае рекомендуется обновить драйверы всех контроллеров, находящихся в соответствующем разделе все того же «Диспетчера устройств». Для установки самых свежих версий драйверов в обоих случаях можно воспользоваться специальными программами вроде iObit Driver Booster, которые способны находить и устанавливать обновленное программное обеспечение без участия пользователя.

Включение USB в BIOS

Остается добавить еще пару слов о HID-клавиатурах. Что это за устройства, понятно. Как они работают и для чего предназначены, тоже вроде бы ясность есть. Но вот что делать, если вышеперечисленные методы устранить проблему работоспособности так и не смогли? По всей видимости, хотя поддержка периферии этого класса заявлена изначально, что-то могло произойти с настройками первичной системы ввода/вывода.

Для верности зайдите в параметры BIOS/UEFI сразу же после включения компьютера и найдите там пункты вроде USB Keyboard Support или USB Legacy Support. Для них должен быть выставлен параметр Enabled. В некоторых модификациях BIOS можно встретить настройки вроде EHCI Hand-Off и XHCI Hand-Off, отвечающие за ручное переключение между стандартами USB 2.0/3.0. При наличии на компьютере именно Windows-системы они должны быть деактивированы (значение Disabled). В устаревших версиях BIOS также встречается параметр Plug & Play OS, позволяющий автоматически распознавать подключаемые PNP-устройства. Он должен быть включен (значение Yes).

Злой HID. Делаем и программируем хакерский девайс для HID-атак

Содержание статьи

HID-атаки

HID-атака — хитрая разновидность BadUSB. Ее суть сводится к тому, что в USB-порт вставляется простейший хакерский девайс, эмулирующий устройство ввода. Практически любая современная ОС поддерживает plug-n-play и содержит универсальный драйвер устройства каждого класса. Хакерский девайс автоматически определяется ОС как нужный нам Human Interface Device — HID. Далее ОС безо всяких проверок принимает его команды.

Есть много готовых девайсов для атак через USB-порт. Например, Rubber Ducky и ее разновидности. На мой взгляд, интереснее разобраться, как сделать такую штуку самому. Это довольно просто (когда знаешь как) и дешево. Нам даже флешка на этот раз не понадобится.

Преимуществ HID-атаки перед атакой вручную сразу несколько: это скорость, незаметность и автоматизация. Все необходимые действия выполнятся быстрее, чем ты сможешь набрать то же на клавиатуре, и без опечаток (если их не было изначально). Подключить к USB-порту миниатюрное устройство можно за пару секунд. Это не такое палево, как садиться за чужую клавиатуру и поминутно оглядываться через плечо. Из-за малых габаритов самодельный девайс легко спрятать и пронести через охрану даже на режимный объект. В крайнем случае можно просто выдать его за флешку и «случайно» уничтожить легким нажатием ботинка, после чего изготовить хоть мешок других таких же.

WARNING

Статья написана в исследовательских целях. Вся информация в ней носит ознакомительный характер. Ни автор, ни редакция не несет ответственности за неправомерное использование упомянутых в ней аппаратных платформ, программ и техник!

Выбираем аппаратную платформу

Сотворить такую хакерскую железку можно и на одноплатниках (вроде Raspberry Pi), но это все равно что перевозить ноутбук на фуре. Есть «братья меньшие» не такие известные, но не менее «злые» и опасные в руках из плеч. По сути, для выполнения HID-атаки нам необходим микроконтроллер, USB-порт и минимальная электронная обвязка, чтобы это все заработало.

Arduino Micro Pro

На мой взгляд, это один из идеальных кандидатов на роль хакерского девайса.

Arduino Micro Pro

Xakep #234. Взломать iPhone

Плата размером 33×16 мм работает на микроконтроллере ATmega32u4 и имеет на борту 28 Кбайт свободной памяти (вообще памяти 32 Кбайт, но 4 Кбайт уже заняты загрузчиком). С ней очень легко работать, так как проект Arduino хорошо поддерживается и для него написано много документации. Также для него есть готовая среда разработки Arduino IDE с дистрибутивами для Windows, Linux и macOS. Купить плату можно от 350 рублей.

Teensy Low Cost

Хорошая альтернатива — семейство плат Teensy, совместимых с Arduino. С ними также можно использовать Arduino IDE. Например, плата Teensy LC размером 17×35 мм оснащена процессорным ядром ARM Cortex-M0+ и 64 Кбайт памяти. Купить ее в России может быть проблематично (основной упор делается на продажи Teensy 3.2–3.6), но заказать из-за рубежа вполне возможно. Цены на Teensy LC начинаются от 10 долларов.

Digispark

Многие думают, что Digispark — это самая подходящая плата для HID-атак. Да, она выигрывает по некоторым параметрам у остальных: крошечный размер 18×22 мм, практически нет лишних функций (и точек отказа), USB-разъем типа А и смешная цена порядка 100–150 рублей.

Однако в использовании она не так проста. Даже подключать ее стоит в порт USB 2.0 (или через USB-хаб v.2.0) либо лезть в BIOS, отключать xHCI и выставлять режим USB 3.0 порта как USB 2.0 compatible. Обратная совместимость у версий USB 3.0 и 2.0 заявлена, но порой нужен бубен, чтобы она реально заработала, особенно на Windows 10.

Digispark

Работает данная плата под управлением микроконтроллера Attiny85. С памятью у нее негусто — всего 8 Кбайт, из которых два уже заняты загрузчиком. Совсем не вдохновляет ограничение ROM в 512 байт под исполняемый код, но оптимизация тебе в помощь.

Читайте также:  Установочный образ операционной системы mac os x

Процессор (если его можно так назвать) опять же совместим с Arduino IDE, только желательно использовать версию 1.6.5r2, а 1.6.6 и 1.6.7 не рекомендуется вовсе. Digispark Wiki любезно предоставляет мануал по «вживлению» этой платы в Arduino IDE, или можно скачать уже специально заточенные версии ПО.

Альтернативы

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

NodeMCU и SparkFun с микроконтроллером ESP8266. Этот чип разрабатывался с направлением на поддержку Wi-Fi, поэтому платы с беспроводным модулем получились довольно большими. NodeMCU имеет размер 60×30 мм при не самой выгодной цене от 400 рублей. Однако если планируется многоэтапная атака, то беспроводное подключение будет совсем не лишним.

SparkFun в целом неплох, но смущает ценой (от 17 долларов за копеечный процессор). Однако его контроллер совместим с Arduino IDE, что делает разработку удобной.

Функционально Particle Photon похож на платы с ESP8266, но его цена гораздо выше. На борту у него довольно дорогой и ненужный для HID-атак ARM Cortex M3 STM32F205RGY6 с Wi-Fi-модулем Broadcom BCM43362, что поднимает цену до 2000 рублей и выше. Он будет оправдан в том случае, если помимо эмуляции клавиатуры планируется выполнять какие-то более сложные задачи, требующие универсального процессора архитектуры ARM.

Обрати внимание, что из всех рассмотренных плат лишь Digispark оснащен USB-портом типа А. Остальные имеют разъемы micro-USB и mini-USB, поэтому советую сразу обзавестись OTG-адаптером на интерфейс платы или кабелем для подключения нашего хакерского девайса к компу.

Делаем хакерский девайс за пять долларов

Приступим к практической части на примере платы Arduino micro Pro и переходника mini-USB ↔ USB Type A. В качестве основной ОС используется Kali Linux (4.14.0-kali3-amd64), но на других сборках Linux и в Windows проблем возникнуть не должно. Arduino IDE v. 1.8.6 скачана с официального сайта. В качестве жертвы выбран тот же компьютер.

Готовим софт

Скачиваем дистрибутив, распаковываем. В каталоге лежит файл с символичным названием install.sh. Его и запустим на исполнение:

Минуту-две смотрим на надпись Adding desktop shortcut, menu item and file associations for Arduino IDE. и вуаля! На рабочем столе появляется ярлык для запуска.

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

Командой lsusb можно проверить, что устройство определено верно и все идет по плану (Arduino Micro Pro определяется как Leonardo).

Следующая команда покажет порт, на котором повис наш Leonardo:

У меня это ttyACM0 .

ls /dev/ | grep tty

Теперь можно открыть саму IDE. Сразу после запуска идем в меню «Инструменты» и в разделе «Платы» выбираем Arduino Leonardo. Там же в «Инструментах» выбираем нужный порт (он там, скорее всего, будет один) из списка tty.

После этих действий связь платы с компьютером установлена, программное обеспечение настроено, можно переходить к написанию скетча (так называют код для Arduino-совместимых макетных плат).

После запуска Arduino IDE картинка будет следующая.

Интерфейс Arduino IDE

Есть еще один вариант запустить подобие Arduino IDE. На сайте представлен Arduino Web Editor. На мой взгляд, он менее удобен, но тут уже кому как по вкусу. Для его использования будет необходимо зарегистрироваться на сайте либо авторизоваться через Google-аккаунт. Также для связи браузера с устройством потребуется установить плагин (он есть для Chrome и Firefox). Его удобство в том, что все написанные скетчи будут онлайн (с любой точки земли можно получить доступ к ним), но я в таких тонких деталях предпочитаю локальную работу.

Интерфейс Arduino Web Editor

В остальном редакторы похожи.

Изначально присутствует заготовка из void setup() и void loop() . Напомню, что код, написанный в функции setup(), будет исполняться сразу при подаче питания на плату, причем он исполнится один раз. Функция loop() отреагирует на питание таким же образом, вот только повторяться действие будет постоянно (цикл с бесконечным счетчиком и неизменным кодом на каждый проход).

Пишем скетч

Нам нужно, чтобы микроплата Arduino выдавала себя за клавиатуру. Для этого в самом начале следует добавить библиотеку Keyboard.h .

Далее основные элементы, которыми мы будем пользоваться:

  • Keyboard.begin() — строка необходима для начала эмуляции клавиатуры;
  • Keyboard.print() — вводит заданный текст;
  • Keyboard.press() — зажимает указанную клавишу;
  • Keyboard.release() — отпускает указанную клавишу;
  • Keyboard.releaseAll() — отпускает все клавиши;
  • delay() — задает период ожидания (между командами или для начала выполнения действия).

Ключи нажимаемых клавиш можно найти тут. Для простоты мы говорим «нажимаем/отпускаем клавишу», подразумевая, что контроллер отправляет ее скан-код, имитируя нажатие командами Keyboard.press/Keyboard.release.

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

Задается она вот такой конструкцией:

В скетче указывается как function_name(). Для начала другие элементы управления платой нам не понадобятся.

Теперь можно попробовать написать свой первый скетч. Ведь в теории между теорией и практикой разницы нет, а на практике — есть.

В качестве PoC используем такую задачу: после подключения нашего девайса в USB-порт на компе с Linux должен автоматически открыться терминал, а затем в домашнем каталоге создаться файл с содержимым Hello World , который открывается в текстовом редакторе (у меня будет Leafpad).

Скетч выглядит следующим образом.

Код задания

В самом начале указана знакомая всем сишникам конструкция #include c указанием на использование библиотеки Keyboard.h . Как уже говорилось выше, она нужна для того, чтобы наша ардуина смогла выдать себя за клавиатуру.

Читайте также:  Виндовс 10 что за обновление windows

В коде повторяется нажатие клавиши Enter три раза, поэтому удобнее создать отдельную функцию pressEnter() , что я и сделал. Обрати внимание: она находится за пределами setup(), а между нажатиями клавиши Enter вставлена задержка (ниже поясню, зачем она нужна).

Далее идет основная функция void setup() .

Сложно? Пока нет, но станет сложнее, когда вместо Hello World ты запишешь в файл код зловреда и запустишь его на исполнение.

Поясню выставление пауз: тут нужен трепетный подход, потому как ОС может не успеть отреагировать на команды. Допустим, ты не выставил паузу и подключил свою ардуину. Она начинает выполнять записанные действия еще до того, как операционная система поймет, что это за устройство, и подключит его как клавиатуру. То есть половина команд просто уйдет в никуда, и нужного результата мы не получим. Такая же история между нажатием клавиш и набором текста. Нашей жертве (компу) необходимо давать время, иначе она не поймет, чего от нее вообще хотят.

Есть еще один важный нюанс с раскладкой клавиатуры. Мы написали код, ориентированный на английскую раскладку. Если в момент подключения нашего устройства к атакуемому компьютеру раскладка будет не та, под которую писался скетч, то нужного нам действия не получится. Горячие и функциональные клавиши, конечно, отреагируют как надо, а вот с набором текста возникнут проблемы. Вместо «terminal» получится «еукьштфд», со всеми вытекающими последствиями.

Примеры атак

При проведении реальных HID-атак можно начать с быстрого создания локального пользователя. Демонстрирую это на примере Windows 10 сборки 1607.

Создаем пользователя

Согласись — удобно. Незаметно вставил микроардуину в USB-порт чужого компа, и через несколько секунд на нем уже появилась локальная учетка с заданными тобой параметрами логин/пароль.

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

Загружаем файл с FTP

Поясню момент с файлом: да, можно выполнить все команды вводом, но суть опять в тайм-ауте исполнения. Мы не знаем, как долго может сервер реагировать на команды (на это влияет скорость интернет-соединения, скорость работы самого компьютера и еще куча разных факторов). Также стоит учесть то, что ты можешь использовать в своих тестах SSD (и все вроде бы работает), но при подключении к компьютеру с HDD. думаю, ты уловил смысл.

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

Как защититься от HID-атак

Как мне кажется, самый надежный способ защиты для любой ОС — блокировать учетную запись (паролем, RFID-чипом или биометрическим сканером), когда уходишь из-за компа. Фишка атаки в беспалевности и скорости, поэтому вряд ли пентестер будет вставлять такую штуку в заблокированный компьютер (хотя в некоторых довольно крупных организациях девочки из бухгалтерии практикуют не блокировку компьютера, а выключение монитора. Как ты понимаешь, это не подойдет). Также можно совсем отключить незанятые USB-порты (в BIOS или физически), но что помешает атакующему вытащить легитимную клаву и подключить вместо нее эмулятор на ардуине? Только настройки политики безопасности и сторонний софт для контроля подключений по USB.

Что касается ОС Windows, то тут есть несколько решений. Во-первых, комплексные антивирусы. Они уже научились определять класс BadUSB и блокировать такие устройства. К примеру, в серверной части «Антивируса Касперского» при настройке политик безопасности есть функция «Защита от атак BadUSB».

Настройка политики безопасности с сервера управления Kaspersky

Во-вторых, есть средства борьбы с подобного рода атаками при помощи групповых политик. Необходимо открыть gpedit.msc , пройти цепочку «Конфигурация компьютера → Административные шаблоны → Система → Ограничения на установку устройств». В этом разделе есть несколько правил. Нам нужно «Запретить установку устройств, не описанных другими параметрами политики». Суть правила заключается в том, что при его включении драйвер нового устройства не будет автоматически установлен, если только этот девайс прямо не указан в политиках. Есть, конечно, небольшое неудобство в данном методе, но если все грамотно настроить, то проблем не будет.

Настройка правил групповой политики Windows 10

В своих исследованиях защиты от HID-атак я использовал в качестве жертвы комп с Windows 10 (1607). В первом случае антивирь Касперского сработал на ура. Во втором ОС сама заблокировала мое устройство. Правда, когда я попытался подключить вторую клавиатуру к компьютеру, тоже получил отказ.

Для Linux можно воспользоваться udev и его правилами. Необходимо создать файл /etc/udev/rules.d/10-usbblock.rules и вписать в него следующее содержимое (классы можно блокировать любые):

Теперь можно заблокировать добавление новых HID-устройств командой

А вот команда для разблокировки:

Заключение

Эмуляция клавиатуры — опасный инструмент в умелых руках. Это было наглядно продемонстрировано еще в 2014 году на Black Hat. Доклад Building Trojan Hardware at Home вызвал всплеск интереса к данной теме.

Изначально в серьезность угрозы верилось с трудом, а в Сети циркулировали шуточки на тему USBola, сравнивающие эту атаку с известным вирусом. После публикации статьи Computer Ebola шутки закончились. Вдобавок Карстен Нол подлил масла в огонь, создав список уязвимых устройств, которые удобно использовать для проведения атак вида BadUSB.

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

Оцените статью