Retour à l'accueil

Gel automatique des applications sur VPN — solution technique

Analyse des vulnérabilités des sandboxes Android dans la détection VPN et implémentation de la solution par désactivation automatique des applications. Anubis bloque l'activité en arrière-plan, empêchant les fuites d'adresse IP.

Anubis : Isolation complète des applications de la détection VPN
Advertisement 728x90

## Anubis : Congélation automatique des applications lorsque le VPN est actif

Les applications populaires en Russie scannent les appareils pour détecter l'utilisation de VPN et rapportent les adresses IP sortantes afin qu'elles soient bloquées. La solution ? Congélation automatique des applications dès que le VPN est activé. Anubis, un outil open-source, bloque l'activité en arrière-plan des applications, les rendant invisibles aux systèmes de détection.

Pourquoi les profils de travail ne résolvent pas le problème

Les profils de travail Android (Island, Insular) masquent le VPN de ConnectivityManager, mais ils n'empêchent pas les fuites réseau. Les applications dans le profil de travail peuvent toujours voir :

  • L'interface tun0 via NetworkInterface.getNetworkInterfaces()
  • Les routes via /proc/net/route
  • Proxy SOCKS5 sur localhost (port 1080 et autres)

Ces vérifications fonctionnent sans permissions et sont conformes aux lignes directrices du Ministère du Développement numérique pour 2026. Même avec l'isolation des profils, l'application peut détecter l'adresse IP sortante du serveur VPN et l'envoyer à Roskomnadzor. Le code ci-dessous montre comment la vérification standard de ConnectivityManager est filtrée entre les profils :

Google AdInline article slot
// Code in rabochem profile not obnaruzhit VPN osnovnogo profilya
val cm = getSystemService<ConnectivityManager>()
val vpnActive = cm.allNetworks.any {
    cm.getNetworkCapabilities(it)
        ?.hasTransport(NetworkCapabilities.TRANSPORT_VPN) == true
}
// Result: vpnActive == false

Vulnérabilité critique dans les clients VLESS (proxy SOCKS5 non protégé) aggrave les choses. L'application peut non seulement détecter le VPN mais aussi l'utiliser pour identifier précisément l'IP sortante. Des techniques comme les VPN en triple cascade ne font que déplacer le problème — elles ne l'éliminent pas, car l'espion obtiendra toujours l'IP sortante du premier nœud.

Limitations architecturales d'Android

Android n'utilise pas les espaces de noms réseau pour les profils, contrairement aux OS de bureau. La virtualisation (VirtualBox, QEMU) sur PC isole complètement la pile réseau, mais sur Android :

  • La pile réseau est partagée entre tous les profils
  • L'activité en arrière-plan est autorisée via BroadcastReceiver, JobScheduler, FCM
  • Le mode Doze et App Standby ne garantissent pas un arrêt complet

Même avec une isolation réseau parfaite, les processus en arrière-plan continuent de tourner. Les applications avec permissions d'activité en arrière-plan (banques, messageries) vérifient régulièrement :

Google AdInline article slot
  • L'état du réseau via les API système
  • Les ports ouverts sur localhost
  • La disponibilité des ressources bloquées

Les profils de travail ne bloquent pas ces vérifications. La seule méthode fiable consiste à désactiver complètement l'application via la commande système pm disable-user.

Comment fonctionne Anubis

Anubis surveille l'état du VPN via VpnService et désactive automatiquement les applications cibles. Composants clés :

  • Surveillance système : Suivi des événements CONNECTIVITY_ACTION et de l'état VpnService
  • Gestion des paquets : Appel de PackageManager.setApplicationEnabledSetting() avec le drapeau DONT_KILL_APP
  • Liste des cibles : Filtrage par nom de paquet (ex. : ru.max.messenger, ru.tbank)

Processus d'activation :

Google AdInline article slot
  • L'utilisateur active le VPN
  • Anubis reçoit l'événement via BroadcastReceiver
  • Pour chaque application de la liste blanche, pm disable-user est exécutée
  • Les icônes des applications disparaissent du lanceur, les processus en arrière-plan s'arrêtent

Lorsque le VPN est désactivé, le système restaure automatiquement les applications à l'état fonctionnel. Cela nécessite la permission CHANGE_NETWORK_STATE et la permission de modifier les états des applications (via ADB ou root) :

# Akaktywatsiya komandy otklyucheniya for user-installed prilozheniy
adb shell pm enable-user --user 0 ru.target.app

Détails de mise en œuvre technique

Anubis contourne la restriction d'Android sur la désactivation des applications installées par l'utilisateur grâce à deux approches :

  • Mode ADB : Configuration via ordinateur pour les appareils avec débogage activé
  • Accès root : Appel direct à pm disable-user via su

Pour l'utilisation en mode ADB, une configuration unique est requise :

adb shell pm set-install-location 2
adb shell pm grant com.anubis.control android.permission.CHANGE_NETWORK_STATE

Important : Après désactivation, l'application est complètement isolée du système. Elle ne reçoit pas d'événements broadcast, n'a pas d'accès réseau et ne peut pas démarrer de processus. Cela garantit que même les méthodes de détection avancées (scan de ports, analyse de routes) deviennent impossibles.

Points clés

  • Les profils de travail masquent le VPN uniquement de ConnectivityManager, pas des vérifications réseau de bas niveau
  • L'activité en arrière-plan des applications reste active même dans les profils isolés
  • La désactivation complète via pm disable-user est la seule façon d'assurer l'absence de fuites
  • Anubis automatise le processus, en liant les états des applications à l'état du VPN
  • Nécessite ADB ou root pour activer sur les applications installées par l'utilisateur

— Editorial Team

Advertisement 728x90

Lire ensuite