Cercetătorii de la Universitatea din Maryland, în cadrul proiectului au încercat să creeze pentru automatizarea identificării metodelor folosite pentru cenzurarea accesului la conținut. A încerca manual să depisteze posibilele breșe ale sistemelor deinspecție profundă a pachetelor (DPI) este un proces destul de dificil și îndelungat, așa că în Geneva s-a încercat utilizarea pentru a evalua caracteristicile DPI, a identifica erorile în implementare și a dezvolta o strategie optimă de ocolire a blocajului din partea clientului. Codul proiectului este scris în Python.
Echipamentele DPI utilizate pentru blocare au propriile , care permit ascunderea accesului la resursele interzise sau evitarea blocării. De exemplu, în cea mai simplă situație, atunci când se organizează blocarea prin substituirea unui răspuns fals (utilizată de DPI pasive), este suficient ca, din partea clientului răspunsul fals trimis de DPI. În cazul utilizării DPI active, se poate încerca ascunderea faptului că s-a făcut o solicitare către un site blocat, modificând puțin parametrii cererii HTTP (de exemplu, adăugând un spațiu suplimentar după „GET”), împărțind datele sesiuni TLS în mai multe pachete sau efectuat atacuri TCB Teardown și TCB Desync. Esența acestor atacuri constă în trimiterea din partea clientului, la început, a unui pachet fals cu date sau semnalizări RST/ACK, care nu va ajunge la gazda țintă, dar va fi captat de DPI, care va lua decizia pe baza acestuia și nu va analiza pachetul următor cu solicitarea reală (de exemplu, în pachetul fals inițial se poate specifica un alt SNI, iar pentru a ascunde acest pachet de gazda țintă se poate seta un TTL scăzut, precum și o sumă de control, semnalizări sau număr de secvență TCP incorecte).
Geneva a dezvolta o metodă funcțională de ocolire a DPI, folosind patru primitive de bază pentru manipularea pachetelor de rețea — eliminare, modificare a antetelor, duplicare și fragmentare. Pentru alegerea strategiei optime se aplică un algoritm genetic, care modelează procese asemănătoare selecției naturale, prin combinarea aleatorie a diferitelor variante de manipulări ale pachetelor. În cele din urmă, primitivele sunt combinate într-un „arbore de acțiuni” care definește algoritmul de ocolire a DPI.
Funcționarea Geneva a fost testată cu succes pentru a ocoli metodele de cenzură aplicate în China, India și Kazahstan, inclusiv prin Geneva fiind descoperite mai multe breșe noi, despre care nu se știa anterior. Totuși, Geneva este eficient doar pentru ocolirea blocajelor bazate pe DPI, iar în cazul blocării pe baza adreselor IP, este inutil și nu se poate folosi fără VPN. În timpul experimente câteva zeci de strategii tipice pentru ocolirea DPI care pot fi testate imediat fără a necesita o analiză completă, de exemplu:
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 creat cu strategia \/ (ID bm3kdw3r) pentru portul 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Configurarea regulilor 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
Sursa: opennet.ro
