Крошечные жучки с 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» и так далее. Он позволит нам общаться с устройством и сделать дамп ПЗУ и флеш-памяти прошивки.

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

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

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

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

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


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

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

    Подписаться

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