Zpět na domů

Automatické zmrazení aplikací při VPN — technické řešení

Analýza zranitelností sandboxů Androidu při detekci VPN a implementace řešení prostřednictvím automatického vypnutí aplikací. Anubis blokuje pozadíovou aktivitu, zabraňuje úniku IP adres.

Anubis: Plná izolace aplikací od detekce VPN
Advertisement 728x90

# Anubis: Automatické zmrazení aplikací při aktivním VPN

Oblíbené aplikace v Rusku prohledávají zařízení na přítomnost VPN a odesílají výstupní IP adresy k blokování. Řešením je automatické zmrazení aplikací při aktivním VPN. Anubis, open-source nástroj, blokuje pozadí aktivitu aplikací a činí je neviditelnými pro detekční systémy.

Proč sandboxy problém nevyřešují

Pracovní profily Androidu (Island, Insular) skrývají VPN před ConnectivityManagerem, ale nezabránějí síťovým únikům. Aplikace v pracovním profilu stále vidí:

  • Rozhraní tun0 prostřednictvím NetworkInterface.getNetworkInterfaces()
  • Trasy prostřednictvím /proc/net/route
  • SOCKS5 proxy na localhost (port 1080 a další)

Tyto kontroly fungují bez oprávnění a odpovídají metodice Ministerstva digitálního rozvoje z roku 2026. I při izolaci profilu může aplikace určit výstupní IP adresu VPN serveru a odeslat ji Roskomnadzoru. Níže uvedený kód demonstruje, jak standardní kontrola prostřednictvím ConnectivityManageru je filtrována mezi profily:

Google AdInline article slot
// Kód v pracovním profilu neodhalí VPN hlavního profilu
val cm = getSystemService<ConnectivityManager>()
val vpnActive = cm.allNetworks.any {
    cm.getNetworkCapabilities(it)
        ?.hasTransport(NetworkCapabilities.TRANSPORT_VPN) == true
}
// Výsledek: vpnActive == false

Kritická zranitelnost v VLESS klientech (nechráněný SOCKS5 proxy) problém zhoršuje. Aplikace může nejen VPN odhalit, ale i využít k určení výstupní IP. Metody jako tříkaskádové VPN problém posouvají, ale nevyřešují — špeh stejně získá výstupní IP prvního uzlu.

Architektonická omezení Androidu

Android nepoužívá network namespaces pro profily, na rozdíl od desktopových OS. Virtualizace (VirtualBox, QEMU) na PC síťový zásobník plně izoluje, ale na Androidu:

  • Síťový zásobník je společný pro všechny profily
  • Pozadí aktivita je povolena prostřednictvím BroadcastReceiver, JobScheduler, FCM
  • Doze Mode a App Standby nezaručují úplné zastavení

I při ideální síťové izolaci pozadí procesy pokračují v práci. Aplikace s oprávněním k pozadí aktivitě (banky, messengery) pravidelně kontrolují:

Google AdInline article slot
  • Stav sítě prostřednictvím systémových API
  • Otevřené porty na localhost
  • Dostupnost blokovaných zdrojů

Pracovní profil tyto kontroly neblokuje. Jediná spolehlivá metoda je úplné vypnutí aplikace systémovým příkazem pm disable-user.

Jak Anubis funguje

Anubis monitoruje stav VPN prostřednictvím VpnService a automaticky vypíná cílové aplikace. Klíčové komponenty:

  • Systémový monitoring: Sledování událostí CONNECTIVITY_ACTION a stavu VpnService
  • Správa balíčků: Volání PackageManager.setApplicationEnabledSetting() s příznakem DONT_KILL_APP
  • Seznam cílů: Filtrování podle package name (např. ru.max.messenger, ru.tbank)

Proces aktivace:

Google AdInline article slot
  • Uživatel zapne VPN
  • Anubis obdrží událost prostřednictvím BroadcastReceiver
  • Pro každou aplikaci ve whitelistu se provede pm disable-user
  • Ikony aplikací zmizí z launcheru, pozadí procesy se zastaví

Při vypnutí VPN systém aplikace automaticky vrátí do pracovního stavu. Pro fungování je potřeba oprávnění CHANGE_NETWORK_STATE a oprávnění k změně stavu aplikací (prostřednictvím ADB nebo root):

# Aktivace příkazu vypnutí pro uživatelsky nainstalované aplikace
adb shell pm enable-user --user 0 ru.target.app

Technické nuance implementace

Anubis obchází omezení Androidu na vypnutí uživatelských aplikací dvěma přístupy:

  • ADB režim: Nastavení přes počítač pro zařízení s laděním
  • Root přístup: Přímé volání pm disable-user prostřednictvím su

Při použití ADB je potřeba jednorázové nastavení:

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

Důležité: po vypnutí je aplikace plně izolována od systému. Neobdrží vysílací události, nemá přístup k síti a nemůže spustit procesy. To zaručuje, že i pokročilé metody detekce (skenování portů, analýza tras) se stanou nemožnými.

Co je důležité

  • Pracovní profily skrývají VPN jen před ConnectivityManagerem, ale ne před nízkouúrovňovými síťovými kontrolami
  • Pozadí aktivita aplikací zůstává aktivní i v izolovaném profilu
  • Úplné vypnutí prostřednictvím pm disable-user je jediný způsob, jak zaručit absence úniků
  • Anubis proces automatizuje a váže stav aplikací k VPN
  • Pro aktivaci funkcí na uživatelských aplikacích je potřeba ADB nebo root

— Editorial Team

Advertisement 728x90

Číst dál