Kaedah ini membenarkan penggantian paket pada tahap sambungan TCP yang melalui dalam terowong yang disulitkan, tetapi tidak membenarkan pengikatan ke dalam sambungan yang menggunakan lapisan penyulitan tambahan (contohnya, TLS, HTTPS, SSH). Algoritma penyulitan yang digunakan dalam VPN tidak penting, kerana paket palsu berasal dari antara muka luaran dan diproses oleh kernel sebagai paket daripada antara muka VPN. Sasaran serangan yang paling mungkin adalah untuk mengganggu sambungan HTTP yang tidak disulitkan, tetapi
Penipuan paket yang berjaya telah ditunjukkan untuk terowong yang dibuat menggunakan OpenVPN, WireGuard dan IKEv2/IPSec. Tor tidak terdedah kepada masalah ini, kerana ia menggunakan SOCKS untuk memajukan trafik dan terikat pada antara muka gelung balik. Untuk IPv4, serangan boleh dilakukan jika rp_filter ditetapkan kepada mod "Loose" (sysctl net.ipv4.conf.all.rp_filter = 2). Pada mulanya, kebanyakan sistem menggunakan mod "Ketat", tetapi bermula dari
mekanisme rp_filter
Laluan tindak balas mungkin melalui antara muka rangkaian selain daripada yang melaluinya paket masuk tiba.
Dalam mod Longgar, paket masuk disemak pada jadual penghalaan, tetapi dianggap sah jika alamat sumber boleh dicapai melalui mana-mana antara muka rangkaian yang tersedia. Serangan yang dicadangkan adalah berdasarkan fakta bahawa penyerang boleh menghantar paket dengan alamat sumber palsu yang sepadan dengan antara muka VPN, dan walaupun pada hakikatnya paket ini akan memasuki sistem melalui antara muka rangkaian luaran dan bukan melalui VPN, dalam Mod rp_filter "Loose" paket sedemikian tidak akan dibuang.
Untuk melakukan serangan, penyerang mesti mengawal pintu masuk yang melaluinya pengguna mengakses rangkaian (contohnya, melalui organisasi MITM, apabila mangsa menyambung ke pusat akses wayarles dikawal penyerang, atau melalui
Dengan menjana aliran paket rekaan di mana alamat IP antara muka VPN digantikan, percubaan dibuat untuk mempengaruhi sambungan yang diwujudkan oleh pelanggan, tetapi pengaruh paket ini hanya boleh diperhatikan melalui analisis pasif aliran trafik yang disulitkan yang berkaitan. dengan operasi terowong. Untuk melakukan serangan, anda perlu mengetahui alamat IP antara muka rangkaian terowong yang diberikan oleh pelayan VPN, dan juga menentukan bahawa sambungan kepada hos tertentu sedang aktif melalui terowong.
Untuk menentukan IP antara muka rangkaian maya VPN, paket SYN-ACK dihantar ke sistem mangsa, menyenaraikan keseluruhan julat alamat maya secara berurutan (pertama sekali, alamat yang digunakan dalam VPN dikira secara lalai, contohnya, OpenVPN menggunakan subnet 10.8.0.0/24). Kewujudan alamat boleh dinilai berdasarkan penerimaan respons dengan bendera RST.
Dengan cara yang sama, kehadiran sambungan ke tapak tertentu dan nombor port pada bahagian klien ditentukan - dengan mengisih melalui nombor port, paket SYN dihantar kepada pengguna, sebagai alamat sumber, di mana tapak IP diganti, dan alamat destinasi ialah VPN IP maya. Port pelayan boleh diramalkan (80 untuk HTTP), dan nombor port pada bahagian klien boleh dikira dengan kekerasan, menganalisis untuk nombor yang berbeza perubahan dalam keamatan tindak balas ACK dalam kombinasi dengan ketiadaan paket dengan RST bendera.
Pada peringkat ini, penyerang mengetahui keempat-empat elemen sambungan (alamat IP sumber/port dan alamat IP destinasi/port), tetapi untuk menjana paket rekaan yang akan diterima oleh sistem mangsa, penyerang mesti menentukan urutan TCP dan nombor pengakuan (seq dan ack) - sambungan. Untuk menentukan parameter ini, penyerang secara berterusan menghantar paket RST palsu, mencuba nombor urutan yang berbeza, sehingga dia mengesan paket tindak balas ACK, yang ketibaannya menunjukkan bahawa nombor itu berada dalam tetingkap TCP.
Seterusnya, penyerang menjelaskan ketepatan definisi dengan menghantar paket dengan nombor yang sama dan memerhatikan ketibaan respons ACK, selepas itu dia memilih nombor tepat urutan semasa. Tugas ini rumit oleh fakta bahawa respons dihantar di dalam terowong yang disulitkan dan kehadirannya dalam aliran trafik yang dipintas hanya boleh dianalisis menggunakan kaedah tidak langsung. Sama ada pelanggan menghantar paket ACK yang dialamatkan kepada pelayan VPN ditentukan berdasarkan saiz dan kependaman respons yang disulitkan, yang berkait dengan penghantaran paket palsu. Sebagai contoh, untuk OpenVPN, saiz paket yang disulitkan sebanyak 79 membolehkan anda menilai dengan tepat bahawa terdapat ACK di dalamnya.
Sehingga perlindungan serangan ditambahkan pada kernel sistem pengendalian sebagai kaedah sementara untuk menyekat masalah
iptables -t mentah -I PREROUTING ! -i wg0 -d 10.182.12.8 -m addrtype ! --src-type LOCAL -j DROP
atau untuk nftables
nft tambah table ip mentah
nft tambah rantaian ip mentah 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'
Untuk melindungi diri anda apabila menggunakan terowong dengan alamat IPv4, hanya tetapkan rp_filter kepada mod βKetatβ (βsysctl net.ipv4.conf.all.rp_filter = 1β). Di sisi VPN, kaedah pengesanan nombor jujukan boleh disekat dengan menambahkan padding tambahan pada paket yang disulitkan, menjadikan semua paket mempunyai saiz yang sama.
Sumber: opennet.ru