___           ___           ___           ___           ___           ___     
     /\  \         /\__\         /\  \         /\__\         /\  \         /\  \    
    /::\  \       /:/  /        /::\  \       /:/  /        /::\  \       /::\  \   
   /:/\:\  \     /:/  /        /:/\:\  \     /:/__/        /:/\:\  \     /:/\:\  \  
  /::\~\:\  \   /:/  /  ___   /:/  \:\  \   /::\__\____   /::\~\:\  \   /::\~\:\  \ 
 /:/\:\ \:\__\ /:/__/  /\__\ /:/__/ \:\__\ /:/\:::::\__\ /:/\:\ \:\__\ /:/\:\ \:\__\
 \/_|::\/:/  / \:\  \ /:/  / \:\  \  \/__/ \/_|:|~~|~    \:\~\:\ \/__/ \/_|::\/:/  /
    |:|::/  /   \:\  /:/  /   \:\  \          |:|  |      \:\ \:\__\      |:|::/  / 
    |:|\/__/     \:\/:/  /     \:\  \         |:|  |       \:\ \/__/      |:|\/__/  
    |:|  |        \::/  /       \:\__\        |:|  |        \:\__\        |:|  |    
     \|__|         \/__/         \/__/         \|__|         \/__/         \|__|    
       

Оценка Эмуляций USB

Оглавление

Bad USB

Bad USB был темой для разговора на blackhat конференции о том, как USB устройства могут быть перепрограммированы чтобы стать вредоносным ПО. Основное внимание уделяется перезаписи оригинальной прошивки контроллера USB-устройства с помощью кастомной прошивки. Контроллер устройства USB действует как интерфейс между хостом и устройством USB. Кастомизация прошивки на контроллере USB-устройства предлагает множество возможностей. Управляя контроллером устройства USB, пользователь (человек, программирующий прошивку) может выбирать как он/она хочет, чтобы устройство взаимодействовало с хостом. Части устройства USB могут быть скрыты, например, если это запоминающее устройство или эмуляция запоминающего устройства, части хранилища могут быть скрыты от хоста. Если все сделано правильно, хост не сможет узнать что на самом деле представляет собой устройство. Вы могли бы подделать прошивку так, чтобы, если хост попросит о ней, он получил бы прошивку которую устройство хочет чтобы он получил, а не прошивку которая на самом деле на устройстве.

Также было отмечено, что Bad USB может заразить другие USB устройства и перезаписать их прошивку. Эта часть для меня туманна, я не понимаю как именно одно USB устройство может перезаписать прошивку другого USB. Эта возможность может значительно расширить сферу применения Bad USB. Его можно использовать как вредоносное вредоносное ПО, которое заражает периферийные USB устройства на компьютере затрудняя его обнаружение и удаление.

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

USB Rubber Ducky

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

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

Goodfet / Facedancer

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

Плюсы: faceancer21 имеет возможность запускать много разных клиентов.

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

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

Смотрите Facedancer21 UserGuide для большей информации.

Заключение

Из того, что я видел и читал, я вижу большой потенциал от технологии Bad USB. Я думаю, что идеальный план состоит в том, чтобы точно знать чего мы хотим и настроить устройство в соответствии с нашей целью. Что касается только эмуляции клавиатуры, я думаю что USBRubberDucky имеет очень хорошие платы и программное обеспечение, как я уже упоминал ранее. Более общий план состоит в том, чтобы иметь устройство USB похожее на флэш-накопитель USB, чтобы мы могли легко менять прошивку его контроллера. В отличие от USBRubberDucky с SD, Facedancer21 не имеет встроенного хранилища. Было бы предпочтительнее иметь компонент хранения на устройстве, чтобы он мог казаться обычным USB-накопителем в случае необходимости.