11 noviembre 2011

Hoy vamos a hablar de estas funcionalidades de Windows que, bien aprovechadas y dándoles un nuevo enfoque, pueden ofrecernos un método infalible para tareas que anteriormente supondrían utilizar técnicas más engorrosas.

Durante un pentesting típico, uno de los objetivos principales es el de poder acceder, por lo menos, a un sistema, y conseguir credenciales válidas con privilegios máximos que nos permitan comprometer el sistema e incluso otros de su entorno, a los cuales directamente no podríamos acceder en primera instancia. Si bien hasta hace un tiempo, el conseguir los hashes de un Administrador de un sistema Windows hacían que el siguiente paso fuese crackearlas y obtener la correspondiente contraseña, métodos como el pass-the-hash nos hacen poder quitar una barrera sobretodo temporal (el crackeo puede llevarnos segundos, minutos, horas, meses, décadas...), pudiendo autenticarnos en otros sistemas y realizar nuevos ataques utilizando directamente dichos hashes.

Para obtener los hashes, siempre que se tenía acceso físico al sistema, teníamos que recurrir a distribuciones del tipo Backtrack, arrancar la versión live-cd, montar el sistema de ficheros donde se encuentra la instalación de Windows, dirigirnos a la carpeta WINDOWS\system32\config, y ahí recuperar los ficheros system y SAM para seguidamente, utilizar herramientas bkhive y samdump2, como podréis comprobar en manuales típicos de cracking de contraseñas Windows. Si intentamos coger dichos ficheros SYSTEM y SAM de un sistema al que tengamos acceso y en ejecución para volcar los hashes de manera offline en otro equipo, aún siendo usuarios con privilegios máximos en el equipo local, obviamente el sistema operativo nos mostrará un error de que los ficheros se encuentran bloqueados por estar siendo utilizados, imposibilitando su copia a un dispositivo externo:


Pero esto se acabó. Aprovecharemos el Servicio de Instantáneas de VolúmenVolume Shadow Copy Service (VSS), tecnología proporcionada por la propia Microsoft, cuya definición paso a describir, directamente sacada de la propia Wikipedia:

"El Servicio de Instantáneas de Volúmen (Volume Snapshot Service o Volume Shadow Copy Service o VSS), es una tecnología incluída en Microsoft Windows que permite hacer copias de respaldo tanto manuales como automáticas, también llamadas Instantáneas de datos, incluso si algunos de los archivos se encuentran bloqueados por estar en uso, en un volumen específico a una hora específica, en intervalos regulares."

Nada más que decir ¿verdad?. Casualmente, hace pocos días, Tim Tomes y Mark Baggett dieron una charla en la Hack3rCon II llamada "Lurking the Shadows", en la que, aprovechando esta tecnología, explicaban diferentes maneras de poder esconder malware en sistemas Windows, y también se comentó la posibilidad de acceder a ficheros que se suponían bloqueados por el sistema operativo. Mediante VSS, se crean "espejos" del disco duro incluso encontrándose en un sistema en ejecución, de una forma transparente para el usuario y accesible. Tim y Mark crearon un simple script en Visual Basic, VSSOwn.vbs, para interactuar con este servicio, que permite la creación de volúmenes, listado, eliminación y obtención de información en sistemas Windows. Se está trabajando para ser compatible al completo con otras versiones.

Copiemos el archivo y ejecutémoslo para ver sus opciones:


Queda bastante claro todo su potencial. Procedamos por tanto a poner en funcionamiento el servicio (con la opción /start, puede que ya se esté ejecutando) y a continuación, comprobamos con /status que el servicio se encuentra en ejecución y crearemos nuestra primera copia shadow (con la función /create) del disco duro C:




Para comprobar que la copia ha sido creada, ejecutamos la función /list para listar las copias presentes en el sistema:




El objeto lo podremos encontrar, para el ejemplo de la captura superior, en el dispositivo con ruta 

[*] Device object: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1

El script deja montar esta copia Shadow en una unidad, mediante la aplicación mklink. Como no se encuentra presente en una instalación nativa de Windows 2003 Server (sólo en Windows Vista y 2008), realizaremos el copiado de los ficheros SYSTEM y SAM directamente indicando como primer parámetro, el objeto enumerado anteriormente, seguida de la ruta directa a los ficheros dentro del directorio config, con los siguientes comandos:
  • copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\WINDOWS\system32\config\system .
  • copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\WINDOWS\system32\config\SAM .

¡Conseguido! Ya tenemos los ficheros system y SAM del sistema operativo en ejecución en nuestro Escritorio, para cómodamente copiarlos a un pendrive y así conseguir los hashes mediante bkhive y samdump2. La gran ventaja de este sistema es que la herramienta no es detectada por ningún antivirus, no como los típicos volcadores de hashes de los que disponemos hoy en día.

[+] Safely Dumping Hashes from Live Domain Controllers (pauldotcom.com)
[+] Tim Tomes and Mark Baggett Lurking in the Shadows - Hack3rcon II (video)

7 comments :

Invitado dijo...

Se ha probado en 2008?

Madrikeka dijo...

Que recuerdos me acabáis de traer, hará algo mas de 3 años, hice mi primer cutre-manual.....

y efectivamente, fueron sobre las shadow copy!! e incluso lo publicaron en un forillo de tecnología y redes!! la verdad que las conocí cuando llevaba aproximadamente 2 años en este mundillo, y en aquel momento me fascinaron....ahora veo que tienen otras utilidades XD

Security By Default dijo...

Personalmente no se ha probado, pero si alguien nos lo puede confirmar, ¡adelante!

Yo creo que debería funcionar, aunque quizás alguna función del script no vaya bien.

Silverhack dijo...

En 2K8/Vista/7/XP funciona también este tipo de técnicas, incluso si no se encuentra el servicio VSS activo. De hecho lo puedes automatizar para todos los S.O. Microsoft utilizando scripting (VBS, Batch, etc...)

Silverhack dijo...

En 2K8 ya se puede "mover" y/o copiar el fichero NTDS.DIT a través de la utilidad ntdsutil sin tener que utilizar meterpreter, ni psexec...
http://technet.microsoft.com/en-us/library/cc753609(WS.10).aspx

silverhack dijo...

Guachi!! Buen artículo! Pero esto ya se puede hacer desde hace muuuucho tiempo... Y con BATCH!! (Más VSS) ;-)
http://blogs.msdn.com/b/adioltean/archive/2005/01/05/346793.aspx

Precisamente estoy preparando algo parecido a esto para una charlita en la rooted! Grande coincidencia! ;-)
Salu2

Security By Default dijo...

Si, y lo mejor de todo, es que es un método limpio, sencillo y fácilmente portable :) Lo que más curioso me resultaba es que no me sonaba ver a alguien hablar de este tema para recoger estos ficheros en ningún otro sitio, así que me pareció un buen "tip" a tener en cuenta por si era necesario utilizarlo en un futuro.