
Outils développés en interne pour le mouvement latéral/l'exécution de code
Ce dépôt a été réalisé en se basant sur le déjà existant MiscTool, donc un grand merci à rasta-mouse pour les avoir publiés et pour m'avoir donné la motivation nécessaire pour travailler dessus.
Exécution de commande / Mouvement latéral via une fonctionnalité de type PsExec. Doit être exécuté dans le contexte d'un utilisateur privilégié. L'outil est basé sur CsExec de rasta-mouse, mais est conçu pour permettre un contrôle supplémentaire sur la création de services, en particulier :
CheeseExec.exe <targetMachine> <serviceName> <binPath> <action>
Voir aussi TikiService.
CheesePS est un framework d'exécution de commande / Mouvement latéral. Il repose sur System.Management.Automation.PowerShell pour charger et exécuter du code arbitraire via PowerShell.
L'outil est capable nativement de contourner les restrictions courantes en créant et utilisant des espaces d'exécution PowerShell sur des cibles locales ou distantes.
Doit être exécuté dans le contexte d'un utilisateur privilégié (si PowerShell Remoting est utilisé).
L'outil a été initialement créé comme une amélioration de CsPosh de rasta_mouse, mais a suffisamment évolué pour devenir un framework à part entière, et peut désormais être utilisé comme un injecteur PowerShell généraliste.
L'idée derrière cet outil a été résumée dans l'article suivant :
Les principales fonctionnalités implémentées sont :
La capture d'écran suivante est un schéma assez précis décrivant le flux de travail de l'outil :

Usage:
-t, --target=VALUE Machine cible
-c, --code=VALUE Code à exécuter
-e, --encoded Indique que le code fourni est encodé en base64
-a, --am-si-bypass=VALUE Utilise le script PowerShell donné pour contourner A-M-S-I (fs, smb ou http[s])
--aX, --encrypted-am-si Indique que le contournement A.M.S.I. fourni est chiffré
-i, --import=VALUE Importe des modules PowerShell supplémentaires (fs, smb ou http[s])
--iX, --encrypted-imports Indique que les modules PowerShell fournis sont chiffrés
-o, --outstring Ajoute Out-String au code
-r, --redirect Redirige stderr vers stdout
-d, --domain=VALUE Domaine pour des identifiants alternatifs
-u, --username=VALUE Nom d'utilisateur pour des identifiants alternatifs
-p, --password=VALUE Mot de passe pour des identifiants alternatifs
-X, --encrypt=VALUE Chiffre un script avec une clé codée en dur
-D, --decrypt=VALUE Teste le déchiffrement d'un script avec une clé codée en dur
-n, --skip-bypass=VALUE Ignore les techniques de contournement A.M.S.I (A), WLDP (W) ou TOUS (*)
-l, --lockdown-escape Tente d'activer le mode FullLanguage de PowerShell en utilisant REGINI
-w, --wldp-bypass=VALUE Utilise le script PowerShell donné pour contourner WLDP (fs, smb ou http[s])
--wX, --encrypted-wldp Indique que le contournement WLDP fourni est chiffré
-x, --executable=VALUE [Télécharge et] Exécute l'exécutable donné
--xX, --encrypted-executable Indique que l'Exe/DLL fourni est chiffré
--xCS, --executable-csharp Indique que l'exécutable fourni est en C# - (.NET)
-R, --reflective-injection Utilise Invoke-ReflectivePEInjection pour charger l'assembly depuis la mémoire (nécessite que Invoke-ReflectivePEInjection soit importé !)
-P, --powershell-decrypt Force l'utilisation du déchiffrement basé sur PowerShell
-k, --encryption-key=VALUE Utilise la clé fournie pour le chiffrement/déchiffrement
--ssl Force l'utilisation de SSL
-h, -?, --help Aide
Note : Si exécuté sans cible, le script s'exécute sur la machine locale
Voir aussi AmsiBypass.
Exécution de commande / Mouvement latéral via DCOM. Doit être exécuté dans le contexte d'un utilisateur privilégié. Cet outil est basé sur CsDCOM de rasta-mouse, mais a été amélioré pour ajouter des méthodes supplémentaires, en s'adaptant aux nouvelles recherches de Philip Tsukerman. Il existe également une méthode expérimentale pour "réparer" d'éventuelles tentatives de désactivation des objets DCOM affectés via dcomcfg, mais elle nécessite quelques préconditions pour fonctionner correctement.
L'idée derrière cet outil a été résumée dans l'article suivant :
Méthodes actuelles : MMC20.Application, ShellWindows, ShellBrowserWindow, ExcelDDE, VisioAddonEx,
OutlookShellEx, ExcelXLL, VisioExecLine, OfficeMacro.
Usage:
-t, --target=VALUE Machine cible
-b, --binary=VALUE Binaire : powershell.exe
-a, --args=VALUE Arguments : -enc <blah>
-m, --method=VALUE Méthodes : MMC20Application, ShellWindows, ShellBrowserWindow, ExcelDDE, VisioAddonEx, OutlookShellEx, ExcelXLL, VisioExecLine, OfficeMacro
-r, --reg, --registry Active la manipulation du registre
-h, -?, --help Aide
Note : Si exécuté avec -t ., le script s'exécute sur la machine locale
Voir aussi Lateral Movement Using DCOM Objects and C#
Voleur d'identifiants RDP via RDI (injection de DLL réflexive). Doit être exécuté dans le contexte d'un utilisateur privilégié, ou d'un utilisateur disposant de SeImpersonatePrivilege.
Cet outil est construit sur RdpThief de MDSec, mais a été entièrement encapsulé dans un seul C# pour permettre son exécution via .NET Reflection (Assembly.Load et similaire). De cette façon, il est possible de l'exécuter via Covenant, sans la difficulté de télécharger une DLL sur le système cible.
Usage:
CheeseRDP [actions]
Actions:
wait : continue d'écouter tout nouveau processus mstsc.exe indéfiniment (arrêt avec ctrl-C)
clean : supprime le fichier de vidage des identifiants s'il existe
dump : vide le contenu du fichier s'il existe, en analysant les identifiants dans un format compact
Note : Si exécuté sans options, le programme tentera d'injecter dans un processus mstsc.exe actif (le temps d'attente par défaut est de 10 secondes)
Exécution de commande / Mouvement latéral via une confiance MSSQL. Cet outil a été développé pour surmonter certaines limitations des outils existants comme esc, principalement en ce qui concerne l'usurpation d'identité MSSQL. De plus, CheeseSQL a été spécifiquement modifié pour fonctionner à partir de Covenant (via chargement réflexif), et pour automatiser les phases les plus importantes de l'abus de confiance MSSQL. Particulièrement amusante est l'implémentation de l'abus CLR, qui permet à un utilisateur de compiler et télécharger une extension MSSQL à la volée avec Roslyn pour obtenir l'exécution de commandes. Une petite démonstration est montrée ci-dessous, la commande exécutée est un téléchargeur PowerShell encodé Covenant) :

Suivant ma règle de "toujours créditer quand c'est dû", cet outil a été développé à partir d'un projet existant par Jb05s, appelé SharpSQL, donc un grand merci à Jeremy pour son travail.
De plus, je recommande vraiment de voir tous les outils de NetSPI concernant l'audit et l'exploitation MSSQL, car ils sont vraiment excellents :
[*] Liste des commandes disponibles :
- findspn : Trouve les instances MSSQL, en utilisant les SPN du domaine
- listdb : Liste les bases de données disponibles sur le serveur
- gethash : Envoie le hachage Net-NTLM du compte de service à une IP arbitraire
- getlogin : Récupère les connexions SQL disponibles pour l'usurpation
- getdbuser : Récupère des informations sur la connexion SQL, l'utilisateur mappé actuel et les rôles utilisateur disponibles
- getlinked : Récupère des informations sur les serveurs liés
- getserverinfo : Récupère les valeurs actuelles de 'xp_cmdshell', 'ole automation procedures' et 'clr enabled'
- xp : Exécute une commande PowerShell encodée via 'xp_cmdshell'
- ole : Exécute une commande PowerShell encodée via 'sp_OACreate' et 'sp_OAMethod'
- clr : Exécute une commande PowerShell encodée via des assemblies .NET personnalisés
- rpc : Configure un serveur SQL lié pour autoriser les connexions RPC
- linkedquery : Exécute une commande PowerShell encodée sur un serveur SQL lié via 'OPENQUERY'
- openquery : Exécute une requête arbitraire en utilisant 'OPENQUERY'
[*] Pour une utilisation détaillée, tapez :
- CheeseSQL <commande> /help