Samy Kamkar (poznati istraživač sigurnosti poznat po stvaranju nekoliko sofisticiranih uređaja za napad, poput keyloggera u USB punjaču za telefon) predstavio je novu tehniku napada pod nazivom "NAT slipstreaming".
Napad omogućava, nakon otvaranja web stranice u pregledniku, uspostavljanje veze sa servera napadača na bilo koji UDP ili TCP port na korisničkom sistemu koji se nalazi iza prevodioca adresa. Alat za napad objavljen je na GitHub-u.
Metoda se oslanja na zavaravanje mehanizma za praćenje konekcija ALG (Application Level Gateway) u prevodiocima adresa ili zaštitnim zidovima, koji se koristi za organiziranje NAT prosljeđivanja protokola koji koriste više mrežnih portova (jedan za podatke i jedan za kontrolu), kao što su SIP, H323, IRC DCC i FTP.
Napad se odnosi na korisnike koji se povezuju na mrežu koristeći interne adrese u intranet rasponu (192.168.xx, 10.xxx) i omogućava slanje bilo kojih podataka na bilo koji port (bez HTTP zaglavlja).
Da bi se izvršio napad, dovoljno je da žrtva izvrši JavaScript kod koji je pripremio napadač , na primjer, otvaranjem stranice na web stranici napadača ili pregledavanjem zlonamjernog oglasa na legitimnoj web stranici.
U prvoj fazi, napadač dobija informacije o internoj adresi korisnika, koja se može utvrditi putem WebRTC-a ili, ako je WebRTC onemogućen, napadima grubom silom sa izmjerenim vremenom odziva prilikom zahtjeva za skrivenom slikom (za postojeće hostove, pokušaj zahtjeva slike je brži nego za nepostojeće zbog vremena čekanja prije vraćanja TCP RST odgovora).
U drugoj fazi, JavaScript kod koji se izvršava u pretraživaču žrtve generira veliki HTTP POST zahtjev (koji ne stane u jedan paket) prema serveru napadača koristeći nestandardni broj mrežnog porta kako bi pokrenuo podešavanje parametara TCP fragmentacije i veličine MTU-a u TCP steku žrtve.
Kao odgovor, napadačev server vraća TCP paket s opcijom MSS (Maximum Segment Size), koja određuje maksimalnu veličinu primljenog paketa. U slučaju UDP-a, manipulacija je slična, ali se oslanja na slanje velikog WebRTC TURN zahtjeva za pokretanje fragmentacije na IP nivou.
„NAT Slipstreaming eksploatiše korisnikov pretraživač zajedno sa mehanizmom za praćenje konekcije na nivou aplikacije (ALG) ugrađenim u NAT, rutere i firewall tako što povezuje internu ekstrakciju IP-a putem vremenskog ili WebRTC napada, fragmentacije otkrivanja IP-a i automatizovanog udaljenog MTU-a, veličine TCP paketa masiranje, zloupotreba TURN autentikacije, fino podešavanje granica paketa i zbrka protokola zbog zloupotrebe pretraživača”, rekao je Kamkar u analizi.
Glavna ideja je da, znajući parametre fragmentacije, možete poslati veliki HTTP zahtjev, čiji će rep pasti u drugi paket . Istovremeno, dolazni rep drugog paketa se odabire kako bi se isključili HTTP zaglavlja i skraćuje se na podatke koji u potpunosti odgovaraju drugom protokolu za koji je podržan NAT traversal.
U trećoj fazi, koristeći gornju manipulaciju, JavaScript kod generiše i šalje posebno odabrani HTTP zahtjev (ili TURN za UDP) na TCP port 5060 servera napadača, koji će nakon fragmentacije biti podijeljen u dva paketa: paket sa HTTP zaglavljima i dijelom podataka i važećim SIP paketom sa internim IP-om žrtve.
Sistem za praćenje veza u mrežnom steku će ovaj paket smatrati početkom SIP sesije i dozvoliće prosljeđivanje paketa za bilo koji port koji odabere napadač, pod pretpostavkom da se taj port koristi za prijenos podataka.
Napad se može izvesti bez obzira na korišteni preglednik . Da bi riješili problem, programeri Mozille predložili su blokiranje mogućnosti slanja HTTP zahtjeva na mrežne portove 5060 i 5061, koji su povezani sa SIP protokolom.
Programeri Chromium, Blink i WebKit motora također namjeravaju implementirati sličnu mjeru zaštite.
Izvor: https://samy.pl