Goedkoper internet in het buitenland: Omzeil tetheringblokkade

Door RadioAir op zondag 17 mei 2015 12:54 - Reacties (16)
Categorie: -, Views: 5.695

Internet in het buitenland wordt, zeker door Tweakers, steeds vaker gedaan met behulp van een prepaid simkaartje met een hoop tegoed. We hebben daar inmiddels een prachtig topic voor in het subforum Telecomproviders waarin we zoveel mogelijk goedkope dataplannen met elkaar delen, sommige zelfs pan-Europees. Er zijn zelfs providers die je voor een euro of dertig gewoon 25GB geven in een land. Prima, maar steeds vaker heb je te maken met een blokkade van tethering, waardoor je maar van één device gebruik kan maken. Ik ben hier eens ingedoken en kwam tot de conclusie dat zowel Android telefoons als iPhones een aparte DUN verbinding opzetten naar de carrier toe, en dat onder andere hiermee gezien wordt dat er tethering wordt toegepast.

Tethering kan op een aantal manieren worden gedetecteerd:

1. Extra DUN verbinding richting de carrier
2. Deep Packet Inspection met URL fingerprinting (ze zien dat je bijvoorbeeld naar Windowsupdate.microsoft.com surft en dat zal een telefoon, ook een Windows Phone, nooit doen).
3. Ze kijken naar de TTL van de pakketjes die je verstuurt (normaal is dit bijvoorbeeld 128 en bij elke hop wordt dit minder, je kan dus zo zien dat er meerdere devices van één lijn gebruik maken).
4. IMEI/MAC inspection: Ze zien hieraan dat je een MiFi gebruikt
5. User Agent: Ze zien dat je een non-mobile browser gebruikt om te tetheren

Puntje 1 kan je Mifi omzeilen, want er is maar één DUN verbinding. Bij puntje 2, 3 en 4 valt je Mifi door de mand. Puntje 5 kan je omzeilen door op je laptop een andere User Agent in te stellen.

Het is dus de vraag waarmee tethering geblokkeerd wordt. Meestal is dit punt 2 en punt 3. Punt 2 is eigenlijk dé methode, omdat dit het enige is wat grootschalig opgepikt kan worden.

Met een Mifi en een VPN op al je aangesloten devices val je alsnog door de mand op punt 4. DPI en SPI zijn de meest bekende methoden, aangevuld met punt 4.

Nu is het zo dat je dit op een Android device ongedaan kan maken. Benodigdheden: Een Android toestel met root capabilities én daarnaast een VPN server thuis. (Fritzbox/Raspberry Pi will do)

Je moet hiervoor het volgende doen:
-Installeer SQLite Debugger
-Navigeer naar het volgende bestand in SQLite: /data/data/com.android.providers.settings/databases/settings.db
-Open de database global
-Verander de waarde bij tether_dun_required naar 0.

Dan ben je er echter nog niet, want je moet nog een VPN instellen. Mijn voorkeur gaat uit naar een UDP OpenVPN verbinding, omdat er in UDP pakketjes minder data zit waaruit af te leiden is wat voor verkeer het eigenlijk is zodat de provider niet ziet dat je ze aan het foppen bent. Bouw middels OpenVPN Connect of de ingebouwde VPN Client je VPN-verbinding op en start daarna de Personal Hotspot functionaliteit. Doe hierna het volgende:

Download en installeer de Android Terminal Emulator. Typ su in en accepteer het feit dat je root wordt.

Geef vervolgens het commando netcfg. Met dit commando worden alle actieve netwerk interfaces getoond. Je hebt er drie nodig:

rmnet0 of iets wat er op lijkt: Dit is de data verbinding van de telefoon
wlan0,ath0/ath1 of eth0/eth1: Dit is de WLAN verbinding waarover je al het internetverkeer wilt laten lopen
tun0/ppp0: Afhankelijk van het soort VPN wat je gebruikt (tun0 is OpenVPN, ppp0 is de ingebouwde VPN Client van Android) is dit de tunnel die je feitelijk gezien wilt bridgen met je WLAN verbinding

Kopieer en plak vervolgens de volgende gegevens (en verander de interfacenamen waar nodig):

iptables -t filter -F FORWARD
iptables -t nat -F POSTROUTING
iptables -t filter -I FORWARD -j ACCEPT
iptables -t nat -I POSTROUTING -j MASQUERADE
ip rule add from 192.168.43.0/24 lookup 61
ip route add default dev tun0 scope link table 61
ip route add 192.168.43.0/24 dev wlan0 scope link table 61
ip route add broadcast 255.255.255.255 dev wlan0 scope link table 61

That's it! Als je wilt dat deze instelling bij elke telefoon reset wordt herhaald kan je in /data/local een bestand aanmaken met de naam userinit.sh en de bovenstaande commando's hierin copy/pasten.

Op je Clients wil DHCP niet altijd goed werken. Het kan zijn dat je even manueel een lokaal adres (dus dat in je VPN) moet instellen op je clients, voornamelijk voor de DNS server.

Hiermee kan je zonder grote investeringen toch gebruik maken van de goedkopere en grotere databundels, zonder dat je tethering gedetecteerd kan worden. Bijkomend voordeel: Je hebt een lokaal IP-adres van je eigen netwerk dus je kan bij je eigen shares én kan bij alle zaken (zoals de NPO streams) die normaal gesloten zijn voor het buitenland!

Volgende: Bellen met je rolstoel deel 2, project "Give me my freedom back!" 02-'15 Bellen met je rolstoel deel 2, project "Give me my freedom back!"

Reacties


Door Tweakers user ObAt, zondag 17 mei 2015 13:10

Geniaal! Een mooie echte Tweakers blogpost!

Door Tweakers user BeefHazard, zondag 17 mei 2015 13:12

Geinig. Nu zat ik te lezen en viel dit mij op:
Download en installeer de Android Terminal Emulator. Typ su in en accepteer het feit dat je root wordt.
Ik heb niet heel veel ervaring met linux, gebruik het minder vaak dan eigenlijk zou moeten, maar bedoel je niet 'sudo su'?

Door Tweakers user himlims_, zondag 17 mei 2015 13:25

BeefHazard schreef op zondag 17 mei 2015 @ 13:12:
Geinig. Nu zat ik te lezen en viel dit mij op:
Ik heb niet heel veel ervaring met linux, gebruik het minder vaak dan eigenlijk zou moeten, maar bedoel je niet 'sudo su'?
sudo is een tooltje om su middels reguliere gebruiker mogelijk te maken, zonder su te zijn. sudo wordt dan ook niet ondersteund in android

Door Tweakers user analog_, zondag 17 mei 2015 18:47

Een proxy kan je hierbij ook helpen maar dan zit je vrij snel vast aan een 3g pci-e of usb module naar niet-mobiel (x86 of apart armpje). Je compiled squid naar Android (met wat herschrijven) dan of iets prepackaged vanuit je OS of tadaa op 'droid. Performance wise zal het vrij triestig zijn vermoed ik, al zou je dat pas merken met 4G snelheden denk ik.

[Reactie gewijzigd op zondag 17 mei 2015 18:50]


Door Tweakers user WoutervOorschot, zondag 17 mei 2015 19:55

De meeste van deze herkenningstechnieken vindt ik een beetje raar, ik browse vaak genoeg met een andere user-agent(voor betere websites), welke websites ik bezoek lijkt me weinig te maken hebben met het device(ik kan ook op m'n telefoon de laatste update van Windows gaan bekijken).

Daarnaast, als je dan zou tetheren, wordt je verbinding dan afgesloten oid zodra ze dat door krijgen?

Door Tweakers user RadioAir, zondag 17 mei 2015 20:17

Bedankt voor je verduidelijking himlims_!

@Wouter: Het is toch echt zo, dit zijn inderdaad de technieken die gebruikt worden om je af te sluiten, of als je wel een tethering bundel hebt de allowance hier van af te halen :)

Door Tweakers user calvinturbo, zondag 17 mei 2015 23:14

Mooi om weer te zien wat mogelijk is met Android

Door Tweakers user Lemming, zondag 17 mei 2015 23:59

Was er niet al complete netneutraliteit in europa?

Door Tweakers user M.l., maandag 18 mei 2015 00:17

BeefHazard schreef op zondag 17 mei 2015 @ 13:12:
Geinig. Nu zat ik te lezen en viel dit mij op:


[...]


Ik heb niet heel veel ervaring met linux, gebruik het minder vaak dan eigenlijk zou moeten, maar bedoel je niet 'sudo su'?
Zou ik ook geprobeerd hebben, maar het werkt niet op (stock) Android. "sudo" zit er niet in dus je kan niet even een regeltje code als root uitvoeren, je moet echt als root inloggen en je kan dus niet een gebruiker op die manier mandateren om op te kunnen treden als root. Als je overigens "sudo su" gebruikt is dat alleen handig om je aan te melden als root met het wachtwoord van je eigen account, alles wat je hier na doet blijft als root dus je kan dan net zo goed gelijk "su" typen en het rootwachtwoord invoeren.

Door Tweakers user M.l., maandag 18 mei 2015 00:27

Het wordt eigenlijk wel tijd voor een app die het volgende kan:

* De app installeer je via de playstore (https, dus de carrier weet het niet).
* Via bluetooth, of usb zet je een installatiebestand op je pc die bij de app hoort.
* Het deel wat je op je pc installeert neemt je WiFi volledig over en laat iedere verbinding via het programma lopen.
* Op je telefoon maak je een WiFi hotspot en je zet je app aan. De app draait als een soort proxy-server op je WiFispot.
* Op je pc zet je het programma aan, schakelt WiFi in, logt in op je WiFispot en je logt met de pc in op de app die draait op je telefoon.
* De app laat iedere verbinding die van de pc binnenkomt lopen over een in te stellen vpn.

Dit is volgens mij allemaal te realiseren zonder root (moet natuurlijk wel admin zijn op je pc) en kan een verbinding opzetten vanaf je smartphone zonder dat ze daar bij de carrier iets van kunnen zien. Het enige dat zichtbaar is is dat je verbind met een vpn en hoeveel data daar langs gaat. Zo'n app kan trouwens volledig open source (gratis app is mooi, maar ontwikkelen kost wel geld natuurlijk) zijn en hoeft er ook niet moeilijk uit te zien voor een leek (al verwacht ik niet dat die er weet van heeft dat de carrier het niet wel en dat het te omzeilen is).

Door Tweakers user M.l., maandag 18 mei 2015 00:30

Even een vraagje nog voor mensen die het volgende misschien geprobeerd hebben:
Als je een VPN instelt op je telefoon dan wordt (voor zover ik weet) al het verkeer langs die VPN geleidt, maar als je dan je telefoon als WiFispot gebruikt, gaat al het verkeer van de spot dan ook door de VPN?

Door Tweakers user RadioAir, maandag 18 mei 2015 09:21

Lemming schreef op zondag 17 mei 2015 @ 23:59:
Was er niet al complete netneutraliteit in europa?
Helaas nog niet :(

Door Tweakers user RadioAir, maandag 18 mei 2015 09:22

M.l. schreef op maandag 18 mei 2015 @ 00:27:
Het wordt eigenlijk wel tijd voor een app die het volgende kan:

* De app installeer je via de playstore (https, dus de carrier weet het niet).
* Via bluetooth, of usb zet je een installatiebestand op je pc die bij de app hoort.
* Het deel wat je op je pc installeert neemt je WiFi volledig over en laat iedere verbinding via het programma lopen.
* Op je telefoon maak je een WiFi hotspot en je zet je app aan. De app draait als een soort proxy-server op je WiFispot.
* Op je pc zet je het programma aan, schakelt WiFi in, logt in op je WiFispot en je logt met de pc in op de app die draait op je telefoon.
* De app laat iedere verbinding die van de pc binnenkomt lopen over een in te stellen vpn.

Dit is volgens mij allemaal te realiseren zonder root (moet natuurlijk wel admin zijn op je pc) en kan een verbinding opzetten vanaf je smartphone zonder dat ze daar bij de carrier iets van kunnen zien. Het enige dat zichtbaar is is dat je verbind met een vpn en hoeveel data daar langs gaat. Zo'n app kan trouwens volledig open source (gratis app is mooi, maar ontwikkelen kost wel geld natuurlijk) zijn en hoeft er ook niet moeilijk uit te zien voor een leek (al verwacht ik niet dat die er weet van heeft dat de carrier het niet wel en dat het te omzeilen is).
Op het VPN-aspect na kan je hiervoor Cyanogenmod Tether gebruiken, alleen dit werkt via USB. Je zou in principe een Raspberry Pi kunnen gebruiken als tussenstation om de VPN en de WiFispot op te bouwen.

Voor wat betreft je vraag:

Standaard niet, dan gaat je WiFi hotspot nog altijd direct het internet op zonder je VPN. Het is dus zaak dat je die routing table toevoegt om op die manier het verkeer van de VPN direct door te sluizen naar je WiFispot.

[Reactie gewijzigd op maandag 18 mei 2015 09:23]


Door Tweakers user Waarnemer, maandag 18 mei 2015 13:21

mmhh.. ik gebruikte het eigenlijk nooit zo over 4g.. wel gebruikte ik mijn telefoon nog wel eens als access point op de camping.. camping verkoopt wifi voor 15,- per week per toestel... dat ene toestel deelde dan de connectie over bluetooth..

Door Tweakers user Azerion, dinsdag 19 mei 2015 13:44

Wat ik me dan afvraag, als ik een VPN verbinding gebruik dan wordt alle data versleuteld, dan zouden ze in principe niets meer kunnen zien?

Aangezien er voor de provider (als het goed is) nog maar één verbinding bestaat namelijk de verbinding richting de VPN server, dit gebeurt dan allemaal via hetzelfde MAC adres? (Ben geen expert, zijn meer vragen die bij mij opkomen)

Maak doorgaans altijd gebruik van een lokaal sim kaartje waarvan ik vervolgens een hotspot maak.

Door Tweakers user RadioAir, dinsdag 19 mei 2015 13:47

@Waarnemer: Dat is in principe geen probleem, daar heb ik ook al eens eerder een blog over geschreven hoe je met een oude WRT54G zo'n wifi code voor meerdere devices kan gebruiken :)

@Azerion, ja alle data wordt dan versleuteld verstuurd waardoor ze geen Deep of Stateful Packet Inspection meer uit kunnen voeren. Alles komt dan van één MAC/IMEI adres, namelijk dat van de telefoon.

Het voordeel van deze methode is dat het dus ook met de goedkopere kaartjes werkt waar tethering normaal op geblokkeerd is :)

Reageren is niet meer mogelijk