Первый же HTTP-запрос ушел на u.meizu.com и отправил POST’ом следующую информацию:
deviceType (имя и модель устройства. У меня — «Redmi-Note4x»);
версия Firmware;
версия прошивки;
IMEI устройства (!);
ID и серийный номер устройства;
имя сервиса, отправившего информацию (в этом случае — com.meizu.battery) и его версия.
Обращаю твое внимание, что данные подписаны, а это значит, что ты не сможешь просто взять и вырезать их через прокси. Эти данные потенциально позволяют производителю определить, используешь ли ты смартфон Meizu или установил прошивку на сторонний девайс.
Следующим пакетом на тот же адрес (u.meizu.com) уходит точно такой же отчет, но доносчиком значится уже фирменный лаунчер (com.meizu.flyme.launcher). Показательно, что эти данные отправляются будто бы в службу обновления фирменных сервисов, только мне, например, не совсем понятно, зачем IMEI, ID и серийный номер устройства нужны при обновлении. Но, как говорится, жираф большой, ему видней.
И действительно, в ответ на этот запрос приходит JSON, поля которого вполне подходят под заявленную цель. Среди полей есть название приложения (на китайском, несмотря на выставленную при первой настройке английскую локализацию), имя пакета, тип обновления (обязательное или нет), последняя доступная на сервере версия, время ее выпуска и release notes к ней, URL обновления, размер и хеш загружаемого файла, условия обновления и флаг тихой установки. Ты, конечно, спросишь, а что же тут не так? А не так вот что: этот запрос идет по чистому HTTP безо всяких вам SSL/TLS, что создает благоприятные условия для подмены такого трафика. И если учесть то, что обновление может быть установлено незамедлительно (флаг needsUpdate) и в тихом режиме (флаг silentUpgrade), а для проверки целостности используется только размер файла и его хеш, устройства с Flyme на борту очень легко могут стать мишенями ботнетов. Более того, твои личные данные, в том числе IMEI, ID устройства и его серийный номер, могут быть легко украдены при условии нахождения с тобой в одной сети.
Далее система получает список активити приложений, которым по умолчанию не нужно спрашивать разрешение на рисование поверх экрана блокировки. По умолчанию это экран стандартного лаунчера и некий com.tencent.mobileqq.activity.QQLSActivity. С этим именем пакета (com.tencent.mobileqq) в Play Market’е размещен довольно популярный мессенджер Tencent QQ, прочно засевший в списках антивирусных продуктов как adware.
Дальше идет обрывок ответа на запрос, принадлежность которого Wireshark не смог опознать. Как, впрочем, не поймал и его начало. Там был JSON следующего содержания:
{
"apkName":"com.DBGame.DiabloLOL",
"category2Id":1004,
"category2Name":"å¨ä½åé©",
"categoryId":2,
"categoryName":"游æä¸åº",
"cnName":"ç«æ´äººèç",
"createTime":1484690841000,
"devName":"äºç±äºå¨ç§æ",
"id":185417,
"installCount":1028899,
"stars":113710,
"tagName":"横ç,æ ¼æ"
},{
"apkName":"com.m37.yhjyj.mz",
"category2Id":1001,
"category2Name":"è§è²æ®æ¼",
"categoryId":2,
"categoryName":"游æä¸åº",
"cnName":"æ°¸æçºªå…",
"createTime":1484690855000,
"devName":"ç¨æ·494550072",
"id":795971,
"installCount":1015194,
"stars":58590,
"tagName":"峿¶,大ä½,éå¹»,ç»å…¸"
},{
"apkName":"com.netease.my.mz",
"category2Id":9025,
"category2Name":"其仿¸¸æ",
"categoryId":2,
"categoryName":"游æä¸åº",
"cnName":"梦幻西游",
"createTime":1484690857000,
"devName":"Netease_Game",
"id":910997,
"installCount":986444,
"stars":601440,
"tagName":"ç…é,ä»ä¾,Qç,大ä½,ç»å…¸"
},{
"apkName":"wb.gc.xmxx.zxb",
"category2Id":1000,
"category2Name":"ä¼é²çæº",
"categoryId":2,
"categoryName":"游æä¸åº",
"cnNam
Налицо перечисление приложений (поле apkName, несомненно, содержит имя пакета целевого приложения) с указанием его категории (видимо, это должны были быть китайские иероглифы, но ASCII не отображает их правильно), времени создания, ID в какой-то внутренней системе, количества установок и, предположительно, рейтинга (поле stars). Адрес отправителя (183.61.122.111) наш любимый Google Public DNS опознал как soa.dns.guangzhou.gd.cn. К сожалению, на этом наш интересный пакет оборвался, но на некоторые мысли он однозначно наводит. Реклама? Скрытая установка адвари? Имена пакетов выглядят нечеловекочитаемыми, так что назначение этих программ остается неизвестным. И, что неудивительно, ни одной из них нет в Google Play.
Затем проснулся агент геолокации (на это указывает заголовок User-Agent: AMAP_Location_SDK_Android 2.4.0), который отправил 261 байт бинарных данных на apilocate.amap.com/mobile/binary.
Я уже думал прекращать просматривать однотипные пакеты, в которых уходила моя драгоценная информация, но вдруг наткнулся на один пакет, непохожий на остальные. Его содержимое:
PLQ?çØ^E,³R@,jôq`²#
P«ÿëGÏË¿>é
KÙÌmeizu.com/pack/ramcleaner/whitelist/update.db_1560182405.zip","ver":1560182405},
{"type":"patch","url":"http://safe.res.meizu.com/pack/ramcleaner/whitelist/update.db_1560268805.zip","ver":1560268805}]},
"appinfo":{"packs":[{"type":"full","url":"http://safe.res.meizu.com/pack/app/appinfo.db_1560268805_full.zip","ver":1560268805}]},
"harassmentBlocking":{"packs":[{"type":"full","url":"http://safe.res.meizu.com/pack/harassmentblocking/update.db_1560268805_full.zip","ver":1560268805}]},
"qrcodeUrl":{"packs":[{"type":"full","url":"http://safe.res.meizu.com/pack/qrcodeurl/qrcodeurl.db_1560268805_full.zip","ver":1560268805}]},
"trashclean":{"packs":[{"type":"full","url":"http://safe.res.meizu.com/pack/trash/trashclean.db_1560268805_full.zip","ver":1560268805}]}
}
Пройдемся по этим архивам по порядку:
update.db_1560182405.zip содержит единственный файл update.db. В нем перечислены сервисы Meizu с одним значением из двух (1 или 2). К сожалению, это оказалась не нормальная БД, а простой текст, так что у меня даже нет названий этих столбцов. Но если внимательно прочитать URL, по которому скачивается этот файл, то можно увидеть строку ramcleaner, указывающую, что этот файл лишь конфиг для встроенного таск-киллера. Значит, цифры, скорее всего, означают приоритеты процессов;
appinfo.db_1560268805_full.zip — JSON-файл, по структуре подозрительно похожий на тот безымянный кусок, что мы рассматривали парой абзацев выше. Ничего нового тут не оказалось;
update.db_1560268805_full.zip — список из 18 номеров спаеров (harassment blocking, упомянутый в URL, переводится как «предотвращение беспокойства»). Все номера китайские. Это все, что нужно знать об эффективности защиты, если даже на страну с населением 1,4 миллиарда человек есть список только из 18 спамеров;
qrcodeurl.db_1560268805_full.zip — девять строк JSON’а, содержащие вредоносные адреса, которые, как понятно из URL, распространяют через QR-коды.
И в последнем архиве trashclean.db_1560268805_full.zip, как становится ясно из того же источника, содержатся параметры очистки мусора в памяти устройства. Этот конфиг позволяет не потерять «критически важные» данные сервисов, названия которых явно выдают их принадлежность к Meizu. В общем, почти ничего криминального.