Hacking Windows 10: Lateral Movements using DCOM Objects
Hace un par de semanas hablamos sobre la importancia de las técnicas DCOM para lograr un movimiento lateral que pasa, en muchos casos, desapercibido. Además, hablamos de alguna herramienta como DCOMrade que permite ver posibles vías para lograr el éxito en el movimiento lateral. Este tipo de técnicas, quizá un poco más avanzadas o quizá más desconocidas, en lo que a movimiento lateral se refiere, son técnicas que aportan un gran potencial en un Ethical Hacking.
Además, algo que está resultando interesante es el uso que se le puede dar en un Hacking de sistemas Windows 10 y redes Microsoft, con las protecciones que éste tiene y el juego del gato y el ratón que se presenta de forma constante. Sin duda, el movimiento lateral es una técnica imprescindible en el pentesting.
Nosotros no hemos dejado pasar la oportunidad de implementar alguna de estas técnicas en nuestra navaja suiza de Pentesting con Powershell: Nuestra querida ibombshell. En la rama Dev, la cual pronto se convertirá en rama estable y liberaremos nueva versión, podemos encontrar dos movimientos laterales basados en DCOM. Estamos deseando liberar la nueva versión, que, aunque sigue siendo beta y mejoramos en los ratos libres que se tiene, traerá nuevas funcionalidades que serán del gusto de los usuarios y mejoras de estabilidad y uso de la línea de comandos.
Hoy quería mostrar algunas técnicas más utilizadas para hacer movimiento lateral a través de DCOM. En este genial artículo se muestra un recopilatorio de algunas de ellas, basadas en investigaciones de Matt Nelson y Cybereason. Las técnicas que se explicarán hoy son:
MMC20.Application
Fue publicada por primera vez por el investigador Matt Nelson en su blog. La técnica es muy similar a la que vimos hace unas semanas sobre ShellWindows. Para poder utilizar esta técnica, lo primero es crear una instancia MMC20.Application. Después de ello, se puede utilizar el método ExecuteShellCommand, el cual se encuentra en la propiedad Document.ActiveView.
De esta forma se puede ejecutar el comando que se quiera sobre la máquina. El comando ejecutado correrá como un proceso hijo del proceso mmc.exe. Hay que indicar que la ejecución de mmc.exe vía COM es extraño, por lo que puede generar ruido y alertas a través de los mecanismos de protección de Windows.
Lo primero que se puede comprobar son los métodos que tiene el objeto. Para ello ejecutamos:
En el siguiente vídeo se puede ver el proceso completo desde un Windows 7 a un Windows 10 y la ejecución de código remoto. Lógicamente, se debe disponer ya de un admin en el sistema Windows 7.
ShellBrowserWindow
Esta técnica es similar a la de ShellWindows que se comentó hace unas semanas. Para poder utilizar esta técnica se debe crear una instancia del objeto ShellBrowserWindow y revisando, como hicimos en el caso anterior, los métodos disponibles encontraremos ShellExecute, dentro de la propiedad Document.Application.
En el siguiente vídeo se puede ver los detalles para lograr la ejecución del movimiento lateral. Hay que indicar que en Windows 7 puede haber ciertas limitaciones, aunque, como se puede ver en el vídeo, se puede ejecutar el código de esta forma.
Outlook y la ejecución con el método CreateObject
Esta técnica es un derivado de las de Matt Nelson. El objeto Outlook permite la instalación e interacción con objetos COM. Esto es realizado a través del método CreateObject. Este hecho permitiría a un atacante interactuar con los objetos COM en remoto, mediante DCOM.
La creación del objeto Outlook sería a través de la siguiente instrucción de PowerShell
Esta técnica permite sustituir Shell.Application por Wscript.Shell, ya que hay casos que pueden resultar de interés.
DDE con Microsoft Excel
Esta técnica fue publicada por Cybereason y proporciona un método con el que conseguir movimiento lateral a través del uso del Excel. La técnica utiliza el Direct Data Exchange Inter-Process Communications de Excel. Y todo esto lo podemos automatizar con un poco de Pentesting con Powershell.
Con esto se puede ejecutar un comando arbitrario. Lo primero, es crear una instancia del objeto Excel.Application, el cual es un objeto COM asociado con el Excel. Esto se logra con la instrucción:
Sin duda, son métodos interesantes de conocer y que desde la parte de mitigación deben trabajar bien a lo largo del dominio. La identificación de la ejecución remota por DCOM puede ser un indicio para un IoC. Este tipo de técnicas no son vulnerabilidades, pero si hacen un abuso de una funcionalidad legítima.
El acceso a los objetos “peligrosos” DCOM debería ser prohibido por política y aplicar una lista blanca a los que se puedan utilizar si quieres tener un sistema en el que aplicas la Máxima Seguridad en Windows posible. Seguiremos avanzando en mostrar este tipo de técnicas e ir añadiéndolas a nuestra iBombShell para ir mejorando esta herramienta Open Source de Ethical Hacking.
Figura 1: Hacking Windows 10: Lateral Movements using DCOM Objects |
Además, algo que está resultando interesante es el uso que se le puede dar en un Hacking de sistemas Windows 10 y redes Microsoft, con las protecciones que éste tiene y el juego del gato y el ratón que se presenta de forma constante. Sin duda, el movimiento lateral es una técnica imprescindible en el pentesting.
Figura 2: Libro de Hacking Windows |
Nosotros no hemos dejado pasar la oportunidad de implementar alguna de estas técnicas en nuestra navaja suiza de Pentesting con Powershell: Nuestra querida ibombshell. En la rama Dev, la cual pronto se convertirá en rama estable y liberaremos nueva versión, podemos encontrar dos movimientos laterales basados en DCOM. Estamos deseando liberar la nueva versión, que, aunque sigue siendo beta y mejoramos en los ratos libres que se tiene, traerá nuevas funcionalidades que serán del gusto de los usuarios y mejoras de estabilidad y uso de la línea de comandos.
Figura 3: Encontrar lateral movements |
Hoy quería mostrar algunas técnicas más utilizadas para hacer movimiento lateral a través de DCOM. En este genial artículo se muestra un recopilatorio de algunas de ellas, basadas en investigaciones de Matt Nelson y Cybereason. Las técnicas que se explicarán hoy son:
- DDE con Microsoft Excel.
- MMC20.Application.
- ShellBrowserWindow.
- Outlook y la ejecución con el método CreateObject.
MMC20.Application
Fue publicada por primera vez por el investigador Matt Nelson en su blog. La técnica es muy similar a la que vimos hace unas semanas sobre ShellWindows. Para poder utilizar esta técnica, lo primero es crear una instancia MMC20.Application. Después de ello, se puede utilizar el método ExecuteShellCommand, el cual se encuentra en la propiedad Document.ActiveView.
De esta forma se puede ejecutar el comando que se quiera sobre la máquina. El comando ejecutado correrá como un proceso hijo del proceso mmc.exe. Hay que indicar que la ejecución de mmc.exe vía COM es extraño, por lo que puede generar ruido y alertas a través de los mecanismos de protección de Windows.
Figura 4: Comprobación de métodos disponibles |
Lo primero que se puede comprobar son los métodos que tiene el objeto. Para ello ejecutamos:
$mmc = [Activator]::CreateInstance([type])::GetTypeFromProgID(“MMC20.Application”, “[dirección IP]”).Cuando uno ya tiene la posibilidad de ser admin y hacer ese movimiento, como si de PtH se tratase, puede hacer uso de esto para ejecutar comandos en remoto. En este caso se muestra como hacer la ejecución en remoto sobre un Windows 10, desde el objeto $mmc que ya tenemos creado.
Figura 5: Ejecución de calc.exe desde el objeto $mmc |
En el siguiente vídeo se puede ver el proceso completo desde un Windows 7 a un Windows 10 y la ejecución de código remoto. Lógicamente, se debe disponer ya de un admin en el sistema Windows 7.
Figura 6: PoC de Lateral Movement usando MMC20.Application
ShellBrowserWindow
Esta técnica es similar a la de ShellWindows que se comentó hace unas semanas. Para poder utilizar esta técnica se debe crear una instancia del objeto ShellBrowserWindow y revisando, como hicimos en el caso anterior, los métodos disponibles encontraremos ShellExecute, dentro de la propiedad Document.Application.
Figura 7: Comprobación del método ShellExecute |
En el siguiente vídeo se puede ver los detalles para lograr la ejecución del movimiento lateral. Hay que indicar que en Windows 7 puede haber ciertas limitaciones, aunque, como se puede ver en el vídeo, se puede ejecutar el código de esta forma.
Figura 8: PoC de Lateral Movement usando ShellBrowserWindow
Outlook y la ejecución con el método CreateObject
Esta técnica es un derivado de las de Matt Nelson. El objeto Outlook permite la instalación e interacción con objetos COM. Esto es realizado a través del método CreateObject. Este hecho permitiría a un atacante interactuar con los objetos COM en remoto, mediante DCOM.
La creación del objeto Outlook sería a través de la siguiente instrucción de PowerShell
$outlook = [Activator]::CreateInstance([type])::GetTypeFromProgID(“Outlook.Application”, “[dirección IP]”)Desde este objeto se puede hacer uso del método CreateObject para crear una Shell.Application, de la siguiente manera:
$shell = $outlook.CreateObject(“Shell.Application”)En ese punto solo tendríamos que ejecutar:
$shell.ShellExecute(“[comando a ejecutar en remoto]”)El comando se ejecuta sobre el Windows 10 como un hijo del proceso Outlook.
Figura 9: Ejecución de calc con el objeto $Shell creado |
Esta técnica permite sustituir Shell.Application por Wscript.Shell, ya que hay casos que pueden resultar de interés.
DDE con Microsoft Excel
Esta técnica fue publicada por Cybereason y proporciona un método con el que conseguir movimiento lateral a través del uso del Excel. La técnica utiliza el Direct Data Exchange Inter-Process Communications de Excel. Y todo esto lo podemos automatizar con un poco de Pentesting con Powershell.
Figura 10: Libro de Pentesting con PowerShell |
Con esto se puede ejecutar un comando arbitrario. Lo primero, es crear una instancia del objeto Excel.Application, el cual es un objeto COM asociado con el Excel. Esto se logra con la instrucción:
$excel = [Activator]::CreateInstance([type])::GetTypeFromProgID(“Excel.Application”, “[dirección IP]”)Una vez que se tiene el objeto, se puede hacer uso del Direct Data Exchange o DDE. A través de la instrucción: $excel.DDEInitiate(“cmd”,”/c calc.exe”)
Figura 11: Ejecución de cmd.exe vía $excel |
Sin duda, son métodos interesantes de conocer y que desde la parte de mitigación deben trabajar bien a lo largo del dominio. La identificación de la ejecución remota por DCOM puede ser un indicio para un IoC. Este tipo de técnicas no son vulnerabilidades, pero si hacen un abuso de una funcionalidad legítima.
Figura 12: Libro de Máxima Seguridad en Windows [4ª Edición] |
El acceso a los objetos “peligrosos” DCOM debería ser prohibido por política y aplicar una lista blanca a los que se puedan utilizar si quieres tener un sistema en el que aplicas la Máxima Seguridad en Windows posible. Seguiremos avanzando en mostrar este tipo de técnicas e ir añadiéndolas a nuestra iBombShell para ir mejorando esta herramienta Open Source de Ethical Hacking.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.
No hay comentarios:
Publicar un comentario