Об ата­ках BadUSB «Хакер» уже не­однократ­но писал. Сегод­ня мы раз­берем кон­крет­ный при­мер реали­зации такой ата­ки, под­робно опи­шем устрой­ство вре­донос­ной флеш­ки, при­ведем записан­ный на нее код и обсу­дим, как зас­тавить поль­зовате­ля Windows или Linux под­клю­чить ее к сво­ему компь­юте­ру.

BadUSB — это целое семей­ство атак на USB-порт, при которых под­клю­чаемое устрой­ство выда­ет себя за дру­гой девайс, нап­ример:

  • HID-устрой­ство (кла­виату­ра или мыш­ка);
  • Ethernet — сетевая кар­та;
  • Mass storage (съем­ный накопи­тель).

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

info

Эта статья — часть серии пуб­ликаций о прак­тичес­ких при­емах взло­ма и атак с исполь­зовани­ем под­ручных устрой­ств, которые мож­но соб­рать дома. В этих матери­алах мы рас­кры­ваем прос­тые спо­собы получе­ния несан­кци­они­рован­ного дос­тупа к защищен­ной информа­ции и показы­ваем, как ее огра­дить от подоб­ных атак. Пре­дыду­щая статья серии: «Кро­кок­ряк. Сни­маем тра­фик с витой пары обыч­ными „кро­коди­лами“».

 

Теория

Итак, BadUSB-HID — это ата­ка, при которой под­клю­чаемое к пор­ту USB устрой­ство зап­рограм­мирова­но, как кла­виату­ра (реже — как мышь), но при этом таковой не явля­ется. И имен­но в обманчи­вос­ти внеш­него вида и кро­ется эле­мент соци­аль­ной инже­нерии.

Са­мый популяр­ный форм‑фак­тор такого устрой­ства — флеш­ка. Но, учи­тывая неболь­шие габари­ты самого девай­са, оно может быть встро­ено куда угод­но — будь то веб‑камера или даже USB-про­вод (O.MG Cable). Под­ходящую фор­му устрой­ства зада­ет кон­текст, пос­коль­ку выбор дол­жен быть опти­маль­ным в той или иной ситу­ации.

Ми­ниатюр­ное устрой­ство с кон­трол­лером кла­виату­ры сра­зу пос­ле под­клю­чения выпол­няет про­изволь­ные нажатия кла­виш. Воз­можность заранее зап­рограм­мировать эти самые нажатия обыч­но исполь­зует­ся для вво­да той или иной коман­ды ОС с помощью соот­ветс­тву­ющих горячих кла­виш, нап­ример Win-R или Alt-F2.

BadUSB-HID — это ата­ка:

  • на раз­бло­киро­ван­ные ПК — под­бра­сыва­ние флеш­ки и мгно­вен­ный RCE; ата­ка тре­бует при­ман­ки для поль­зовате­ля, что­бы тот под­клю­чил устрой­ство к ПК;
  • заб­локиро­ван­ные ПК — незамет­ное под­клю­чение флеш­ки и отло­жен­ный RCE; ата­ка тре­бует незамет­ного раз­мещения устрой­ства и отсутс­твия кон­тро­ля над ата­куемой машиной в момент под­клю­чения.

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

 

Аппаратная часть

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

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

За­чем заказы­вать дорогие и прив­лека­ющие вни­мание решения вро­де hak5 (с логоти­пом Rubber Ducky), ког­да все мож­но соб­рать самому и за мень­шую сто­имость? Если все сде­лать пра­виль­но, нам не будет жал­ко рас­сыпать где‑нибудь с десяток таких «фле­шек».

Впол­не оче­вид­ным выбором ста­нет пла­та семей­ства Arduino. Она недоро­га, и еще одно пре­иму­щес­тво в том, что ее дос­таточ­но прос­то купить в спе­циали­зиро­ван­ных магази­нах элек­тро­ники внут­ри стра­ны, то есть в крат­чай­ший срок.

Лич­но для меня куда боль­шей проб­лемой ока­залось раз­добыть кор­пус. Но, воз­можно, если в тво­ем городе нет под­ходящих магази­нов, будет про­ще при­обрести самую дешевую флеш­ку под­ходящих габари­тов и извлечь ее содер­жимое, оста­вив толь­ко кор­пус. Либо же рас­печатать кор­пус на 3D-прин­тере.

Так как боль­шая часть плат Arduino идет с micro-USB-интерфей­сом, необ­ходимо перепа­ять разъ­ем под клас­сичес­кий USB-ште­кер, пос­коль­ку во флеш­ку с нес­тандар­тным интерфей­сом поль­зователь вряд ли поверит. Сама пла­та при этом конс­трук­тивно может быть не прис­пособ­лена под пай­ку ште­кера USB-A, поэто­му мож­но прик­репить его к кор­пусу флеш­ки с помощью клея, а саму пла­ту уже при­паять парой жес­тких про­водов. Тог­да уси­лие при извле­чении флеш­ки пой­дет на ее кор­пус, а не на саму пла­ту.

Что­бы слег­ка умень­шить ширину пла­ты, мож­но отпи­лить пару мил­лимет­ров с каж­дого края в области допол­нитель­ных кон­тактов — они нам не понадо­бят­ся. В ито­ге мы смо­жем умес­тить нашу Arduino Pro Micro в клас­сичес­кий кор­пус для флеш­ки, как показа­но на сле­дующем рисун­ке.

Клавиатура в корпусе флешки
Кла­виату­ра в кор­пусе флеш­ки

А вот так ата­кующая флеш­ка выг­лядит в соб­ранном виде.

Клавиатура и флешка
Кла­виату­ра и флеш­ка

Сло­вом, желатель­но, что­бы у нашего устрой­ства было минимум отли­чий от обыч­ной флеш­ки. К сожале­нию, самая мей­нстри­мовая пла­та Arduino Pro Micro не опре­деля­ется в Windows 7 и ниже без «дров», но сей­час «десят­ка» встре­чает­ся уже куда чаще. Если необ­ходима сов­мести­мость с Windows 7 и ниже, то сле­дует при­обрести более дорогую пла­ту Teensy либо что‑то ана­логич­ное. Впол­не веро­ятно, что на момент проч­тения этой статьи появят­ся более под­ходящие аппа­рат­ные решения.

 

Программная часть

Бла­года­ря встро­енно­му заг­рузчи­ку Arduino под­держи­вает мно­гок­ратную переп­рошив­ку, так что мож­но записы­вать в нее коман­ды пов­торно под каж­дую кон­крет­ную ситу­ацию. По сути, мы будем заливать лишь поль­зователь­ский прик­ладной код.

Прог­раммы, или скет­чи (в нотации Arduino), ком­пилиру­ются под AVR-про­цес­сор и про­шива­ются через USB пос­редс­твом все той же прог­раммы Arduino:

apt install arduino
arduino

При работе с эму­ляци­ей кла­виату­ры на Arduino мы при­меня­ем при­мер­но сле­дующий API:

void setup(){ // Код, выполняющийся только один раз при подключении устройства по USB
Keyboard.begin(); // Включаем режим контроллера клавиатуры
delay(2000); // Пауза в миллисекундах
Keyboard.press(KEY_LEFT_SHIFT); // Зажать клавиши
Keyboard.press(KEY_RETURN);
delay(100);
Keyboard.releaseAll(); // Отпустить зажатые клавиши
Keyboard.print("cmd /c evil command"); // Набрать текст на клавиатуре
Keyboard.write(KEY_RETURN); // Нажать клавишу
}
void loop(){ delay(3600000); something(); } // Код, выполняющийся постоянно

Как толь­ко код написан, про­исхо­дит ком­пиляция и залив­ка прог­раммы в кон­трол­лер:

  • Сер­вис → Пла­та: Arduino Micro
  • Сер­вис → Пос­ледова­тель­ный порт: /dev/ttyACM0
  • Файл → Заг­рузить

Ес­ли все прош­ло успешно, то через нес­коль­ко секунд флеш­ка перезаг­рузит­ся и выпол­нит все зап­рограм­мирован­ные нажатия пря­мо на тво­ем ПК. Но, понят­ное дело, эти нажатия кла­виш будут далеко не прос­тые...

 

Атака на разблокированные компьютеры

Дан­ная ата­ка была кра­сиво про­демонс­три­рова­на в сери­але Mister Robot, ниже ты можешь полюбо­вать­ся кад­ром из это­го филь­ма.

Физическая социальная атака BadUSB в действии
Фи­зичес­кая соци­аль­ная ата­ка BadUSB в дей­ствии

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

Как мы пом­ним, наше USB-устрой­ство — не то, чем ожи­дает его уви­деть поль­зователь. В дан­ном слу­чае поль­зователь пред­полага­ет, что это обыч­ный съем­ный диск, но вне­зап­но это кла­виату­ра...

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    21 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии