Pesquisadores da Universidade de Maryland, como parte de um projeto tentaram criar para automatizar a definição dos métodos utilizados para censurar o acesso ao conteúdo. Tentar manualmente explorar possíveis brechas em sistemas de inspeção profunda de pacotes (DPI) é um processo bastante difícil e demorado, enquanto em Geneva tentaram usar para avaliar as características do DPI, identificar erros na implementação e desenvolver uma estratégia ideal de contorno de bloqueio no lado do cliente. O código do projeto está escrito em Python.
O equipamento DPI utilizado para bloqueio tem suas , permitindo ocultar a consulta a um recurso proibido ou evitar o bloqueio. Por exemplo, no caso mais simples de bloqueio por meio da substituição de uma resposta falsa (utilizado por DPIs passivos), basta no lado do cliente a resposta falsa enviada pelo DPI. No caso de um DPI ativo, pode-se tentar ocultar o próprio fato da consulta ao site bloqueado, alterando um pouco os parâmetros da requisição HTTP (por exemplo, adicionando um espaço a mais após 'GET'), dividindo os dados de negociação da conexão TLS em vários pacotes ou executando ataques TCB Teardown e TCB Desync. A essência dos ataques mencionados é o envio pelo cliente, inicialmente, de um pacote falso com dados ou flags RST/ACK, que não será recebido pelo host alvo, mas capturado pelo DPI, que tomará uma decisão com base nisso e não analisará o pacote seguinte com a requisição real (por exemplo, no primeiro pacote falso, pode-se especificar um SNI diferente, e para ocultar este pacote do host alvo, pode-se definir um TTL baixo, além de uma soma de verificação, flags ou número de sequência TCP incorretos).
Genebra desenvolver um método funcional para contornar o DPI, utilizando quatro primitivos básicos para manipulação de pacotes de rede - descarte, alteração de cabeçalhos, duplicação e fragmentação. Para selecionar a estratégia ideal, um algoritmo genético é aplicado, modelando processos semelhantes à seleção natural, por meio da combinação aleatória de diferentes opções de manipulação de pacotes. No final, os primitivos são combinados em uma 'árvore de ações', que define o algoritmo de contorno do DPI.
O trabalho do Geneva foi bem-sucedido em contornar os métodos de censura aplicados na China, Índia e Cazaquistão, e através do Geneva foram identificadas várias novas brechas que não eram conhecidas anteriormente. No entanto, o Geneva é eficaz apenas para contornos baseados em DPI; quando o bloqueio é feito por endereço IP, ele se torna inútil e um VPN é necessário. Durante os experimentos várias dezenas de estratégias padrão para contornar DPI que podem ser testadas imediatamente sem a realização de uma análise completa, como por exemplo:
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 criado com a estratégia \/ (ID bm3kdw3r) para a porta 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Configurando regras do 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
Fonte: opennet.ru
