Aghaidh fearainn stèidhichte air TLS 1.3

Ro-ràdh

Aghaidh fearainn stèidhichte air TLS 1.3
Tha siostaman sìolaidh susbaint corporra ùr-nodha bho luchd-saothrachaidh cliùiteach leithid Cisco, BlueCoat, FireEye gu math coltach ris an co-aoisean nas cumhachdaiche - siostaman DPI, a tha gan cur an gnìomh gu gnìomhach aig ìre nàiseanta. Is e brìgh obair an dà chuid sgrùdadh a dhèanamh air trafaic eadar-lìn a tha a’ tighinn a-steach agus a-mach agus, stèidhichte air liostaichean dubh/geal, co-dhùnadh casg a chuir air ceangal eadar-lìn. Agus leis gu bheil an dithis aca an urra ri prionnsapalan co-chosmhail ann am bunaitean an cuid obrach, bidh mòran ann an cumantas cuideachd na dòighean airson faighinn timcheall orra.

Is e teicneòlas aghaidh fearainn aon de na teicneòlasan a leigeas leat faighinn seachad air an dà chuid DPI agus siostaman corporra. Is e an fhìrinn a th’ ann gun tèid sinn gu goireas dùinte, a’ falach air cùl raon poblach eile le deagh chliù, a tha gu follaiseach nach bi air a bhacadh le siostam sam bith, mar eisimpleir google.com.

Chaidh tòrr artaigilean a sgrìobhadh mu thràth mun teicneòlas seo agus chaidh mòran eisimpleirean a thoirt seachad. Ach, tha na teicneòlasan DNS-over-HTTPS agus teicneòlas crioptaichte-SNI a tha mòr-chòrdte agus a chaidh a dheasbad o chionn ghoirid, a bharrachd air an dreach ùr de phròtacal TLS 1.3, ga dhèanamh comasach beachdachadh air roghainn eile airson aghaidh fearainn.

A 'tuigsinn an teicneòlas

An toiseach, mìnichidh sinn beagan bhun-bheachdan bunaiteach gus am bi tuigse aig a h-uile duine air cò a th’ ann agus carson a tha feum air seo uile. Thug sinn iomradh air an uidheamachd eSNI, agus bithear a’ bruidhinn air mar a tha e ag obair. Tha an inneal eSNI (Clàr Ainm Freiceadan crioptaichte) na dhreach tèarainte de SNI, ri fhaighinn a-mhàin airson protocol TLS 1.3. Is e am prìomh bheachd fiosrachadh a chrioptachadh, am measg rudan eile, mun àrainn a thèid an t-iarrtas a chuir thuige.

A-nis leig dhuinn sùil a thoirt air mar a tha an uidheamachd eSNI ag obair ann an cleachdadh.

Canaidh sinn gu bheil goireas eadar-lìn againn a tha air a bhacadh le fuasgladh DPI ùr-nodha (gabhaidh sinn, mar eisimpleir, an lorgaire torrent ainmeil rutracker.nl). Nuair a dh’ fheuchas sinn ri faighinn gu làrach-lìn rianadair torrent, chì sinn stub àbhaisteach an t-solaraiche a’ nochdadh gu bheil an goireas air a bhacadh:

Aghaidh fearainn stèidhichte air TLS 1.3

Air làrach-lìn RKN tha an àrainn seo gu dearbh air a liostadh anns na liostaichean stad:

Aghaidh fearainn stèidhichte air TLS 1.3

Nuair a bhios tu a’ faighneachd cò a th’ ann, chì thu gu bheil an àrainn fhèin “falach” air cùl an t-solaraiche sgòthan Cloudflare.

Aghaidh fearainn stèidhichte air TLS 1.3

Ach aocoltach ris na “eòlaichean” bho RKN, cha do chuir luchd-obrach nas eòlaiche gu teicneòlach bho Beeline (no air an teagasg le eòlas searbh an riaghlaiche ainmeil againn) casg gòrach air an làrach le seòladh IP, ach chuir iad ainm an fhearainn ris an liosta stad. Faodaidh tu seo a dhearbhadh gu furasta ma choimheadas tu air na raointean eile a tha falaichte air cùl an aon sheòladh IP, tadhail air fear dhiubh agus faic nach eil ruigsinneachd air a bhacadh:

Aghaidh fearainn stèidhichte air TLS 1.3

Ciamar a tha seo a’ tachairt? Ciamar a tha fios aig DPI an t-solaraiche dè an àrainn air a bheil mo bhrobhsair, leis gu bheil a h-uile conaltradh a’ tachairt tron ​​​​phròtacal https, agus nach do mhothaich sinn fhathast gun deach teisteanasan https bho Beeline a chuir an àite? A bheil e clairvoyant no a bheil mi ga leantainn?

Feuchaidh sinn ris a’ cheist seo a fhreagairt le bhith a’ coimhead air an trafaic tro wireshark

Aghaidh fearainn stèidhichte air TLS 1.3

Tha an dealbh-sgrìn a’ sealltainn gum faigh am brabhsair seòladh IP an fhrithealaiche tro DNS an toiseach, an uairsin bidh crathadh-làimhe àbhaisteach TCP a’ tachairt leis an t-seirbheisiche ceann-uidhe, agus an uairsin bidh am brabhsair a’ feuchainn ri ceangal SSL a stèidheachadh leis an fhrithealaiche. Gus seo a dhèanamh, bidh e a’ cur pasgan SSL Client Hello, anns a bheil ainm an àrainn stòr ann an teacsa soilleir. Tha feum air an raon seo leis an fhrithealaiche frontend cloudflare gus an ceangal a stiùireadh gu ceart. Seo far am bi an solaraiche DPI gar glacadh, a’ briseadh ar ceangal. Aig an aon àm, chan eil sinn a 'faighinn stump sam bith bhon t-solaraiche, agus tha sinn a' faicinn mearachd àbhaisteach a 'bhrabhsair mar gum biodh an làrach ciorramach no dìreach ag obair:

Aghaidh fearainn stèidhichte air TLS 1.3

A-nis leig leinn an uidheamachd eSNI sa bhrobhsair a chomasachadh, mar a tha sgrìobhte san stiùireadh airson Firefox :
Gus seo a dhèanamh bidh sinn a’ fosgladh duilleag rèiteachaidh Firefox mu dheidhinn: cumadh agus cuir an gnìomh na roghainnean a leanas:

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

Às deidh seo, nì sinn cinnteach gu bheil na roghainnean ag obair ceart air làrach-lìn cloudflare. cheangal agus feuch an feuch sinn an cleas leis an lorgaire torrent againn a-rithist.

Aghaidh fearainn stèidhichte air TLS 1.3

Voila. Dh’ fhosgail an rianadair as fheàrr leinn às aonais VPN no frithealaichean neach-ionaid. Bheir sinn sùil a-nis air an dump trafaic ann an wireshark gus faicinn dè thachair.

Aghaidh fearainn stèidhichte air TLS 1.3

An turas seo, chan eil an raon ceann-uidhe anns a’ phacaid ssl client hello, ach an àite sin, nochd raon ùr sa phacaid - encrypted_server_name - seo far a bheil luach rutracker.nl ann, agus chan urrainn ach am frithealaiche frontend cloudflare seo a dhì-chrioptachadh achadh. Agus ma tha, chan eil roghainn aig an t-solaraiche DPI ach a làmhan a nighe agus an trafaic sin a cheadachadh. Chan eil roghainnean eile ann le crioptachadh.

Mar sin, choimhead sinn air mar a tha an teicneòlas ag obair sa bhrobhsair. A-nis feuchaidh sinn ri a chuir an sàs ann an rudan nas sònraichte agus nas inntinniche. Agus an toiseach, ionnsaichidh sinn an aon curl gus eSNI a chleachdadh gus obrachadh le TLS 1.3, agus aig an aon àm chì sinn mar a bhios an àrainn stèidhichte air eSNI fhèin ag obair.

Fearann ​​​​air beulaibh eSNI

Leis gu bheil Curl a’ cleachdadh an leabharlann openssl àbhaisteach gus ceangal tron ​​phròtacal https, an toiseach feumaidh sinn taic eSNI a thoirt seachad an sin. Chan eil taic eSNI ann am prìomh mheuran openssl fhathast, agus mar sin feumaidh sinn meur sònraichte openssl a luchdachadh sìos, a chuir ri chèile agus a stàladh.

Bidh sinn a’ clonadh an stòr bho GitHub agus a’ cur ri chèile mar as àbhaist:

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

$ make
$ cd esnistuff
$ make

An uairsin, bidh sinn a’ gleusadh an stòr le curl agus a’ rèiteachadh a chruinneachadh a’ cleachdadh an leabharlann openssl a chuir sinn ri chèile:

$ 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

An seo tha e cudromach na clàran gu lèir a shònrachadh gu ceart far a bheil openssl suidhichte (anns a’ chùis againn, is e seo / opt/openssl/) agus dèan cinnteach gun tèid am pròiseas rèiteachaidh troimhe gun mhearachdan.

Ma shoirbhicheas leis an rèiteachadh, chì sinn an loidhne:

RABHADH: esni ESNI air a chomasachadh ach air a chomharrachadh EXPERIMENTAL. Cleachd gu faiceallach!

$ make

Às deidh dhuinn am pasgan a thogail gu soirbheachail, cleachdaidh sinn faidhle bash sònraichte bho openssl gus curl a rèiteachadh agus a ruith. Nach dèan sinn lethbhreac dheth don eòlaire le curl airson goireasachd:

cp /opt/openssl/esnistuff/curl-esni 

agus dèan deuchainn https iarrtas don t-seirbheisiche cloudflare, agus aig an aon àm a’ clàradh pacaidean DNS agus TLS ann an Wireshark.

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

Ann am freagairt an fhrithealaiche, a bharrachd air tòrr fiosrachaidh deasbaid bho openssl agus curl, gheibh sinn freagairt HTTP le còd 301 bho 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/

a tha a’ nochdadh gun deach an t-iarrtas againn a lìbhrigeadh gu soirbheachail don t-seirbheisiche ceann-uidhe, gun deach a chluinntinn agus a phròiseasadh.

A-nis leig dhuinn sùil a thoirt air an tubaist trafaic ann an wireshark, i.e. na chunnaic an solaraiche DPI sa chùis seo.

Aghaidh fearainn stèidhichte air TLS 1.3

Chithear gun do thionndaidh curl an toiseach chun t-seirbheisiche DNS airson iuchair eSNI poblach airson an fhrithealaiche cloudflare - iarrtas TXT DNS gu _esni.cloudflare.com (pasgan Àir. 13). An uairsin, a’ cleachdadh an leabharlann openssl, chuir Curl iarrtas TLS 1.3 chun t-seirbheisiche cloudflare anns an deach an raon SNI a chrioptachadh leis an iuchair phoblach a fhuaireadh sa cheum roimhe (pacaid #22). Ach, a bharrachd air an raon eSNI, bha am pasgan SSL-hello cuideachd a’ toirt a-steach raon leis an SNI àbhaisteach - fosgailte, as urrainn dhuinn a shònrachadh ann an òrdugh sam bith (sa chùis seo - www.hello-rkn.ru).

Cha deach aire a thoirt don raon SNI fosgailte seo ann an dòigh sam bith nuair a bha e air a ghiullachd le frithealaichean cloudflare agus cha robh e ach mar masg airson an t-solaraiche DPI. Fhuair am frithealaiche cloudflare am pasgan ssl-hello againn, chuir e às don eSNI, thug e a-mach an SNI tùsail às an sin agus ghiollaich e e mar nach robh dad air tachairt (rinn e a h-uile dad dìreach mar a bhathar an dùil nuair a bha e a’ leasachadh eSNI).

Is e an aon rud a dh'fhaodar a ghlacadh sa chùis seo bho shealladh DPI am prìomh iarrtas DNS gu _esni.cloudflare.com. Ach rinn sinn an t-iarrtas DNS fosgailte a-mhàin gus sealltainn mar a tha an uidheamachd seo ag obair bhon taobh a-staigh.

Gus am brat a tharraing a-mach mu dheireadh bho bhith fo DPI, bidh sinn a’ cleachdadh an uidheamachd DNS-over-HTTPS a chaidh ainmeachadh mar-thà. Mìneachadh beag - tha DOH na phròtacal a leigeas leat dìon an aghaidh ionnsaigh fear-sa-meadhan le bhith a’ cur iarrtas DNS thairis air HTTPS.

Nach cuir sinn an t-iarrtas an gnìomh a-rithist, ach an turas seo gheibh sinn iuchraichean poblach eSNI tron ​​​​phròtacal https, chan e DNS:

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

Tha dump trafaic an iarrtais ri fhaicinn san dealbh gu h-ìosal:

Aghaidh fearainn stèidhichte air TLS 1.3

Chìthear gu bheil curl a’ faighinn cothrom air frithealaiche mozilla.cloudflare-dns.com an-toiseach tron ​​phròtacal DoH (ceangal https ri frithealaiche 104.16.249.249) gus luachan iuchraichean poblach airson crioptachadh SNI fhaighinn bhuapa, agus an uairsin chun cheann-uidhe. frithealaiche, a 'falach air cùlaibh an àrainn www.hello-rkn.ru.

A bharrachd air an DoH resolver gu h-àrd mozilla.cloudflare-dns.com, is urrainn dhuinn seirbheisean DoH mòr-chòrdte eile a chleachdadh, mar eisimpleir, bhon chompanaidh olc ainmeil.
Rachamaid air a’ cheist a leanas:

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

Agus gheibh sinn am freagairt:

< 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

Aghaidh fearainn stèidhichte air TLS 1.3

Anns a ’chùis seo, thionndaidh sinn chun t-seirbheisiche rutracker.nl a chaidh a bhacadh, a’ cleachdadh an DoH resolver dns.google (chan eil typo an seo, a-nis tha an raon ciad-ìre fhèin aig a’ chompanaidh ainmeil) agus chòmhdaich sinn sinn fhèin le àrainn eile, a tha gu tur toirmisgte do gach DPI a bhacadh fo phian bàis. Stèidhichte air an fhreagairt a fhuair thu, tuigidh tu gun deach ar n-iarrtas a phròiseasadh gu soirbheachail.

Mar dhearbhadh a bharrachd gu bheil DPI an t-solaraiche a’ freagairt ris an SNI fosgailte, a bhios sinn a’ sgaoileadh mar chòmhdach, is urrainn dhuinn iarrtas a dhèanamh rutracker.nl fo stiùir goireas toirmisgte eile, mar eisimpleir, rianadair torrent “math” eile:

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

Chan fhaigh sinn freagairt bhon fhrithealaiche, oir... bidh an t-iarrtas againn air a bhacadh leis an t-siostam DPI.

Co-dhùnadh goirid mun chiad phàirt

Mar sin, bha e comasach dhuinn gnìomhachd eSNI a nochdadh a’ cleachdadh openssl agus curl agus deuchainn a dhèanamh air gnìomhachd aghaidh fearainn stèidhichte air eSNI. San aon dòigh, is urrainn dhuinn na h-innealan as fheàrr leinn atharrachadh a bhios a’ cleachdadh an leabharlann openssl gus obrachadh “fo chumadh” raointean eile. Tuilleadh fiosrachaidh mu dheidhinn seo anns na h-ath artaigilean againn.

Source: www.habr.com

Cuir beachd ann