A veces, en el transcurso de una auditoria de seguridad de alguna red corporativa o, simplemente, para conseguir información de un dominio, es preciso disponer de nombres de usuario válidos con los que poder acceder a los diferentes sistemas y servidores que se encuentren en la plataforma analizada. Existen diferentes métodos para obtener usuarios válidos como, por ejemplo, probar con los típicos nombres por defecto, es decir, root, administrador, admin, administrator, backup, etc. Otra forma es, en una red Windows, conectar vía Null Sessions, y si el servidor está mal configurado, se pueden conseguir todos los nombres de usuario del dominio local, permisos, grupos, etc. Incluso se pueden buscar usuarios en los metadatos de aquellas imágenes y documentos en formato Word y/o PDF de una determinada organización que se encuentren por Internet. Otra de las formas, muy poco utilizada, es servirse del servidor de correo electrónico que está presente en casi cualquier red y que es accesible incluso desde Internet a través de SMTP.
SMTP es el acrónimo de Protocolo para la Transferencia Simple de Correo (Simple Mail Transfer Protocol) y se utiliza para el intercambio de mensajes de correo electrónico entre dispositivos. SMTP usa habitualmente el puerto 25 TCP en el servidor para establecer la comunicación entre equipos y permitir dicho intercambio de mensajes. En numerosas organizaciones, la dirección de correo electrónico menos el dominio se corresponde con el nombre de usuario dentro de la red interna, sobretodo en redes Windows donde el servidor de Correo es Microsoft Exchange, es decir:
la dirección de correo jperez@hacktimes.com indica que el nombre de usuario con acceso a los sistemas internos de hacktimes puede ser jperez.
Los Servidores SMTP necesitan estar conectados con el mundo en Internet y abiertos para recibir mensajes de cualquier otro servidor de correo (relaciones de confianza entre servidores y restricciones aparte). Para verificar su presencia, accesibilidad y funcionamiento basta una conexión mediante telnet o netcat al servidor:
telnet smtp.hacktimes.com 25
220 Servidor ESMTP de Hacktimes.com
...El servidor está accesible y configurado en el puerto 25.
Con Nmap también se puede verificar la presencia del servidor de correo y, además, utilizando los diferentes scripts que trae para servidores SMTP, se puede enumerar las opciones permitidas en el servidor (VRFY, EXPN, RCPT, etc.) así como mostrar su banner que proporciona información del software utilizado, la versión, etc.
nmap -sS -P0 -A -p 25 smtp.hacktimes.com
Starting Nmap 6.25 ( http://nmap.org ) at 2013-02-04 12:03 Hora estßndar romance
Stats: 0:00:47 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
Nmap scan report for smtp.hacktimes.com (192.168.1.26)
Host is up (0.051s latency).
PORT STATE SERVICE VERSION
25/tcp open smtp
| smtp-commands: mail.hacktimes.com Hello [188.19.238.134], SIZE 12582912, PIPELINING, DSN, ENHANCEDSTATUSCODES, X-ANONYMOUSTLS, AUTH LOGIN, X-EXPS NTLM, 8BITMIME,BINARYMIME, CHUNKING, XEXCH50,
|_ This server supports the following commands: HELO EHLO STARTTLS VRFY RCPT DATA RSET MAIL QUIT HELP AUTH BDAT
...Existen diversas aplicaciones para encontrar direcciones de correo por Internet como, por ejemplo, theHarvester de la gente de Edge-Security (http://www.edge-security.com/theharvester.php) que está programado en Python y permite, entre otras cosas, obtener cuentas de correo electrónico de un dominio dado y que se encuentren en Google, Bing, Linkedin, etc.
theHarvester.py -d hacktimes.com -l 100 -b google (para encontrar cuentas de hacktimes.com a través del buscador google, opción -b).
*******************************************
*TheHarvester Ver. 2.2 *
*Coded by Christian Martorella *
*Edge-Security Research *
*cmartorella@edge-security.com *
*******************************************
[-] Searching in Google:
Searching 0 results...
Searching 100 results...
[+] Emails found:
------------------
test1@hacktimes.com
test2@hacktimes.com
...El problema de theHarvester es que se basa en encontrar cuentas que se sabe que existen porque han publicado algo en Internet, y los buscadores como Google las han indexado y las muestran como resultados de sus búsquedas. Para solucionar dicho inconveniente existen herramientas como smtp-user-enum de la gente de Pentestmonkey (http://pentestmonkey.net/tools/user-enumeration/smtp-user-enum) y que no es más que un script escrito en perl que, conectándose a un servidor de correo y mediante un diccionario de nombres, proporciona un número de cuentas de correo válidas y posibles nombres de usuario con acceso a los diferentes sistemas corporativos. Smtp-users-enum.pl está presente en la distribución Linux de Seguridad Backtrack (http://www.backtrack-linux.org/).
Smtp-user-enum permite conectarse a un servidor de correo determinado y, mediante los métodos VRFY, EXPN o RCPT TO, ir comprobando si los nombres de usuario que se le han indicado existen en ese servidor de correo. Un ejemplo práctico contra el servidor de correo de hacktimes y con una lista de los 200 nombres más comunes de hombre y mujer, sería el siguiente:
Cómo se ha visto anteriormente en el resultado de Nmap, el comando VRFY está permitido en el servidor de correo de hacktimes. Los nombres de usuario que se quiere comprobar si existen (200) se han metido en un fichero de texto denominado "nombres.txt".
smtp-user-enum.pl -M VRFY -U nombres.txt -t smtp.hacktimes.com
Starting smtp-user-enum v1.2 ( http://pentestmonkey.net/tools/smtp-user-enum )
----------------------------------------------------------
| Scan Information |
----------------------------------------------------------
Mode ..................... VRFY
Worker Processes ......... 5
Usernames file ........... nombres.txt
Target count ............. 1
Username count ........... 200
Target TCP port .......... 25
Query timeout ............ 5 secs
Target domain ............
######## Scan started at Mon Feb 4 12:18:48 2013 #########
smtp.hacktimes.com: Ricardo exists
smtp.hacktimes.com: Marcos exists
...
######## Scan completed at Mon Feb 4 12:45:38 2013 #########
4 results.
200 queries in 233 seconds (0.9 queries / sec)En este caso se han encontrado 4 nombres de usuario en el servidor de prueba de hacktimes.com. Sólo se han buscado nombres de pila pero se podría probar diferentes combinaciones como nombre y apellidos, nombre.apellido, inicial del nombre y apellido, etc. Cabe destacar que cada vez es más difícil, por motivos de seguridad, encontrar servidores de correo con los comandos VRFY y EXPN activados pero, como se ha visto, también se puede utilizar la opción RCPT TO que sí que está disponible en casi todos los servidores.
Una vez obtenidos los nombres de usuario, se puede intentar acceder a algún sistema interno y comprobar si el nombre encontrado existe. Por ejemplo, probando mismo nombre de usuario y contraseña, y observando el error que genera el servidor durante el proceso de autenticación; de esta manera se verifica que del par de credenciales (usuario y contraseña) ya se dispone del 50%: un nombre de usuario válido en la red interna. Si la política de contraseñas aplicada en el dominio Windows o en el servidor en cuestión no es la adecuada, es posible incluso que se haya conseguido acceso al mismo. Otro tema diferente son los permisos de que dispone ese usuario y ahí ya habrá que tirar de elevación de privilegios u otros mecanismos pero de momento ya se dispone de acceso, que es un gran avance.
Más información en otros artículos de hacktimes como:
http://www.hacktimes.com/sam_windows2
http://www.hacktimes.com/contrasenas_de_windows
Otras herramientas similares son los scripts para enumeración de usuarios de Metasploit (/root/modules/auxiliary/scanner/smtp/smtp_enum.rb) y de Nmap (smtp-enum-users.nse) y, también, THC-Hydra (http://thc.org/thc-hydra/) del amigo van Hauser.


Comentarios
Añadir comentario