Forskere fra University of Maryland har i forbindelse med et projekt foretaget et forsøg på at skabe til automatisering af identifikationen af metoder, der anvendes til censur af adgangen til indhold. At forsøge manuelt at finde mulige sårbarheder i systemer til dybdepakkekontrol (DPI) er en temmelig vanskelig og langvarig proces, og i Geneva har man forsøgt at anvende til at vurdere egenskaberne ved DPI, identificere fejl i implementeringen og udvikle den optimale strategi for at omgå blokering på klientsiden. Koden til projektet er skrevet i Python.
Det hardware, der anvendes til at blokere DPI, har sine , som muliggør at skjule henvendelsen til en forbudt ressource eller undgå blokering. For eksempel, i det enkleste tilfælde, når blokeringen organiseres ved hjælp af et falsk svar (anvendes af passive DPI), er det tilstrækkeligt for klienten det falske svar, der sendes af DPI. I tilfælde af aktiv DPI kan man forsøge at skjule selve faktum om henvendelsen til den blokerede hjemmeside ved let at ændre parametrene i HTTP-anmodningen (for eksempel ved at tilføje et ekstra mellemrum efter "GET"), dele dataene i TLS-forhandlingen op i flere pakker eller udføre TCB Teardown og TCB Desync angreb. Essensen af de nævnte angreb er, at klienten først sender en falsk pakke med data eller RST/ACK flags, som ikke vil nå den tilsigtede vært, men som DPI vil opfange, og dermed træffe beslutning baseret på denne pakke, hvilket forhindrer analyse af den følgende pakke med den reelle anmodning (for eksempel kan den falske første pakke angive et andet SNI, og for at skjule denne pakke fra den tilsigtede vært kan man indstille en lav TTL samt en forkert kontrolsum, flag eller sekvensnummer for TCP).
Geneve udvikle en funktionel metode til at omgå DPI ved at bruge fire grundlæggende primitivs til manipulation af netværkspakker — at ignorere, ændre overskrifter, duplikere og fragmentere. For at vælge den optimale strategi anvendes den genetiske algoritme, der simulerer processer, der ligner naturlig selektion, gennem tilfældig kombination af forskellige varianter af manipulationer med pakker. I sidste ende kombineres primitivene i et "handlingstræ", der bestemmer algoritmen til at omgå DPI.
Geneva's functionality has been successfully tested for bypassing censorship methods employed in China, India, and Kazakhstan. Additionally, several new vulnerabilities have been identified through Geneva that were previously unknown. However, Geneva is only effective for bypassing DPI-based blocks and is useless for IP address blocking without a VPN. several dozen typical DPI bypass strategies that can be tested immediately without a full analysis, for example:
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 created with strategy \/ (ID bm3kdw3r) to port 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Configuring iptables rules
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
Kilde: opennet.ru
