Výzkumníci z Marylandské univerzity v rámci projektu se pokusili vytvořit pro automatizaci určení metod používaných k cenzurování přístupu k obsahu. Ručně se snažit prozkoumat možné slabiny systémů hluboké inspekce paketů (DPI) je docela obtížný a časově náročný proces, v Genevě se pokusili využít k hodnocení vlastností DPI, zjištění chyb v implementaci a vypracování optimální strategie obcházení blokace na straně klienta. Kód projektu v jazyce Python.
Zařízení používané k blokování DPI má své , které umožňují skrýt přístup k zakázanému zdroji nebo se vyhnout blokaci. Například v nejjednodušším případě, když je blokace organizována pomocí substituce fiktivní odpovědi (používáno pasivními DPI), stačí na straně klienta fiktivní odpověď zaslanou DPI. V případě použití aktivního DPI lze zkusit skrýt samotný fakt přístupu na blokovanou stránku, mírně změnou parametrů HTTP požadavku (například přidáním nadbytečné mezery po „GET“), rozdělením TLS handshake dat na několik paketů nebo provedením útoků TCB Teardown a TCB Desync. Podstatou zmíněných útoků je odeslání fiktivního paketu s daty nebo příznaky RST/ACK ze strany klienta, který není cílovým hostem přijat, ale DPI jej zachytí, vyhodnotí na jeho základě situaci a nezačne analyzovat následující paket s reálným požadavkem (například ve fiktivním prvním paketu lze uvést jiný SNI a pro skrytí tohoto paketu před cílovým hostitelem lze nastavit nízký TTL, jakož i nesprávnou kontrolní součet, příznaky nebo číslo sekvence TCP).
Ženeva vyvinout funkční metodu obcházení DPI pomocí čtyř základních primitiv pro manipulaci se síťovými pakety — odmítání, změna hlaviček, duplikace a fragmentace. Pro nalezení optimální strategie se používá genetický algoritmus, který modeluje procesy podobné přirozenému výběru prostřednictvím náhodného kombinování různých variant manipulací s pakety. Nakonec se primitivy kombinují do „stromu akcí“, který určuje algoritmus obcházení DPI.
Práce Geneva byla úspěšně testována na obcházení cenzurních metod používaných v Číně, Indii a Kazachstánu, včetně odhalení několika nových slabin, které byly dříve neznámé. Geneva však funguje efektivně pouze při obcházení blokací na základě DPI, při blokování podle IP adres je nepoužitelná a k jejímu obcházení je zapotřebí VPN. Během experimentů několik desítek typových strategií pro obcházení DPI, které lze testovat okamžitě bez provádění kompletní analýzy, například:
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] Engine vytvořen se strategií \/ (ID bm3kdw3r) na portu 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Konfigurace pravidel 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
Zdroj: opennet.ru
