Metoda dozvoljava zamjenu paketa na nivou TCP veza koje prolaze unutar šifriranog tunela, ali ne dozvoljava uglavljivanje u veze koje koriste dodatne slojeve šifriranja (na primjer, TLS, HTTPS, SSH). Algoritmi šifriranja koji se koriste u VPN-u nisu bitni, budući da lažni paketi dolaze iz vanjskog sučelja i kernel ih obrađuje kao pakete iz VPN sučelja. Najvjerovatniji cilj napada je ometanje nešifriranih HTTP veza, ali
Uspješno lažiranje paketa je demonstrirano za tunele kreirane korištenjem OpenVPN-a, WireGuard-a i IKEv2/IPSec-a.Tor nije podložan problemu, jer koristi SOCKS za prosljeđivanje prometa i vezan je za loopback interfejs. Za IPv4, napad je moguć ako je rp_filter postavljen na “Loose” mod (sysctl net.ipv4.conf.all.rp_filter = 2). U početku je većina sistema koristila “Strogi” način rada, ali počevši od
rp_filter mehanizam
Ruta odgovora može proći kroz mrežni interfejs koji nije onaj kroz koji je stigao dolazni paket.
U Loose modu, dolazni paket se provjerava prema tabeli usmjeravanja, ali se smatra važećim ako je izvorna adresa dostupna preko bilo kojeg dostupnog mrežnog interfejsa. Predloženi napad se zasniva na činjenici da napadač može poslati paket sa lažnom izvornom adresom koja odgovara VPN sučelju, i uprkos činjenici da će ovaj paket ući u sistem preko vanjskog mrežnog sučelja, a ne preko VPN-a, u rp_filter “Loose” mod takav paket neće biti odbačen.
Da bi izvršio napad, napadač mora kontrolirati gateway preko kojeg korisnik pristupa mreži (na primjer, preko MITM organizacije, kada se žrtva povezuje na bežičnu pristupnu tačku koju kontroliše napadač ili preko
Generiranjem toka fiktivnih paketa u kojima je zamijenjena IP adresa VPN sučelja, pokušava se utjecati na konekciju koju uspostavi klijent, ali se utjecaj ovih paketa može promatrati samo kroz pasivnu analizu pridruženog šifriranog toka prometa. sa radom tunela. Da biste izvršili napad, morate saznati IP adresu tunelskog mrežnog sučelja koju je dodijelio VPN server, te također utvrditi da je veza s određenim hostom trenutno aktivna kroz tunel.
Da bi se utvrdila IP adresa VPN sučelja virtuelne mreže, SYN-ACK paketi se šalju sistemu žrtve, uzastopno nabrajajući cijeli raspon virtualnih adresa (prije svega, adrese koje se koriste u VPN-u se nabrajaju prema zadanim postavkama, na primjer, OpenVPN koristi podmrežu 10.8.0.0/24). Postojanje adrese može se proceniti na osnovu prijema odgovora sa RST zastavicom.
Na sličan način se utvrđuje prisustvo konekcije na određenom sajtu i broj porta na strani klijenta – sortiranjem brojeva portova korisniku se šalje SYN paket, kao izvorna adresa, na kojoj se nalazi sajt. IP je zamijenjen, a odredišna adresa je virtuelni IP VPN. Port servera se može predvideti (80 za HTTP), a broj porta na strani klijenta može se izračunati grubom silom, analizirajući za različite brojeve promenu intenziteta ACK odgovora u kombinaciji sa odsustvom paketa sa RST-om. zastava.
U ovoj fazi, napadač poznaje sva četiri elementa veze (izvorne IP adrese/port i odredišne IP adrese/port), ali da bi generirao fiktivni paket koji će sistem žrtve prihvatiti, napadač mora odrediti TCP sekvencu i brojevi potvrde (seq i ack) - veze. Da bi odredio ove parametre, napadač neprekidno šalje lažne RST pakete, pokušavajući različite brojeve sekvence, sve dok ne otkrije ACK paket odgovora, čiji dolazak ukazuje da broj spada u TCP prozor.
Zatim napadač pojašnjava ispravnost definicije tako što šalje pakete sa istim brojem i posmatra dolazak ACK odgovora, nakon čega bira tačan broj trenutnog niza. Zadatak je kompliciran činjenicom da se odgovori šalju unutar šifriranog tunela i da se njihovo prisustvo u presretnutom prometnom toku može analizirati samo pomoću indirektnih metoda. Da li klijent šalje ACK paket adresiran na VPN server određuje se na osnovu veličine i kašnjenja šifriranih odgovora, koji su u korelaciji sa slanjem lažnih paketa. Na primjer, za OpenVPN, veličina šifriranog paketa od 79 omogućava vam da precizno ocijenite da postoji ACK unutra.
Dok se zaštita od napada ne doda kernelu operativnog sistema kao privremena metoda blokiranja problema
iptables -t raw -I PREPROSUTIRANJE ! -i wg0 -d 10.182.12.8 -m addrtype ! --src-tip LOKALNO -j DROP
ili za nftables
nft add table ip raw
nft add chain ip raw prerouting '{ type filter hook prerouting priority 0; }'
nft add rule ip raw prerouting 'iifname != "wg0" ip daddr 10.182.12.8 fib saddr type != lokalno ispuštanje'
Da biste se zaštitili kada koristite tunele sa IPv4 adresama, samo postavite rp_filter na “Strogi” način (“sysctl net.ipv4.conf.all.rp_filter = 1”). Na strani VPN-a, metoda detekcije sekvencijalnog broja može se blokirati dodavanjem dodatnog dopuna šifriranim paketima, čineći sve pakete iste veličine.
izvor: opennet.ru