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

INFO

Это перевод статьи Inside a low budget consumer hardware espionage implant. Переводчик — Андрей Письменный. Материал публикуется с разрешения автора.

Какое-то время назад Джо Фитц написал в твиттере об устройстве под названием S8 data line locator и назвал его «просачивающимся шпионажем» из-за того, что он похож на шпионское оборудование АНБ.

S8 data line locator — это подслушивающее устройство, снабженное модулем GSM, которое умещается в штепселе обычного кабеля USB для зарядки и передачи данных. Оно поддерживает частоты GSM 850, 900, 1800 и 1900 МГц.

Идея, лежащая в основе, очень напоминает продуктовую линейку COTTONMOUTH, выпускаемую по заказу АНБ и CSS, — там радиопередатчик тоже спрятан в вилку USB (см. утекший отчет на cryptome.org — PDF). Такие устройства называют имплантами.

Само устройство рекламируется как трекер геолокации, который можно использовать в машине: угонщик не примет кабель USB за маячок. Но сложно не заметить и возможность применения такого устройства во вред. Особенно учитывая, что точность определения геокоординат очень примерная (в моих тестах погрешность составляла 1,57 км). Зато можно позвонить на него и слушать аудио, передаваемое маленьким микрофоном, находящимся внутри. Либо устройство само может позвонить, если определит, что звук превышает предел в 40–45 дБ. Ну и совсем никаких сомнений в том, что шпионаж — основное применение этого гаджета, не остается, если учесть, что оно легко запаковывается обратно в фабричную упаковку после установки SIM-карты и настройки.


Почему S8 data line locator имеет столь низкую точность определения координат?

Загрузка ... Загрузка ...
 

Возможности S8 data line locator

У устройства есть несколько возможностей для подслушивания и шпионажа. Только взгляни на лог переписки с устройством по SMS.


 

Подслушивание

Если звонить на S8 data line locator в течение десяти секунд, будет установлено соединение, и ты услышишь все, что слышит микрофон внутри устройства.

 

Обратный звонок

SMS с текстом 1111 на устройство активирует обратный звонок. В подтверждение этого придет SMS с ответом:

DT: Set voice monitoring, voice callback and sound sensitivity:400

Как только уровень звука поднимется до 40 дБ, устройство перезвонит на тот номер, с которого была прислана команда.

Для отключения обратного звонка нужно отправить SMS с кодом 0000. Ответ будет выглядеть так:

DT: Voice monitoring cancelled successfully.
 

Запрос геопозиции

В инструкции написано, что, если отправить по SMS команду dw, устройство в ответ пришлет информацию о своем местоположении. Выглядит это так:

Loc:Street, ZIP City, Country
http://gpsui.net/u/xxxx Battery: 100%

Вместо xxxx будут символы 0–9, A–Z, a–z, а вместо строки Street, ZIP City, Country — название улицы, почтовый индекс, город и страна. По ссылке на http://gpsui.net можно перейти без авторизации, она перенаправит на Google Maps.

Получить местоположение с погрешностью меньше чем в 1,57 км у меня ни разу не вышло.

Делая запрос, устройство использует мобильный трафик для доступа к неизвестному эндпойнту (предположительно gpsui.net). Это подтверждается тем, что мой оператор снял с меня деньги за MMS/Internet. Разницы между MMS и использованием интернета он не указывает, но я беру на себя смелость предположить, что запрос был сделан во время определения местоположения. Именно это и стало отправной точкой для моего анализа.

WARNING

Поскольку устройство отправляет неизвестные данные неизвестной третьей стороне, его нельзя (по крайней мере, с чистой совестью) использовать в пентестах. Как минимум из тех соображений, что устройство уже могло быть в эксплуатации.

Дальше я попытался проанализировать и уничтожить эту «фичу» с отстуком куда-то.

Как можно определить, какие данные и куда отправляет S8 data line locator?

Загрузка ... Загрузка ...
 

Железо

Чтобы получить доступ к внутренностям устройства, сначала нужно снять металлическую защиту коннектора USB.


Теперь снимаем пластиковую крышку.


 

Чипы

После вскрытия устройства определяем, что за чипы на нем установлены.


Обнаруживаем:

  • MediaTek MT6261MA — низкобюджетный чип, который часто используется в умных часах китайского производства. Никакой официальной документации или информации о чипе компания MediaTek не публиковала;
  • RDA 6626e — «мощный, высокоэффективный четырехканальный фронтэнд-модуль… созданный для установки в мобильные устройства с поддержкой сетей GSM850, EGSM900, DCS1800, PCS1900».

Правда ли, что на MT6261MA не найти даташитов?

Загрузка ... Загрузка ...
 

Коннекторы

Я идентифицировал три разных способа подключиться к устройству.

USB (сквозной)

Коннекторы USB A и Micro-B не подсоединены к MT6261MA. Они просто передают сигнал от одного к другому.


UART

Следующее соединение — это UART.


Соединение с ним занимает примерно три секунды после загрузки устройства.

screen /dev/ttyUSB0 115200 # 8N1

F1: 0000 0000
V0: 0000 0000 [0001]
00: 1029 0001
01: 0000 0000
U0: 0000 0001 [0000]
G0: 0002 0000 [0000]
T0: 0000 0C73
Jump to BL

~~~ Welcome to MTK Bootloader V005 (since 2005) ~~~
**===================================================**

Bye bye bootloader, jump to=0x1000a5b0

Вывод на этом обрывается, а ввод игнорируется.

Похоже, существует другая версия прошивки, которая может обрабатывать модемные команды AT. В приветствии этой альтернативной прошивки упомянут некто ZhiPu. Я тоже натыкался на эту строку, когда изучал файловую систему FAT12 прошивки, так что какая-то связь определенно есть.

Вот как выглядит вывод у схожего устройства.

F1: 0000 0000
V0: 0000 0000 [0001]
00: 1029 0002       
01: 0000 0000
U0: 0000 0001 [0000]
G0: 0002 0000 [0000]
T0: 0000 0C73       
Jump to BL   

~~~ Welcome to MTK Bootloader V005 (since 2005) ~~~
**===================================================**                                                        

Bye bye bootloader, jump to=0x1000a5b0

LOG: RegisterSn: 
LOG: ZhiPu_sock_buf_init malloc= 217780, 217180, 216940
LOG: ZhiPu_mmi_get_imsi_request
LOG: ZhiPu_system_init VERSION= MTK6261M.T16.17.01.10 , build date is 2017/01/10 17:33, curtime 2004-01-01 00:00
LOG: g_zhipu_imei= \
LOG: ----- 0 -----  ----- -268081676 -----  ----- 2 -----
LOG: ZhiPu_sms_ready_sync
LOG: ZhiPu System Language: English
LOG: service_availability= 0,ChargerConnected= 1,poweron_mode= 0
LOG: sim invalid, 4 minutes later reboot
LOG: ----- 0 -----  ----- 83 -----  ----- 2 -----
LOG: idle_screen_network_name:Same IMEI
 

USB (MTK)

Контакты DP и DM коннектора USB не подсоединены к линиям D+ и D-, зато V и GND подсоединены. DP и DM вместо этого подведены к MT6261MA, как показано на картинке.


Припаиваем кабель USB к коннекторам.


Теперь устройство будет распознаваться как телефон MediaTek, подключенный по USB.

ID 0e8d:0003 MediaTek Inc. MT6227 phone

Этот метод часто называют «починкой бута MTK», «флешем MTK DM DP» и так далее. Он позволит нам общаться с устройством и сделать дамп ПЗУ и флеш-памяти прошивки.

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

Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.

Подпишись на «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

2 комментария

  1. grobza

    18.05.2018 at 13:46

    Что же это они, собрали свою прошивку с отладочной информацией?

  2. Яницкий Вадим

    18.05.2018 at 14:31

    Насчет GPRS, предлагаю попробовать не с OpenBTS, а с Osmocom’овским стеком. С ним могу помочь, если что-то пойдет не так 😉

Оставить мнение

Check Also

Охота на Енота. Как вирмейкер спалился сам и спалил заказчиков

В большинстве случаев разоблачения происходят потому, что вирмейкер где-то фундаментально …