De metoade lit pakketferfanging mooglik meitsje op it nivo fan TCP-ferbiningen dy't binnen in fersifere tunnel passe, mar lit it net ynkeare yn ferbiningen dy't ekstra fersiferingslagen brûke (bygelyks TLS, HTTPS, SSH). De fersiferingsalgoritmen dy't brûkt wurde yn 'e VPN dogge net út, om't de spoofed pakketten komme fan' e eksterne ynterface en wurde ferwurke troch de kernel as pakketten fan 'e VPN-ynterface. It meast wierskynlike doel fan 'e oanfal is om te bemuoien mei net-fersifere HTTP-ferbiningen, mar
Súksesfolle pakketspoofing is oantoand foar tunnels makke mei OpenVPN, WireGuard en IKEv2 / IPSec. Tor is net gefoelich foar it probleem, om't it SOCKS brûkt om ferkear troch te stjoeren en bûn is oan in loopback-ynterface. Foar IPv4 is in oanfal mooglik as rp_filter is ynsteld op "Los" modus (sysctl net.ipv4.conf.all.rp_filter = 2). Yn it earstoan brûkten de measte systemen de "Strikte" modus, mar begjinnend fan
rp_filter meganisme
De antwurdrûte kin troch in oare netwurkynterface gean dan dejinge wêrby't it ynkommende pakket oankaam.
Yn Losse modus wurdt in ynkommende pakket kontrolearre tsjin de routing tafel, mar wurdt beskôge as jildich as de boarne adres is te berikken fia alle beskikbere netwurk ynterface. De foarstelde oanfal is basearre op it feit dat de oanfaller in pakket kin stjoere mei in spoofed boarneadres dat oerienkomt mei de VPN-ynterface, en nettsjinsteande it feit dat dit pakket it systeem sil ynfiere fia de eksterne netwurkynterface en net fia de VPN, yn 'e rp_filter "Loose" modus sa'n pakket sil net wurde wegere.
Om in oanfal út te fieren, moat de oanfaller de poarte kontrolearje wêrmei't de brûker tagong hat ta it netwurk (bygelyks fia in MITM-organisaasje, as it slachtoffer ferbynt mei in troch oanfaller kontrolearre draadloos tagongspunt, of fia
Troch it generearjen fan in stream fan fiktive pakketten wêryn it IP-adres fan 'e VPN-ynterface wurdt ferfongen, wurde besocht om de ferbining te beynfloedzjen dy't troch de kliïnt fêststeld is, mar de ynfloed fan dizze pakketten kin allinich beoardiele wurde troch passive analyze fan' e fersifere ferkearsstream ferbûn mei de eksploitaasje fan de tunnel. Om in oanfal út te fieren, moatte jo it IP-adres fine fan 'e tunnelnetwurkynterface tawiisd troch de VPN-tsjinner, en ek bepale dat in ferbining mei in spesifike host op it stuit aktyf is troch de tunnel.
Om it IP fan 'e VPN-firtuele netwurkynterface te bepalen, wurde SYN-ACK-pakketten nei it slachtoffersysteem stjoerd, opfolgjend it heule berik fan firtuele adressen opnimt (alearst wurde de adressen brûkt yn' e VPN standert opnomd, bygelyks OpenVPN brûkt it subnet 10.8.0.0/24). It bestean fan in adres kin beoardiele wurde op basis fan de ûntfangst fan in antwurd mei de RST-flagge.
Op in fergelykbere manier wurde de oanwêzigens fan in ferbining mei in bepaalde side en it poartenûmer oan 'e kliïntkant bepaald - troch de poartenûmers te sortearjen wurdt in SYN-pakket nei de brûker stjoerd, as it boarneadres, wêryn't de side IP wurdt ferfongen, en it bestimmingsadres is in firtuele IP VPN. De serverpoarte kin foarsein wurde (80 foar HTTP), en it poartenûmer oan 'e kliïntkant kin wurde berekkene troch brute krêft, analysearje foar ferskate nûmers de feroaring yn' e yntensiteit fan ACK-antwurden yn kombinaasje mei it ûntbrekken fan in pakket mei de RST flagge.
Op dit poadium ken de oanfaller alle fjouwer eleminten fan 'e ferbining (boarne IP-adressen/poarte en bestimmings-IP-adres/poarte), mar om in fiktyf pakket te generearjen dat it slachtoffersysteem sil akseptearje, moat de oanfaller de TCP-sekwinsje bepale en acknowledgement numbers (seq en ack) - ferbinings. Om dizze parameters te bepalen, stjoert de oanfaller kontinu falske RST-pakketten, besykje ferskate folchoardernûmers, oant hy in ACK-antwurdpakket ûntdekt, wêrfan de komst oanjout dat it nûmer binnen it TCP-finster falt.
Dêrnei ferdúdlikt de oanfaller de krektens fan 'e definysje troch pakketten mei itselde nûmer te ferstjoeren en de komst fan ACK-antwurden te observearjen, wêrnei't hy it krekte nûmer fan' e aktuele folchoarder selektearret. De taak is komplisearre troch it feit dat antwurden yn in fersifere tunnel stjoerd wurde en har oanwêzigens yn 'e ûnderskepte ferkearsstream kin allinich analysearre wurde mei yndirekte metoaden. Oft in kliïnt in ACK-pakket stjoert oan 'e VPN-tsjinner wurdt bepaald op basis fan' e grutte en latency fan 'e fersifere antwurden, dy't korrelearje mei it ferstjoeren fan spoofed pakketten. Bygelyks, foar OpenVPN, in fersifere pakketgrutte fan 79 lit jo sekuer beoardielje dat d'r in ACK binnen is.
Oant oanfal beskerming wurdt tafoege oan it bestjoeringssysteem kernel as in tydlike metoade foar blokkearjen fan it probleem
iptables -t raw -I PREROUTING! -i wg0 -d 10.182.12.8 -m addrtype ! --src-type LOKALE -j DROP
of foar nftables
nft tafoegje tabel ip raw
nft add chain ip raw prerouting '{ type filter hook prerouting prioriteit 0; }'
nft add rule ip raw prerouting 'iifname != "wg0" ip daddr 10.182.12.8 fib saddr type != local drop'
Om josels te beskermjen by it brûken fan tunnels mei IPv4-adressen, set rp_filter gewoan yn op "Strikt" modus ("sysctl net.ipv4.conf.all.rp_filter = 1"). Oan 'e VPN-kant kin de metoade foar it opspoaren fan folchoardernûmer blokkearre wurde troch ekstra padding ta te foegjen oan' e fersifere pakketten, wêrtroch alle pakketten deselde grutte meitsje.
Boarne: opennet.ru