Fronting domèn ki baze sou TLS 1.3

Entwodiksyon

Fronting domèn ki baze sou TLS 1.3
Sistèm filtraj modèn kontni antrepriz soti nan manifaktirè renome tankou Cisco, BlueCoat, FireEye gen anpil bagay an komen ak tokay ki pi pwisan yo - sistèm DPI, ki ap aplike aktivman nan nivo nasyonal la. Sans nan travay la nan tou de se enspekte fèk ap rantre ak sòtan trafik entènèt epi, ki baze sou lis nwa / blan, pran yon desizyon entèdi koneksyon entènèt la. Epi kòm tou de nan yo konte sou prensip ki sanble nan debaz yo nan travay yo, metòd yo pou kontourne yo pral tou gen anpil bagay an komen.

Youn nan teknoloji yo ki pèmèt ou byen efektivman kontoune tou de sistèm DPI ak antrepriz se teknoloji domèn-fronting. Sans li se ke nou ale nan yon resous bloke, kache dèyè yon lòt, domèn piblik ak yon bon repitasyon, ki evidamman pa pral bloke pa nenpòt ki sistèm, pou egzanp google.com.

Byen anpil atik yo te deja ekri sou teknoloji sa a ak anpil egzanp yo te bay. Sepandan, popilè ak dènyèman diskite DNS-sou-HTTPS ak crypted-SNI teknoloji, osi byen ke nouvo vèsyon an nan TLS 1.3 pwotokòl la, fè li posib yo konsidere yon lòt opsyon pou fronting domèn.

Konprann teknoloji a

Premyèman, an n defini yon ti konsèp debaz pou tout moun gen yon konpreyansyon sou ki moun ki ak poukisa tout bagay sa yo bezwen. Nou mansyone mekanis eSNI a, operasyon an ki pral diskite pi lwen. Mekanis eSNI (endikasyon non sèvè chifreman) se yon vèsyon an sekirite SNI, ki disponib sèlman pou pwotokòl TLS 1.3 la. Lide prensipal la se ankripte, pami lòt bagay, enfòmasyon sou ki domèn yo voye demann lan.

Koulye a, ann gade nan ki jan mekanis eSNI travay an pratik.

Ann di nou gen yon resous entènèt ki bloke pa yon solisyon DPI modèn (ann pran, pou egzanp, pi popilè torrent tracker rutracker.nl). Lè nou eseye jwenn aksè nan sit entènèt yon tracker torrent, nou wè souch estanda founisè a ki endike ke resous la bloke:

Fronting domèn ki baze sou TLS 1.3

Sou sit entènèt la RKN domèn sa a aktyèlman ki nan lis nan lis stop yo:

Fronting domèn ki baze sou TLS 1.3

Lè w ap chèche whois, ou ka wè domèn nan tèt li "kache" dèyè Cloudflare founisè nwaj la.

Fronting domèn ki baze sou TLS 1.3

Men, kontrèman ak "espesyalis yo" ki soti nan RKN, anplwaye ki gen plis konesans teknik ki soti nan Beeline (oswa anseye pa eksperyans nan anmè nan regilatè pi popilè nou an) pa t 'enyèman entèdi sit la pa adrès IP, men te ajoute non an domèn nan lis la sispann. Ou ka byen fasil verifye sa a si ou gade nan ki lòt domèn yo kache dèyè menm adrès IP la, vizite youn nan yo epi wè ke aksè pa bloke:

Fronting domèn ki baze sou TLS 1.3

Ki jan sa rive? Ki jan DPI founisè a fè konnen nan ki domèn navigatè mwen an ye, piske tout kominikasyon fèt atravè pwotokòl https la, epi nou poko remake sibstitisyon https yo soti nan Beeline? Èske li klè oswa yo swiv mwen?

Ann eseye reponn kesyon sa a lè w gade trafik la atravè wireshark

Fronting domèn ki baze sou TLS 1.3

Ekran an montre ke premye navigatè a jwenn adrès IP sèvè a atravè DNS, Lè sa a, yon estanda TCP handshake rive ak sèvè destinasyon an, ak Lè sa a, navigatè a eseye etabli yon koneksyon SSL ak sèvè a. Pou fè sa, li voye yon pake SSL Kliyan Hello, ki gen non domèn sous la nan tèks klè. Sevèr entèfas cloudflare mande jaden sa a pou yo ka dirije koneksyon an kòrèkteman. Sa a se kote founisè a DPI kenbe nou, kraze koneksyon nou an. An menm tan an, nou pa resevwa okenn souch nan men founisè a, epi nou wè erè navigatè estanda a kòm si sit la enfim oswa tou senpleman pa travay:

Fronting domèn ki baze sou TLS 1.3

Koulye a, kite a pèmèt mekanis eSNI nan navigatè a, jan sa ekri nan enstriksyon yo pou Firefox :
Pou fè sa nou louvri paj konfigirasyon Firefox sou: config epi aktive paramèt sa yo:

network.trr.mode = 2;
network.trr.uri = https://mozilla.cloudflare-dns.com/dns-query
network.security.esni.enabled = true

Apre sa, nou pral tcheke si paramèt yo ap travay kòrèkteman sou sit entènèt cloudflare la. lyen epi ann eseye jwe fent la ak tracker torrent nou an ankò.

Fronting domèn ki baze sou TLS 1.3

Vwala. Tracker pi renmen nou an louvri san okenn vpn oswa serveurs prokurasyon. Ann gade kounye a nan pil fatra trafik la nan wireshark pou wè sa ki te pase.

Fronting domèn ki baze sou TLS 1.3

Fwa sa a, pakè ssl kliyan bonjou pa klèman genyen domèn destinasyon an, men olye de sa, yon nouvo jaden parèt nan pake a - encrypted_server_name - sa a se kote valè rutracker.nl genyen, epi sèlman sèvè frontend cloudflare a ka dekripte sa a. jaden. Men, si se konsa, Lè sa a, founisè a DPI pa gen okenn chwa men yo lave men l 'ak pèmèt trafik sa yo. Pa gen okenn lòt opsyon ak chifreman.

Se konsa, nou te gade ki jan teknoloji a ap travay nan navigatè a. Koulye a, ann eseye aplike li nan bagay ki pi espesifik ak enteresan. E premye, nou pral anseye menm boukl la pou sèvi ak eSNI pou travay ak TLS 1.3, epi an menm tan nou pral wè ki jan fasaj domèn ki baze sou eSNI la ap travay.

Domèn fasad ak eSNI

Akòz lefèt ke curl itilize bibliyotèk estanda openssl la pou konekte avèk pwotokòl https la, anvan tout bagay nou bezwen bay sipò eSNI la. Pa gen okenn sipò eSNI nan branch mèt openssl yo ankò, kidonk nou bezwen telechaje yon branch espesyal openssl, konpile ak enstale li.

Nou klonaj repozitwa a soti nan GitHub epi konpile kòm dabitid:

$ git clone https://github.com/sftcd/openssl
$ cd openssl
$ ./config

$ make
$ cd esnistuff
$ make

Apre sa, nou klonaj repozitwa a ak curl epi konfigirasyon konpilasyon li yo lè l sèvi avèk bibliyotèk konpile openssl nou an:

$ cd $HOME/code
$ git clone https://github.com/niallor/curl.git curl-esni
$ cd curl-esni

$ export LD_LIBRARY_PATH=/opt/openssl
$ ./buildconf
$ LDFLAGS="-L/opt/openssl" ./configure --with-ssl=/opt/openssl --enable-esni --enable-debug

Isit la li enpòtan pou presize kòrèkteman tout repèrtwar kote openssl ye (nan ka nou an, sa a se /opt/openssl/) epi asire w ke pwosesis konfigirasyon an ale nan san erè.

Si konfigirasyon an reyisi, nou pral wè liy lan:

AVÈTISMAN: esni ESNI aktive men make EXPERIMENTAL. Sèvi ak ak prekosyon!

$ make

Apre yo fin bati pake a avèk siksè, nou pral sèvi ak yon fichye bash espesyal ki soti nan openssl pou konfigirasyon ak kouri curl. Ann kopye li nan anyè a ak boukl pou konvenyans:

cp /opt/openssl/esnistuff/curl-esni 

epi fè yon demann https tès sou sèvè cloudflare, pandan y ap anrejistre pake DNS ak TLS nan Wireshark.

$ ESNI_COVER="www.hello-rkn.ru" ./curl-esni https://cloudflare.com/

Nan repons sèvè a, anplis de anpil enfòmasyon debogaj ki soti nan openssl ak curl, nou pral resevwa yon repons HTTP ak kòd 301 ki soti nan cloudflare.

HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 13:12:55 GMT
< Transfer-Encoding: chunked
< Connection: keep-alive
< Cache-Control: max-age=3600
< Expires: Sun, 03 Nov 2019 14:12:55 GMT
< Location: https://www.cloudflare.com/

ki endike ke demann nou an te delivre avèk siksè nan sèvè a destinasyon, tande ak trete.

Koulye a, kite a gade nan pil fatra trafik la nan wireshark, i.e. sa DPI founisè a te wè nan ka sa a.

Fronting domèn ki baze sou TLS 1.3

Li ka wè ke curl premye tounen vin jwenn sèvè a DNS pou yon kle piblik eSNI pou sèvè a cloudflare - yon demann TXT DNS nan _esni.cloudflare.com (pake No 13). Lè sa a, lè l sèvi avèk bibliyotèk openssl la, curl te voye yon demann TLS 1.3 nan sèvè cloudflare kote yo te ankripte jaden SNI a ak kle piblik la te jwenn nan etap anvan an (pake #22). Men, anplis de jaden eSNI a, pake SSL-alo te gen ladan tou yon jaden ki gen abityèl - SNI louvri, ke nou ka presize nan nenpòt lòd (nan ka sa a - www.hello-rkn.ru).

Sa a jaden SNI louvri pa te pran an kont nan okenn fason lè yo trete pa serveurs cloudflare epi sèlman sèvi kòm yon mask pou founisè a DPI. Sèvè cloudflare a te resevwa pake ssl-hello nou an, li te dekripte eSNI a, li te retire SNI orijinal la epi li te trete l kòmsi pa gen anyen ki te pase (li te fè tout bagay egzakteman jan li te planifye lè li te devlope eSNI).

Bagay la sèlman ki ka kenbe nan ka sa a soti nan yon pwen de vi DPI se demann prensipal DNS nan _esni.cloudflare.com. Men, nou te fè demann DNS la louvri sèlman pou montre kijan mekanis sa a fonksyone anndan an.

Pou finalman rale tapi a soti anba DPI, nou itilize mekanis DNS-over-HTTPS ki deja mansyone. Yon ti eksplikasyon - DOH se yon pwotokòl ki pèmèt ou pwoteje kont yon atak man-in-the-middle lè w voye yon demann DNS sou HTTPS.

Ann egzekite demann lan ankò, men fwa sa a nou pral resevwa kle eSNI piblik atravè pwotokòl https la, pa DNS:

ESNI_COVER="www.hello-rkn.ru" DOH_URL=https://mozilla.cloudflare-dns.com/dns-query ./curl-esni https://cloudflare.com/

Depo trafik demann lan montre nan ekran ki anba a:

Fronting domèn ki baze sou TLS 1.3

Li ka wè ke curl premye aksè nan sèvè mozilla.cloudflare-dns.com atravè pwotokòl DoH (https koneksyon ak sèvè 104.16.249.249) pou jwenn nan men yo valè kle piblik yo pou SNI chifreman, ak Lè sa a, nan destinasyon an. sèvè, kache dèyè domèn nan www.hello-rkn.ru.

Anplis rezolisyon DoH ki anwo a mozilla.cloudflare-dns.com, nou ka itilize lòt sèvis DoH popilè, pou egzanp, ki soti nan pi popilè sosyete sa ki mal.
Ann kouri rechèch sa a:

ESNI_COVER="www.kremlin.ru" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/

Epi nou jwenn repons lan:

< HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 14:10:22 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=da0144d982437e77b0b37af7d00438b1a1572790222; expires=Mon, 02-Nov-20 14:10:22 GMT; path=/; domain=.rutracker.nl; HttpOnly; Secure
< Location: https://rutracker.nl/forum/index.php
< CF-Cache-Status: DYNAMIC
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
< CF-RAY: 52feee696f42d891-CPH

Fronting domèn ki baze sou TLS 1.3

Nan ka sa a, nou tounen vin jwenn sèvè rutracker.nl bloke a, lè l sèvi avèk rezolisyon DoH dns.google (pa gen okenn typo isit la, kounye a sosyete a pi popilè gen pwòp domèn premye nivo li yo) epi kouvri tèt nou ak yon lòt domèn, ki se entèdi. entèdi pou tout DPI yo bloke anba doulè lanmò. Dapre repons ou resevwa a, ou ka konprann ke demann nou an te trete avèk siksè.

Kòm yon chèk adisyonèl ke DPI founisè a reponn a SNI a louvri, ke nou transmèt kòm yon kouvèti, nou ka fè yon demann nan rutracker.nl anba laparans nan kèk lòt resous entèdi, pou egzanp, yon lòt "bon" tracker torrent:

$ ESNI_COVER="rutor.info" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/

Nou pap resevwa yon repons nan men sèvè a, paske... demann nou an pral bloke pa sistèm DPI a.

Yon konklizyon kout nan premye pati a

Se konsa, nou te kapab demontre fonksyonalite eSNI lè l sèvi avèk openssl ak curl epi teste operasyon an nan domèn fronting ki baze sou eSNI. Nan menm fason an, nou ka adapte zouti pi renmen nou yo ki itilize bibliyotèk openssl pou travay "anba laparans" lòt domèn. Plis detay sou sa nan pwochen atik nou yo.

Sous: www.habr.com

Add nouvo kòmantè