ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Geneva Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠΎΠΊ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π° цСнзурирования Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· ΠœΡΡ€ΠΈΠ»Π΅Π½Π΄ΡΠΊΠΎΠ³ΠΎ унивСрситСта Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Geneva прСдприняли ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ создания Π΄Π²ΠΈΠΆΠΊΠ° для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ опрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², примСняСмых для цСнзурирования доступа ΠΊ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ. Π’Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π±Ρ€Π΅ΡˆΠΈ систСм Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ инспСктирования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (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 Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠΎΠΊ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π° цСнзурирования Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° align=top

Π Π°Π±ΠΎΡ‚Π° 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] 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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ