Marylandi ülikooli teadlased projekti raames püüdsid luua sisu juurdepääsu tsenseerimise meetodite automaatseks määramiseks. Käe järgi proovimine, et leida võimalikke sügavpaketi inspekteerimise (DPI) süsteemide puudujääke, on piisavalt keeruline ja ajamahukas. Geneva üritas kasutada DPI omaduste hindamiseks, rakenduste vigade määramiseks ja optimaalse blokeerimise vältimise strateegia väljatöötamiseks kliendi poolel. Projekti kood on kirjutatud Pythonis.
DPI-riistvara, mida kasutatakse blokeerimiseks, omab oma , mis võimaldavad varjata juurdepääsu keelatud ressurssidele või vältida blokeerimist. Näiteks kõige lihtsamas olukorras, kui blokeerimist korraldatakse vale vastuse asendamise kaudu (mida kasutavad passiivsed DPI), piisab kliendi poolel, et vale vastus, mille DPI on saatnud. Kui aktiivne DPI rakendatakse, võib proovida peita blokeeritud saidi külastamise fakti, muutes veidi HTTP-päringu parameetreid (näiteks lisades pärast 'GET' täiendava tühiku), jagades TLS-ühenduse käigus fickst loomise andmed mitmeks paketiks või tehes TCB Teardown ja TCB Desync rünnakud. Nende rünnakute mõte seisneb kliendi saatmises alguses vale paketi andmetega või RST/ACK lipukestega, mis ei jõua siht-hostini, kuid haaravad DPI, teevad selle põhjal otsuse ja ei analüüsi järgmist paketti, mis sisaldab tõelist päringut (näiteks vale esimeses pakkes võib määrata teise SNI, ja selle paketi siht-hostist peitmiseks võib seada madala TTL-i, samuti vale kontrollsummana, lipud või TCP järjestuse number).
Genf luua töötav meetod DPI ületamiseks, kasutades nelja põhielementi võrgupakettide manipuleerimiseks — mahajätmine, päiste muutmine, dubleerimine ja fragmenteerimine. Optimaalse strateegia leidmiseks kasutatakse geneetilist algoritmi, mis modelleerib protsesse, mis sarnanevad loomuliku valikuga, läbi erinevate pakettide manipuleerimise variantide juhusliku kombineerimise. Lõppkokkuvõttes kombineeritakse elemendid „tegevuspuuks”, mis määrab DPI ületamise algoritmi.
Geneva töö on tõhusalt testitud tsensuuri ületamiseks, mida rakendatakse Hiinas, Indias ja Kasahstanis, sealhulgas Geneva abil avastati mitu uut haavatavust, millest ei olnud varem teadlik. Siiski on Geneva efektiivne ainult DPI-põhiste blokeeringute ületamiseks, IP-aadresside blokeerimise korral on see kasututu ja VPN-ist ei pääse. mitmeid tüüpilisi DPI ületamise strateegiaid, mida saab kohe testida ilma täieliku analüüsita, näiteks:
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] Mootor loodi strateegia \/ (ID bm3kdw3r) sadamale 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Iptables reeglite seadistamine
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
Allikas: opennet.ru
