miércoles, enero 04, 2012

Averiguar el Nombre de un Servidor SQL Server con Excel, Cadenas de Conexión, y Autenticación Integrada NTLM

Cuando estuve escribiendo la última parte de Hacking Remote Applications: Escaneando la Red Interna con Excel, acababa diciendo que, al igual que en los ataques de Connection String Parameter Pollution podríamos robar el hash NTLM de sesión para intentar crackear la contraseña de la cuenta con la que corre el servicio de Terminal Services o Citrix. Sin embargo, no hice la prueba hasta ayer mismo, ya que sabía que iba a funcionar. La sorpresa es que cuando lo he hecho me he encontrado con algo que yo no sabía y que me ha dado para jugar un rato. Esta es la historia.

Cuando hicimos las pruebas iniciales de robo de hash NTLM de sesión usamos CAIN, ya que directamente trae un módulo que reconoce las cadenas de autenticación por TDS (Tabular Data Stream) de SQL Server y nos hacía la vida mucho más fácil.

Figura 1: Hash NTLM de Sesión en CAIN, robado con un Connection String Parameter Pollution Attack

Sin embargo, cuando lo hemos probado con un Excel en Citrix conectándolo con una cadena de conexión a un Rogue SQL Server en el que teníamos montado un Wireshark, hemos encontrado un pequeño detalle que no había contemplado al inicio: El nombre del equipo en el que corre... el servidor SQL que responde, tal y como se puede ver en la siguiente captura.

Figura 2: Hash y Nombre de equipo en una conexión con autenticación integrada desde Excel

Como se puede apreciar, aparece no solo la negociación NTLM de sesión, sino también el nombre del servidor con el que estamos negociando, pero es el nombre interno de la máquina en la red, y no el publicado. Esto es así siempre que se utiliza SMB, y parece que al usar Autenticación Integrada para conectarse a SQL Server también va implicito ese comportamiento, algo en lo que no había caído.

De hecho, cuando he ido a repasar la herramienta que publiqué - que ya no está disponible en su repositorio - sobre cómo hacer fingerprinting a servidores SQL Server, he visto que en ninguna de las pruebas que realicé apareció el nombre del equipo. 

Figura 3: Fingerprinting SQL con esf

Sin embargo, probándolo con diferentes versiones hemos podido comprobar que siempre es posible acceder al nombre del equipo. Así que, basta con abrir tu Excel en local, hacer una cadena de conexión a un servidor SQL Server y, no importa si Wireshark trae el parseador para ese paquete o no, al final siempre se obtiene el nombre de la máquina. Y luego para celebrarlo, con el mismo Excel, te juegas un Missile Command o un Tower Defense

Figura 4: Nombre de equipo en un paquete de autenticación integrada TDS 
Resumiendo:
1) Busca un servidor SQL Server: Puedes hacerlo por Robtex, por Shodan, o utilizando un scan nmap por el puerto 1433.

2) Abre tu Wireshark y ponte a sniffar tráfico en tu máquina


3) Abre tu Excel y crea una cadena de conexión contra el servidor con autenticación integrada.

Nota: Recuerda que irá tu hash NTLM sesión, así que no uses una cuenta de importancia.
Como única solución, a parte de cancelar el inicio de sesión integrada en SQL Server, sería poner en los firewalls un filtrado de este tipo de paquetes, para evitar la fuga de información y, por supuesto, usar VPNs para conectarse al servidor SQL Server sería lo más que deseable, en caso de que tenga que estar expuesto externamente.

Saludos Malignos!

10 comentarios:

  1. Un troll al dia4/1/12 11:14 a. m.

    Al fin un articulo tecnico

    ResponderEliminar
  2. @Un troll al día, es que esto es un blog, no una wiki }:))

    Saludos!

    ResponderEliminar
  3. Un troll al dia4/1/12 1:12 p. m.

    @Maligno, pues esto antes entonces parecía una wiki, y molaba más.

    Eso sí, reconozco que lo de que tengas que tener la red inalámbrica al alcance para borrarla es un giro retorcido más, me parece una "cagada" (con perdón, pero es así).

    Esos camiones!! Al fondo del río... Pero esos aparatos están precisamente para eso no? La máquinaria de espionaje está perfectamente enrezdada.

    Malditos ingenieros cuanto mejor auxiliares administrativos!

    Saludos

    ResponderEliminar
  4. @Un Troll al día... ¿y exactamente en qué mes de todos te dio esa falsa impresión? Este blog siempre ha sido así amigo }:))

    ResponderEliminar
  5. Un troll al dia4/1/12 1:41 p. m.

    En realidad los artículos técnicos de blog los creó el gobierno para que la gente pudiese enviar sus tonterias de amor patrio, y claro, más de uno aprovechó para tocar los huevos...

    Realmente eres un infiltrado para que la industria del espionaje llegue a todos nosotros sin que nos percatemos de dicha maniobra de manipulación encubierta.

    Estos (Chema) son los señores a los que tenemos por diligentes, implacables e infalibles, como en las películas, pero en la realidad demuestran lo grotesco y absurdo de su forma de actuar.

    Con todo esto, me reafirmo en mi teoría de la conspiración de Chema Alonso

    ResponderEliminar
  6. Chema que te han trincado....
    Enseña el código fuente de Echelon mamona...

    ResponderEliminar
  7. "@Maligno, pues esto antes entonces parecía una wiki, y molaba más."

    Estoy totalmente de acuerdo, letra por letra

    PD: Me han matao los comentarios...

    ResponderEliminar
  8. @Jay... repito: "Cuando?" }:))

    Por mucho que lo digáis, este blog siempre fue así... y a mí me gusta. Repásate los posts del mes que más te guste de todos los que lleva escritos.

    Saludos!

    ResponderEliminar
  9. @Maligno, tú di que es envidia cochina, ni más ni menos. Un blog es información propia, con caracter informativo a la comunidad y puede ser ambas cosas. Al que le mole bien y al que no, ancha es castilla y en su defecto, internet. Además yo que soy muy n00b, me sobran búsquedas para enterarme de todo. Ya voy por el 2010.

    I'm getting foca's powers!

    PD: Al margen de este comentario gracioso si puede serlo, hay que decir que del aire no vive el hombre, así que el que lo "quiera mascao y con la digestión hecha", que pague.

    ResponderEliminar