No debería ser así, pero es más común de lo que imaginamos ver en entornos corporativos y de hogar algo similar a esta captura al intentar iniciar sesión con algún usuario:
En este caso, no me estoy refiriendo exactamente a que se haya digitado mal la contraseña, sino que por X o Y razón, ya no podemos acceder al sistema operativo y las razones van desde olvido, hasta que Windows no acepta la contraseña, así esta sea una válida. La pregunta que surge en los foros después suele ser: ¿Cómo recupero el acceso a mi cuenta?
Hay quienes tienen suerte de poder ingresar con otra cuenta, pero muchas veces se trata de alguna con privilegios estándar, así que poco o nada se consigue.
En este artículo, y con el único propósito de recuperar nuestro acceso a Windows. Mostraré cómo podemos sacar ventaja de un comportamiento del sistema operativo, y de Windows PE para cambiar la contraseña de cualquier usuario, aún cuando no podemos ni siquiera iniciar sesión con otro.
*Nota: El procedimiento que pasaré a describir, funciona exactamente igual desde Windows Vista hasta Windows 8.1.
Requerimientos
– Necesitamos un equipo adicional (Lo llamaremos técnico) donde podamos descargar e instalar el ADK para Windows 8/8.1.
La versión para Windows 8, la pueden descargar desde aquí:
http://www.microsoft.com/es-es/download/details.aspx?id=30652
La versión para Windows 8.1, la pueden descargar desde aquí:
http://www.microsoft.com/es-co/download/details.aspx?id=39982
– Un dispositivo USB o unidad DVD que se pueda preparar para copiar los archivos de Windows PE.
– Por supuesto, el equipo donde no se puede iniciar sesión, sin importar la razón.
La “puerta” de Windows
Internamente, cada que se lanza un proceso desde Windows, que por supuesto corresponde a alguna aplicación, como por ejemplo Notepad.exe para el Bloc de notas, el sistema hará una consulta en la sub-clave Image File Execution Options, que está en la clave:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion
Lo que buscará, será el nombre exacto del proceso (Sin ninguna ruta), y esto sucede con cualquier proceso, y lo podemos ver claramente si utilizamos Process Monitor y el ejemplo del Bloc de Notas:
Si la sub-clave existe, entonces procederá a consultar que exista un valor denominado Debugger, que se encargará de contener el proceso que Windows utilizará para remplazar el real:
Este comportamiento es bastante viejo en Windows, y se creó con el fin de lanzar Depuradores en vez de la aplicación para analizar por ejemplo, el código de inicio.
Hasta aquí no hay mucho para considerarlo extraño, pero si juntamos esto, con el hecho que desde el Escritorio de Inicio de sesión, que lo maneja el Winlogon y que se ejecuta bajo el usuario de System desde hace ya tiempo nos da la posibilidad de lanzar algo llamado Sticky Keys, creado para que combinaciones que se hagan con teclas como CTRL, ALT, SHIFT se puedan presionar una sola a la vez y no todas al tiempo, encontramos la oportunidad de oro para “engañar” a Windows e iniciar un proceso más poderoso como cmd.exe cuando se llame Sticky Keys desde la Pantalla de Inicio de sesión presionando cinco (5) veces la tecla SHIFT y tener privilegios totales.
*Nota: Espero poder detallar –cuando el conocimiento me lo permita- temas de Escritorios, y Winlogon en un futuro no muy lejano.
Básicamente, lo que haremos será crearle una clave en Image File Execution Options con el nombre del proceso padre que lanza el Sticky Keys llamada sethc.exe y crear el valor de Debugger para que se inicie cmd.exe.
Sin embargo, como estamos contando con que no podemos entrar a Windows para poder realizar esta configuración, necesitamos apoyarnos en algo que nos de bastante flexibilidad para modificar el Registro de Windows de forma offline y me refiero por supuesto a un Windows Pe. De esta forma, contemplando el escenario más difícil que es no poder ingresar ni siquiera, crearemos la clave y su respectivo valor desde Windows PE y reiniciaremos el sistema operativo para luego jugar con Net User y cambiar la contraseña a cualquier usuario, o crear uno nuevo que pertenezca al grupo de Administradores.
Creando el Windows PE
Volviendo a los pasos entonces, desde el Equipo técnico donde instalamos el ADK para Windows 8/8.1, buscamos desde la Pantalla de Inicio Deployment and Imaging Tools Environment, hacemos clic derecho y ejecutamos el símbolo como Administrador.
Digitamos: Copype.cmd <Arquitectura> C:WinPE
Donde <Arquitectura> corresponde a la que tenga nuestro sistema operativo, es decir x86 para 32 bits o AMD64 para 64 bits. En mi caso, que es 64 bits, el comando quedaría:
Copype.cmd AMD64 C:WinPE
Se nos creará una carpeta en la raíz de la partición del sistema operativo (C:) con el nombre de WinPE.
Lo que tenemos que hacer ahora es preparar un dispositivo USB tal cual fuéramos a instalar Windows desde él, y grabar los archivos que están dentro de la carpeta C:WinPE con el objetivo de iniciar el equipo afectado desde allí.
Otra forma, es crear una imagen .ISO y grabarla en un CD/DVD. Para esto, tendríamos que crear la ISO ejecutando desde el Símbolo:
MakeWinPeMedia /ISO C:WinPE C:WinPE.iso
Iniciamos el equipo donde tenemos problemas con la contraseña desde el Windows PE, sea a través de USB o con un medio CD/DVD.
Desde el Símbolo del Sistema que se ejecuta, lanzamos Regedit.exe para abrir el Editor:
Desde el Editor de Registro, vamos a montar toda la clave correspondiente a HKEY_LOCAL_MACHINESoftware que se encuentra guardada como un Hive en la partición del sistema operativo local (no el de WinPE), específicamente en el directorio de C:WindowsSystem32Config. Su nombre es SOFTWARE.DAT
Para esto, nos situamos en la clave de HKEY_LOCAL_MACHINE y hacemos clic en el menú File > Load Hive…
Navegamos hasta el directorio C:WindowsSystem32Config, seleccionamos SOFTWARE y clic en el botón Open:
En la ventana de Load Hive, indicamos cualquier nombre, por ejemplo Pass y clic en OK
Ahora, debemos navegar hasta:
HKEY_LOCAL_MACHINEPassMicrosoftWindows NTCurrentVersion
Hacemos clic derecho sobre la sub-clave Image File Execution Options, y seleccionamos Nuevo > Clave
Lo llamamos sethc.exe. Después de esto, nos situamos sobre sethc.exe y en el panel derecho hacemos clic derecho, Nuevo > Valor de Cadena
Debe nombrarse como Debugger y al darle doble clic para editar el contenido, le especificamos: cmd.exe
Con esto listo, nos situamos otra vez sobre la raíz de Pass, que es la sub-clave que contiene el Hive, vamos al menú File y seleccionamos Unload Hive. Si nos pide confirmación, clic en el botón Sí (Yes).
Reiniciamos el sistema cerrando el Editor de Registro y el Símbolo del Sistema.
Cambiando la contraseña
Si todo salió bien, los siguientes pasos nos deben salir sin ningún tipo de problemas:
1. En la pantalla de Inicio de Sesión, presionamos varias veces la tecla SHIFT (Alrededor de 5 veces seguidas) y nos debe lanzar un símbolo del sistema, que si verificamos, estará bajo el usuario System:
*Nota: Debemos presionar la tecla SHIFT de una forma rápida.
2. Desde el Símbolo del Sistema, cambiamos la contraseña del usuario que deseemos, para mi caso Andy ejecutando: Net User <Usuario> <Contraseña>
Donde <Usuario> corresponde a la cuenta con la que no podemos inicar sesión, y <Contraseña> a las nuevas credenciales. Por ejemplo, yo estableceré la nueva contraseña como Passw0rd al usuario Andy, así que mi comando quedaría:
Net User Andy Passw0rd
Windows nos debe notificar que el comando se completó satisfactoriamente (Internamente, Windows devuelve el código 0, que contiene el mensaje genérico).
Una vez pase esto, cerramos la consola y simplemente digitamos la nueva contraseña para posteriormente iniciar sesión otra vez:
¿Fácil, no les parece? Será nuestra decisión quitar la sub-clave de sethc.exe generada o dejarla ahí por si en un futuro la necesitamos.
Espero les sea de utilidad.
PD. No olviden seguirme en Twitter: http://www.twitter.com/secalderonr
Checho
Como ha sido costumbre desde años atrás, cada que me enfrento a un problema que resulta ser de lo más