Привет, гость!

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

Программируем "BAD USB

Download_Link

Участник клуба
Регистрация
7 Июл 2020
Сообщения
404
Реакции
58
Депозит
200$
HID Атаки: Программируем "BAD USB"



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


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

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

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


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

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

Arduino Micro Pro.

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


Плата размером 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.



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

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

Готовим софт.

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


./install.sh



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

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

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



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


ls /dev/ | grep tty



У меня это ttyACM0.

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

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


Пишем скетч.


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

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


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

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

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


void function_name(){
...
}



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

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

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




Код задания


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

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


Keyboard.press(KEY_RETURN);
delay(50);
Keyboard.release(KEY_RETURN);



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


Keyboard.begin(); // Начало эмуляции клавиатуры
delay(5000); // Задержка 5000 мс
Keyboard.press(KEY_LEFT_GUI); // Нажимаем клавишу «Пуск»
delay(5000);
Keyboard.release(KEY_LEFT_GUI); // Отпускаем ее
delay(500);
Keyboard.print("terminal"); // Пишем в поиске
delay(500);
pressEnter();
delay(1000);
Keyboard.print("echo Hello World >> test"); // На этом моменте терминал уже открыт
delay(50);
pressEnter();
delay(1000);
Keyboard.print("leafpad test"); // Открываем файл test в Leafpad
delay(50);
pressEnter();



Сложно? Пока нет, но станет сложнее, когда вместо 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, пройти цепочку «Конфигурация компьютера → Административные шаблоны → Система → Ограничения на установку устройств». В этом разделе есть несколько правил. Нам нужно «Запретить установку устройств, не описанных другими параметрами политики». Суть правила заключается в том, что при его включении драйвер нового устройства не будет автоматически установлен, если только этот девайс прямо не указан в политиках. Есть, конечно, небольшое неудобство в данном методе, но если все грамотно настроить, то проблем не будет.


Заключение.

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

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

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

magistr2

Опытный user
Регистрация
17 Фев 2019
Сообщения
68
Реакции
1
чел я это 2 дня назад искал....
 
Сверху Снизу