Zpět na domů

Maskování SOCKS v Android VPN: ochrana před detekcí

Článek popisuje implementaci Android VPN-klienta s maskováním lokálního SOCKS-proxy pro obcházení detekce. Používají se Xray-core a tun2socks s dynamickými porty a autentizací. Potvrzena účinnost proti populárním detektorům.

Skrývání SOCKS-proxy v VPN pro Android před detekcí
Advertisement 728x90

Maskování lokálního SOCKS proxy v Android VPN klientech proti detekci

Populární VLESS klienti na Android nechávají otevřený lokální SOCKS proxy na fixním portu, což umožňuje aplikacím detekovat VPN a získat externí IP serveru. To potvrzují testy s nástroji jako RKNHardering: i v režimu split tunelování jsou vidět TUN rozhraní, systémové routy, seznam balíčků a dostupný proxy. Řešení spočívá v dynamické generaci náhodného portu a autentizace pro SOCKS5, které nejsou dostupné jiným aplikacím.

Princip detekce a opatření proti ní

Aplikace skenují localhost na přítomnost otevřených SOCKS portů. Standardní klienti (v2RayTun, v2rayNG, Hiddify) je nemaskují, což vede k úniku. Navrhovaný přístup:

  • Generace náhodného portu (např. 45478) při každém spuštění.
  • Automatické vytvoření unikátního loginu/hesla (např. upu6CHvvV:ZJC3GMDXKOLFdPKAfxBxrHiU).
  • Spuštění proxy pouze pro interní použití přes tun2socks.

Tím se blokuje skenování: externí aplikace se nemohou připojit bez údajů a nevidí skutečné IP.

Google AdInline article slot

Technická realizace na bázi Xray a tun2socks

Xray-core poskytuje multiplatformní binárky pro VLESS/VMess. Pro plnohodnotné TUN se místo nativního tunelování Xray používá tun2socks (statická kompilace linux-arm64). Architektura:

  • Spuštění Xray se SOCKS5 na náhodném portu.
  • tun2socks přesměruje provoz z TUN deskriptoru do proxy.
  • Obal v Flutter + Kotlin + C++ řídí procesy.

Obcházení omezení Android 10+ (porušení W^X): balení binárek do lib/*.so.

Log typického spuštění:

Google AdInline article slot
[2026-04-12T09:44:46.641632] [INFO] Starting VPN
[2026-04-12T09:44:46.641818] [INFO] Underlying network set: 176
[2026-04-12T09:44:46.641946] [INFO] nativeSetMaxFds result (parent): 0
[2026-04-12T09:44:46.643867] [INFO] TUN established, dup fd=142
[2026-04-12T09:44:46.644004] [INFO] xray started
[2026-04-12T09:44:46.644130] [INFO] Starting tun2socks (native): /data/app/~~_xfukaXUtA4X7kd1BmB4UA==/com.teapodstream.teapodstream-zTL0GGuDWxPk8XDn0VkAiw==/lib/arm64/libtun2socks.so -device fd://142 -proxy socks5://upu6CHvvV:[email protected]:45478 -mtu 1500 -loglevel error -tcp-sndbuf 524288 -tcp-rcvbuf 524288 -tcp-auto-tuning
[2026-04-12T09:44:46.644247] [INFO] tun2socks started (pid=28880)
[2026-04-12T09:44:46.644399] [INFO] VPN connected

Parametry tun2socks: MTU 1500, TCP buffery 524288 bajtů, autotuning. PID tun2socks se sleduje pro řádné ukončení.

Funkce klienta

Realizace nazvaná TeapodStream pokrývá základní scénáře:

  • Protokoly: VLESS, VMess, Trojan, Shadowsocks.
  • Split tunelování: vyloučení aplikací z VPN.
  • Předplatné přes URL s automatickou aktualizací konfigurací.
  • Dynamická autentizace proxy.

Testy na detektorech (z původního článku o zranitelnosti VLESS a RKNHardering) potvrzují absenci detekce SOCKS a IP.

Google AdInline article slot

Co je důležité

  • Lokální SOCKS se maskuje náhodným portem a údaji — klíč k obcházení skenování localhost.
  • tun2socks + Xray zajišťují stabilní TUN bez problémů nativního tunelování.
  • Balení binárek do .so obchází Android SELinux.
  • Podpora split tunelování nezrušuje detekci jiných znaků (TUN, routy).
  • Otevřený zdroj umožňuje ověřit implementaci.

— Editorial Team

Advertisement 728x90

Číst dál