Тестирование на проникновение принято разделять на два вида: техническое тестирование и проверку методами социальной инженерии. У каждого из этих методов есть свои достоинства и недостатки, однако наиболее эффективным методом является совмещение обоих методов. Представьте, вы подключаете флешку, 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). Для проверки работы нашего устройства попробуем откомпилировать следующий код. Да, прошивки в макетных платах называются скетчами, так что далее мы будем использовать этот термин. При работе с 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: Кибербезопасность цифровой организации