Onderzoekers van de Universiteit van Maryland hebben in het kader van een project een poging gedaan om te creëren voor het automatiseren van de methoden die worden toegepast voor het censureren van toegang tot content. Handmatig mogelijke kwetsbaarheden in deep packet inspection (DPI) systemen te doorlopen is een moeilijke en tijdrovende klus, in Genève hebben ze geprobeerd om te gebruiken om de eigenschappen van DPI te evalueren, fouten in de implementatie te identificeren en een optimale strategie voor het omzeilen van blokkades aan de klantzijde te ontwikkelen. De code van het project is geschreven in Python.
De voor het blokkeren gebruikte DPI-hardware heeft zijn , die het mogelijk maken om aanvragen naar verboden bronnen te verbergen of blokkades te omzeilen. Bijvoorbeeld, in het eenvoudigste geval van blokkeren door het geven van een vervalst antwoord (gebruikt door passieve DPI) is het voldoende dat de klantzijde vervalste antwoord dat door DPI is verzonden, negeert. In het geval van actieve DPI kan men proberen om het feit van de aanvraag naar de geblokkeerde website te verbergen door de parameters van de HTTP-aanroep een beetje te wijzigen (bijvoorbeeld een extra spatie na "GET" toe te voegen), de gegevens van de TLS-verbinding in verschillende pakketten op te splitsen of TCB Teardown- en TCB Desync-aanvallen uit te voeren. Het doel van de genoemde aanvallen is dat de klant in eerste instantie een vervalst pakket met gegevens of RST/ACK-vlaggen verzendt, dat de beoogde host niet ontvangt, maar dat DPI opvangt, op basis daarvan een beslissing neemt en het volgende pakket met de echte aanvraag niet analyseert (bijvoorbeeld in het vervalste eerste pakket kan een andere SNI worden opgegeven, en om dit pakket voor de beoogde host te verbergen kan een lage TTL, alsook een onjuiste checksum, vlaggen of TCP-volgnummer worden ingesteld).
Genève een werkbare methode voor het omzeilen van DPI te ontwikkelen, waarbij vier basis primitieve acties voor netwerkpakketten worden gebruikt: weggooien, header wijzigen, dupliceren en fragmentatie. Voor het vinden van de optimale strategie wordt een genetisch algoritme gebruikt dat processen simuleert die lijken op natuurlijke selectie, door verschillende manipulatievarianties van pakketten willekeurig te combineren. Uiteindelijk worden de primitieve acties gecombineerd in een "actieboom", die het algoritme voor het omzeilen van DPI definieert.
Het Geneva-project heeft met succes methoden om censuur toe te passen, die worden gebruikt in China, India en Kazachstan, omzeild. Daarbij heeft Geneva verschillende nieuwe kwetsbaarheden ontdekt die eerder onbekend waren. Geneva is echter alleen effectief voor het omzeilen van blokkades op basis van DPI; bij blokkades op basis van IP-adressen is het nutteloos en is een VPN noodzakelijk. Tijdens experimenten een paar tientallen standaardstrategieën voor het omzeilen van DPI, die onmiddellijk kunnen worden getest zonder een volledige analyse uit te voeren, bijvoorbeeld:
python3 engine.py --server-port 80 --strategy "[TCP:flags:PA]-duplicate(tamper{TCP:dataofs:replace:10} tamper{TCP:chksum:corrupt},),)-|" --log debug
2020-01-24 20:54:41 DEBUG:[ENGINE] Motor gemaakt met strategie \\ (ID bm3kdw3r) naar poort 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Iptables-regels configureren
2020-01-24 20:54:41 DEBUG:[ENGINE] iptables -A OUTPUT -p tcp --sport 80 -j NFQUEUE --queue-num 1
2020-01-24 20:54:41 DEBUG:[ENGINE] iptables -A INPUT -p tcp --dport 80 -j NFQUEUE --queue-num 2
2020-01-24 20:54:41 DEBUG:[ENGINE] iptables -A OUTPUT -p udp --sport 80 -j NFQUEUE --queue-num 1
2020-01-24 20:54:41 DEBUG:[ENGINE] iptables -A INPUT -p udp --dport 80 -j NFQUEUE --queue-num 2
Bron: opennet.ru
