Изследователи от Университета в Мериленд в рамките на проекта направиха опит за създаване на за автоматизиране на определянето на методите, използвани за цензуриране на достъпа до съдържание. Ръчният опит за пробиване на възможните пропуски на системите за дълбочинно инспектиране на пакети (DPI) е сравнително труден и дълъг процес, за да се опитат в Geneva за оценка на особеностите на DPI, определяне на грешките в реализацията и разработване на оптимална стратегия за обхождане на блокировките от страна на клиента. Кодът на проекта на езика Python.
Използваното за блокиране DPI оборудване има свои , които позволяват да се скрие достъпа до забранен ресурс или да се избегне блокировката. Например, в най-простия случай при организиране на блокиране чрез подмяна на фиктивен отговор (използва се от пасивни DPI), е достатъчно от страната на клиента фиктивния отговор, изпратен от DPI. При активен DPI, може да се опита да се скрие фактът на достъпа до блокирания сайт, като се променят малко параметрите на HTTP заявката (например, добавяйки излишно пространство след „GET“), разделяйки данните за споразумение на TLS връзката на няколко пакета или извършавайки атаки TCB Teardown и TCB Desync. Същността на споменатите атаки е изпращането от клиента първоначално на фиктивен пакет с данни или флагове RST/ACK, който не достига целевия хост, но примамва DPI, което взима решение на базата на него и не анализира следващия пакет с реалната заявка (например, в фиктивния първи пакет може да се укаже друг SNI, а за да се скрие този пакет от целевия хост може да се зададе нисък TTL, както и некоректна контрольна сума, флагове или номер на TCP последователност).
Geneva да се изработи работен метод за заобикаляне на DPI, използвайки четири основни примитиви за манипулация на мрежови пакети — отхвърляне, модификация на заглавия, дублиране и фрагментация. За подбор на оптимална стратегия се използва генетичен алгоритъм, който моделира процеси, подобни на естествения отбор, чрез случайно комбиниране на различни варианти на манипулации с пакети. В крайна сметка, примитивите се комбинират в "дърво на действията", определящо алгоритъм за заобикаляне на DPI.
Работата на Geneva успешно е тествана за заобикаляне на методи за цензуриране, използвани в Китай, Индия и Казахстан, включително с помощта на Geneva бяха идентифицирани няколко нови уязвимости, които преди това не бяха известни. В същото време, Geneva е ефективен само за заобикаляне на блокировки на база DPI; при блокиране по IP адреси е безполезен и без VPN не може да се заобиколи. По време на експериментите съществуват няколко десетки стандартни стратегии за заобикаляне на DPI, които могат да бъдат тествани веднага без извършване на пълно анализиране, например:
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] Двигателят е създаден със стратегия \/ (ID bm3kdw3r) към порт 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Конфигуриране на правила за 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
Източник: opennet.ru
