Приложения с доступом к id устройства xiaomi что это
Все мобильные операционные системы имеют достоинства и недостатки. Часто они перегружены приложениями, которые постоянно обновляются или пытаются получить доступ ко всему содержимому устройства.
И тогда владелец начинает сомневаться, не установлены ли на телефон шпионские программы. В смартфонах Xiaomi такие подозрения возникают в отношении приложения Miui Daemon.
Назначение программы
Эксперты по безопасности провели исследования и выяснили, что это приложение мониторит данные смартфона и отсылает их на китайский сервер.
- Время работы устройства
- Статистика работы графического процессора GPU и батареи
- Данные о загруженности оперативной памяти
- Объем использованного места хранения устройства
- Включение–выключение Bluetooth и мобильной сети
- IMEI номер.
Но это не вредит владельцу устройства. Из этой информации невозможно выудить секретные коды, пароли, номера карточек и персональные данные хозяина. С помощью таких приложений производители анализируют поведение пользователей. Это происходит для улучшения работы системы и адаптации своих устройств к потребностям владельцев.
Компания Xiaomi не засекречивает сбор статистики и делает это открыто. Отправка данных может загружать телефон и снижать заряд батареи.
Анализ обращений мобильных устройств к сторонним серверам показал, что смартфоны под управлением Android и iOS тоже отправляют данные на Google, Apple и прочие домены. При этом не требуют разрешения владельцев.
В среднем приложения под Android отсылают сведения на 3, устройств Apple на 2,6 адресов. Это координаты GPS, имена пользователей, номера IMEI, данные поисковых запросов, email и прочую информацию. Одно приложение может отправлять результаты анализа сразу на несколько серверов.
Но работа некоторых приложений вызывает опасения. Особенно настораживают бесплатные и без рекламы. Удивляет, когда Фонарик или Погода просят разрешения на управление контактами и всем содержимым телефона.
Разработчики могут собирать и продавать информацию о пристрастиях и маркетинговых привычках владельцев. То же самое и с социальными сетями и мессенджерами. Эти приложения получают права на доступ к контактам и содержимому памяти. Пользователи воспринимают такие действия как должное. Всё происходит легально.
Поэтому отправка данных приложением Miui Daemon не является чем-то исключительным. Программа себя не проявляет и не требует действий от владельца. Если возникли сомнения, можно отключить.
Проверка смартфона на наличие
Удаление программы
Можно попробовать несколько вариантов удаления или остановки приложения.
4. Возможно удалить Daemon без прав суперпользователя с помощью программы Xiaomi ADB/Fastboot Tools. Её и драйвер для доступа к устройству необходимо устанавливать на компьютер. Подключить к нему смартфон. Дальше действовать по инструкции.
Нужно помнить, что получение root прав с помощью сторонних программ смартфон воспринимает как вирусную атаку. Поэтому перед запуском приложений придётся отключать антивирус.
Пользы от Miui Daemon владельцу устройства от компании Xiaomi нет. Поэтому можно отключить или удалить без сожаления. Важно сделать это, не нарушив работу всей системы. Из всех перечисленных способов предпочтительно использовать отключение приложения или лишение его доступа к личным данным.
В начале статьи, как всегда коротко отвечу на вопрос, который чаще остальных задавали подписчики. И на прошлой неделе, несколько человек спрашивали, почему на некоторых моделях Redmi девятой серии (и некоторых моделях серии Mi) нет таких приложений как:
- Второе пространство
- Клонирование приложений
- И очистка динамика
Дело в том, что как и в случае с «Супер обоями» разработчики ограничивают функционал прошивок некоторых смартфонов, но это вовсе не значит, что эти полезные настройки удалены.
Скрин одного из подписчиков подтверждающий отсутствие приложений Скрин одного из подписчиков подтверждающий отсутствие приложенийДля того чтобы начать пользоваться этими функциями, вам нужно скачать из Play Market приложение «Запуск Activity» и воспользовавшись поиском, найти недостающие настройки, вводя названия скрытых приложений и функций.
Для функции очистки динамика вводите - Speaker, всё остальное на русском Для функции очистки динамика вводите - Speaker, всё остальное на русскомОтключение сбора информации
Многие из моих постоянных читателей уже знают, какое негативное влияние на общее состояние смартфона оказывают различные фоновые процессы и сегодня мы отключим ещё парочку из них.
Для начала вам нужно зайти в «Настройки» —> Пароли и безопасность —> Доступ к личным данным
В этом пункте вы увидите список приложений, которые на постоянной основе имеют доступ к данным о состоянии телефона и некоторым данным пользователя. А следовательно собирают статистику использования, с помощью ресурсов системы.
Классические страшилки MIUI, подтверждающие сбор данных Классические страшилки MIUI, подтверждающие сбор данныхПоэтому я рекомендую отключить сбор информации убирая доступ для тех приложений, которые по идее не должны этим заниматься. Но так как список программ у всех разный, вы можете спросить в комментариях, если сомневаетесь нужно ли отключать то или иное приложение.
Я же оставил у себя только эти, так как их активность действительно необходима, для нормальной работы телефона:
После этих нехитрых действий возвращаемся в главное меню настроек и заходим в пункт «Защита конфиденциальности» —> Специальные разрешения —> и в самом низу страницы находим строчку «Управление сетями Wi-Fi»
На экране появится объёмный список программ. Заходим например в приложение «Камера» и видим следующий текст:
Вам не кажется странным, что приложение «Камера» может искать, добавлять и удалять сети Wi-Fi ? Как по мне, это полная ерунда, поэтому я прохожусь по всему списку и отключаю доступ к управлению для всех приложений, которым он очевидно не нужен.
Отключать вообще у всех я не рекомендую, только у тех, что не имеют к работе Wi-Fi никакого отношения.
Обновление системных приложений
Ну и в завершении, по традиции прикрепляю парочку важных обновлений приложений MIUI, минуя разные минорные апдейты. На этот раз в конце статьи вы найдёте обновления для рабочего стола и панели управления громкостью.
Мы живем во времена, когда наша конфиденциальность всегда под вопросом. По этой причине производители постепенно интегрируют решения, направленные на усиление этой безопасности. Xiaomi также интегрировал новые решения, чтобы пользователь политикой конфиденциальности. остается нетронутым
Когда Xiaomi анонсирует новую версию MIUI, безопасность обычно является одной из основ, когда дело доходит до улучшения безопасности. В этом смысле терминалы, уже обновленные до этой версии, могут активировать так называемый «Virtual ID». Мы сталкиваемся с одной из тех функций, которые довольно скрыты и о которых многие пользователи не знают.
Что такое виртуальный идентификатор?
Это мера скрыть настоящую личность пользователя при просмотре сети или использовании определенных приложений. Таким образом, роботы для отслеживания и обучения не смогут отслеживать пользователя. При активации Virtual ID дополнительно защищает конфиденциальность пользователя, избегая, например, персонализированной рекламы и возможной обработки данных третьими сторонами без их согласия.
Как следует из названия, мы имеем дело с виртуальной идентификацией, которая лучше защищает наши личная информация из приложений и веб-сайтов мы посетили. Таким образом, мы избегаем известных приложений отслеживания поведения и предпочтений в пользу конфиденциальности. Таким образом, защищается одно из значений, которое приложениям больше всего нужны для отслеживания пользователей, - идентификатор устройства.
Как активировать функцию
Чтобы активировать виртуальный идентификатор, нам нужно будет войти в меню настроек. Оказавшись внутри, мы напишем «виртуальный» в поле поиска. Мы также можем найти эту опцию в настройках пути / Конфиденциальность / Управление / Специальный доступ к приложениям. Теперь выбираем «Управление виртуальным идентификатором», чтобы иметь возможность активировать функцию. Оказавшись внутри, мы увидим сводку использования инструмента и переключателя, который активирует виртуальный идентификатор. Когда мы использовали эту функцию, мы можем увидеть чуть ниже опции виртуальный идентификатор, который нам назначила система.
Сбросить виртуальный идентификатор
Сделав это, мы сможем уверенно перемещаться по нашему мобильному выдаст ложную информацию о личности устройства. Однако мы можем сбросить виртуальный идентификатор в любое время. Таким образом, мы можем начать с нуля, когда захотим. Однако предварительно настроенные параметры в некоторых приложениях могут быть потеряны при сбросе виртуального идентификатора.
Честно признаться, у меня не было планов писать и публиковать эту статью, но, после того, как за два месяца увидел в ближнем кругу коллег 5 штук свежеприобретённых телефонов от Xiaomi, и недавнюю статью на Geektimes, рекламирующую управление умным домом от Xiaomi, ко мне пришла совесть и, сцуко, потребовала поделиться знанием с остальными.
Для начала небольшая вводная часть для тех кто не в теме. Есть такая компания Xiaomi, которая делает неплохие по начинке телефоны и заливает в них кастомизированный Android. Бизнес модель, как недавно официально было заявлено — «По сути мы раздаём наши смартфоны, не зарабатывая на этом денег. Нас больше заботят долгосрочные источники дохода. Мы могли бы продать 10 миллиардов смартфонов и не заработать на них ни цента». Источник раз и два.
Заглянув в сентябрьскую статью на Security lab и ещё вот в эту жалобу, у меня лично возникло ощущение, что телефон Xiaomi это что-то типа поводка на котором владельца водит Большой брат (утрирую, конечно же).
Это и стало основным мотивом проведения исследования поведения телефона Xiaomi redmi 3S
с прошивкой MIUI Global 8.1 Стабильная 8.1.1.0 (MALMIDI)
Исследование подопытного кролика и обнаружение проблемы
Беру новенький телефон из коробки. Включаю его и прохожу через мастера начальной настройки, предварительно включив запись трафика на Wi-Fi роутере. Ровно через две секунды, после того как телефон подключился к точке доступа, началось скачивание файла размером около 8Мбайт с одного из серверов Xiaomi. Это был обычный zip архив, внутри которого лежала куча всего и, в том числе, файл AnalyticsCore.apk, упомянутый в статье на SecurityLab.
Дальше — больше. В общей сложности, за всё время наблюдения, я насчитал чуть меньше восьми десятков имён серверов в разных доменах. Сразу оговорюсь, что в этом числе нет серверов Google и Facebook, приложения которых также предустановлены. Просто потому что я их считал отдельно. С ними тоже всё «весело».
Дополнительно смущало то, что большей частью запросы были небольшими (объём принятого переданного трафика TCP сессий не превышал 1-2Кб), но, т.к. наши сотовые операторы округляют объём трафика вверх (Например, Tele2 до 150Кб), то, при неудачном совпадении, можно «накачать» таким образом существенные объёмы трафика, а в роуминге неожиданно попасть на деньги.
Тех, кого сей факт не смущает могут дальше не читать, т.к. дальше будет описание конкретики изоляции трафика от приложений, вшитых в заводскую прошивку.
Предварительные условия
Первое что необходимо — это рутовать телефон. Как это делается в случае Xiaomi я здесь описывать не буду, отсылаю желающих пройти этот путь к полной версии этой статьи (ссылка в конце).
Второе — это влить в телефон прошивку через кабель и стереть ВСЕ пользовательские данные.
Третье — телефон НЕ ДОЛЖЕН иметь доступа в интернет после залива свежей прошивки.
Update. До момента установки нижеописываемых ограничений, разумеется.
Disclamier. Все дальнейшие манипуляции над телефоном Вы делаете на свой страх и риск.
Ответственность за любой результат лежит на том, кто именно делал описываемые ниже действия.
Небольшая техническая вводная часть
Серверы, к которым обращается телефон, в большинстве своём расположены в облаке Amazon, поэтому обращения к ним происходит по именам, которые ресолвятся через round-robin DNS в разные IP адреса из разных подсетей /16. Блокировать их все по подсетям смысла особого нет — так можно половину интернета отфильтровать, что не есть хорошо. Блокировать по именам — хорошо, но не факт, что имена хостов из L3 доменов не генерируются динамически. Идеально было бы прибить все приложения, которые обращаются к серверам Xiaomi, но, как показала практика, глубина их интеграции в Android такова, что после удаления некоторых из них телефон может просто отказаться загружаться.
Далее. К внешним серверам обращается не один процесс, а многие, при этом задачу усложняет наличие в Android UID sharing, когда под одним UID могут генерировать сетевой трафик разные процессы (приложения). Более того, один из полезных процессов (отвечающий за GPS) надо выпускать во внешний мир, чтобы скачивать небольшие обновления, но при этом он сидел под тем же UID, что и восемь штук процессов, рвущихся к серверам Xiaomi.
Также надо упомянуть про ограниченность инструментария, доступного для решения вышеописанных задач, т.к. большая часть приложений имеющих в названии firewall доступных на Play Market работают через т.н. VPN, т.е. от сливов информации до запуска приложения они не защищают.
Большая часть того, что будет рассказано дальше для профессиональных разработчиков Android есть банальная истина, но всем остальным это позволит понять почему фильтрация построена именно таким образом.
В отличие от обычного Linux, где есть файлы конфигурации и стартовые скрипты, лежащие в /etc, в Android всё сделано несколько иначе. Общее управление сетью осуществляет Connection Manager, который дёргает системный демон netd, который, в свою очередь, вызывает iptables с определёнными параметрами командной строки. Соответственно, вызывать IPtables из скрипта начальной загрузки (init и прочих) особого смысла нет — netd при старте всё равно вызовет iptables, очистит правила и зальёт свои.
Единственный выход оставленный Google — писать необходимые команды конфигурации iptables в скрипте /system/bin/oem-iptables-init.sh. Путь к этому скрипту и его имя жёстко прописаны внутри исходного кода демона netd.
Для фильтрации статических имён хостов можно редактировать файл /etc/hosts, но при этом надо помнить про их количество и возможность их динамической генерации.
Дальше будет рассказ как это всё делалось.
Удаление и заморозка (если нет уверенности) ненужных программ
При помощи бесплатной версии Titanium Backup можно посмотреть соответствие между именем программы, показываемое в системе (Play Market), её кодовым именем (com.google.vending) и, при необходимости, удалить то, что явно не нужно.
Недостаток бесплатной версии — не умеет делать заморозку программ, посему заморозку делаем через ADB shell при помощи package manager. Пример:
Фильтрация сетевых запросов
Disclamier 2.В данной статье описано КАК можно фильтровать «левую» сетевую активность телефона. Что конкретно фильтровать — каждый волен решать сам.
Как это можно делать.
1. Cамое простое — заполнение файла /etc/hosts записями имён серверов c IP адресом 127.0.0.1. Мой набор серверов лежит на Google Drive в папке Files.
Недостаток варианта — невозможность блокировки неизвестных и динамически генерируемых имён хостов и доменов L3/L4.
Update. Несколько раз обнаруживал странное поведение Netfilter/IPtables. После загрузки телефона в таблице действующих правил оказывались не все правила, перечисленные в скрипте. Если перезагрузить телефон ещё раз — все правила оказывались на месте. Прям шайтан-машина, а не телефон. В документации нашёл описание параметра --wait, который вроде бы должен решать эту проблему. Но, для гарантированного решения проблемы, сделал ещё вызов IPtables из скрипта не напрямую, а через несложную функцию, которая проверяет код завершения и, при необходимости, повторно выполняет команду с небольшой задержкой, опять же проверяя результат.
2. пишем команды фильтрация отправки пакетов на подсети /16 и /24 стандартными правилами Netfilter/IPtables в файл oem-iptables-init.sh. Здесь их не описываю, желающие напишут их сами, либо найдут в полной версии статьи.
Update. Недостаток варианта — большая часть серверов расположена в облаке Amazon и имеет переменные (round-robin DNS) IP адреса. Для гарантированной их фильтрации придётся закрыть не один десяток подсетей /16, что не есть хорошо. Можно ненароком забанить и полезные сайты. Но для статичных хостов (если их немного) это решение вполне подходит.
3. Фильтруем DNS запросы к ненужным нам доменам. Это несколько сложнее, поэтому опишу подробнее.
Updated.В составе IPtables, штатно идущем в Android есть модули расширения функционала, которыми мы дальше и воспользуемся. Помня, что DNS запросы отправляет система (UID 0) пишем правило:
Вторая строчка пропустит все остальные DNS запросы. Комментарии я указал для удобства, чтобы команда iptables -L -v показывала результаты блокировок нагляднее.
5. Фильтруем доступ в интернет по приложениям (у меня Google Chrome имел UID 10060). Разрешаем выход в интернет Google Chrome и запрещаем всем остальным приложениям.
Слабым местом этого способа фильтрации является его опора на наличие отметки UID на каждом конкретном пакете при прохождении его через Netfilter/IPtables. Обнаружилось это по непонятным TCP соединениям к серверам Google, пакеты которых не содержали UID. Исследование показало, что эти пакеты инициированы процессом Google Captive portal login. Я решил эту проблему обходным путём — просто выключив эти запросы командами в ADB shell:
Радует, что (судя по накопленной статистике за несколько суток перехвата Wi-Fi трафика), никаких иных системных процессов отсылающих пакеты без UID в исследовавшемся телефоне нет.
Update. Дальнейшее наблюдение показало как я ошибался. Такие «тихие» процессы есть, но часть из них невинно общается друг с другом через адрес 127.0.0.1, что ненаказуемо.
Всё остальное надо банить.
Поэтому, для их правильной фильтрации, надо добавить в самое начало скрипта ещё две строчки:
Update. Уже после опубликования статьи для меня окончательно стало ясно, что UID приложений, задаваемый системой при установке приложения, при обновлении и/или переустановке приложений может непредсказуемым образомменяться. Следовательно, доступ в интернет для приложения тоже отвалится и надо будет переписывать правило Netfilter/IPtables заново.
Для решения этой проблемы набросал небольшой кусок скрипта, который читает из хвоста файла наименования приложений, проверяет их наличие в системной базе приложений, и, при наличии, берёт оттуда же UID приложения и динамически (в процессе работы скрипта) формирует правило Netfilter/IPtables.
Строго говоря — чтение параметров из тела скрипта — это тоже костыль. Но меня оправдывает то, что на момент работы скрипта, подмонтировать файловую систему доступную снаружи при обычной работе телефона — невозможно. В папке /dev нет соответствующих файлов устройств. Допускаю, что это может быть особенность прошивки конкретного телефона.
Текст специально сделал максимально подробным, для лучшего понимания.
После переустановки/обновления приложения нужно всего лишь перезагрузить телефон.
6. Для целей мониторинга работы правил Netfilter/IPtables можно добавить ещё вот такую строчку:
Параметр IP адрес отправителя (--source 10.1.30.42) можно опустить, но в этом случае лог будет завален записями сетевой активности процессов, завёрнутых на адрес 127.0.0.1 файлом hosts. Лог можно читать через команду dmesg (dmesg | grep IPtables) в ADB Shell.
Версию статьи, которая писалась как полная инструкция по решению этой проблемы с Xioami Redmi 3S я выложил на Google Drive. Сюда её выкладывать не рискнул именно из-за объёма.
Читайте также: