Перейти к содержимому

Hid устройства что это такое

  • автор:

Hid устройства что это такое

HID. Словарь компьютерной терминологии

HID (аббревиатура от Human Interface Device – устройство взаимодействия с человеком) или USB HID обычно используется для описания аппаратных устройств, которые позволяют пользователю взаимодействовать с компьютером или мобильным устройством. Хорошие примеры HID устройств это компьютерная клавиатура и мышь. Также к USB HID устройствами относятся игровые контроллеры (современные джойстики, руль, педали) и другие устройства.

Понравилось? Поделись с друзьями!

Новое
  • Подключение компьютера к телевизору через HDMI
  • 5 причин перегрева компьютера
  • Вылетают игры на компьютере: причины
  • Не открываются страницы в браузерах в Windows 10
  • Что делать, если программы из магазина в Windows 10 не подключаются к интернету

USB Human Interface Device

«HID Class» (Human Interface Device) — один из первых USB классов, поддерживаемых операционной системой Windows. И это именно потому, что основу класса составляют устройства ввода: клавиатуры, мыши, джойстики и многое другое.

Термин «Интерфейс связи с пользователем» взят именно из-за того, что устройства HID класса непосредственно вводят в компьютер данные, предоставляемые человеком. Примерами HID устройств могут служить не только клавиатуры и мыши, а и панели индикации, пульты дистанционного управления, вспомогательные телефонные клавиатуры, и др.

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

Основные особенности и ограничения HID устройств:

  • Полноскоростное HID устройство может передавать вплоть до 64,000 байт в секунду (64 байта в каждом кадре 1мс). Для низкоскоростного устройства установлена скорость передачи данных только 800 байт в секунду (8 байт каждые 10мс).
  • HID устройство может установить частоту своего опроса для выяснения, имеет ли устройство новые данные для пересылки.
  • Весь обмен с HID устройством происходит с помощью определенной структуры, которая называется репортом. Один репорт может содержать до 65,535 байт данных. Репорт имеет достаточно гибкую структуру для описания любого типа устройства и формата передачи данных.
  • Поскольку Windows 98 и 2000, а также XP имеют встроенные HID-Class драйвера, отпадает необходимость в трудоемкой собственной разработке драйвера для вашего нового устройства.
675 Kb Engl HID 1.11

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

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

Представьте, вы подключаете флешку, USB-hub или любое другое USB устройство в порт, и. на нашей машине начинается выполнение произвольного кода. Подключенное устройство по факту оказалось клавиатурой, которая от имени пользователя запустила cmd.exe и стала набирать какие-то команды, в результате чего на машине стали происходить различные странные вещи.

Всему виной USB HID – Human Interface Device, устройства для взаимодействия с человеком. Примерами таких устройств являются клавиатура, мышь, игровые контроллеры и т.д. Так вот, наше подозрительное устройство, которое мы подключили смогло перехитрить операционную систему, представившись клавиатурой, хотя на самом деле оно таковой не является. Далее код, зашитый в это устройство начинает “набирать” на машине пользователя различные команды. Таким образом реализуется простейшая USB HID атака.

Хорошо забытое старое

На самом деле HID атаки известны уже более 10 лет. Еще в 2012 году пентестер проводил тестирование одной крупной компании. У него никак не получалось проникнуть во внутренний контур. Тогда он собрал специальное устройство, выглядящее как флеш карта, но по факту являющейся как-раз такой поддельной «клавиатурой». Изготовив несколько таких «флешек» он подбросил на парковке перед офисом тестируемой компании. В результате он сначала получил доступ на компьютеры охраны, а к вечеру уже смог успешно закрепиться во внутренней сети.

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

И конечно, разработчики средств защиты тоже придумали механизмы защиты от таких атак. Но по факту из раза в раз приходится сталкиваться с ситуациями, когда даже при наличии данные средства защиты не настроены должным образом.

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

Железная основа

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

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

Помимо представленных в таблице, также есть варианты макетных плат с MicroSD адаптером для подключения соответствующих карт памяти.

Макетная плата имеет меньший размер и более скромные характеристики.

  • Память программ (FLASH) — 8КБ, из них около 2КБ занимает загрузчик
  • ОЗУ (SRAM) — 512 байт
  • Энергонезависимая память (EEPROM) — 512 байт
  • Тактовая частота 16МГц/16,5МГц (существуют и другие версии)

Резиновые уточки и другие железки

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

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

Также эта “флешка” умеет кодировать пароли в двоичный формат и передавать их по трёхбитному каналу морганием светодиодов CapsLock, NumLock и ScrollLock на клавиатуре.

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

Готовим софт

В различных статьях, посвященных работе с HID USB приводятся разные варианты рабочих сред для создания прошивок для макетных плат. Но мы пойдем по классической схеме с использованием Arduino IDE. Для начала необходимо скачать и установить эту среду разработки (https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE).

В результате успешной установки получаем следующее рабочее окно:

Дальше конечно очень хочется сразу подключить плату, но пока это делать не стоит. Нам еще необходимо установить драйвер для макетной платы и плагины для среды Arduino IDE, так как сейчас она не знакома ни с Teensy, ни c Digispark.

Первое драйвер – его можно скачать например вот отсюда https://iarduino.ru/file/230.html. Несмотря на то, что в описании не указана Windows 10, по факту эта ОС тоже поддерживается.

Далее нам необходимо подружить Arduino IDE с нашими макетными платами. Для этого необходимо подгрузить файлы JSON. В среде Arduino IDE идем в вкладку File -> Preferences и в поле Additional boards manager URLs указываем путь https://www.pjrc.com/teensy/package_teensy_index.json и нажимаем OK.

Для Digispark указываем следующий путь http://digistump.com/package_digistump_index.json.

Теперь собственно можно подключить плату. После подключения в Arduino IDE в поле Board указываем нужную плату, а в поле порт указываем тот порт, по которому плата определилась (например, COM8).

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

int count = 0; void setup() < Serial.begin(9600); delay(1000); >void loop()

При работе с Teensy перед запуском необходимо перейти в режим клавиатуры (Tools -> USB Type -> Keyboard).

В процессе компиляции скетча советую переключить фокус из среды Arduino IDE в какой-нибудь другой редактор, например в Notepad, так как в случае успешной компиляции и записи скетча на плату, начнется его выполнение. То есть у нас каждые пять секунд будет “набираться” строка Hello World и будет не очень хорошо, если она будет записываться в окне Arduino IDE.

Для платы Digispark можно также найти примеры для проверки ее работы (File -> Examples -> Digispark).

Заключение

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

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

  • 29.08: Криптография вокруг нас
  • 31.08: Старт карьеры в области информационной безопасности в 2023 году
  • 31.08: Кибербезопасность цифровой организации

Общие сведения об устройствах hid

Human Interface Devices (HID) — это определение класса устройства, которое заменяет соединители в стиле PS/2 универсальным USB-драйвером для поддержки HID-устройств, таких как клавиатуры, мыши, игровые контроллеры и т. д. До HID устройства могли использовать только строго определенные протоколы для мышей и клавиатур. Для внедрения оборудования требуется перегрузка данных в существующем протоколе или создание нестандартного оборудования с помощью собственного специализированного драйвера. HID обеспечивает поддержку устройств в режиме загрузки, добавляя поддержку инноваций за счет расширяемых, стандартизированных и легко программируемых интерфейсов.

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

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

Основные понятия HID

HID состоит из двух основных понятий: дескриптора отчета и отчетов. Отчеты — это фактические данные, которыми обмениваются устройство и клиент программного обеспечения. Дескриптор отчета описывает формат и значение данных, поддерживаемых устройством.

Отчеты

Приложения и устройства HID обмениваются данными с помощью отчетов. Существует три типа отчетов:

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

Каждая коллекция верхнего уровня, определенная в дескрипторе отчета, может содержать ноль или несколько отчетов каждого типа.

Таблицы использования

Рабочая группа USB-IF публикует таблицы использования HID, которые являются частью дескрипторов отчетов, описывающих разрешенные действия устройств HID. Эти таблицы использования HID содержат список с описаниями использования, описывающими предполагаемое значение и использование определенного элемента в дескрипторове отчета. Например, использование определяется для левой кнопки мыши. Дескриптор отчета может определить, где в отчете приложение может найти текущее состояние левой кнопки мыши. Таблицы использования разбиты на несколько пробелов имен, называемых страницами использования. На каждой странице использования описывается набор связанных способов использования, которые помогают упорядочить документ. Сочетание использования и страницы использования определяет идентификатор использования, который однозначно идентифицирует конкретное использование в таблицах использования.

См. также раздел

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Windows driver documentation

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *