miércoles, mayo 25, 2011

Hacking Remote Apps: Fingerprinting con Terminal Services & Citrix (2 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
**************************************************************************************************

Búsqueda de portales Citrix

Los servicios de Citrix también pueden ser ofertados vía Web mediante la creación de portales que publican las aplicaciones o el escritorio completo. Esta característica de publicación vía web se de principalmente a evitar los problemas de puertos en conexiones remotas, haciendo que sea más fácil para todos los usuarios conectarse, o a integrar las aplicaciones dentro de un portal corporativo que oferte otro tipo de servicios.

A la hora de instalar este tipo de servicios en aplicaciones, se suelen crear unos sitios web especiales con rutas específicas que pueden ser utilizadas para descubrir los servicios de Citrix. Algunas búsquedas interesantes, utilizando el buscador de Google, son las siguientes:

- inurl:"NFuse16/login.asp"
- inurl:"NFuse17/login.asp"
- inrul:"Citrix/MetaframeXP/default/login.asp"



Figura 4: Búsqueda de portales Citrix

Estas búsquedas, se pueden realizar también utilizando Shodan como scanner para encontrar estos servicios. Por ejemplo, en el caso de los portales MetaframeXP, se utiliza un fichero llamado Nfuse.htm que redirige a la ubicación de publicacion del mismo. Basta con buscar ese fichero para encontrar el camino al servidor Citrix:


Figura 5: Búsqueda de portales Citrix en Shodan

Búsqueda de servidores Citrix por puertos con nmap

Una primera aproximación al descubrimiento de este tipo de servicios es la inclusión de escaneos específicos para intentar detectar si los servicios asociados a Terminal Server y/o Citrix se encuentran ofertando algún servicio al exterior, o para descubrirlos en una Intranet. Citrix opera de forma nativa por el puerto 1494, mientras que los servidores de Terminal Server, a la hora de ofertar servicios de publicación de aplicaciones y escritorio remoto, utilizan el puerto 3389.

Gracias a que en nmap se pueden incluir scripts personalizados, estos se pueden diseñar de forma sencilla para que guarden información sobre las direcciones IP de los servidores que tengan estos servicios publicados. Un script sencillo que realice esta función para detectar servidores Citrix y Terminal Server al mismo tiempo podría ser el siguiente:

description = [[
Script que realiza consultas a Terminal server o Citrix mediante una conexión al puerto por defecto.
]]
author = "Silverhack"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"discovery", "safe"}
--Requerimos ShortPort para crear el constructor
require "shortport"
--Creamos la regla de conexión con los puertos de Terminal Server y Citrix
portrule = shortport.port_or_service({1494,3389},{"citrix-ica","ms-term-serv"})
action = function(host,port)
--Abrimos un fichero de escritura
file = io.open ("ServersFound.txt","a+")
--Si el puerto al que conecta es de Citrix, escribe en un fichero la dirección IP
     if port.number == 1494 and port.service == "citrix-ica" then
     file:write ("El Host ")
     file:write (host.ip.." Tiene el puerto 1494 activo!\n")
     file:flush()
     return "Puerto ICA Abierto. Se ha introducido en el fichero."
     end
     if port.number == 3389 and port.service == "ms-term-serv" then
--Si el puerto al que conecta es de Terminal Server, escribe en un fichero la dirección IP
     file:write ("El Host ")
     file:write (host.ip.." Tiene el puerto 3389 activo!\n")
     file:flush()
     return "Puerto RDP abierto. Se ha introducido en el fichero."
     end
--Cierra el fichero
    file:close()
    end


El resultado de aplicar dicho script a una sentencia con nmap es que, al encontrarse estos puertos en un estado OPEN, guarda la dirección IP más el puerto en un fichero.


Figura 6: Búsqueda de portales Citrix y Términal Services con nmap

**************************************************************************************************
- 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)
**************************************************************************************************

No hay comentarios:

Publicar un comentario