miércoles, agosto 03, 2011

Hacking Remote Apps: Descubriendo aplicaciones (1 de 3)

**************************************************************************************************
- Hacking Remote Apps: Descubriendo aplicaciones (1 de 3)
- Hacking Remote Apps: Descubriendo aplicaciones (2 de 3)
- Hacking Remote Apps: Descubriendo aplicaciones (3 de 3)
Autores: Juan Garrido "Silverhack" y Chema Alonso
**************************************************************************************************

En la primera serie de esto artículos la temática se centró en reconocer los servidores que estaban publicando servicios de aplicaciones remotas con Citrix o Terminal Services. En esta serie nos centraremos en, una vez descubierto que un equipo está ofreciendo esta posibilidad, descubrir todas las aplicaciones que se encuentran instaladas en la máquina y a las que se tiene acceso.

Fingerprinting de aplicaciones, exploiting dirigido y Evilgrade

Conocer las aplicaciones que puede tener instalado un equipo, un terminal o un servidor puede significar el que un ataque dirigido tenga éxito o no. Este hecho fue gran responsable del éxito de la FOCA al poder hacer un fingerprinting de máquinas simplemente mirando los metadatos, o un problema para los dispositivos iOS de Apple (iPhone, iPod Touch o iPad) ya que mediante el sistema de regalo de aplicaciones en iTunes se podría hacer un fingerprinting remoto de software.

Conocer el software de un servidor permite, además de hacer un ataque mediante una vulnerabilidad conocida de algún programa, hacer uso por ejemplo de ataques como Evilgrade, que pueden hacer que el equipo mismo instale una puerta trasera por medio de una actualización de software insegura. Puedes leer un ejemplo de este ataque escrito por el propio Francisco Amato, creador del framework de Evilgrade, sobre cómo hacer este ataque en un Mac OS X. Además, las aplicaciones vulnerables en una red se pueden descubrir también por medio de la técnica de DNS Cache Snooping.

Terminal Services: El fichero RDP y la ejecución de aplicaciones

Cuando se realiza una conexión a un servidor de Terminal Services, esta conexión puede realizarse para obtener un escritorio completo o solo el interfaz de una aplicación. Según la configuración del servidor y la elección del cliente, se podrá elegir la manera de realizar esta conexión.

En sistemas Windows Server 2000 o 2003, la publicación de aplicaciones de modo independiente, es decir, sin que se publique el escritorio completo del servidor no se puede realizar. Es por eso que lo que se hace es mostrar un fondo como si no hubiera desktop, pero está por debajo. Con la aparición del protocolo RDP 6.0 (y así sucede en las versiones posteriores), este comportamiento sí que está permitido, por lo que puede publicarse sólo el interfaz de la aplicación.

En cualquier caso, el cliente debe elegir el modo en que desea establecer la conexión mediante el uso del atributo remoteapplicationmode:i:0, que tomará el valor 0 si se quiere acceder al escritorio completo o 1 si solo se desea acceder a la aplicación.

En el caso de que el servidor sea un Windows Server 2000 o 2003, si el administrador ha permitido la ejecución de aplicaciones al inicio, el parámetro que hay que modificar para invocar un programa es alternate shell:s:cmd.exe, indicándole qué programa se quiere ejecutar (en este caso el cmd.exe).


Figura 1: Configuración de alternateshell

Este modificador sólo es válido cuando la conexión se esté realizando contra un Terminal Services 2000 o 2003, ya que en en caso de que se esté ejecutando una conexión contra un Terminal Services 2008 se utiliza RemoteAPP, parte de RDP 6.0 y superior.


Figura 2: Configuracion de la publicación de una aplicación en Terminal Services 2008

En este caso, el administrador publica una lista de aplicaciones para ser utilizadas en RemoteApp, y a continuación, a cada aplicación le pone un nombre y un alias, por los que podrán ser invocadas en el modificador remoteapplicationprogram:s:||EXCEL. El valor Alternate Shell existe solo para los clientes con RDP inferior a la versión 6.0, pero no tiene impacto ya que, cuando llegue al servidor Terminal Services 2008 se obtendrá un error.

Extracción de la lista de aplicaciones en Terminal Services

Para poder sacar la lista de las aplicaciones que hay un servidor Terminal Server, no importa si es en versión 2000, 2003 o 2008, basta con hacer uso de alternateshell. Si tenemos una lista de aplicaciones, podremos ir solicitando una de ellas en cada conexión y obtener tres posibles resultados:

- Ejecución de la aplicación: El servidor ejecuta Terminal Services en versión 2000 o 2003, la aplicación existe y además se puede ejecutar.

- La aplicación no existe: No se ha podido encontrar la aplicación en la ruta del servidor.


Figura 3: La aplicación no está instalada en el servidor

- No tiene permiso de ejecución: La aplicación existe, pero no se puede ejecutar.


Figura 4: La aplicación sí está instalada en el servidor

Simplemente, evaluando los mensajes de error se puede hacer una lista de las aplicaciones del servidor.

**************************************************************************************************
- Hacking Remote Apps: Descubriendo aplicaciones (1 de 3)
- Hacking Remote Apps: Descubriendo aplicaciones (2 de 3)
- Hacking Remote Apps: Descubriendo aplicaciones (3 de 3)
**************************************************************************************************

Entradas populares