Investigadores de la Universidad de Maryland, en el marco de un proyecto intentaron crear para automatizar la identificación de los métodos utilizados para censurar el acceso a contenido. Intentar manualmente explorar las posibles brechas de los sistemas de inspección profunda de paquetes (DPI) es un proceso bastante difícil y prolongado, por lo que en Ginebra se intentaron utilizar para evaluar las características de los DPI, identificar errores en la implementación y desarrollar una estrategia óptima para eludir el bloqueo del lado del cliente. El código del proyecto está escrito en Python.
El equipo DPI utilizado para bloquear tiene sus , que permiten ocultar el acceso a recursos prohibidos o evitar el bloqueo. Por ejemplo, en el caso más simple, al organizar un bloqueo mediante la sustitución de una respuesta falsa (utilizada por DPI pasivos), es suficiente del lado del cliente la respuesta falsa enviada por el DPI. En el caso de un DPI activo, se podría intentar ocultar el hecho mismo de acceder a un sitio bloqueado, modificando ligeramente los parámetros de la solicitud HTTP (por ejemplo, añadiendo un espacio extra después de "GET"), dividiendo en varios paquetes los datos de negociación de la conexión TLS, o llevando a cabo ataques de TCB Teardown y TCB Desync. La esencia de los ataques mencionados es enviar inicialmente un paquete falso con datos o banderas RST/ACK desde el cliente, que no será recibido por el host objetivo, pero que será detectado por el DPI, que tomará una decisión basada en él y no analizará el paquete que sigue con la solicitud real (por ejemplo, en el primer paquete falso se podría especificar un SNI diferente, y para ocultar este paquete del host objetivo se podría establecer un TTL bajo, así como una suma de comprobación incorrecta, banderas o número de secuencia TCP).
Ginebra desarrollar un método práctico para eludir los DPI, utilizando cuatro primitivas básicas para manipular los paquetes de red: descarte, modificación de encabezados, duplicación y fragmentación. Para encontrar la estrategia óptima, se aplica un algoritmo genético que simula procesos similares a la selección natural, mediante la combinación aleatoria de diversas opciones de manipulación de paquetes. Al final, las primitivas se combinan en un "árbol de acciones" que define el algoritmo para eludir el DPI.
El trabajo de Geneva ha sido exitoso en sortear los métodos de censura utilizados en China, India y Kazajistán, incluyendo el descubrimiento de varias nuevas brechas que no eran conocidas anteriormente. Sin embargo, Geneva solo es efectivo para eludir bloqueos basados en DPI; es inútil contra bloqueos por dirección IP y es necesario usar un VPN. un par de docenas de estrategias típicas para sortear el DPI que se pueden probar de inmediato sin realizar un análisis completo, por ejemplo:
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 creado con estrategia \/ (ID bm3kdw3r) para el puerto 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Configurando reglas de 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
Fuente: opennet.ru
