Des chercheurs de l'université du Maryland, dans le cadre d'un projet ont tenté de créer pour automatiser l'identification des méthodes utilisées pour censurer l'accÚs au contenu. Essayer manuellement de contourner les failles des systÚmes d'inspection approfondie des paquets (DPI) est un processus assez difficile et long. à GenÚve, ils ont essayé d'utiliser pour évaluer les caractéristiques des DPI, identifier les erreurs d'implémentation et élaborer une stratégie optimale de contournement pour le client. Le code du projet est écrit en Python.
Le matĂ©riel DPI utilisĂ© pour le blocage a ses , permettant de masquer l'accĂšs Ă des ressources interdites ou d'Ă©viter le blocage. Par exemple, dans le cas le plus simple, lors de l'organisation du blocage via une rĂ©ponse fictive (utilisĂ©e par les DPI passifs), il suffit pour le client la rĂ©ponse fictive envoyĂ©e par le DPI. En cas de DPI actif, il est possible d'essayer de cacher le fait mĂȘme d'accĂ©der Ă un site bloquĂ©, en modifiant lĂ©gĂšrement les paramĂštres de la requĂȘte HTTP (par exemple, en ajoutant un espace supplĂ©mentaire aprĂšs « GET »), en divisant en plusieurs paquets les donnĂ©es de nĂ©gociation de la connexion TLS ou en exĂ©cutant des attaques TCB Teardown et TCB Desync. L'essence des attaques mentionnĂ©es consiste Ă envoyer d'abord un paquet fictif avec des donnĂ©es ou des drapeaux RST/ACK, qui ne sera pas reçu par l'hĂŽte ciblĂ©, mais captĂ© par le DPI, lequel prendra une dĂ©cision sur cette base et n'analysera pas le paquet suivant contenant la vĂ©ritable requĂȘte (par exemple, dans le premier paquet fictif, on peut spĂ©cifier un autre SNI, et pour masquer ce paquet de l'hĂŽte ciblĂ©, on peut attribuer un TTL faible, ainsi qu'un checksum, des drapeaux ou un numĂ©ro de sĂ©quence TCP incorrect).
GenĂšve d'Ă©laborer une mĂ©thode de contournement du DPI, en utilisant quatre primitives de base pour manipuler les paquets rĂ©seau : rejet, modification des en-tĂȘtes, duplication et fragmentation. Pour dĂ©terminer la stratĂ©gie optimale, un algorithme gĂ©nĂ©tique est appliquĂ©, modĂ©lisant des processus similaires Ă la sĂ©lection naturelle, Ă travers la combinaison alĂ©atoire de diffĂ©rentes options de manipulation des paquets. En fin de compte, les primitives sont combinĂ©es en un « arbre d'actions » qui dĂ©finit l'algorithme de contournement du DPI.
Le projet Geneva a Ă©tĂ© testĂ© avec succĂšs pour contourner les mĂ©thodes de censure utilisĂ©es en Chine, en Inde et au Kazakhstan, notamment grĂące Ă Geneva, plusieurs nouvelles failles ont Ă©tĂ© dĂ©couvertes qui n'Ă©taient pas connues auparavant. Cependant, Geneva est efficace uniquement pour contourner les blocages basĂ©s sur le DPI, et il est inutile en cas de blocage par adresse IP, rendant l'utilisation d'un VPN indispensable. des dizaines de stratĂ©gies types de contournement du DPI qui peuvent ĂȘtre testĂ©es immĂ©diatement sans analyse complĂšte, par exemple :
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] Moteur créé avec la stratégie \/ (ID bm3kdw3r) pour le port 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Configuration des rĂšgles 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
Source : opennet.ru
