Метад дазваляе ажыццявіць падстаноўку пакетаў на ўзроўні TCP-злучэнняў, якія праходзяць усярэдзіне шыфраванага тунэля, але не дазваляе ўкліньвацца ў злучэнні, якія ўжываюць дадатковыя пласты шыфравання (напрыклад, TLS, HTTPS, SSH). Ужывальныя ў VPN алгарытмы шыфравання не маюць значэнні, бо падробленыя пакеты паступаюць з вонкавага інтэрфейсу, а апрацоўваюцца ядром як пакеты з VPN-інтэрфейсу. Найбольш верагоднай мэтай атакі з'яўляецца ўмяшанне ў незашыфраваныя злучэнні HTTP, але
Паспяховая падмена пакетаў прадэманстравана для тунэляў, якiя ствараюцца пры дапамозе OpenVPN, WireGuard і IKEv2/IPSec.Tor праблеме не схільны, так як выкарыстоўвае SOCKS для пракіду трафіку і прывязку да loopback-інтэрфейсу. Для IPv4 атака магчыма ў выпадку пераводу rp_filter у рэжым «Loose» (sysctl net.ipv4.conf.all.rp_filter = 2). Першапачаткова ў большасці сістэм ужываўся рэжым "Strict", але пачынальна з
Механізм rp_filter
маршрут адказу можа праходзіць не праз той сеткавы інтэрфейс, праз які паступіў уваходны пакет.
У рэжыме «Loose» уваходны пакет правяраецца на адпаведнасць табліцы маршрутызацыі, але лічыцца дапушчальным, калі адрас крыніцы дасягальны праз любы наяўны сеткавы інтэрфейс. Прапанаваны напад будуецца на тым, што атакавалы можа адправіць пакет з падмененым адрасам крыніцы, які адпавядае інтэрфейсу VPN, і нягледзячы на тое, што дадзены пакет паступіць у сістэму праз вонкавы сеткавы інтэрфейс, а не праз VPN, у рэжыме rp_filter «Loose» такі пакет не будзе адкінуты.
Для здзяйснення нападу зламыснік павінен кантраляваць шлюз, праз які карыстач выходзіць у сетку (напрыклад, праз арганізацыю MITM, пры падлучэнні ахвяры да кантраляванай атакавалым кропкі бесправаднога доступу або праз
Шляхам генерацыі струменя фіктыўных пакетаў, у якіх падстаўляецца IP-адрас інтэрфейсу VPN, ажыццяўляюцца спробы паўплываць на ўсталяванае кліентам злучэнне, але назіраць за ўплывам гэтых пакетаў можна толькі праз пасіўны аналіз за шыфраваным струменем трафіку, злучаным з працай тунэля. Для правядзення нападу неабходна пазнаць прызначаны VPN-серверам IP-адрас сеткавага інтэрфейсу тунэля, а таксама вызначыць, што ў дадзены момант праз тунэль актыўна злучэнне да вызначанага хаста.
Для вызначэння IP віртуальнага сеткавага інтэрфейсу VPN выкарыстоўваецца адпраўка на сістэму ахвяры SYN-ACK пакетаў, паслядоўна перабіраючы ўвесь дыяпазон віртуальных адрасоў (у першую чаргу перабіраюцца адрасы, выкарыстоўваныя ў VPN па змаўчанні, напрыклад у OpenVPN выкарыстоўваецца падсетка 10.8.0.0/24). Аб існаванні адраса можна меркаваць на аснове паступлення адказу са сцягам RST.
Аналагічнай выявай вызначаецца наяўнасць злучэння з вызначаным сайтам і нумар порта на боку кліента - перабіраючы нумары портаў у бок карыстача адпраўляецца SYN-пакет, у якасці адрасу крыніцы, у якім падстаўлены IP сайта, а адрасы прызначэння віртуальны IP VPN. Серверны порт можна прадбачыць (80 для HTTP), а нумар порта на боку кліента можна вылічыць пераборам, аналізуючы для розных нумароў змена інтэнсіўнасці ACK-адказаў у спалучэнні з адсутнасцю пакета са сцягам RST.
На дадзеным этапе атакавалы ведае ўсе чатыры элементы злучэння (адрасы/порт IP крыніцы і адрас/порт IP прызначэння), але для таго, каб згенераваць фіктыўны пакет, які ўспрыме сістэма ахвяры, атакавалы павінен вызначыць нумары паслядоўнасці і пацверджанні (seq і ack) TCP -злучэнні. Для вызначэння дадзеных параметраў атакавалы бесперапынна адпраўляе падробленыя RST-пакеты, перабіраючы розныя нумары паслядоўнасці, датуль, пакуль не зафіксуе зваротны ACK-пакет, паступленне якога паказвае, што нумар пападае ў акно TCP.
Далей атакавалы ўдакладняе правільнасць вызначэння адпраўкай пакетаў з тым жа нумарам і назіраючы за паступленнем ACK-адказаў, пасля чаго падбірае дакладны нумар бягучай паслядоўнасці. Задача ўскладнена тым, што адказы адпраўляюцца ўнутры шыфраванага тунэля і аналізаваць іх наяўнасць у перахапляемай патоку трафіку можна толькі ўскоснымі метадамі. Факт адпраўкі адрасаванага VPN-серверу ACK-пакета кліентам вызначаецца на аснове памеру і затрымкі шыфраваных адказаў, якія карэлююць з адпраўкай падробленых пакетаў. Напрыклад, для OpenVPN шыфраваны пакет з памерам 79 дазваляе сапраўды судзіць, што ўсярэдзіне ўтрымоўваецца ACK-пацверджанне.
Да таго, як абарона ад нападу будзе дададзеная ў ядро аперацыйнай сістэмы, у якасці часавага метаду блакавання праблемы.
iptables -t raw -I PREROUTING! -i wg0 -d 10.182.12.8 -m addrtype! -src-type LOCAL -j DROP
ці для nftables
nft add table ip raw
nft add chain ip raw prerouting '{ type filter hook prerouting priority 0; }'
nft add ip ruw prerouting 'iifname != "wg0" ip daddr 10.182.12.8 fib saddr type != local drop'
Для абароны пры выкарыстанні тунэляў з адрасамі IPv4 дастаткова перавесці rp_filter у рэжым "Strict" ("sysctl net.ipv4.conf.all.rp_filter = 1"). З боку VPN метад вызначэння нумара паслядоўнасці можа быць блакіраваны шляхам дадання да зашыфраваных пакетаў дадатковага запаўнення, які робіць памер усіх пакетаў аднолькавым.
Крыніца: opennet.ru