DCOM Exec
Last updated
Last updated
Groupe de sécurité Try Hard
Pour plus d'informations sur cette technique, consultez l'article original sur https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
Le modèle d'objet de composant distribué (DCOM) présente une capacité intéressante pour les interactions basées sur le réseau avec des objets. Microsoft fournit une documentation complète pour à la fois DCOM et le modèle d'objet de composant (COM), accessible ici pour DCOM et ici pour COM. Une liste des applications DCOM peut être récupérée en utilisant la commande PowerShell :
L'objet COM, Classe d'application MMC (MMC20.Application), permet le scriptage des opérations de module enfichable MMC. Notamment, cet objet contient une méthode ExecuteShellCommand
sous Document.ActiveView
. Plus d'informations sur cette méthode peuvent être trouvées ici. Vérifiez en exécutant :
Cette fonctionnalité facilite l'exécution de commandes sur un réseau via une application DCOM. Pour interagir avec DCOM à distance en tant qu'administrateur, PowerShell peut être utilisé comme suit :
Ce commandement se connecte à l'application DCOM et renvoie une instance de l'objet COM. La méthode ExecuteShellCommand peut ensuite être invoquée pour exécuter un processus sur l'hôte distant. Le processus implique les étapes suivantes:
Vérifier les méthodes:
Obtenir un accès à distance (RCE) :
Pour plus d'informations sur cette technique, consultez l'article original https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/
L'objet MMC20.Application a été identifié comme manquant de "LaunchPermissions" explicites, se basant sur des autorisations permettant l'accès aux administrateurs par défaut. Pour plus de détails, un fil de discussion peut être exploré ici, et l'utilisation de @tiraniddo OleView .NET pour filtrer les objets sans autorisation de lancement explicite est recommandée.
Deux objets spécifiques, ShellBrowserWindow
et ShellWindows
, ont été mis en avant en raison de leur absence d'autorisations de lancement explicites. L'absence d'une entrée de registre LaunchPermission
sous HKCR:\AppID\{guid}
signifie l'absence d'autorisations explicites.
Pour ShellWindows
, qui ne possède pas de ProgID, les méthodes .NET Type.GetTypeFromCLSID
et Activator.CreateInstance
facilitent l'instanciation de l'objet en utilisant son AppID. Ce processus exploite OleView .NET pour récupérer le CLSID de ShellWindows
. Une fois instancié, l'interaction est possible via la méthode WindowsShell.Item
, permettant l'invocation de méthodes telles que Document.Application.ShellExecute
.
Des commandes PowerShell d'exemple ont été fournies pour instancier l'objet et exécuter des commandes à distance:
Le mouvement latéral peut être réalisé en exploitant les objets DCOM Excel. Pour des informations détaillées, il est conseillé de lire la discussion sur l'utilisation de Excel DDE pour le mouvement latéral via DCOM sur le blog de Cybereason.
Le projet Empire fournit un script PowerShell, qui démontre l'utilisation de Excel pour l'exécution de code à distance (RCE) en manipulant des objets DCOM. Ci-dessous des extraits du script disponible sur le dépôt GitHub d'Empire, présentant différentes méthodes pour abuser de Excel pour le RCE:
Deux outils sont mis en avant pour automatiser ces techniques :
Invoke-DCOM.ps1 : Un script PowerShell fourni par le projet Empire qui simplifie l'invocation de différentes méthodes pour exécuter du code sur des machines distantes. Ce script est accessible dans le dépôt GitHub d'Empire.
SharpLateral : Un outil conçu pour exécuter du code à distance, qui peut être utilisé avec la commande :
Le script Powershell Invoke-DCOM.ps1 permet d'invoquer facilement toutes les méthodes commentées pour exécuter du code sur d'autres machines.
Vous pourriez également utiliser SharpLateral:
Groupe de sécurité Try Hard