Содержание статьи
warning
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный с использованием информации из данной статьи.
Стелс — наше все!
В основе BadUSB лежит микроконтроллер и память, необходимая для хранения кода. Код — это обычно скетч, написанный, например, на языке Arduino. В статье мы будем использовать именно его. Одна из причин его популярности — это широкий выбор библиотек. Они позволяют заметно сэкономить время при написании скетча.
Статьи «Злой HID» и «Злая утка с дистанционным управлением» дают исчерпывающее руководство, как собрать и запрограммировать BadUSB и модифицировать его, добавив ESP8266. Модуль Wi-Fi предоставляет нам огромное преимущество в виде удаленного управления устройством и создания скриптов на лету. Бесспорно, управление через веб‑интерфейс — это крутая модификация. Но за удобство нужно платить, в этом случае скрытностью. Созданная устройством точка доступа может выдать факт работы устройства, а бетонные стены и малый радиус зоны Wi-Fi не дадут пользователю удалиться на расстояние больше ста метров от девайса (это в лучшем случае). В сегодняшней статье мы раздвинем физические границы использования BadUSB.
Выбор железа
Что, если оборудовать Arduino модулем не ESP8266, а SIM800L? Конечно, суть BadUSB останется неизменной: устройство подключается к порту USB компьютера для выполнения команд скрипта. Однако отличие от простого BadUSB заключается в том, что после присоединения скрипт не выполнится. Его необходимо будет послать в виде SMS. Это даст преимущество не только в дистанции, c которой можно управлять устройством удаленно, но и в используемом оборудовании: хватит кнопочного телефона с SIM-картой. Чтобы еще немного снизить себестоимость устройства, можно заказать все необходимые детали с AliExpress.
Нам понадобятся следующие вещи:
Теперь давай приступим к сборке самого устройства.
Работаем ручками
Схема соединения контактов двух плат проводами выглядит следующим образом:
ARDUINO <----> SIM800L
RAW <-----> VCC
GND <-----> GND
15 <-----> TXD
14 <-----> RXD
Антенна из комплекта SIM800L подойдет любая. Если это антенна‑спираль, то ее необходимо припаять к контакту NET модема. Чтобы сэкономить место, я выберу плоскую антенну и прикреплю ее к контакту IPX.
info
Питание модуля SIM800L очень капризно. Разрешенное напряжение составляет от 3,4 до 4,4 В. Поэтому, если ты используешь не Arduino Pro Micro или выходное напряжение не попадает в промежуток значений, указанный выше, советую ознакомиться со статьей Robotchip. В ней подробно описано, как корректно подвести питание к модулю SIM800L.
Останавливаться на сборке подробно я не буду. Уверенно орудуя паяльником, цепляем провода к обеим платам по схеме. Скажу лишь одно: если ты дальше собираешься продолжать свои эксперименты с BadUSB, то лучше воспользоваться макетной платой. Тогда сборка устройства превратится в игру с конструктором Lego. Достаточно будет припаять ножки к используемым контактам Arduino и SIM800L, установить девайсы на макетную плату и соединить их между собой проводами.
Настраиваем окружение
Linux или Windows? Решать тебе! Arduino IDE есть под обе операционные системы. В моем случае при подключении Arduino определилось как SparkFun LilyPad USB.
Далее скачиваем Arduino IDE с официального сайта под свою ОС (в моем случае это Kali Linux). После установки необходимо выбрать устройство, которое мы будем программировать, и порт, к которому оно подключено. Сразу скажу, что, если ты используешь Linux, загрузить код на плату с первого раза может и не получиться. Тогда необходимо прописать в командной строке Linux следующее (где username
— имя пользователя):
$ sudo usermod -a -G dialout username
После подключения устройства к USB-порту модем ищет ближайшую базовую станцию оператора SIM-карты, которую ты используешь в SIM800L (в верхнем углу модуля SIM800L находится светодиод, который показывает состояние сотовой сети). Есть три состояния индикатора: мигает раз в 1 с — модуль работает, но еще не подключился к сотовой сети; мигает раз в 2 с — запрошенное соединение для передачи данных GPRS активно; мигает раз в 3 с — модуль установил связь с сотовой сетью и может отправлять или получать голосовые сообщения и SMS.
Прогаем мозги
В отличие от девайса с модулем Wi-Fi, в нашей версии BadUSB будет программироваться только модуль Arduino. SIM800L выступит как часть канала передачи, которая обрабатывает получаемые от базовой станции сигналы GSM. Результатом работы (в зависимости от отправленной модулю SIM800L команды) будет текстовая информация, выведенная в COM-порт. Рассмотрим основные команды библиотеки этого модуля, с которыми будем работать.
Общаться с модулем SIM800L можно через COM-порт с помощью текстовых команд. Их перечень огромен, поэтому приведу в качестве примера только те, которые будут задействованы.
-
AT
— настройка скорости обмена данными; -
AT+CMGDA="DEL
— удаление всех SMS из памяти симки;ALL" -
AT+CMGDA="DEL
— удаление всех прочитанных SMS;READ" -
AT+CLIP=1
— включение AOH; -
AT+DDET=1
— включение возможности использования тонального набора; -
AT+CMGF=1;
— включение текстового режима SMS с сохранением значения;&W -
AT+CMGL="REC
— запрос на чтение непрочитанных SMS;UNREAD", 1 -
AT+CMGR="index",
— получение текста SMS по индексу (index);1 -
AT+CMGR="index"
— отметить по индексу SMS как прочитанное.
info
Итак, приступим к созданию кода. Логически его можно разделить на две части. Первая — обработка данных, получаемых от модуля SIM800L, и «выуживание» полезной нагрузки из SMS. Вторая — эмуляция модулем Arduino нажатий клавиш, отправляемых через USB-порт компьютеру. Основу второй части составил код, написанный Spacehuhn и переработанный мной.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»