Samy Kamkar (kuuluisa tietoturvatutkija, joka tunnetaan useiden hienostuneiden hyökkäyslaitteiden, kuten USB-puhelimen laturiin asennettavan näppäinpainallusten tallentimen, luomisesta) on esitellyt uuden hyökkäystekniikan nimeltä "NAT slipstreaming".
Hyökkäys mahdollistaa yhteyden muodostamisen hyökkääjän palvelimelta mihin tahansa käyttäjän järjestelmän UDP- tai TCP-porttiin, joka sijaitsee osoitekääntäjän takana, kun verkkosivu avataan selaimessa. Hyökkäystyökalut on julkaistu GitHubissa.
Menetelmä perustuu osoitekääntimien tai palomuurien ALG (Application Level Gateway) -yhteydenseurantamekanismin huijaamiseen. Tätä mekanismia käytetään NAT-edelleenlähetyksen järjestämiseen protokollille, jotka käyttävät useita verkkoportteja (yksi datalle ja yksi ohjaukselle), kuten SIP, H323, IRC DCC ja FTP.
Hyökkäys koskee käyttäjiä, jotka muodostavat yhteyden verkkoon käyttämällä sisäisiä osoitteita intranet-alueella (192.168.xx, 10.xxx), ja se sallii minkä tahansa datan lähettämisen mihin tahansa porttiin (ilman HTTP-otsikoita).
Hyökkäyksen suorittamiseksi riittää, että uhri suorittaa hyökkääjän laatiman JavaScript-koodin , esimerkiksi avaamalla sivun hyökkääjän verkkosivustolla tai katsomalla haitallisen mainoksen laillisella verkkosivustolla.
Ensimmäisessä vaiheessa hyökkääjä saa tietoa käyttäjän sisäisestä osoitteesta, joka voidaan määrittää WebRTC:llä tai, jos WebRTC on poistettu käytöstä, raa'alla voimalla hyökkäyksillä, joilla on mitattu vasteaika piilotettua kuvaa pyydettäessä (olemassa olevien isäntien kohdalla kuvan pyytäminen on nopeampaa kuin olemattomien isäntien kohdalla TCP RST -vastauksen palauttamista edeltävän odotusajan vuoksi).
Toisessa vaiheessa uhrin selaimessa suoritettava JavaScript-koodi luo hyökkääjän palvelimelle suuren HTTP POST -pyynnön (joka ei mahdu yhteen pakettiin) käyttämällä epästandardia verkkoporttinumeroa aloittaakseen TCP-fragmentointiparametrien ja MTU-koon säätämisen uhrin TCP-pinossa.
Vastauksena hyökkääjän palvelin palauttaa TCP-paketin, jossa on MSS- asetus (Maximum Segment Size), joka määrittää vastaanotetun paketin maksimikoon. UDP:n tapauksessa manipulointi on samanlaista, mutta se perustuu suuren WebRTC TURN -pyynnön lähettämiseen IP-tason fragmentoinnin laukaisemiseksi.
«NAT Slipstreaming hyödyntää käyttäjän selainta yhdessä sovellustason yhdyskäytävän (ALG) yhteyden seurantamekanismin kanssa, joka on rakennettu NAT: iin, reitittimiin ja palomuureihin ketjuamalla sisäinen IP-purku aikahyökkäyksen tai WebRTC: n kautta, pirstoutuminen automaattisen etä-IP: n ja MTU: n, TCP-pakettikokohieronnan, TURN-todennuksen väärinkäytön, pakettirajojen tarkan hallinnan ja selaimen väärinkäytöksistä johtuvan protokollan sekaannuksen ", Kamkar kertoi analyysissä.
Pääajatuksena on , että tietäen fragmentointiparametrit, voit lähettää suuren HTTP-pyynnön, jonka häntä putoaa toiseen pakettiin . Samanaikaisesti toisen paketin saapuva häntä valitaan HTTP-otsikoiden ulkopuolelle ja katkaistaan dataksi, joka vastaa kokonaan toista protokollaa, jolle NAT-läpikulkua tuetaan.
Kolmannessa vaiheessa yllä olevaa manipulointia käyttämällä JavaScript-koodi luo ja lähettää erityisen valitun HTTP-pyynnön (tai TURN UDP: lle) hyökkääjän palvelimen TCP-porttiin 5060, joka pirstoutumisen jälkeen jaetaan kahteen pakettiin: a paketti, jossa on HTTP-otsikot ja osa tiedoista, sekä kelvollinen SIP-paketti, jossa on uhrin sisäinen IP.
Verkkopinon yhteyksien jäljitysjärjestelmä tulkitsee tämän paketin SIP-istunnon alkuksi ja sallii paketin edelleenlähetyksen mihin tahansa hyökkääjän valitsemaan porttiin olettaen, että tätä porttia käytetään tiedonsiirtoon.
Hyökkäys voidaan suorittaa käytetystä selaimesta riippumatta . Ongelman ratkaisemiseksi Mozillan kehittäjät ehdottivat HTTP-pyyntöjen lähettämisen estämistä verkkoportteihin 5060 ja 5061, jotka liittyvät SIP-protokollaan.
Chromium-, Blink- ja WebKit-moottoreiden kehittäjät aikovat myös toteuttaa samanlaisen suojatoimenpiteen.
Lähde: https://samy.pl