* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
* Consigue el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)..
Los objetos **DCOM** (Distributed Component Object Model) son **interesantes** debido a la capacidad de **interactuar** con los objetos **a través de la red**. Microsoft tiene una buena documentación sobre DCOM [aquí](https://msdn.microsoft.com/en-us/library/cc226801.aspx) y sobre COM [aquí](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Puede encontrar una sólida lista de aplicaciones DCOM utilizando PowerShell, ejecutando `Get-CimInstance Win32_DCOMApplication`.
El objeto COM [MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx) le permite escribir componentes de operaciones de MMC snap-in. Al enumerar los diferentes métodos y propiedades dentro de este objeto COM, noté que hay un método llamado `ExecuteShellCommand` bajo Document.ActiveView.
Puede leer más sobre ese método [aquí](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Hasta ahora, tenemos una aplicación DCOM a la que podemos acceder a través de la red y podemos ejecutar comandos. La pieza final es aprovechar esta aplicación DCOM y el método ExecuteShellCommand para obtener la ejecución de código en un host remoto.
Afortunadamente, como administrador, puede interactuar remotamente con DCOM con PowerShell usando "`[activator]::CreateInstance([type]::GetTypeFromProgID`". Todo lo que necesita hacer es proporcionarle un ProgID DCOM y una dirección IP. Luego le proporcionará una instancia de ese objeto COM de forma remota:
El objeto **MMC20.Application** carecía de "LaunchPermissions" explícitas, lo que resultó en el conjunto de permisos predeterminado que permite el acceso de los administradores:
Puede leer más sobre ese hilo [aquí](https://twitter.com/tiraniddo/status/817532039771525120).\
Ver qué otros objetos no tienen un conjunto de LaunchPermission explícito se puede lograr usando [OleView .NET](https://github.com/tyranid/oleviewdotnet) de [@tiraniddo](https://twitter.com/tiraniddo), que tiene excelentes filtros de Python (entre otras cosas). En este caso, podemos filtrar todos los objetos que no tienen permiso de inicio explícito. Al hacerlo, dos objetos me llamaron la atención: `ShellBrowserWindow` y `ShellWindows`:
Otra forma de identificar objetos potenciales es buscar el valor `LaunchPermission` que falta en las claves en `HKCR:\AppID\{guid}`. Un objeto con permisos de inicio configurados se verá así, con datos que representan la ACL para el objeto en formato binario:
El primer objeto explorado fue [ShellWindows](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974\(v=vs.85\).aspx). Dado que no hay [ProgID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms688254\(v=vs.85\).aspx) asociado con este objeto, podemos usar el método .NET [Type.GetTypeFromCLSID](https://msdn.microsoft.com/en-us/library/system.type.gettypefromclsid\(v=vs.110\).aspx) emparejado con el método [Activator.CreateInstance](https://msdn.microsoft.com/en-us/library/system.activator.createinstance\(v=vs.110\).aspx) para instanciar el objeto a través de su AppID en un host remoto. Para hacer esto, necesitamos obtener el [CLSID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms691424\(v=vs.85\).aspx) para el objeto ShellWindows, que también se puede lograr usando OleView .NET:
Una vez que el objeto se ha instanciado en el host remoto, podemos interactuar con él e invocar cualquier método que deseemos. El identificador devuelto por el objeto muestra varios métodos y propiedades, ninguno de los cuales podemos interactuar. Para lograr una interacción real con el host remoto, necesitamos acceder al método [WindowsShell.Item](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773970\(v=vs.85\).aspx), que nos devolverá un objeto que representa la ventana de la shell de Windows:
Con un control total sobre la ventana Shell, ahora podemos acceder a todos los métodos/propiedades esperados que están expuestos. Después de revisar estos métodos, **`Document.Application.ShellExecute`** destacó. Asegúrese de seguir los requisitos de parámetros para el método, los cuales están documentados [aquí](https://msdn.microsoft.com/en-us/library/windows/desktop/gg537745\(v=vs.85\).aspx).
Este objeto en particular no existe en Windows 7, lo que limita un poco más su uso para el movimiento lateral que el objeto "ShellWindows", que probé con éxito en Win7-Win10.
Según mi enumeración de este objeto, parece proporcionar efectivamente una interfaz en la ventana del Explorador, al igual que el objeto anterior. Para instanciar este objeto, necesitamos obtener su CLSID. Similar al anterior, podemos usar OleView .NET:
Dado que este objeto interactúa directamente con el shell de Windows, no necesitamos invocar el método "ShellWindows.Item", como en el objeto anterior.
Si bien estos dos objetos DCOM se pueden utilizar para ejecutar comandos de shell en un host remoto, hay muchos otros métodos interesantes que se pueden utilizar para enumerar o manipular un objetivo remoto. Algunos de estos métodos incluyen:
De manera similar, es posible moverse lateralmente abusando de los objetos DCOM de Excel, para obtener más información, lea [https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom)
El script de Powershell [**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1) permite invocar fácilmente todas las formas comentadas de ejecutar código en otras máquinas.
* El primer método fue copiado de [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/), para más información sigue el enlace.
* La segunda sección fue copiada de [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/), para más información sigue el enlace.
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Consigue el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).