Использование частного профиля и макросов MacroDroid как способ защиты от шпионских модулей российских приложений на Android

Неделю назад автор A.g опубликовал на форуме методичку Минцифры о способах, используемых для обнаружения VPN, для разных платформ. Из анализа следует, что больше всего уязвимы для обнаружения смартфоны на базе Android. При этом способы полностью скрыть VPN отсутствуют (особенно без root-прав) в силу архитектуры ОС.

Из популярных способов защиты предлагается:

  1. Защита логином и паролем SOCKS5-соединения.
  2. Правильно настроенная маршрутизация в VPN-клиенте.
  3. Включение функции «Блокировать соединение без VPN» в настройках телефона.
  4. Разные входной и выходной IP.
  5. и другие способы.

Комбинация этих методов защищает от обнаружения IP-адреса, используемого в качестве выходного, но не решает главную проблему: скрытие tun0-интерфейса и следов использования VPN в системе.

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

Идея: создать частное пространство и перенести туда все российские приложения сомнительного качества. Через макросы MacroDroid реализовать выключение VPN при входе в частное пространство и его включение при выходе.

Частное пространство изолирует файловую систему, но не сетевой стек. Поэтому приложению-шпиону будет виден tun0-интерфейс и другие следы использования VPN. Именно поэтому мы задействуем макросы. Для этого способа не нужны root-права, но потребуется Shizuku для принудительного завершения процесса VPN-клиента.

Все нижеописанное производилось на Google Pixel 10 (Android 16).

Инструкция:

  1. Создаем частное пространство через стандартный интерфейс Android. На других телефонах оно может называться иначе и быть реализовано по-разному (например, Samsung Knox или Xiaomi Second Space).
  2. Переносим (устанавливаем) российские приложения сомнительного качества в частное пространство.
  3. Настраиваем VPN-клиент: включаем «Автоматическое подключение» (Включать прокси при запуске/обновлении приложения, если он был запущен до этого). Это нужно для автозапуска конфигурации, которая была активна до входа в пространство. Такая настройка есть в большинстве sing-box клиентах. Проверенно для (husi, nekobox).
  4. Устанавливаем MacroDroid в основное пространство телефона.
  5. Добавляем макросы.
    5.1. Макрос №1: Выключение VPN в частном профиле
    Триггер: Интент получен android.intent.action.PROFILE_AVAILABLE (срабатывает в момент разблокировки частного пространства).
    Действия:
    1. Завершить приложение <Название VPN клиента>, у меня это husi.
    2. Завершить фоновые процессы <Название VPN клиента>.
      Ограничение: Состояние VPN — «Включено».
      5.2. Макрос №1: Включение VPN при выходе
      Триггер: Интент получен android.intent.action.PROFILE_UNAVAILABLE (срабатывает при блокировке пространства или выключении экрана).
      Действия:
    3. Запустить <Название VPN клиента>
    4. Задержка 1 секунда.
    5. Нажать кнопку «Назад» (чтобы свернуть интерфейс).

Вышеперечисленные интенты идеально работают на Google Pixel. На других устройствах они могут отличаться - в таком случае уточните нужные экшены для конкретной модели в документации/ИИ.

При такой схеме шпионские модули находятся в изолированном пространстве и не пересекаются с легитимными приложениями. В момент открытия пространства VPN принудительно выключается, а при закрытии - шпионские приложения принудительно завершают свою работу и удаляются из фона (для Google Pixel)

, после чего макрос включает VPN клиент с запущенной конфигурацией, выбранной до открытия частного пространства. Это обеспечивает баланс между безопасностью и комфортом.

А если VPN (tun0) включен, но российскими приложениями в этот момент не пользуемся, они палят его в фоне? Или только когда непосредственно открываешь их?

Если вопрос общий – да, палят. И на Android сильно дольше, чем на iOS. На смартфонах обычно сетевой стек между приложениями общий, т.к они все равноценны.

Здесь случай другой – VPN мгновенно выключается при переходе в “другое userspace пространство”.

Вопрос – обрубается ли сетевая активность приложений предыдущего пространства мгновенно и полностью? Атомарное ли это событие (гарантировано отсутствие race condition) или только постепенная деградация активности?

UPD: ниже ответили

Ответ на ваш вопрос. Для устройств Samsung нужно включить отдельную опцию в настройках Secure Folder/Knox, которая запрещает фоновую работу приложений при выходе из Secure Folder/Knox.

Просто я не держу VPN включенным 24 на 7, а только когда надо зайти в условный ТГ или дискорд на пару минут почитать/отправить сообщения.

Получается все российские приложения в фоне N-ое кол-во раз проверяют, не появился ли в системе интерфейс tun0?

Если так, то можно вместо перемещения в Knox их просто останавливать/замораживать в настройках? В заморозке они ничего не будут отслеживать?

Могут проверять. Проверяют ли сейчас - непонятно, но это, кажется, вопрос времени.

Остановленные приложения могут перезапуститься. Автоматическое решение для за/разморозки при в(ы)ключении VPN-а - Anubis.

А находясь в папке Knox, пока я сам туда к ним не зайду, они никаких проверок в фоне не смогут проводить?

Если вы не закрыли и залочили Knox (в One UI 8+ это почему-то вручную делается, либо нужно погасить экран) или не включили опцию запрета фоновой работы приложений в Knox, то он сможет проводить проверки. При одновременном закрытии и блокировки Knox и включении опции запрета фоновой работы приложений в Knox они не смогут никакие фоновые проверки проводить.

А вот ещё что… Некоторым приложениям работу в фоновом режиме можно запретить в настройках батареи (Режим экономии энергии или что-то в этом роде). Если это так, то это будет намного проще сделать, чем юзать Knox.

Я не верю, что их это убьет сразу. Какое-то время в фоне повисят. Вряд ли это атомарное событие, что свернул приложение и оно тут же умерло полностью. Это хуже тратит батарею, если вдруг понадобится ещё раз открыть приложение, особенно на Android.

Так что нет, я не думаю что одно только это поможет.

В документации написано, что в некоторых случаях такие приложения всё равно могут работать в фоновом режиме.

Получается все российские приложения в фоне N-ое кол-во раз проверяют, не появился ли в системе интерфейс tun0?

Не все, но некоторые да. Можно проверить на текущей версии приложения Дикси, оно проверяет наличие tun интерфейса в реальном времени и сразу блокируется. В фоне эта проверка тоже работает - я открыл приложение дикси, свернул его, открыл браузер, включил туннель без маршрутов, выключил туннель, развернул дикси - он на полсекунды моргнул своей заглушкой про ВПН, то есть он в фоне зафиксировал возникновение tun, но отрисовал свою заглушку только после разворота.