Что такое msa в андроиде – Оптимизация автономности смартфона: Разряд аккумулятора [Часть 1] — Mi 5/5s/5s+ — Mi Community
Приложение msa Xiaomi — что это за программа и как удалить, отключить
Каждый любопытный владелец после покупки очередного мобильного телефона проверит все настройки и установленные приложения. Человек всегда будет интересоваться тем, что тот или иной производитель установил в аппарат. Очень внимательные обладатели смартфонов Xiaomi могли увидеть в списке приложение, которое называется MSA. Однако далеко не каждый знает о предназначении MSA Xiaomi и что это за программа. Параллельно с этим возникает вопрос и о способах ее удаления.
Что такое MSA Xiaomi
Китайская компания Сяоми отличается необычной политикой: производители продают гаджеты по минимальной стоимости, при этом практически не извлекая выгоды. От продаж доход составляет не более 5% после вычета налоговых сборов.
Основную прибыль китайские производители получают от показов назойливой рекламы, которую владельцы гаджетов замечают в системных приложениях.
MSA внедряет рекламные объявления в браузер и загрузки. Благодаря этому люди видят рекламу, которая основывается на поисковых запросах. Программа встроена в официальную Global версию прошивки аппарата, при этом версия Android не имеет здесь никакого значения.
Существует еще одно предположение, которое говорит, что программа взаимодействует с данными погоды и обоями устройства. По этой причине частые обновления требуют постоянного скачивания новых файлов.
Появление MSA Xiaomi
На более ранних моделях прошивки MSA устанавливалась на устройство после нескольких обновлений. Сегодня же приложение изначально присутствует в системе телефона. Поэтому все китайские смартфоны Сяоми на рынок поступают с установленной программой.
Главное неудобство и проблема — денежные затраты. Чтобы приложение стабильно работало на смартфоне, оно должно отправлять и принимать незначительные по размеру системные файлы. Однако мобильные операторы учитывают этот трафик, из-за чего его расход постепенно увеличивается.
Если система будет обновляться в домашнем регионе, то это ещё не так критично. А вот в роуминге такая файловая передача значительно увеличивает денежные затраты на мобильный интернет.
Способы блокировки
Изначально стоит попробовать ограничить все действия через разрешения.
Удалить MSA на Xiaomi можно, как и любое другое приложение. Однако для этого нужно обладать root правами. После их получения необходимо скачать любое приложение, предназначенное для удаления системных файлов. Play Market предлагает их огромное множество. Пользователи часто выбирают Uninstall Expert.
Через это приложение следует найти MSA. Чтобы проверить правильность выполненного действия, необходимо зайти в приложения через настройки, в поисковой строке вбить «msa». Если результаты поискового запроса ничего не выдали, то удаление было произведено.
Вместо удаления можно воспользоваться заморозкой компонента с помощью Titanium Backup (root тоже требуется).
Приложение удаляется и методом отключения Mi-аккаунта. Для этого следует из меню устройства отключить синхронизацию с облаком. После проделанного действия основная информация будет храниться на смартфоне, не взаимодействуя с Сетью. Однако программа всё ещё может принимать файлы из Интернета.
Можно ли удалять
Пользователи боятся удалять системную программу, так как полагают, что подобное действие отрицательно скажется на работе аппарата. Но многочисленные тестирования и отзывы на форуме 4pda говорят о том, что никаких изменений относительно работы устройств не наблюдалось.
Главный недостаток системы Андроид заключается в том, что она напичкана приложениями, которые сложно отключить или удалить с телефона. Но MSA не будет мешать владельцу устройства полноценно им пользоваться, если вопрос, конечно, не касается стоимости мобильного трафика.
Xiaomi MSA — что это за приложение на Андроиде и можно ли его удалить
Обратная сторона удобства оболочки MIUI для своих смартфонов в ее полной изолированности. Даже матерые хакеры не могут докопаться до сути всех процессов внутри системы, из-за чего давно сформировалась теория, что гаджеты компании – настоящее устройство слежки. В обзоре разберемся, что такое приложение MSA для Xiaomi и действительно ли оно является одним из способов слежения за юзером.
Назначение программы
Несмотря на то что недавно один из разработчиков MIUI ответил в MICommunity, для чего точно нужен MSA, приведем примеры всех вариантов предположений и теорий, так как официальные источники не всегда готовы выдавать реальную информацию о настоящем положении дел. А выбирать во что из этого верить придется уже вам.
Началось все с пространного эссе на тему MSA на «Хабре» пару лет назад, и гласило оно о том, что первым делом после подключения смартфона Redmi 3S к интернету, он подкачивает файл AnalyticsCore.apk, после чего приложение MSA по зашифрованному каналу начинает передавать данные на сервера компании производителя. Здесь то и разыгралась фантазия – предполагалось, что Сяоми «сливает» личные данные на собственные хранилища. Не то, чтобы сама концепция нова – так работают любые поисковики, Windows или, например, Iphone, но осадок оставался.
Вторая теория появилась уже после дотошного копания внутри самого приложения. Анализ передаваемой информации, иконок и прочих косвенных улик показал, что этот процесс взаимодействует с интернет серфингом пользователя и подгружает в браузер рекламу. А потому все ваши данные были необходимы скорее для правильного составления suggest-ленты в браузере (которая действительно составляется очень точно по вашим запросам) и выдачи для вас полезной контекстной рекламы.
На этом вроде бы и сошлись, однако, в конце 2017 года именно приложение MSA неожиданно «заглючило», перестав обновляться на большинстве смартфонов компании. Тогда-то на форумах MiCommunity и произошел настоящий бум конспиративных теорий, а компания выдала первый за долгие годы похожий на официальный ответ через модератора.
В сообщении говорится о том, что MSA – приложение, работающее с обоями вашей системы. Обои у MIUI динамические и изменяющиеся, а потому понятно, какие файлы периодически подкачиваются в систему.
Важно! Приложение обоев связано и с приложением погоды, так что эти данные тоже «подкачиваются» через MSA.
Появление MSA в системе.
Если на старых моделях прошивки MIUI MSA закачивался в систему после нескольких апгрейдов, то сегодня система изначально идет со встроенной программой. Так что смартфон Xiaomi приобретаются уже с MSA.
Наибольшая проблема, которая потенциально может быть связана с MSA – это проблема растраты трафика. Приложение часто отправляет и принимает от сервера небольшие файлы (1-5 Кб), что не критично, но вот наши сотовые операторы округляют эти цифры до 50-150 Кб, из-за чего потраченный трафик серьезно растет. Если в обычных условиях это никак не влияет на работу смартфона, то в роуминге подобные траты способны быстро выкачать деньги. Хотя, справедливости ради стоит сказать, что китайский Андроид Xiaomi посылает не так много запросов в день, да и чаще всего это напрямую связано с вашим интернет-серфингом.
Методы борьбы с MSA
Скажем сразу – полноценно отключить MSA без последствий для смартфона невозможно, ультимативных решений нет. Приложение завязано на косметических функциях, из-за чего сразу заметите неполадки в работе. А еще как-то помешать работе MSA попросту очень сложно, ведь MIUI – крайне закрытая экосистема. Но варианты существуют. Для них потребуются неофициальные прошивки, анлок смартфона и получение root-доступа.
Самый простой способ решения сути проблемы (пересылку личных данных) – полная блокировка Mi-аккаунта. Это можно сделать из меню смартфона, отключив всю синхронизацию смартфона с облаком. Теперь ваша основная информация хранится на смартфоне и не передается в интернет – однако, MSA, вполне возможно, продолжает работать.
Сложный же способ – это собственноручная блокировка всех адресов, на которые уходит ваша информация. Для этого пользователю нужно получить root-права и установить на свой телефон приложение Titanium Backup, который наглядно показывает, куда уходит трафик. В этом случае вам стоит пройти по адресу /etc/hosts на своем смартфоне, открыть файл «hosts» и самостоятельно заполнять его новыми адресами. При этом вы должны отчетливо понимать, что здесь нормальные системные приложения, а что подозрительные адреса. Все это очень похоже на борьбу Роскомнадзора с Телеграмм, а потому действо это крайне малоэффективное, ведь новые адреса генерируются автоматически.
В итоге…
Приходится признавать, что лучшее из возможных решений – это простое принятие того факта, что смартфоны, как и многие другие устройства, теперь способны следить за вашей жизнью. Как минимум интернет запросы доступны большинству IT-корпораций. И да, все это подается как отличный инструмент для развития серфинга и рекламы, но на деле никто не знает, как именно используется ваша конфиденциальная информация.
Приложение msa на Xiaomi: что это такое?
С обновлениями прошивки MIUI пользователи начали замечать появление новых приложений, например, mab, о котором мы уже писали ранее. Сегодня давайте рассмотрим другое приложение, которое называется msa и которое легко найти в соответствующем разделе. Что же это за приложение?
На этот счет есть несколько мнений. Одно из них говорит о том, что это служба, которая скачивает и затем вставляет рекламу в стандартные приложения «Браузер» и «Загрузки», однако подтверждение этому найти не удалось.
Второе мнение звучит куда более правдоподобно: это приложение, которое используется для календаря Mi WallPaper.
Во что верить, решать вам, мы склоняемся ко второму варианту.
Помните, что вы всегда можете отключить приложение, изменить разрешения или выключить ему доступ в интернет. Для этого зайдите в «Настройки», найдите «Все приложения».
Найдите приложение msa (в примере их два).
Откройте и настройте по необходимости, например, убрав все разрешения.
А можно ли удалить msa? Приложение не удаляется, но если вам это так необходимо, вы можете получить рут, установить Titanium Backup и заморозить его.
Однако мы этого делать настоятельно не рекомендуем.
что это, как отключить и удалить
Смартфоны и многие другие устройства способны следить за активностью пользователя. Интернет-запросы, о которых, никто не узнает, если удалить их из истории поиска, доступны IT-корпорациям, это позволяет им лучше работать с рекламой.
Многие оболочки телефонов «изолированы» и искусным хакерам не удается вникнуть в суть всех процессов системы. Не исключение и телефоны от Xiaomi с приложением MSA.
Назначение программы
У Xiaomi интересная политика: она продает гаджеты по минимальной цене и практически не зарабатывает на этом. Доход от продажи не превышает 5% после уплаты налогов.
Компания получает прибыль от показа рекламы. Оболочка смартфонов буквально напичкана объявлениями. Xiaomi разрешает показ рекламы системным приложениям, что раздражает и мешает.
На старых моделях приложение MSA появляется после нескольких обновлений. В новых же моделях он уже предустановлен.
MSA по зашифрованному каналу передает на сервер компании производителя данные, введённые пользователем. Так можно подумать, что Xiaomi собирает личную информацию в собственное хранилище.
Приложение взаимодействует с интернет серфингом и загружает в браузер рекламу. И поэтому возможно, что вся информация необходима для верного составления suggest-ленты, которая отражает поисковые запросы.
Ещё есть предположение, что MSA работает с обоями смартфона и погодой. Необходимость частого обновления объясняет постоянное «подкачивание» новых файлов.
Одна из основных проблем и неудобств — это денежные затраты. Для стабильной работы устройства приложение часто отправляет и принимает небольшие файлы от сервера. Размер незначителен, но сотовые операторы округляют затраченный трафик, и расход постепенно растет.
В пределах домашнего региона это не так критично, но в роуминге такая незначительная фоновая передача может увеличить затраты на связь.
Android на устройствах Xiaomi передает не так много файлов, как на гаджетах других марок. Точный объем отправляемых данных зависит от того насколько активно пользователь серфит в интернете
Но всё разрешимо и можно избавится от этой проблемы.
Как отключить MSA?
Возникает очевидный вопрос: возникнут ли неполадки в работе телефона после отключения приложения? И тут пользователи делятся на две группы. Одни говорят, что удаление никак не отразилось на смартфоне, всё функционирует исправно и жизнь стала лучше без рекламы. Другие утверждают, что это опасно и нарушает «жизнедеятельность» устройства.
Если есть необходимость избавиться от приложения MSA, то вот возможные способы.
Самый простой способ — полная блокировка Mi-аккаунта.
Это делается из меню смартфона, нужно отключить синхронизацию с облаком. Вся основная информация отныне хранится на телефоне и не передаётся во всемирную паутину. Но возможно, MSA всё равно будет принимать файлы из интернета.
Второй способ — «Сложный»
Более сложный способ заключается в блокировке всех адресов, куда может уходить информация с устройства. Для этого нужно получить root-права и установить приложение Titanium Backup. В нем видно расход трафика. Далее нужно перейти по адресу /etc/hosts, открыть файл «hosts» и вручную заполнить его новым адресами, причем важно знать, какие являются системными приложениями.
Отключаем рекламу в системных приложениях
- «Безопасность»
1. Открываем;
2. Нажимаем на знак настроек в правом верхнем углу;
3. Переходим в самый низ и передвигаем тумблер «Получать рекомендации»; - «Очистка»
1. Запускаем;
2. Нажимаем на иконку с метлой в правом верхнем углу;
3. Выбираем знак настроек в правом верхнем углу;
4. Находим и снимаем выбор с «Получать рекомендации»;
- «Проводник»
1. Открываем системный файловый менеджер;
2. Выбираем настройки и переходим в раздел «Информация»;
3. Отключаем функцию «Получать рекомендации»; - «Загрузки»
1. Запускаем;
2. Нажимаем на три точки в верхнем правом углу;
3. В настройках отключаем «Получать рекомендации»;
- «Музыка»
1. Открываем системный музыкальный плеер;
2. Находим боковое меню и переходим в настройки;
3. Нажимаем на «Дополнительные настройки»;
4. В самом низу отключаем «Получать рекомендации»;
- Папки
1. Открываем любую папку на рабочем столе;
2. Выделяем её название;
3. Появится тумблер «Получать рекомендации», отключаем его;
Таким образом можно уменьшить расходы на мобильный интернет и частично избавиться от рекламы на устройстве.
Ещё немного про телефоны Xiaomi и борьбу с ними. Updated / Habr
Честно признаться, у меня не было планов писать и публиковать эту статью, но, после того, как за два месяца увидел в ближнем кругу коллег 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, приложения которых также предустановлены. Просто потому что я их считал отдельно. С ними тоже всё «весело».
Большая часть коннектов к серверам Xiaomi шла через HTTPS, поэтому разобраться в деталях ЧТО именно передаётся напрямую возможности не было. Отключение всевозможных логинов, синхронизаций и т.п. к исчезновению этого трафика не привело.
Дополнительно смущало то, что большей частью запросы были небольшими (объём принятого переданного трафика TCP сессий не превышал 1-2Кб), но, т.к. наши сотовые операторы округляют объём трафика вверх (Например, Tele2 до 150Кб), то, при неудачном совпадении, можно «накачать» таким образом существенные объёмы трафика, а в роуминге неожиданно попасть на деньги.
Тех, кого сей факт не смущает могут дальше не читать, т.к. дальше будет описание конкретики изоляции трафика от приложений, вшитых в заводскую прошивку.
Предварительные условия
Первое что необходимо — это рутовать телефон. Как это делается в случае Xiaomi я здесь описывать не буду, отсылаю желающих пройти этот путь к полной версии этой статьи (ссылка в конце).
Второе — это влить в телефон прошивку через кабель и стереть ВСЕ пользовательские данные.
Третье — телефон НЕ ДОЛЖЕН иметь доступа в интернет после залива свежей прошивки.
Update. До момента установки нижеописываемых ограничений, разумеется.
Disclamier. Все дальнейшие манипуляции над телефоном Вы делаете на свой страх и риск.
Ответственность за любой результат лежит на том, кто именно делал описываемые ниже действия.
Небольшая техническая вводная часть
Серверы, к которым обращается телефон, в большинстве своём расположены в облаке Amazon, поэтому обращения к ним происходит по именам, которые ресолвятся через round-robin DNS в разные IP адреса из разных подсетей /16. Блокировать их все по подсетям смысла особого нет — так можно половину интернета отфильтровать, что не есть хорошо. Блокировать по именам — хорошо, но не факт, что имена хостов из L3 доменов не генерируются динамически. Идеально было бы прибить все приложения, которые обращаются к серверам Xiaomi, но, как показала практика, глубина их интеграции в Android такова, что после удаления некоторых из них телефон может просто отказаться загружаться.
Также надо упомянуть про ограниченность инструментария, доступного для решения вышеописанных задач, т.к. большая часть приложений имеющих в названии 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. Пример:
root@land:/ # pm disable com.miui.analytics
pm disable com.miui.analytics
Package com.miui.analytics new state: disabled
root@land:/ # pm disable com.miui.systemAdSolution
pm disable com.miui.systemAdSolution
Package com.miui.systemAdSolution new state: disabled
root@land:/ # reboot
reboot
Фильтрация сетевых запросов
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) пишем правило:
$IPTABLES -A oem_out --protocol udp --dport 53 -m owner --uid-owner 0 -m string --algo bm --hex-string '|04|miui|03|com|00|' -m comment --comment "Deny UID 0 DNS queries for miui.com domain" -j DROP
#
$IPTABLES -A oem_out --protocol udp --dport 53 -m owner --uid-owner 0 -j ACCEPT
Updated. Первая строчка отфильтрует все UDP пакеты, отправленные системой (UID 0) на 53 UDP порт любого IP адреса и содержащие в себе байты 046d69756903636f6d00 (запросы к DNS серверу содержащие в себе .miui.com). IPtables самостоятельно преобразуют строчку |04|miui|03|com|00| в чисто шестнадцатиричый вид 046d69756903636f6d00.
Наличие шестнадцатиричной цифры на первой позиции для параметра —hex-string — обязательно, иначе IPtables не примет команду. Точки-разделители в доменном имени при формировании DNS запроса преобразуются в шестнадцатиричные цифры, означающие количество байт до следующего разделителя. Поэтому последний байт равен нулю (00h).
Вторая строчка пропустит все остальные DNS запросы. Комментарии я указал для удобства, чтобы команда iptables -L -v показывала результаты блокировок нагляднее.
4. Для работы Assited GPS необходимо дать возможность доступа к серверам QualComm процессу с UID 1000. Здесь всё сложнее, т.к. простая фильтрация пакетов по содержимому, как в случае DNS серверов, не сработает — начальные пакеты установления TCP соединения c флагами SYN, ACK ещё НЕ содержат в себе имя хоста, которое обязательно присутствует в HTTP запросе, а пакеты идущие после заголовка HTTP запроса уже могут не содержать в себе имя хоста. В результате фильтр пропустит из всей TCP сессии только часть пакетов, что равносильно её запрету или обрыву.
Поэтому рисуем вот такой костыль для фильтрации запросов седьмого уровня средствами 3-4 уровня:
# разрешаем инициировать установление TCP соединений на 80 порт всем процессам работающим под UID 1000.
$IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
#проверяем наличие слова xtrapath в пакетах TCP соединений установленных на 80 порт процессами с UID 1000 и помечаем эти соединения шестнадцатиричным числом 5555.
$IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m string --algo bm --string 'xtrapath' -j CONNMARK --set-xmark 0x5555
# убиваем пакеты всех установленных процессами с UID 1000 TCP соединений не имеющих нашей пометки число 5555
$IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m connmark ! --mark 0x5555 -j DROP
5. Фильтруем доступ в интернет по приложениям (у меня Google Chrome имел UID 10060). Разрешаем выход в интернет Google Chrome и запрещаем всем остальным приложениям.
$IPTABLES -A oem_out -m owner --uid-owner 10060 -m comment --comment "Permit Google Chrome internet access" -j ACCEPT
#
# Block all other processes
#
$IPTABLES -A oem_out -m owner --uid-owner 0-9999 -m comment --comment "Block all other system processes internet access" -j DROP
$IPTABLES -A oem_out -m owner --uid-owner 10000-99999 -m comment --comment "Block all other user processes internet access" -j DROP
Слабым местом этого способа фильтрации является его опора на наличие отметки UID на каждом конкретном пакете при прохождении его через Netfilter/IPtables. Обнаружилось это по непонятным TCP соединениям к серверам Google, пакеты которых не содержали UID. Исследование показало, что эти пакеты инициированы процессом Google Captive portal login. Я решил эту проблему обходным путём — просто выключив эти запросы командами в ADB shell:
root@land:/ # settings put global captive_portal_detection_enabled 0
root@land:/ # reboot
Update. Дальнейшее наблюдение показало как я ошибался. Такие «тихие» процессы есть, но часть из них невинно общается друг с другом через адрес 127.0.0.1, что ненаказуемо.
Всё остальное надо банить.
Поэтому, для их правильной фильтрации, надо добавить в самое начало скрипта ещё две строчки:
$IPTABLES -A oem_out --protocol all --source 127.0.0.0/8 --destination 127.0.0.0/8 -m comment --comment "Accept internal traffic" --jump ACCEPT
$IPTABLES -A oem_out --protocol all -m owner ! --uid-owner 0-99999 -m comment --comment "Drop any traffic which does not have UID." --jump DROP
Update. Уже после опубликования статьи для меня окончательно стало ясно, что UID приложений, задаваемый системой при установке приложения, при обновлении и/или переустановке приложений может непредсказуемым образомменяться. Следовательно, доступ в интернет для приложения тоже отвалится и надо будет переписывать правило Netfilter/IPtables заново.
Для решения этой проблемы набросал небольшой кусок скрипта, который читает из хвоста файла наименования приложений, проверяет их наличие в системной базе приложений, и, при наличии, берёт оттуда же UID приложения и динамически (в процессе работы скрипта) формирует правило Netfilter/IPtables.
Строго говоря — чтение параметров из тела скрипта — это тоже костыль. Но меня оправдывает то, что на момент работы скрипта, подмонтировать файловую систему доступную снаружи при обычной работе телефона — невозможно. В папке /dev нет соответствующих файлов устройств. Допускаю, что это может быть особенность прошивки конкретного телефона.
Текст специально сделал максимально подробным, для лучшего понимания.
# Permit intenet access for the packages listed at the end of this file. White list mode.
#
SU=`/system/bin/which su`
# changing reading file behavior (read whole file with \r\n into variable)
IFS=""
# reading first and second fields of every line of the system packages database into variable PACKAGESDB.
# Escalating privileges via su because of filesystem packages database file access limitations.
PACKAGESDB=`$SU -c "/system/bin/cut -d' ' -f 1,2 /data/system/packages.list"`
#
# Reading last lines of current script form the end till "exit 0" line
# Filtering empty lines, lines started with # and all symbols after # (comments) in every line.
#
# 's/#.*//' - remove all in every line after #
# '/^#/d' - remove lines staring with #
# '/./!d' - remove empty lines
# '/exit 0/,$ d' - remove all lines starting line with "exit 0"
# 's/ //g' - remove spaces from line
#
/system/bin/tac $0 | /system/bin/sed -e '/^#/d' -e 's/#.*//' -e '/exit 0/,$ d' -e '/./!d' -e 's/ //g'| while read line;
do
# Just in case 8-)
OUR_PACKAGE_NAME=$line
# Strict checking for existence of our package name in the system packages database. Checking first field.
PACKAGE_NAME_IN_DB=`echo $PACKAGESDB | /system/bin/cut -f 1 -d' ' | /system/bin/grep -Fx "$line"`
if
# Checking grep utility exit code. "0" means pattern found
test "$?" == "0"
then
#
# Looking for package UID in database. Checking second field. VERY important space after $line!!!
#
PACKAGE_UID=`echo $PACKAGESDB | /system/bin/grep "$line " | /system/bin/cut -f 2 -d' '`
else
# All other exit codes return us to the beginning of the cycle.
# echo "Package $OUR_PACKAGE_NAME not found"
$IPTABLES -A $CHAIN -m comment --comment "Package name $OUR_PACKAGE_NAME not found. Check package name." --jump LOG
continue
fi
#
# Set the package right for Internet access
#
$IPTABLES -A $CHAIN -m owner --uid-owner $PACKAGE_UID -m comment --comment "Permit $OUR_PACKAGE_NAME Internet access" -j ACCEPT
#
done
######
... skipped...
####
exit 0
####
####### Do NOT edit before this line #########
# Please add package names and comments after this line for granting them internet access.
#####
# Google Play Store and its companion processes
#
com.google.android.gms # Google Services Framework Internet access
com.android.vending # Google Play Market internet access
com.android.providers.downloads # Download manager service internet access
#
# Other Google apps
com.google.android.youtube # Youtube application internet access
com.google.android.apps.maps # Google Maps application internet access
com.google.android.googlequicksearchbox # Google Assistant internet access
#
#
com.android.chrome # Google Chrome browser internet access
После переустановки/обновления приложения нужно всего лишь перезагрузить телефон.
6. Для целей мониторинга работы правил Netfilter/IPtables можно добавить ещё вот такую строчку:
$IPTABLES -A oem_out --source 10.1.30.42 --protocol tcp --jump LOG --log-prefix "IPtables log:" --log-uid
Параметр IP адрес отправителя (—source 10.1.30.42) можно опустить, но в этом случае лог будет завален записями сетевой активности процессов, завёрнутых на адрес 127.0.0.1 файлом hosts. Лог можно читать через команду dmesg (dmesg | grep IPtables) в ADB Shell.
Версию статьи, которая писалась как полная инструкция по решению этой проблемы с Xioami Redmi 3S я выложил на Google Drive. Сюда её выкладывать не рискнул именно из-за объёма.
P.S. Я не разработчик Android-приложений, просто жизнь заставила два месяца поразбираться с сабжевым телефоном. Посему, господа профи, если я где ошибаюсь — поправляйте. Буду признателен.
P.P.S. В качестве средства перехвата использовался Zyxel Keenetic Extra. У него есть возможность перехватывать Wi-Fi трафик и сливать его на флэшку для последующего анализа.
Приложение MSA Xiaomi, что это, как удалить
Если вы очень любопытный пользователь, значит, у вас было небольшое путешествие по всем настройкам и приложениям телефона. Особенно в приложениях. Человеку всегда интересно посмотреть, что производитель установил в его аппарат.
Но очень внимательные люди однажды увидели в списке приложение под названием «MSA». Возникло сразу массу вопросов: что это такое? Как удалить? Не опасно ли это? Давайте разбираться.
Что такое msa?
В сети можно найти сотню различных мнений, что это за приложение, и почти все сходятся в одном – это программа, которая внедряет рекламу в стандартные приложения, такие как Браузер и Загрузки. Это нужно для того, чтобы в браузере отображалась реклама, согласно вашим запросам.
Она установлена на официальной global версии прошивки (версия андроид не имеет значения).
Как удалить msa?
Как и любую другую программу, msa тоже можно удалить. Но есть одно «но» – для этого нужны root права. Описывать установку рут прав мы не будем, так как вариантов для разных моделей много. Можем сказать, что после получения рут прав, вам нужно скачать любую программу для удаления системных приложений. Play Market забит ими под завязку. Одно из таких называется Uninstall Expert.
Через неё, находим msa, и удаляем. Если зайти в приложения (в настройках), и вбить в поиске «msa», то результатов не будет.
Кстати говоря, ещё одним интересным приложениям является mab. Оно также порождает кучу вопросов, но здесь всё проще. Mab отвечает за безопасный вход на китайские интернет-магазины, используя данные Mi аккаунта. Если вы не доверяете и этой программе, то можете удалить её таким же способом, как и msa.
Ещё одним методом удаления этих программ будет перепрошивка смартфона. Можно найти хорошую кастомизированную прошивку, которая уже почищена от ненужных приложений, и вам ничего не придётся менять, удалять и переделывать. Правда, некоторые из кастомных прошивок не обновляются, но при стабильной работе аппарата в этом нет нужды.
Влияет ли удаление msa xiaomi на работу смартфона?
Если почитать форумы, то мнения разделились поровну. Одни считают, что это очень опасно, другие говорят, что ничего не случится. Мы же тестировали удаление на redmi 4a, и никаких изменений, именно в работе, не наблюдалось.
Однако есть и другая сторона медали. Так как данное приложение имеет доступ к интернету, для передачи данных о ваших запросах, мы имеем дополнительный расход трафика. Он, конечно, не критичный, но со временем может обойтись в небольшую сумму.
Заключение
Какой вывод мы можем сделать? Система android всегда забита непонятно какими приложениями, и избавиться от «мусора» очень сложно. MSA не мешает пользователю полноценно пользоваться телефоном, поэтому во избежание нежелательных проблем, лучше его не трогать. Что касается mab, то с ним ситуация аналогична.
Ну и последнее, что хочется сказать – если вы боитесь ставить рут права, прошивать телефон и т. д., то просто не делайте этого. В неопытных руках, телефон может превратиться в кирпич, или начнётся нестабильная работа системы.
MSA на Xiaomi — что это за программа
Не так давно, после того, как мой смартфон Xiaomi Redmi обновился до MIUI 11, я озаботился удалением всевозможной рекламы, которой оболочка набита достаточно плотно. В процессе этой борьбы я натолкнулся на интересный системный сервис — msa. Найти его можно в списке приложений. В Интернете можно встретить множество мнений, вплоть до того, что это приложение используется для слежки китайской корпорацией за действиями пользователя. Давайте вместе разберёмся что это за программа MSA на Xiaomi, какую роль она исполняет и стоит ли её удалить или можно оставить?!
За что отвечает программа MSA
Итак, начнём с того, что в Интернете есть несколько мнений о том, какую роль играет приложение MSA в общей системе программной оболочки MIUI.
В онлайн-базах приложений программа числится примерно так:
Class name: com.xiaomi.ad.server.AdLauncher
Начать, думаю, стоит с того, что несколько лет назад в сети появилась информация о том, что при подключении к Интернету телефон Xiaomi или Redmi скачивает со своих серверов файл AnalyticsCore.apk. Далее начинается обмен данными между устройством и облачными сервисами корпорации, да ещё и в зашифрованном виде. Ключевую роль в обмене играет приложение MSA.
Первая реакция — паника! Ой-ой-ой! Сяоми сливает данные пользователя! Позже, когда истерика прошла, энтузиасты взялись копаться в «кишках» программы и обнаружили не совсем то, на что рассчитывали. Выяснилось, что программа эта отвечает за загрузку на телефон рекламы в соответствии с тем, что он ищет в Интернете. Ну и в завершении истории, представителя разработчика на официальном форуме MiCommunity заявил о том, что сервис MSA это часть системы MIUI Analytics.
Резюмируя всё вышесказанное, делаем вывод, что MSA — это сервис, который передаёт неперсонализированные данные о интересах пользователя, а в ответ получает код рекламных баннеров, который уже дальше распространяется по встроенному программному обеспечению телефона.
Как удалить или отключить MSA?!
На сегодняшний день удалить программу MSA из телефона Сяоми просто так не получится. Это уже часть оболочки и стандартными её средствами «выковырять» системный сервис не удастся. Есть два пути.
Первый путь — это просто перекрыть приложению возможность собирать данные и отправлять их через Интернет. Делается это так. Открываем настройки смартфона и заходим в раздел «Пароли и безопасность».
Далее, нужно открыть подраздел «Доступ к личным данным». Там Вы обнаружите список программ, которые собирают личные данные пользователя.
Находим приложение msa и отзываем ему разрешение на сбор данных, сдвинув влево переключатель.
Удаление системного сервиса
Если Вы всё же решили убрать программу MSA из телефона, тогда придётся либо получать root-права на нём, либо воспользоваться специальной утилитой Xiaomi ADB FastBoot Tools. Я не будут подробно останавливаться на том, как её скачать и использовать, а затрону самую суть.
С помощью этой утилиты Вы можете полностью выковырять Mi Analytics из MIUI, либо только один сервис msa, поставив на нём галочку и нажав на кнопку Uninstall.
P.S.: Удалять это приложение или просто заблокировать — дело Ваше. Лично я у себя не стал удалять. Просто отозвал разрешение и всё. Количество рекламы действительно уменьшилось в разы и меня это устроило.