BadUSB Rubber Ducky с управлением через GSM

BadUSB с управлением через модуль GSM

Сегодня я покажу вам, как сделать BadUSB с управлением по мобильной связи.

Еще по теме: Используем смартфон как BadUSB

Програмирование мозгов

В отли­чие от девай­са с модулем Wi-Fi, в нашей вер­сии BadUSB будет прог­рамми­ровать­ся толь­ко модуль Arduino. SIM800L выс­тупит как часть канала переда­чи, которая обра­баты­вает получа­емые от базовой стан­ции сиг­налы GSM. Резуль­татом работы (в зависи­мос­ти от отправ­ленной модулю SIM800L коман­ды) будет тек­сто­вая информа­ция, выведен­ная в COM-порт. Рас­смот­рим основные коман­ды биб­лиоте­ки это­го модуля, с которы­ми будем работать.

Об­щать­ся с модулем SIM800L мож­но через COM-порт с помощью тек­сто­вых команд. Их перечень огро­мен, поэто­му при­веду в качес­тве при­мера толь­ко те, которые будут задей­ство­ваны.

  • AT — нас­трой­ка ско­рос­ти обме­на дан­ными;
  • AT+CMGDA="DEL <wbr />ALL" — уда­ление всех SMS из памяти сим­ки;
  • AT+CMGDA="DEL <wbr />READ" — уда­ление всех про­читан­ных SMS;
  • AT+CLIP=1 — вклю­чение AOH;
  • AT+DDET=1 — вклю­чение воз­можнос­ти исполь­зования тональ­ного набора;
  • AT+CMGF=1;<wbr />&W — вклю­чение тек­сто­вого режима SMS с сох­ранени­ем зна­чения;
  • AT+CMGL="REC <wbr />UNREAD",<wbr />1 — зап­рос на чте­ние неп­рочитан­ных SMS;
  • AT+CMGR="index",<wbr />1 — получе­ние тек­ста SMS по индексу (index);
  • AT+CMGR="index" — отме­тить по индексу SMS как про­читан­ное.

Datasheet по SIM800L

Итак, прис­тупим к соз­данию кода. Логичес­ки его мож­но раз­делить на две час­ти:

  • Пер­вая — обра­бот­ка дан­ных, получа­емых от модуля SIM800L, и «выужи­вание» полез­ной наг­рузки из SMS.
  • Вто­рая — эму­ляция модулем Arduino нажатий кла­виш, отправ­ляемых через USB-порт компь­юте­ру. Осно­ву вто­рой час­ти сос­тавил код, написан­ный Spacehuhn и перера­ботан­ный мной.

Гло­баль­ные перемен­ные и под­клю­чаемые биб­лиоте­ки:

Те­перь нас­тро­им ско­рость, с которой модули обме­нива­ются дан­ными, ини­циали­зиру­ем SIM800L и заявим, что наше устрой­ство — это кла­виату­ра.

Фун­кцию loop() мож­но раз­бить на две час­ти. Пер­вая (if(lastUpdate + updatePeriod < millis()) — про­вер­ка на наличие неп­рочитан­ных сооб­щений, их обра­бот­ка и отправ­ка извле­чен­ного скрип­та в фун­кцию parseSMS(). Вто­рая (if(SIM800.available())) выводит в монитор СOM-пор­та получен­ные от базовой стан­ции дан­ные, если модем что‑то отпра­вил.

Фун­кции parseSMS() вклю­чают в себя обра­бот­ку номера телефо­на отпра­вите­ля и срав­нение его со спис­ком раз­решен­ных, вывод тек­ста сооб­щения и номера в монитор COM-пор­та. Далее сам скрипт из сооб­щения отправ­ляет­ся в фун­кцию Line().

Фун­кция Line(String _line) при­нима­ет перемен­ную msgbody, отправ­ленную из фун­кции parseSMS(), и записы­вает в перемен­ную _line. Далее сле­дует обра­бот­ка пре­фик­сов команд: STRING — ; DELAY — пауза меж­ду коман­дами; DEFAULTDELAY — пауза меж­ду коман­дами по умол­чанию; REM — ком­мента­рий; REPLAY — пов­торить. Выраже­ния, которые идут пос­ле STRING, обра­баты­вают­ся фун­кци­ей press(String b).

Фун­кция Press (String b) отправ­ляет сиг­налы нажатия кла­виш компь­юте­ру в зависи­мос­ти от содер­жания скрип­та:

Фун­кция sendATCommand(String cmd, bool waiting) упро­щает вза­имо­дей­ствие с модулем SIM800L. В слу­чае неудач­ной отправ­ки коман­ды модулю цикл пов­торя­ется заново.

Фун­кция waitResponse() ожи­дает отве­та и воз­вра­щает получен­ный от модема резуль­тат.

Тестирование BADUsb

Итак, нас­тал момент исти­ны! Цеп­ляем устрой­ство к USB-пор­ту компь­юте­ра. Ждем, ког­да модем уста­новит соеди­нение с базовой стан­цией, — об этом сви­детель­ству­ет мига­ющий раз в 3 с крас­ный све­тоди­од. Про­веря­ем наличие обна­ружен­ных устрой­ств в ОС.

Пос­ле это­го отправ­ляем тес­товый скрипт с полез­ной наг­рузкой в тек­сте SMS на SIM-кар­ту модема. Нап­ример, так, как показа­но на сле­дующих рисун­ках.

По­лез­ная наг­рузка, отправ­ленная в SMS
По­лез­ная наг­рузка, отправ­ленная в SMS

Ре­зуль­тат выпол­нения полез­ной наг­рузки

Пол­ный набор команд мож­но най­ти у SpacehuhnTech.

Ка­кая полез­ная наг­рузка будет в SMS, зависит толь­ко от вашего зна­ния коман­дных строк Linux и Windows, а так­же вашей изоб­ретатель­нос­ти.

Что еще можно сделать?

Со­вер­шенс­тву нет пре­дела! Давайте рас­смот­рим пару при­меров того, как вы можете улуч­шить устрой­ство.

У SIM800L есть кон­такты Mic+ и Mic-. К ним мож­но при­паять кон­денса­тор­ный мик­рофон. В коде необ­ходимо будет про­писать допол­нитель­ную про­цеду­ру для обра­бот­ки вхо­дяще­го звон­ка. Вы будете слы­шать все, что про­исхо­дит рядом с устрой­ством.

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

Вывод

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

Еще по теме: BadUSB Rubber Ducky своими руками

ВКонтакте
OK
Telegram
WhatsApp
Viber

Один комментарий

  1. Срудж123

    Спасибо :)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *