SSTP-kerrokset selitettynä: mitä sisempi paketti yhä paljastaa
SSTP käärii PPP:n ja sisemmän paketin TLS:n sisään, mutta ulompi TCP-yhteys näyttää yhä, kuka puhui kenen kanssa. Merkitse jokainen kerros ennen kuin luet kaappausta.
Useimmissa selityksissä kaksi tosiasiaa SSTP:stä sulautuu yhteen, ja juuri se sulautuma tekee kaappauksista hämmentäviä. Sovelluksen paketti säilyy suojatun kanavan sisällä, ja kanavaa kuljettava TCP-yhteys pitää omat osoitteensa koko matkan. Johtoa pitkin kulkee kantaja ja sen lasti, ei koskaan kummankaan korvike. Käy pino läpi ulkoa sisäänpäin ja merkitse jokainen raja, jonka ylität.
Aloita ulommasta kantajasta
Ensimmäinen asia johdolla on tavallinen TCP-yhteys porttiin 443, todellisilla osoitteilla, joita reitittimet välittävät. Juuri tämä yhteys selviää verkko-osoitteiden muunnoksesta ja on se, mitä liittymän tarjoaja voi laskea. Hyötykuorman suojaaminen ei poista kantajaa, eikä se peitä määrää tai ajoitusta.
Kaikki tämän pisteen jälkeen kuljetetaan sen sijaan että reititettäisiin. Kantaja toimii edelleen, vaikka sisempi vaihto epäonnistuisi.
Seuraa kapselointia sisäänpäin
Suojatun kanavan sisällä on SSTP-ohjausvaihto, sitten PPP-istunto ja sitten verkkopaketti, jonka asiakas haluaa toimitetuksi. Jokaisella kerroksella on oma neuvottelunsa, omat virheilmoituksensa ja oma tilakoneensa. Siksi vika voi yhdestä näkökulmasta näyttää TLS-vialta ja toisesta PPP-vialta. Kerrosten lukeminen järjestyksessä kertoo, mikä tilakone pysähtyi.
Yksi kaappaus näyttää harvoin koko pinon. Ulommat otsikot näkyvät vain päätepisteen ulkopuolella ja sisemmät vasta kapseloinnin purun jälkeen. Tämä epäsymmetria tulee siitä, missä seisot, ei protokollasta.
Alla oleva kaavio ryhmittelee kerrokset, jotta niistä ylipäätään voi puhua. Se ei ole tavujärjestys, se ei lupaa yhtä tietuetta pakettia kohden eikä kerro mitään siitä, kuinka monta salausoperaatiota toteutus suorittaa.
outer IP header
TCP to port 443
TLS record layer
SSTP control and data packets
PPP frames
inner IP packet
application transport and payload
Merkitse tarkkailija ennen kaappauksen lukemista
Kaksi saman istunnon kaappausta vastaa eri kysymyksiin, ja sen ratkaisee käyttöliittymä, jolla ne otettiin. Liittymäpolulla näet kantajan ja TLS-tietueet, ja voit mitata kokoja ja välejä näkemättä sisempää osoitetta. Päätepisteessä sisempi paketti on kapseloinnin purun jälkeen tavallista liikennettä yksityisen välityskäytännön alla.
Kirjoita käyttöliittymä ja suunta jokaiseen kaappaukseen ennen sen tulkintaa. Fyysisestä sovittimesta otettu jälki ei koskaan näytä sisemmän sovelluksen osoitteita tavallisina ulompina kenttinä, ja tämän puutteen lukeminen salausviaksi on yleinen virhe. Tunnelista sisältä otettu jälki ei näytä lainkaan kantajaa, joten se ei voi vastata kysymykseen tarjoajan näkymästä. Sama kuri koskee päätepisteen lokeja, jotka kirjaavat neuvottelujärjestyksen eivätkä sisältöä.
Säilytä tarkistukset, joita kaavio ei voi todistaa
Kerrosjärjestys ei osoita, että käyttöönotto validoi palvelimen varmenteen, neuvottelee tuetun TLS-version tai valtuuttaa tilin. Jokainen näistä on kokoonpanopäätös, joka epäonnistuu kapseloinnista riippumatta.
Tarkista ne asiakkaalla, joka kertoo, mistä se neuvotteli, sen sijaan että päättelet piirroksesta. Aloita TLS-kättelystä, sitten SSTP-vaihdosta, sitten PPP:stä, ja pysähdy ensimmäiseen vaiheeseen, joka ilmoittaa virheestä. Ensimmäinen komento tulostaa ketjun ja neuvotellun version, ja toinen luettelee kaappauksessa olevat kättelyt.
openssl s_client -connect vpn.corp.internal:443 -servername vpn.corp.internal
tshark -r sstp.pcap -Y "tls.handshake.type == 1"