Yöntem, şifrelenmiş bir tünelden geçen TCP bağlantıları düzeyinde paket değişimine izin verir, ancak ek şifreleme katmanları (örneğin, TLS, HTTPS, SSH) kullanan bağlantılara sıkıştırmaya izin vermez. Sahte paketler harici arayüzden geldiğinden ve çekirdek tarafından VPN arayüzünden gelen paketler olarak işlendiğinden, VPN'de kullanılan şifreleme algoritmalarının önemi yoktur. Saldırının en olası hedefi şifrelenmemiş HTTP bağlantılarına müdahale etmektir, ancak
OpenVPN, WireGuard ve IKEv2/IPSec kullanılarak oluşturulan tüneller için başarılı paket sahtekarlığı gösterilmiştir. Tor, trafiği iletmek için SOCKS kullandığından ve bir geridöngü arayüzüne bağlı olduğundan sorundan etkilenmez. IPv4 için, rp_filter "Gevşek" moduna ayarlanmışsa bir saldırı mümkündür (sysctl net.ipv4.conf.all.rp_filter = 2). Başlangıçta çoğu sistem "Katı" modunu kullanıyordu ancak
rp_filter mekanizması
Yanıt yolu, gelen paketin ulaştığı ağ arabiriminden farklı bir ağ arabiriminden geçebilir.
Gevşek modda, gelen paket yönlendirme tablosuna göre kontrol edilir, ancak kaynak adresine herhangi bir kullanılabilir ağ arayüzü üzerinden ulaşılabiliyorsa geçerli olduğu kabul edilir. Önerilen saldırı, saldırganın VPN arayüzüne karşılık gelen sahte kaynak adresine sahip bir paket gönderebilmesi ve bu paketin sisteme VPN üzerinden değil, harici ağ arayüzü üzerinden gireceği gerçeğine dayanmaktadır. rp_filter “Gevşek” modda böyle bir paket atılmayacaktır.
Bir saldırı gerçekleştirmek için saldırganın, kullanıcının ağa eriştiği ağ geçidini kontrol etmesi gerekir (örneğin, kurban, saldırgan tarafından kontrol edilen bir kablosuz erişim noktasına bağlandığında bir MITM organizasyonu aracılığıyla veya
VPN arayüzünün IP adresinin değiştirildiği bir dizi hayali paket akışı üretilerek, müşteri tarafından kurulan bağlantıyı etkilemeye çalışılır, ancak bu paketlerin etkisi yalnızca ilgili şifrelenmiş trafik akışının pasif analizi yoluyla gözlemlenebilir. Tünelin işletilmesiyle birlikte. Bir saldırı gerçekleştirmek için, VPN sunucusu tarafından atanan tünel ağ arayüzünün IP adresini bulmanız ve ayrıca tünel üzerinden belirli bir ana bilgisayarla bağlantının şu anda etkin olduğunu belirlemeniz gerekir.
VPN sanal ağ arayüzünün IP'sini belirlemek için, kurban sistemine tüm sanal adres aralığını sırayla numaralandıran SYN-ACK paketleri gönderilir (her şeyden önce, VPN'de kullanılan adresler varsayılan olarak numaralandırılır, örneğin OpenVPN). 10.8.0.0/24 alt ağını kullanır). Bir adresin varlığı, RST bayrağıyla alınan yanıta göre değerlendirilebilir.
Benzer şekilde, belirli bir siteye bağlantının varlığı ve istemci tarafındaki port numarası belirlenir - port numaraları sıralanarak kullanıcıya kaynak adresi olarak IP'nin bulunduğu bir SYN paketi gönderilir. sitenin adresi değiştirilir ve hedef adres sanal bir IP VPN'dir. Sunucu bağlantı noktası tahmin edilebilir (HTTP için 80) ve istemci tarafındaki bağlantı noktası numarası, RST'li bir paketin yokluğuyla birlikte ACK yanıtlarının yoğunluğundaki değişikliği farklı sayılar için analiz ederek kaba kuvvetle hesaplanabilir. bayrak.
Bu aşamada saldırgan, bağlantının dört öğesini de bilir (kaynak IP adresleri/port ve hedef IP adresi/port), ancak kurban sistemin kabul edeceği hayali bir paket oluşturmak için saldırganın TCP sırasını belirlemesi ve onay numaraları (sıra ve onay) - bağlantılar. Bu parametreleri belirlemek için saldırgan, gelişi sayının TCP penceresi içinde olduğunu gösteren bir ACK yanıt paketi algılayana kadar farklı sıra numaralarını deneyerek sürekli olarak sahte RST paketleri gönderir.
Daha sonra saldırgan, aynı numaraya sahip paketleri göndererek ve ACK yanıtlarının gelişini gözlemleyerek tanımın doğruluğunu netleştirir ve ardından mevcut dizinin tam sayısını seçer. Yanıtların şifreli bir tünel içerisinde gönderilmesi ve bunların ele geçirilen trafik akışındaki varlığının yalnızca dolaylı yöntemler kullanılarak analiz edilebilmesi nedeniyle görev karmaşıklaşmaktadır. Bir istemcinin VPN sunucusuna adreslenen bir ACK paketi gönderip göndermeyeceği, sahte paketlerin gönderilmesiyle ilişkili olan şifrelenmiş yanıtların boyutuna ve gecikmesine göre belirlenir. Örneğin, OpenVPN için şifrelenmiş paket boyutu 79, içeride bir ACK olup olmadığını doğru bir şekilde değerlendirmenize olanak tanır.
Sorunu engellemenin geçici bir yöntemi olarak işletim sistemi çekirdeğine saldırı koruması eklenene kadar
iptables -t raw -I ÖN YÖNLENDİRME ! -i wg0 -d 10.182.12.8 -m adres türü ! --src-type YEREL -j BIRAKMA
veya nftable'lar için
nft tablo ip hamını ekle
nft zincir ekle ip raw ön yönlendirme '{ type filtre kancası ön yönlendirme önceliği 0; }'
nft kural ekle ip ham ön yönlendirme 'iifname != "wg0" ip daddr 10.182.12.8 fib saddr türü != yerel bırakma'
IPv4 adresli tünelleri kullanırken kendinizi korumak için, rp_filter'ı "Katı" moduna ("sysctl net.ipv4.conf.all.rp_filter = 1") ayarlamanız yeterlidir. VPN tarafında, sıra numarası tespit yöntemi, şifrelenmiş paketlere ekstra dolgu eklenerek tüm paketlerin aynı boyutta olması sağlanarak engellenebilir.
Kaynak: opennet.ru