viernes, junio 24, 2011

Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (4 de 4)

**************************************************************************************************
- Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (1 de 4)
- Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (2 de 4)
- Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (3 de 4)
- Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (4 de 4)
Autores: Juan Garrido "Silverhack" y Chema Alonso
**************************************************************************************************

Remote Desktop Protocol

Es un protocolo propietario de Microsoft, gracias al cual se puede proveer a un usuario de un escritorio remoto. La primera versión de este protocolo, se gestó gracias a las negociaciones que realizaron en su día Microsoft y Citrix, para que este último, autorizase a Microsoft a incluir librerías de Citrix, para la publicación de escritorio en servidores basados en NT. A día de hoy, el protocolo se encuentra en su versión 7.0, y se incluyen algunas novedades, como son las siguientes:

• Publicación de aplicaciones (RemoteAPP)
• Cifrado en las comunicaciones
• Publicación a través de puerto 443 (HTTS Redirect)
• Publicación de servicios virtualizados

Por defecto, el puerto principal por el que opera Terminal Server, a la hora de ofertar servicios de publicación de aplicaciones y escritorio remoto, es el 3389, por lo que puede ser utilizado para descubrirlo con un escaneo nmap en la red, tal y como se vio en la parte anterior.

Para conectarse a un servidor de Terminal Services, el cliente utiliza un fichero en formato RDP en el que se configuran los parámetros de la conexión. Este fichero puede ser descubierto por su extensión utilizando Google, al igual que hacíamos con ICA.


Figura 13: Descubrimiento de ficheros RDP en Google

Utilizando BING se puede hacer algo similar, pero para este buscador es tomado como un fichero de texto, por lo que tenemos que utilizar como ancla algún parámetro dentro del fichero RDP. Si nos fijamos en el contenido del mismo, se pueden ver algunos bastante interesantes.


Figura 14: Ejemplo de fichero RDP

Remoteapplicationprogram, remoteapplicationmode, remoteapplicationname o remoteapplicationcmdline son parámetros en los que se configura, de manera distinta, el programa que se tiene que ejecutar una vez que el usuario se autentique correctamente en el servidor, y puede ser utilizado para descubrir los ficheros en BING y para descubrir algunas aplicaciones en el mismo.


Figura 15: Descubrimiento de ficheros RDP con BING

Algunos de ellos vienen ya configurados con el usuario y la contraseña, cifrada con las funciones CryptProtectData y CryptUnProtectData de crypt32.dll. Esto hace que la contraseña solo pueda ser descifrada desde el servidor, y no en el cliente, ya que la clave de cifrado y descifrado está en el servidor de Terminal Services y no en la máquina del cliente. Esto está muy bien explicado un artículo de Remko Weijnen, que además ha hecho una pequeña tool para que compruebes cómo genera los hashes con este mecanismo tu propio equipo. Probado en dos equipos distintos, los hashes son distintos.


Figura 16: RDP Password Hassher

Aunque no es posible crackear la contraseña, sí que es posible conseguir acceso con un sesión de ese usuario en el equipo remoto, para que se ejecute alguna de las aplicaciones configuradas en los parámetros vistos antes. En Internet, es posible descubrir muchos de ellos con la password cifrada configurada en el fichero.


Figura 17: Ficheros RDP con passwords en BING

Los servicios de Terminal Services pueden ser embebidos en aplicaciones web que, una vez autenticado, permiten ver la configuración de la conexión que se va a realizar, o la lista de aplicaciones disponibles, tal y como se puede ver en esta página web publicando el TSGateway.


Figura 18: Configúración de TSGateway embebida en código HTML

Por supuesto, estas búsquedas para encontrar servidores web que publican aplicaciones por Términal Services también se pueden realizar utilizando Shodan o Google. Búsquedas sencillas como pueden ser las siguientes:

• “RemoteAPP”
• “RDWEB”
• “inurl:"RDWeb/pages/" ext:aspx”


Con los ejemplos vistos en este artículo, es bastante sencillo descubrir si una organización está haciendo uso de una de estas tecnologías para publicar aplicaciones o escritorios remotos utilizando Terminal Services o Citrix, que nosotros incorporamos en FOCA 2.7. En el siguiente artículo de esta serie veremos cómo hacer fingerprinting de las aplicaciones internas de un servidor, cómo saltarse políticas de seguridad y cómo hacer elevación de privilegios.

**************************************************************************************************
- Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (1 de 4)
- Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (2 de 4)
- Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (3 de 4)
- Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (4 de 4)
**************************************************************************************************

Entradas populares