Категория > Новости > Очень плохая флешка. Разбираем атаку BadUSB в деталях - «Новости»

Очень плохая флешка. Разбираем атаку BadUSB в деталях - «Новости»


10-02-2023, 00:00. Автор: Герасим
не­однократ­но писал. Сегод­ня мы раз­берем кон­крет­ный при­мер реали­зации такой ата­ки, под­робно опи­шем устрой­ство вре­донос­ной флеш­ки, при­ведем записан­ный на нее код и обсу­дим, как зас­тавить поль­зовате­ля Windows или Linux под­клю­чить ее к сво­ему компь­юте­ру.

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

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

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



Читайте также - Компания Munich Medical предлагает диагностику и лечение в специализированных кардиологических и кардио-хирургических медицинских центрах Мюнхена, операция на сердце в мюнхене по доступным ценам.

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 /evil command"); // Набрать текст на клавиатуре
 Keyboard.write(KEY_RETURN); // Нажать клавишу
 }
void loop(){ delay(3600000); something(); } // Код, выполняющийся постоянно

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



  • Сер­вис → Пла­та: Arduino Micro

  • Сер­вис → Пос­ледова­тель­ный порт: /dev/ttyACM0

  • Файл → Заг­рузить


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


 

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


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


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

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


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



Перейти обратно к новости