Metode ini mengizinkan substitusi paket pada tingkat koneksi TCP yang lewat di dalam terowongan terenkripsi, tetapi tidak mengizinkan penggabungan ke dalam koneksi yang menggunakan lapisan enkripsi tambahan (misalnya, TLS, HTTPS, SSH). Algoritme enkripsi yang digunakan dalam VPN tidak menjadi masalah, karena paket palsu berasal dari antarmuka eksternal dan diproses oleh kernel sebagai paket dari antarmuka VPN. Sasaran serangan yang paling mungkin adalah mengganggu koneksi HTTP yang tidak terenkripsi, namun
Spoofing paket yang berhasil telah dibuktikan untuk terowongan yang dibuat menggunakan OpenVPN, WireGuard dan IKEv2/IPSec. Tor tidak rentan terhadap masalah ini, karena ia menggunakan SOCKS untuk meneruskan lalu lintas dan terikat pada antarmuka loopback. Untuk IPv4, serangan mungkin terjadi jika rp_filter diatur ke mode βLooseβ (sysctl net.ipv4.conf.all.rp_filter = 2). Awalnya, sebagian besar sistem menggunakan mode βKetatβ, tetapi dimulai dari
mekanisme rp_filter
Rute respons mungkin melewati antarmuka jaringan selain antarmuka yang dilalui paket masuk.
Dalam mode Longgar, paket masuk diperiksa berdasarkan tabel routing, namun dianggap valid jika alamat sumber dapat dijangkau melalui antarmuka jaringan apa pun yang tersedia. Serangan yang diusulkan didasarkan pada kenyataan bahwa penyerang dapat mengirim paket dengan alamat sumber palsu yang sesuai dengan antarmuka VPN, dan terlepas dari kenyataan bahwa paket ini akan memasuki sistem melalui antarmuka jaringan eksternal dan bukan melalui VPN, di rp_filter Mode βLooseβ paket seperti itu tidak akan dibuang.
Untuk melakukan serangan, penyerang harus mengontrol gateway yang digunakan pengguna untuk mengakses jaringan (misalnya, melalui organisasi MITM, saat korban terhubung ke titik akses nirkabel yang dikendalikan penyerang, atau melalui
Dengan menghasilkan aliran paket fiktif yang menggantikan alamat IP antarmuka VPN, upaya dilakukan untuk mempengaruhi koneksi yang dibuat oleh klien, namun pengaruh paket ini hanya dapat diamati melalui analisis pasif dari arus lalu lintas terenkripsi yang terkait. dengan pengoperasian terowongan. Untuk melakukan serangan, Anda perlu mengetahui alamat IP antarmuka jaringan terowongan yang ditetapkan oleh server VPN, dan juga menentukan bahwa koneksi ke host tertentu sedang aktif melalui terowongan.
Untuk menentukan IP antarmuka jaringan virtual VPN, paket SYN-ACK dikirim ke sistem korban, secara berurutan menghitung seluruh rentang alamat virtual (pertama-tama, alamat yang digunakan dalam VPN dihitung secara default, misalnya OpenVPN menggunakan subnet 10.8.0.0/24). Keberadaan suatu alamat dapat dinilai berdasarkan diterimanya respon dengan flag RST.
Dengan cara yang sama, keberadaan koneksi ke situs tertentu dan nomor port di sisi klien ditentukan - dengan mengurutkan nomor port, paket SYN dikirim ke pengguna, sebagai alamat sumber, di mana situs tersebut IP diganti, dan alamat tujuan adalah IP virtual VPN. Port server dapat diprediksi (80 untuk HTTP), dan nomor port di sisi klien dapat dihitung dengan brute force, menganalisis perubahan intensitas respons ACK untuk nomor yang berbeda dalam kombinasi dengan tidak adanya paket dengan RST bendera.
Pada tahap ini, penyerang mengetahui keempat elemen koneksi (alamat/port IP sumber dan alamat/port IP tujuan), tetapi untuk menghasilkan paket fiktif yang akan diterima sistem korban, penyerang harus menentukan urutan TCP dan nomor pengakuan (seq dan ack) - koneksi. Untuk menentukan parameter ini, penyerang terus menerus mengirimkan paket RST palsu, mencoba nomor urut yang berbeda, hingga ia mendeteksi paket respons ACK, yang kedatangannya menunjukkan bahwa nomor tersebut termasuk dalam jendela TCP.
Selanjutnya, penyerang mengklarifikasi kebenaran definisi dengan mengirimkan paket dengan nomor yang sama dan mengamati kedatangan respons ACK, setelah itu ia memilih nomor pasti dari urutan saat ini. Tugas ini diperumit oleh kenyataan bahwa respons dikirim dalam terowongan terenkripsi dan keberadaannya dalam arus lalu lintas yang disadap hanya dapat dianalisis menggunakan metode tidak langsung. Apakah klien mengirimkan paket ACK yang dialamatkan ke server VPN ditentukan berdasarkan ukuran dan latensi respons terenkripsi, yang berkorelasi dengan pengiriman paket palsu. Misalnya, untuk OpenVPN, ukuran paket terenkripsi sebesar 79 memungkinkan Anda menilai secara akurat apakah ada ACK di dalamnya.
Hingga perlindungan serangan ditambahkan ke kernel sistem operasi sebagai metode sementara untuk memblokir masalah
iptables -t mentah -I PREROUTING! -i wg0 -d 10.182.12.8 -m tipe tambahan ! --src-tipe LOKAL -j DROP
atau untuk nftable
nft tambahkan ip tabel mentah
nft tambahkan rantai ip prerouting mentah '{ ketik filter hook prerouting prioritas 0; }'
nft tambahkan aturan ip mentah prerouting 'iifname != "wg0" ip daddr 10.182.12.8 fib saddr type != local drop'
Untuk melindungi diri Anda saat menggunakan terowongan dengan alamat IPv4, cukup setel rp_filter ke mode βStrictβ (βsysctl net.ipv4.conf.all.rp_filter = 1β). Di sisi VPN, metode deteksi nomor urut dapat diblokir dengan menambahkan padding tambahan ke paket terenkripsi, sehingga membuat semua paket berukuran sama.
Sumber: opennet.ru