Pag-atubang sa domain base sa TLS 1.3

Pasiuna

Pag-atubang sa domain base sa TLS 1.3
Ang modernong mga sistema sa pagsala sa sulud sa korporasyon gikan sa mga inila nga mga tiggama sama sa Cisco, BlueCoat, FireEye adunay daghan nga parehas sa ilang labi ka kusgan nga mga katugbang - mga sistema sa DPI, nga aktibo nga gipatuman sa nasudnon nga lebel. Ang esensya sa trabaho sa duha mao ang pagsusi sa umaabot ug paggawas nga trapiko sa Internet ug, base sa itom / puti nga mga lista, paghimo usa ka desisyon nga idili ang koneksyon sa Internet. Ug tungod kay silang duha nagsalig sa parehas nga mga prinsipyo sa mga sukaranan sa ilang trabaho, ang mga pamaagi sa paglikay kanila adunay daghang managsama.

Usa sa mga teknolohiya nga nagtugot kanimo nga epektibo nga makalikay sa DPI ug mga sistema sa korporasyon mao ang teknolohiya nga nag-atubang sa domain. Ang esensya niini mao nga moadto kami sa usa ka gibabagan nga kapanguhaan, nagtago sa luyo sa lain, publiko nga domain, nga adunay maayong reputasyon, nga klaro nga dili mapugngan sa bisan unsang sistema, pananglitan google.com.

Daghan na nga mga artikulo ang nasulat bahin sa kini nga teknolohiya ug daghang mga pananglitan ang gihatag. Bisan pa, ang popular ug bag-o lang nga gihisgutan nga DNS-over-HTTPS ug encrypted-SNI nga mga teknolohiya, ingon man ang bag-ong bersyon sa TLS 1.3 protocol, nagpaposible sa pagkonsiderar sa laing kapilian alang sa domain fronting.

Pagsabot sa teknolohiya

Una, atong ipasabot ang gamay nga batakang mga konsepto aron ang tanan adunay pagsabot kon kinsa si kinsa ug nganong gikinahanglan kining tanan. Gihisgutan namon ang mekanismo sa eSNI, ang operasyon nga hisgutan pa. Ang mekanismo sa eSNI (naka-encrypt nga Pangalan sa Ngalan sa Server) usa ka luwas nga bersyon sa SNI, nga magamit lamang sa TLS 1.3 protocol. Ang panguna nga ideya mao ang pag-encrypt, taliwala sa ubang mga butang, kasayuran bahin sa kung asa nga domain ipadala ang hangyo.

Karon tan-awon nato kung giunsa ang mekanismo sa eSNI sa praktis.

Ingnon ta nga kita adunay usa ka kapanguhaan sa Internet nga gibabagan sa usa ka modernong solusyon sa DPI (atong kuhaon, pananglitan, ang bantog nga torrent tracker rutracker.nl). Kung gisulayan namon ang pag-access sa website sa usa ka torrent tracker, among makita ang standard stub sa provider nga nagpaila nga ang kapanguhaan gibabagan:

Pag-atubang sa domain base sa TLS 1.3

Sa website sa RKN kini nga dominyo aktuwal nga gilista sa mga lista sa paghunong:

Pag-atubang sa domain base sa TLS 1.3

Kung mangutana ka kung kinsa, imong makita nga ang domain mismo "gitago" sa luyo sa cloud provider Cloudflare.

Pag-atubang sa domain base sa TLS 1.3

Apan dili sama sa mga "espesyalista" gikan sa RKN, ang mas teknikal nga mga empleyado gikan sa Beeline (o gitudlo sa mapait nga kasinatian sa among bantog nga regulator) wala hungog nga nagdili sa site pinaagi sa IP address, apan gidugang ang domain name sa stop list. Dali nimo kini mapamatud-an kung imong tan-awon kung unsa ang gitago sa ubang mga domain sa luyo sa parehas nga IP address, bisitaha ang usa niini ug tan-awa nga ang pag-access wala gibabagan:

Pag-atubang sa domain base sa TLS 1.3

Sa unsang paagi kini mahitabo? Giunsa mahibal-an sa DPI sa provider kung unsang domain ang akong browser, tungod kay ang tanan nga komunikasyon nahitabo pinaagi sa https protocol, ug wala pa namon namatikdan ang pag-ilis sa https nga mga sertipiko gikan sa Beeline? Clairvoyant ba siya o ako ang gisunod?

Atong sulayan pagtubag kini nga pangutana pinaagi sa pagtan-aw sa trapiko pinaagi sa wireshark

Pag-atubang sa domain base sa TLS 1.3

Gipakita sa screenshot nga una nga makuha sa browser ang IP address sa server pinaagi sa DNS, unya ang usa ka standard nga TCP handshake mahitabo sa destinasyon nga server, ug dayon ang browser mosulay sa pag-establisar og koneksyon sa SSL sa server. Aron mahimo kini, nagpadala kini usa ka SSL Client Hello packet, nga adunay sulud nga ngalan sa gigikanan nga domain sa tin-aw nga teksto. Kini nga field gikinahanglan sa cloudflare frontend server aron sa hustong rota sa koneksyon. Dinhi kami gidakop sa provider nga DPI, nga nagbungkag sa among koneksyon. Sa parehas nga oras, wala kami makadawat bisan unsang stub gikan sa taghatag, ug nakita namon ang sukaranan nga sayup sa browser nga ingon nga ang site gibabagan o yano nga wala molihok:

Pag-atubang sa domain base sa TLS 1.3

Karon atong palihokon ang mekanismo sa eSNI sa browser, ingon nga gisulat sa mga panudlo alang sa License :
Aron mahimo kini among ablihan ang panid sa pag-configure sa Firefox mahitungod sa: config ug i-activate ang mosunod nga mga setting:

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

Pagkahuman niini, among susihon kung ang mga setting nagtrabaho sa husto sa website sa cloudflare. link ug atong sulayan pag-usab ang lansis sa atong torrent tracker.

Pag-atubang sa domain base sa TLS 1.3

Voila. Giablihan ang among paborito nga tracker nga wala’y VPN o proxy server. Atong tan-awon karon ang traffic dump sa wireshark aron makita kung unsa ang nahitabo.

Pag-atubang sa domain base sa TLS 1.3

Niining higayona, ang ssl client hello package dili tin-aw nga naglangkob sa destinasyon nga domain, apan hinoon, usa ka bag-ong field ang nagpakita sa package - encrypted_server_name - kini diin ang bili sa rutracker.nl anaa, ug ang cloudflare frontend server lamang ang maka-decrypt niini. kapatagan. Ug kung mao, nan ang provider nga DPI walay kapilian gawas sa paghugas sa mga kamot niini ug pagtugot sa ingon nga trapiko. Walay laing mga kapilian nga adunay encryption.

Mao nga, gitan-aw namon kung giunsa ang paglihok sa teknolohiya sa browser. Karon atong sulayan ang paggamit niini sa mas espesipiko ug makapaikag nga mga butang. Ug una, among itudlo ang parehas nga curl sa paggamit sa eSNI aron magtrabaho kauban ang TLS 1.3, ug sa parehas nga oras makita namon kung giunsa ang nag-una nga domain nga nakabase sa eSNI nga nagtrabaho.

Domain atubangan sa eSNI

Tungod sa kamatuoran nga ang curl naggamit sa standard openssl library aron makonektar pinaagi sa https protocol, una sa tanan kinahanglan namon nga maghatag suporta sa eSNI didto. Wala pa'y suporta sa eSNI sa mga sanga sa openssl master, busa kinahanglan namon nga mag-download sa usa ka espesyal nga sanga sa openssl, i-compile ug i-install kini.

Among gi-clone ang repository gikan sa GitHub ug gi-compile sama sa naandan:

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

$ make
$ cd esnistuff
$ make

Sunod, gi-clone namon ang repository gamit ang curl ug gi-configure ang pagtipon niini gamit ang among giipon nga openssl library:

$ 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

Dinhi hinungdanon nga husto nga ipiho ang tanan nga mga direktoryo kung diin nahimutang ang openssl (sa among kaso, kini /opt/openssl/) ug siguruha nga ang proseso sa pag-configure moagi nga wala’y mga sayup.

Kung malampuson ang pag-configure, atong makita ang linya:

WARNING: esni ESNI enabled pero gimarkahan nga EXPERIMENTAL. Gamita uban ang pag-amping!

$ make

Human sa malampuson nga pagtukod sa package, mogamit kami og espesyal nga bash file gikan sa openssl aron ma-configure ug modagan ang curl. Atong kopyahon kini sa direktoryo nga adunay curl alang sa kasayon:

cp /opt/openssl/esnistuff/curl-esni 

ug paghimo ug pagsulay https hangyo sa cloudflare server, samtang dungan nga nagrekord sa DNS ug TLS packets sa Wireshark.

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

Sa tubag sa server, dugang sa daghang impormasyon sa pag-debug gikan sa openssl ug curl, makadawat kami usa ka tubag sa HTTP nga adunay code 301 gikan sa 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/

nga nagpakita nga ang among hangyo malampuson nga nahatud sa destinasyon nga server, nadungog ug giproseso.

Karon atong tan-awon ang traffic dump sa wireshark, i.e. unsa ang nakita sa provider DPI niini nga kaso.

Pag-atubang sa domain base sa TLS 1.3

Makita nga ang curl unang mibalik sa DNS server alang sa usa ka publiko nga eSNI nga yawe alang sa cloudflare server - usa ka TXT DNS nga hangyo sa _esni.cloudflare.com (package No. 13). Dayon, gamit ang openssl library, nagpadala si curl og TLS 1.3 request sa cloudflare server diin ang SNI field gi-encrypt gamit ang public key nga nakuha sa miaging lakang (packet #22). Apan, dugang sa natad sa eSNI, ang SSL-hello packet naglakip usab sa usa ka field nga adunay naandan nga - bukas nga SNI, nga mahimo natong ipiho sa bisan unsang han-ay (sa kini nga kaso - www.hello-rkn.ru).

Kining bukas nga field sa SNI wala gikonsiderar sa bisan unsang paagi kung giproseso sa mga cloudflare server ug nagsilbi lamang nga maskara alang sa provider nga DPI. Nadawat sa cloudflare server ang among ssl-hello packet, gi-decrypt ang eSNI, gikuha ang orihinal nga SNI gikan didto ug giproseso kini nga daw walay nahitabo (gibuhat niini ang tanan sama sa giplano sa paghimo sa eSNI).

Ang bugtong butang nga madakpan sa kini nga kaso gikan sa usa ka punto sa DPI mao ang panguna nga hangyo sa DNS sa _esni.cloudflare.com. Apan gihimo namo nga bukas ang hangyo sa DNS aron ipakita kung giunsa kini nga mekanismo molihok gikan sa sulod.

Aron sa katapusan makuha ang carpet gikan sa ilawom sa DPI, among gigamit ang nahisgutan na nga mekanismo sa DNS-over-HTTPS. Usa ka gamay nga katin-awan - Ang DOH usa ka protocol nga nagtugot kanimo sa pagpanalipod batok sa usa ka man-in-the-middle nga pag-atake pinaagi sa pagpadala usa ka hangyo sa DNS pinaagi sa HTTPS.

Atong ipatuman pag-usab ang hangyo, apan niining higayona makadawat kita ug publikong eSNI nga mga yawe pinaagi sa https protocol, dili DNS:

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

Ang hangyo nga traffic dump gipakita sa screenshot sa ubos:

Pag-atubang sa domain base sa TLS 1.3

Makita nga ang curl unang nag-access sa mozilla.cloudflare-dns.com server pinaagi sa DoH protocol (https nga koneksyon sa server 104.16.249.249) aron makuha gikan kanila ang mga bili sa publiko nga mga yawe alang sa SNI encryption, ug dayon ngadto sa destinasyon server, nagtago sa luyo sa domain www.hello-rkn.ru.

Dugang pa sa labaw sa DoH solver mozilla.cloudflare-dns.com, mahimo namong gamiton ang uban pang sikat nga serbisyo sa DoH, pananglitan, gikan sa sikat nga dautang korporasyon.
Atong daganon ang mosunod nga pangutana:

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

Ug atong makuha ang tubag:

< 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

Pag-atubang sa domain base sa TLS 1.3

Niini nga kaso, midangop kami sa gibabagan nga rutracker.nl server, gamit ang DoH resolver dns.google (walay typo dinhi, karon ang bantog nga korporasyon adunay kaugalingong first-level domain) ug gitabonan ang among kaugalingon sa laing domain, nga hugot nga gidili para sa tanang DPI nga mo-block ubos sa kasakit sa kamatayon. Base sa tubag nga nadawat, imong masabtan nga ang among hangyo malampuson nga naproseso.

Isip usa ka dugang nga pagsusi nga ang DPI sa provider motubag sa bukas nga SNI, nga among ipadala isip usa ka tabon, mahimo kaming mohangyo sa rutracker.nl ubos sa pagtakuban sa uban pang gidili nga kapanguhaan, pananglitan, laing "maayo" nga torrent tracker:

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

Dili kami makadawat og tubag gikan sa server, tungod kay... ang among hangyo ma-block sa DPI system.

Usa ka mubo nga konklusyon sa unang bahin

Busa, nakahimo kami sa pagpakita sa pagpaandar sa eSNI gamit ang openssl ug curl ug pagsulay sa operasyon sa domain fronting base sa eSNI. Sa samang paagi, mahimo natong ipahiangay ang atong paborito nga mga himan nga naggamit sa openssl library aron magtrabaho "sa ilalum sa takup" sa ubang mga dominyo. Dugang nga mga detalye bahin niini sa among sunod nga mga artikulo.

Source: www.habr.com

Idugang sa usa ka comment