
DCOMrade es un script de Powershell que puede enumerar las posibles aplicaciones DCOM vulnerables que podrían permitir el movimiento lateral, la ejecución de código, la exfiltración de datos, etc. El script está diseñado para funcionar con Powershell 2.0 pero también funcionará con todas las versiones anteriores. La secuencia de comandos admite actualmente los siguientes sistemas operativos de Windows (tanto x86 como x64):
- Microsoft Windows 7
- Microsoft Windows 10
- Microsoft Windows Server 2012/2012 R2
- Microsoft Windows Server 2016
El guión se realizó en base a la investigación realizada por Matt Nelson ( @enigma0x3), especialmente la publicación de blog de la ronda 2 que se utiliza para encontrar aplicaciones DCOM que podrían ser útiles para pentesters y equipos rojos.
Primero se realiza una conexión remota con el sistema de destino, esta conexión se usa en todo el script para una multitud de operaciones. Se ejecuta un comando de Powershell en el sistema de destino que recupera todas las aplicaciones DCOM y sus AppID. Los AppID se utilizan para recorrer el Registro de Windows y buscar cualquier AppID que no tenga el LaunchPermissionconjunto de subclaves en su entrada, estos AppID se almacenan y se utilizan para recuperar sus CLSID asociados.
La secuencia de comandos utiliza una lista negra específica con cada sistema operativo, por eso hay diferentes opciones para el sistema operativo de destino. La lista negra omite las entradas de CLSID que podrían colgar la secuencia de comandos debido a las aplicaciones DCOM que no pueden activarse, esto reduce la carga en el sistema de destino y reduce el tiempo para que se complete la secuencia de comandos.
Con el CLSID, la aplicación DCOM asociada puede ser activada. El CLSID 'Acceso directo' se usa para contar la cantidad MemberTypesasociada con esto, esto se hace para verificar la cantidad predeterminada de MemberTypes. Este número se usa para verificar los CLSID que tienen algo diferente a esta cantidad. La secuencia de comandos hace esto con el CLSID del 'Acceso directo' ( HKEY_CLASSES_ROOT\CLSID\{00021401-0000-0000-C000-000000000046}) porque se trata de un CLSID compartido entre los sistemas operativos de Microsoft Windows. Los CLSID con una cantidad diferente de MemberTypespueden contener un Methodo Propertyque se puede (ab) usar, y se agregarán a una matriz.
Los CLSID en la matriz se están verificando en cadenas MemberTypesque podrían indicar una forma de (ab) usarla, esta lista de cadenas se puede encontrar en el archivo VulnerableSubset . Tenga en cuenta que esta lista no es, de ninguna manera, una lista completa para encontrar todas las aplicaciones DCOM vulnerables, pero esta lista es una parte dinámica del proceso que le debe dar al usuario de la secuencia de comandos una forma de buscar cadenas específicas que puedan indicar una funcionalidad de una aplicación DCOM que podría ser útil para su propósito.
Los resultados de la secuencia de comandos se publican en un informe HTML y deben poder utilizarse para auditar un sistema como medida preventiva. Para el lado ofensivo, creé un módulo de Empire que, en el momento de escribirlo, está pendiente de aprobación para ser agregado a la rama maestra. Si desea agregar esto a Empire usted mismo, puede hacerlo agregando el módulo que se encuentra aquí .
Para obtener una explicación técnica completa de la idea, el guión y los posibles métodos de detección, puede leer el trabajo de investigación asociado con esto.
Prerrequisitos
El script, aunque no se usa como un módulo de Empire, tiene algunas limitaciones, ya que el funcionamiento del script y la forma en que se conecta con la máquina de destino es diferente.
- Para que este script funcione, los servicios de administración remota de Windows deben estar permitidos en el Firewall de Windows (5985);
- Si el perfil de red del sistema de destino se establece en Publicel siguiente comando, debe ejecutarse para permitir que los servicios de administración remota de Windows se utilicen en el sistema de destino:Enable-PSRemoting -SkipNetworkProfilecheck -Force
- Este script solo funciona cuando uno tiene las credenciales de un administrador local en el sistema de destino. Sin estas credenciales, no podrá iniciar una sesión remota con la máquina de destino ni podrá activar las aplicaciones DCOM.
Ejemplo de uso
Cuando en un dominio de Microsoft Windows:
. \ DCOMrade.ps1 -Nombre del equipo [Computername / IP] -Usuario [Administrador local] -OS [Sistema operativo] -Dominio [Nombre de dominio]
Cuando no está en un dominio de Microsoft Windows:. \ DCOMrade.ps1 -ComputerName [Computername / IP] -User [Administrador local] -OS [Sistema operativo]
Limitaciones
Actualmente, el script intenta liberar cualquier aplicación DCOM activada / instanciada, pero algunas activaciones inician nuevos procesos (como Internet Explorer), el proceso podría detenerse, pero esto significaría que si un usuario en el sistema de destino está usando esa aplicación en particular, el proceso se detendrá para ellos también;
Otra cosa, que probablemente tenga que ver con mis malas habilidades de codificación, es que la secuencia de comandos podría generar una carga considerable en el sistema de destino si el sistema de destino no tiene muchos recursos. Sea considerado cuando use esto en un entorno de producción o en servidores;
La secuencia de comandos puede tardar algún tiempo en ejecutarse por completo, esto depende de la cantidad de aplicaciones DCOM y del tamaño del archivo de subconjunto vulnerable.
Fuente: https://github.com/sud0woodo/DCOMrade
0 Comentarios