Pagkahuyang nga nagtugot sa mga koneksyon sa TCP nga gihimo pinaagi sa mga tunnel sa VPN nga ma-hijack

Gipatik usa ka teknik sa pag-atake (CVE-2019-14899) nga nagtugot sa mga pakete nga ma-spoof, usbon, o ilisan sa mga koneksyon sa TCP nga gipasa pinaagi sa VPN tunnels. Ang problema makaapekto sa Linux, FreeBSD, OpenBSD, Android, macOS, iOS ug uban pang mga sistema nga sama sa Unix. Gisuportahan sa Linux ang rp_filter (reverse path filtering) nga mekanismo para sa IPv4, ang pag-on niini sa "Strict" mode nag-neutralize niini nga problema.

Ang pamaagi nagtugot sa packet substitution sa lebel sa TCP connections nga moagi sulod sa usa ka encrypted tunnel, apan wala magtugot sa wedging ngadto sa mga koneksyon nga naggamit ug dugang encryption layers (pananglitan, TLS, HTTPS, SSH). Ang mga algorithm sa pag-encrypt nga gigamit sa VPN dili igsapayan, tungod kay ang mga spoofed packet gikan sa external interface ug giproseso sa kernel isip mga packet gikan sa VPN interface. Ang labing lagmit nga target sa pag-atake mao ang pagpanghilabot sa wala ma-encrypt nga mga koneksyon sa HTTP, apan wala iapil ug paggamit ug pag-atake aron pagmaniobra sa mga tubag sa DNS.

Ang malampuson nga packet spoofing gipakita alang sa mga tunnel nga gihimo gamit ang OpenVPN, WireGuard ug IKEv2/IPSec. Ang Tor dili daling madala sa problema, tungod kay naggamit kini og SOCKS sa pagpasa sa trapiko ug gigapos sa usa ka loopback interface. Para sa IPv4, posible ang pag-atake kon ang rp_filter itakda sa “Loose” mode (sysctl net.ipv4.conf.all.rp_filter = 2). Sa sinugdan, kadaghanan sa mga sistema migamit sa "Strict" mode, apan sugod sa sistema sa 240, nga gipagawas sa miaging Disyembre, ang default operating mode giusab ngadto sa "Loose" ug kini nga pagbag-o gipakita sa default setting sa daghang mga distribusyon sa Linux.

rp_filter nga mekanismo gipadapat alang sa dugang nga pag-verify sa mga agianan sa pakete aron malikayan ang pag-spoof sa gigikanan nga adres. Kung gibutang sa 0, wala’y gihimo nga pagsusi sa gigikanan nga adres ug bisan unsang pakete mahimong ipasa taliwala sa mga interface sa network nga wala’y mga pagdili. Ang Mode 1 nga "Strict" naglakip sa pagsusi sa matag pakete nga gikan sa gawas alang sa pagsunod sa routing table, ug kung ang network interface diin ang packet nadawat wala nalangkit sa labing maayo nga response delivery route, nan ang packet ilabay. Ang Mode 2 "Loose" nagpahayahay sa tseke aron tugutan ang mga balanse sa pagkarga o asymmetric nga ruta nga molihok kung
Ang ruta sa pagtubag mahimong moagi sa usa ka interface sa network gawas sa usa nga giagian sa umaabot nga pakete.

Sa Loose mode, ang usa ka umaabot nga pakete gisusi batok sa routing table, apan giisip nga balido kung ang gigikanan nga adres maabot pinaagi sa bisan unsang magamit nga interface sa network. Ang gisugyot nga pag-atake gibase sa kamatuoran nga ang tig-atake makapadala sa usa ka pakete nga adunay usa ka spoofed source address nga katumbas sa VPN interface, ug bisan pa sa kamatuoran nga kini nga pakete mosulod sa sistema pinaagi sa external network interface ug dili pinaagi sa VPN, sa rp_filter "Loose" mode ang ingon nga pakete dili ilabay.

Aron mahimo ang usa ka pag-atake, kinahanglan nga kontrolon sa tig-atake ang ganghaan diin ang user maka-access sa network (pananglitan, pinaagi sa MITM nga organisasyon, kung ang biktima magkonektar sa usa ka wireless access point nga kontrolado sa tig-atake, o pinaagi sa pag-hack sa router). Pinaagi sa pagpugong sa ganghaan diin ang usa ka user konektado sa network, ang usa ka tig-atake mahimong magpadala sa mga peke nga pakete nga makita sa konteksto sa interface sa network sa VPN, apan ang mga tubag madala sa tunnel.

Pinaagi sa pagmugna og usa ka sapa sa tinumotumo nga mga pakete diin ang IP address sa VPN interface gipuli, ang mga pagsulay gihimo sa pag-impluwensya sa koneksyon nga gitukod sa kliyente, apan ang impluwensya niini nga mga pakete maobserbahan lamang pinaagi sa passive analysis sa naka-encrypt nga dagan sa trapiko nga nalangkit. uban sa operasyon sa tunnel. Aron mahimo ang usa ka pag-atake, kinahanglan nimo nga mahibal-an ang IP address sa interface sa tunnel network nga gi-assign sa VPN server, ug mahibal-an usab nga ang usa ka koneksyon sa usa ka piho nga host karon aktibo pinaagi sa tunnel.

Aron mahibal-an ang IP sa VPN virtual network interface, ang SYN-ACK nga mga pakete gipadala ngadto sa sistema sa biktima, nga sunodsunod nga nag-ihap sa tibuok nga han-ay sa mga virtual nga adres (una sa tanan, ang mga adres nga gigamit sa VPN giihap pinaagi sa default, pananglitan, OpenVPN naggamit sa 10.8.0.0/24 subnet). Ang paglungtad sa usa ka adres mahimong hukman base sa resibo sa tubag nga adunay bandila sa RST.

Sa parehas nga paagi, ang presensya sa usa ka koneksyon sa usa ka piho nga site ug ang numero sa pantalan sa kilid sa kliyente gitino - pinaagi sa pagsunud sa mga numero sa pantalan, usa ka pakete sa SYN gipadala sa tiggamit, ingon ang gigikanan nga adres, diin ang site Ang IP gipuli, ug ang destinasyon nga adres usa ka virtual IP VPN. Ang pantalan sa server mahimong matagna (80 alang sa HTTP), ug ang numero sa pantalan sa kilid sa kliyente mahimong makalkula pinaagi sa kusog nga kusog, pag-analisar alang sa lainlaing mga numero ang pagbag-o sa intensity sa mga tubag sa ACK inubanan sa pagkawala sa usa ka pakete nga adunay RST bandera.

Niini nga yugto, nahibal-an sa tig-atake ang tanan nga upat ka elemento sa koneksyon (tinubdan nga mga adres sa IP / pantalan ug destinasyon nga IP address / pantalan), apan aron makamugna og usa ka tinumotumo nga pakete nga dawaton sa sistema sa biktima, ang tig-atake kinahanglan magtino sa pagkasunod-sunod sa TCP ug mga numero sa pag-ila (seq ug ack) - mga koneksyon. Aron mahibal-an kini nga mga parameter, ang tig-atake padayon nga nagpadala ug peke nga mga pakete sa RST, nga nagsulay sa lainlaing mga numero sa pagkasunod-sunod, hangtod nga nakit-an niya ang usa ka pakete nga tubag sa ACK, ang pag-abut niini nagpakita nga ang numero nahulog sa sulud sa bintana sa TCP.

Sunod, gipatin-aw sa tig-atake ang pagkahusto sa kahulugan pinaagi sa pagpadala sa mga pakete nga adunay parehas nga numero ug pag-obserbar sa pag-abot sa mga tubag sa ACK, pagkahuman gipili niya ang eksaktong gidaghanon sa karon nga han-ay. Ang tahas komplikado sa kamatuoran nga ang mga tubag gipadala sa sulod sa usa ka naka-encrypt nga tunel ug ang ilang presensya sa na-intercept nga sapa sa trapiko mahimo ra ma-analisar gamit ang dili direkta nga mga pamaagi. Kung ang usa ka kliyente nagpadala usa ka ACK packet nga gitumong sa VPN server gitino base sa gidak-on ug latency sa mga naka-encrypt nga mga tubag, nga adunay kalabotan sa pagpadala sa mga spoofed packet. Pananglitan, alang sa OpenVPN, ang usa ka naka-encrypt nga gidak-on sa pakete nga 79 nagtugot kanimo sa tukma nga paghukom nga adunay usa ka ACK sa sulod.

Hangtud nga ang proteksyon sa pag-atake idugang sa kernel sa operating system ingon usa ka temporaryo nga pamaagi sa pagbabag sa problema girekomenda gamit ang usa ka packet filter sa "preroute" nga kadena, babagan ang agianan sa mga pakete diin ang virtual IP address sa tunnel gipiho isip ang destinasyon nga adres.

iptables -t hilaw -I PREROUTING ! -i wg0 -d 10.182.12.8 -m addrtype ! --src-type LOCAL -j DROP

o alang sa 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 != local drop'

Aron mapanalipdan ang imong kaugalingon sa paggamit sa mga tunnel nga adunay IPv4 nga mga adres, ibutang lang ang rp_filter sa “Strict” mode (“sysctl net.ipv4.conf.all.rp_filter = 1”). Sa bahin sa VPN, ang sequence number detection method mahimong ma-block pinaagi sa pagdugang og dugang nga padding sa mga naka-encrypt nga pakete, nga maghimo sa tanan nga mga pakete nga parehas ang gidak-on.

Source: opennet.ru

Idugang sa usa ka comment