I ricercatori dell'Università del Maryland, nell'ambito del progetto hanno tentato di creare per automatizzare l'identificazione dei metodi utilizzati per censurare l'accesso ai contenuti. Tentare manualmente di analizzare le possibili vulnerabilità dei sistemi di profondità di ispezione dei pacchetti (DPI) è un processo sufficientemente complesso e lungo, a Geneva hanno cercato di utilizzare per valutare le caratteristiche del DPI, identificare errori nell'implementazione e sviluppare una strategia ottimale per eludere il blocco dal lato client. Il codice del progetto è in Python.
L'attrezzatura DPI utilizzata per il blocco presenta , che consentono di nascondere la richiesta a una risorsa vietata o di evitare il blocco. Ad esempio, nel caso più semplice di blocco tramite la sostituzione con risposte fasulle (utilizzate da DPI passivi), è sufficiente, dal lato client, risposta fittizia inviata dal DPI. In caso di utilizzo attivo del DPI, si può cercare di nascondere il fatto stesso di essere in contatto con un sito bloccato, modificando leggermente i parametri della richiesta HTTP (ad esempio, aggiungendo uno spazio extra dopo «GET»), suddividendo i dati di handshake della connessione TLS in più pacchetti, oppure eseguendo attacchi TCB Teardown e TCB Desync. Il fulcro degli attacchi menzionati consiste nell'inviare inizialmente un pacchetto fittizio dal client contenente dati o flag RST/ACK, che non verrà ricevuto dall'host target, ma verrà catturato dal DPI, che prenderà una decisione basandosi su di esso e non analizzerà il pacchetto successivo con la richiesta reale (ad esempio, nel primo pacchetto fittizio si può indicare un SNI diverso, e per nascondere il pacchetto dall'host target si può impostare un TTL basso, oltre a checksum, flag o numero di sequenza TCP non corretti).
Ginevra sviluppare un metodo operativo per eludere il DPI utilizzando quattro primitive di base per manipolare i pacchetti di rete: scarto, modifica degli header, duplicazione e frammentazione. Per selezionare la strategia ottimale viene applicato un algoritmo genetico che simula processi simili alla selezione naturale attraverso la combinazione casuale di diverse opzioni di manipolazione dei pacchetti. Alla fine, le primitive vengono combinate in un "albero delle azioni", che determina l'algoritmo per bypassare il DPI.
Il lavoro di Geneva è stato testato con successo per eludere i metodi di censura applicati in Cina, India e Kazakistan; grazie a Geneva sono state individuate diverse nuove vulnerabilità precedentemente sconosciute. Tuttavia, Geneva è efficace solo per eludere i blocchi basati su DPI e risulta inutile contro i blocchi per indirizzi IP, rendendo necessario l'uso di una VPN. Durante gli esperimenti, diverse decine di strategie standard di bypass del DPI, che possono essere testate immediatamente senza effettuare un'analisi completa, ad esempio:
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] Motore creato con strategia \/ (ID bm3kdw3r) sulla porta 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Configurazione delle regole iptables
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
Fonte: opennet.ru
