EscapeTwo HackTheBox (Writeup)

Dans ce test de pénétration sur un environnement Windows, nous disposons des identifiants pour le compte suivant :

  • username: rose

  • password: KxEPkKe6R8su

Reconnaissance

Création de l'espace de travail :

Nous établirons notre espace de travail en créant trois dossiers pour stocker les contenus importants, les exploits et les résultats de la reconnaissance à l'aide de Nmap.

Vérification de la Connectivité VPN

Vérification de la connexion VPN pour assurer une communication stable avec la machine cible.

Recherche des ports ouverts avec Nmap :

Exploration des ports ouverts et exportation dans le fichier "allPorts" dans le répertoire Nmap:

Analyse des ports ouverts avec extractPorts:

Utilisation de la fonction extractPorts pour afficher de manière synthétique les ports ouverts et les copier dans le clipboard (53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49685,49686,49689,49694,49716,49737,49804)

Scan de la version des ports avec Nmap:

Utilisation de Nmap pour scanner la version des ports et extraction des informations dans le fichier "targeted" :

Pour résoudre les noms de domaine en adresses IP via DNS, on insère dans le fichier /etc/hosts le nom de domaine associé à son adresse IP:

Port 445 - SMB

Validation de l'utilisateur avec CrackMapExec

Nous confirmons que l'utilisateur rose existe sur le contrôleur de domaine (DC) :

Exploration des partages SMB

Nous listons les partages accessibles avec la commande --shares :

Résultat : Deux dossiers intéressants sont visibles :

  • Users

  • Accounting Department

Connexion au partage SMB avec smbclient

Nous accédons au dossier Accounting Department :

Dans ce répertoire, nous récupérons deux fichiers Excel :

Identification du format des fichiers

Avec la commande file, nous déterminons que ces fichiers sont en réalité des archives ZIP.

Extraction des fichiers ZIP

Nous décompressons les fichiers récupérés :

Recherche des informations sensibles

Nous filtrons les fichiers extraits pour trouver des informations contenant le mot-clé password :

Résultat : Un fichier nommé shareStrings.xml contient une liste d'utilisateurs et de mots de passe.

Drawing
First Name
Last Name
Email
Username
Password

Angela

Martin

angela

0fwz7Q4mSpurIt99

Oscar

Martinez

oscar

86LxLBMgEWaKUnBG

Kevin

Malone

kevin

Md9Wlq1E5bZnVDVo

sa

MSSQLP@ssw0rd!

Test des identifiants avec CrackMapExec

Nous utilisons les identifiants récupérés pour valider les comptes :

Résultat : Seul l'utilisateur oscar est valide.

Exploitation MSSQL (Microsoft SQL)

Port 1433 (MSSQL)

Le port 1433 est ouvert, ce qui indique qu'un serveur Microsoft SQL est en écoute. Nous allons tester les connexions avec les différents utilisateurs récupérés précédemment.

Test de connexion MSSQL

Nous utilisons mssqlclient.py pour tenter de nous connecter :

Résultat : Seul l'utilisateur sa fonctionne.

Reverse Shell via MSSQL

Activation de l'exécution des commandes

Pour exécuter des commandes système, nous activons xp_cmdshell :

Nous testons ensuite avec une commande simple, comme ipconfig :

Préparation de l'écoute sur notre machine

Nous lançons un écouteur sur le port 4444 :

Téléchargement d'un script PowerShell

Nous préparons un script PowerShell nommé PS.ps1 qui inclut une commande de reverse shell. À la fin du script, nous ajoutons la ligne suivante :

À la fin du script, nous ajoutons la ligne suivante :

Nous hébergeons ce script sur un serveur web local :

Exécution du reverse shell

Depuis le serveur MSSQL, nous exécutons la commande suivante pour télécharger et exécuter le script PowerShell :

Pivoting User Ryan

Découverte de nouveaux identifiants

En explorant le système, nous découvrons un répertoire nommé SQL2019 à la racine. À l'intérieur, nous trouvons les identifiants suivants :

  • Username : ryan

  • Password: WqSZAF6CysDQbGb3

Validation des identifiants avec CrackMapExec

Nous vérifions si ces identifiants sont valides :

En explorant les répertoires partagés, nous identifions un utilisateur nommé ryan. Nous testons les mêmes identifiants que pour sql_svc :

Résultat : Les identifiants fonctionnent également pour l'utilisateur ryan.

Evil-winrm

Flag user.txt :)

Élévation de Privilèges

BloodHund-python Enumeration

Commande utilisée :

WriteOwner:

Observation : L'utilisateur Ryan possède l'autorisation WriteOwner sur le compte CA_SVC, qui est également l'émetteur du certificat. Cela signifie que nous pouvons modifier le propriétaire du compte CA_SVC pour y associer Ryan.

Prise de contrôle de CA_SVC avec BloodyAD

Changement du propriétaire du compte

La commande utilise BloodyAD pour modifier le propriétaire de CA_SVC et le définir sur Ryan. En tant que propriétaire, Ryan peut maintenant modifier les autorisations associées au compte.

Modification des permissions avec Dacledit

Accorder des permissions complètes à Ryan

Cette commande modifie la DACL (Discretionary Access Control List) du compte CA_SVC pour accorder un contrôle total à Ryan. Cela permet à Ryan de réinitialiser le mot de passe ou de manipuler les clés d'authentification.

Extraction des informations d'identification fantômes (Shadow Credentials)

Générer et récupérer l'empreinte NT hash

NT hash pour CA_SVC : 3b181b914e7a9d5508ea1e20bc2b7fce

La commande Certipy génère une clé d'identification pour CA_SVC, activant l'authentification basée sur un certificat. Un fichier .ccache est également généré, ce qui facilite des attaques basées sur Kerberos.

Modification du modèle de certificat

Ajuster le modèle DunderMifflinAuthentication

Cette commande modifie le modèle de certificat DunderMifflinAuthentication pour qu’il permette l’émission de certificats avec des privilèges élevés.

Émission d’un certificat pour l’administrateur

Demande d’un certificat pour impersonation

Cette commande demande un certificat au nom de l’Administrateur ([email protected]), permettant d’usurper l’identité de ce compte.

Authentification en tant qu’Administrateur

Utilisation du certificat pour s’authentifier

NTLMv2 Hash : 7a8d4e04986afa8ed4060f75e5a0b3ff

Cette commande s’authentifie en tant qu’Administrateur grâce au certificat obtenu précédemment et récupère le hash NTLM.

Flag root.txt :)

Mis à jour

Ce contenu vous a-t-il été utile ?