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.
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í:
[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.
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
Zatím žádné komentáře.