Modificar cuentas locales de Windows con Fedora y chntpw

Recientemente me encontré con un problema en el trabajo en el que la PC con Windows 10 de un cliente perdió la confianza en el dominio. El usuario es un ejecutivo y el obstáculo de su computadora puede afectar las tareas de misión crítica en tiempo real. Me dio 30 minutos para resolver el problema mientras asistía a una reunión.

No hace falta decir que me he encontrado con este problema muchas veces en mi carrera. Es una solución fácil usando los medios de instalación de Windows 7/8/10 para restablecer la contraseña de administrador, eliminar la PC del dominio y volver a unirla. Desafortunadamente no funcionó esta vez. Después de 20 minutos de recorrer la red y escanear los documentos de Microsoft sin éxito, recurrí a mi máquina de desarrollo que ejecutaba Fedora con la esperanza de encontrar una solución.

Con la búsqueda dnf encontré una utilidad llamada chntpw :

                      $ dnf search windows | grep password
                    

Según el resumen, chntpw “cambiará las contraseñas en los archivos SAM de Windows”.

Poco sabía en ese momento que había más en esta utilidad de lo que se explica en el resumen. Por lo tanto, este artículo repasará los pasos que usé para restablecer con éxito una contraseña de usuario local de Windows usando chntpw y un Fedora Estación de trabajo USB de arranque en vivo. El artículo también cubrirá algunas de las funciones de chntpw utilizadas para la administración básica de usuarios.

Instalación y configuración

Si la PC puede conectarse a Internet después de iniciar los medios en vivo, instale chntpw desde el oficial Fedora repositorio con:

                      $ sudo dnf install chntpw
                    

Si no puede acceder a Internet, ¡no se preocupe! Fedora El medio de arranque de Workstation Live tiene todas las dependencias instaladas de inmediato, por lo que todo lo que necesitamos es el paquete. Puede encontrar las compilaciones para su Fedora versión de la Fedora Koji del proyecto sitio. Puede usar otra computadora para descargar la utilidad y usar una memoria USB u otra forma de medio para copiar el paquete.

En primer lugar, tenemos que crear el Fedora Memoria USB en vivo. Si necesitas instrucciones, el artículo sobre Cómo hacer un Fedora La memoria USB es una gran referencia.

Una vez que se crea la clave, apague la PC con Windows, inserte la memoria USB si la clave USB se creó en otra computadora y encienda la PC; asegúrese de iniciar desde la unidad USB. Una vez que se inicien los medios en vivo, seleccione “Probar Fedora” y abra la aplicación Terminal.

Además, necesitamos montar la unidad de Windows para acceder a los archivos. Enter el siguiente comando para ver todas las particiones de la unidad con un sistema de archivos NTFS:

                      $ sudo blkid | grep ntfs
                    

La mayoría de los discos duros se asignan a /dev/sdaX, donde X es el número de partición; las unidades virtuales se pueden asignar a /dev/vdX, y algunas unidades más nuevas (como SSD) usan /dev/nvmeX. Para esto example la unidad de Windows C está asignada a /dev/sda2. Para montar la unidad ingrese:

                      $ sudo mount /dev/sda2 /mnt
                    

Fedora Workstation contiene los paquetes ntfs-3g y ntfsprogs listos para usar. Si está usando un giro que no tiene NTFS funcionando, puede instalar estos dos paquetes desde el sitio web oficial. Fedora repositorio con:

                      $ sudo dnf install ntfs-3g ntfsprogs
                    

Una vez que la unidad esté montada, navegue hasta la ubicación del archivo SAM y verifique que esté allí:

                      $ cd /mnt/Windows/System32/config
                      
$ ls | grep SAM
SAM
SAM.LOG1
SAM.LOG2

Borrar o restablecer una contraseña

Ahora es el momento de ponerse a trabajar. La bandera de ayuda -h proporciona todo lo que necesitamos saber sobre esta utilidad y cómo usarla:

                      $ chntpw -h
                      
chntpw: change password of a user in a Windows SAM file,
or invoke registry editor. Should handle both 32 and 64 bit windows and
all version from NT3.x to Win8.1
chntpw [OPTIONS] [systemfile] [securityfile] [otherreghive] […]
-h This message
-u Username or RID (0x3e9 for example) to interactively edit
-l list all users in SAM file and exit
-i Interactive Menu system
-e Registry editor. Now with full write support!
-d Enter buffer debugger instead (hex editor),
-v Be a little more verbose (for debuging)
-L For scripts, write names of changed files to /tmp/changed
-N No allocation mode. Only same length overwrites possible (very safe mode)
-E No expand mode, do not expand hive file (safe mode)

Usernames can be given as name or RID (in hex with 0x first)
See readme file on how to get to the registry files, and what they are.
Source/binary freely distributable under GPL v2 license. See README for details.
NOTE: This program is somewhat hackish! You are on your own!

Utilizar el -l parámetro para mostrar una lista de usuarios que lee del archivo SAM:

                      $ sudo chntpw -l SAM
                      
chntpw version 1.00 140201, (c) Petter N Hagen
Hive name (from header): <SystemRootSystem32ConfigSAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c
File size 65536 [10000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 346/37816 blocks/bytes, unused: 23/7016 blocks/bytes.

| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator | ADMIN | dis/lock |
| 01f7 | DefaultAccount | | dis/lock |
| 03e8 | defaultuser0 | | dis/lock |
| 01f5 | Guest | | dis/lock |
| 03ea | sysadm | ADMIN | |
| 01f8 | WDAGUtilityAccount | | dis/lock |
| 03e9 | WinUser | | |

Ahora que tenemos una lista de usuarios de Windows, podemos editar la cuenta. Utilizar el -tu seguido del nombre de usuario y el nombre del archivo SAM. Para esto exampleedite la cuenta sysadm:

                      $ sudo chntpw -u sysadm SAM
                      
chntpw version 1.00 140201, (c) Petter N Hagen
Hive name (from header): <SystemRootSystem32ConfigSAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c
File size 65536 [10000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 346/37816 blocks/bytes, unused: 23/7016 blocks/bytes.

================= USER EDIT ====================

RID : 1002 [03ea]
Username: sysadm
fullname: SysADM
comment :
homedir :

00000220 = Administrators (which has 2 members)

Account bits: 0x0010 =
[ ] Disabled | [ ] Homedir req. | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account | [ ] NMS account |
[ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act |
[ ] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08) |
[ ] (unknown 0x10) | [ ] (unknown 0x20) | [ ] (unknown 0x40) |

Failed login count: 0, while max tries is: 0
Total login count: 0

- - - User Edit Menu:
1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
3 - Promote user (make user an administrator)
4 - Add user to a group
5 - Remove user from a group
q - Quit editing user, back to user select
Select: [q] >

Para borrar la contraseña presione 1 y ENTRAR. Si tiene éxito, verá el siguiente mensaje:

                      ...
                      
Select: [q] > 1
Password cleared!
================= USER EDIT ====================

RID : 1002 [03ea]
Username: sysadm
fullname: SysADM
comment :
homedir :

00000220 = Administrators (which has 2 members)

Account bits: 0x0010 =
[ ] Disabled | [ ] Homedir req. | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account | [ ] NMS account |
[ ] Domain trust ac | [ ] Wks trust act. | [ ] Srv trust act |
[ ] Pwd don't expir | [ ] Auto lockout | [ ] (unknown 0x08) |
[ ] (unknown 0x10) | [ ] (unknown 0x20) | [ ] (unknown 0x40) |

Failed login count: 0, while max tries is: 0
Total login count: 0
** No NT MD4 hash found. This user probably has a BLANK password!
** No LANMAN hash found either. Try login with no password!
...

Verifique el cambio repitiendo:

                      $ sudo chntpw -l SAM
                      
chntpw version 1.00 140201, (c) Petter N Hagen
Hive name (from header): <SystemRootSystem32ConfigSAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c
File size 65536 [10000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 346/37816 blocks/bytes, unused: 23/7016 blocks/bytes.

| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator | ADMIN | dis/lock |
| 01f7 | DefaultAccount | | dis/lock |
| 03e8 | defaultuser0 | | dis/lock |
| 01f5 | Guest | | dis/lock |
| 03ea | sysadm | ADMIN | *BLANK* |
| 01f8 | WDAGUtilityAccount | | dis/lock |
| 03e9 | WinUser | | |

...

¿La cerradura?” La columna ahora muestra EN BLANCO para el usuario sysadm. Escribe q para salir y y para escribir los cambios en el archivo SAM. Reinicie la máquina en Windows e inicie sesión con la cuenta (en este caso, sysadm) sin contraseña.

Características

Además, chntpw puede realizar tareas administrativas básicas de usuario de Windows. Tiene la capacidad de promover al usuario al grupo de administradores, desbloquear cuentas, ver y modificar las membresías del grupo y editar el registro.

El menú interactivo

chntpw tiene un menú interactivo fácil de usar para guiarlo a través del proceso. Utilizar el -I parámetro para lanzar el menú interactivo:

                      $ chntpw -i SAM
                      
chntpw version 1.00 140201, (c) Petter N Hagen
Hive name (from header): <SystemRootSystem32ConfigSAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c
File size 65536 [10000] bytes, containing 7 pages (+ 1 headerpage)
Used for data: 346/37816 blocks/bytes, unused: 23/7016 blocks/bytes.

<>========<> chntpw Main Interactive Menu <>========<>
Loaded hives:
1 - Edit user data and passwords
2 - List groups
- - -
9 - Registry editor, now with full write support!
q - Quit (you will be asked if there is something to save)

Grupos y pertenencia a cuentas

Para mostrar una lista de grupos y ver sus miembros, seleccione la opción 2 del menú interactivo:

                      ...
                      
What to do? [1] -> 2
Also list group members? [n] y
=== Group # 220 : Administrators
0 | 01f4 | Administrator |
1 | 03ea | sysadm |
=== Group # 221 : Users
0 | 0004 | NT AUTHORITYINTERACTIVE |
1 | 000b | NT AUTHORITYAuthenticated Users |
2 | 03e8 | defaultuser0 |
3 | 03e9 | WinUser |
=== Group # 222 : Guests
0 | 01f5 | Guest |
=== Group # 223 : Power Users
...
=== Group # 247 : Device Owners

Adición del usuario al grupo de administradores

Para elevar al usuario con privilegios administrativos presione 1 para editar la cuenta, entonces 3 para promocionar al usuario:

                      ...
                      
Select: [q] > 3

=== PROMOTE USER
Will add the user to the administrator group (0x220)
and to the users group (0x221). That should usually be
what is needed to log in and get administrator rights.
Also, remove the user from the guest group (0x222), since
it may forbid logins.

(To add or remove user from other groups, please other menu selections)

Note: You may get some errors if the user is already member of some
of these groups, but that is no problem.

Do it? (y/n) [n] : y

Adding to 0x220 (Administrators) …
sam_put_user_grpids: success exit
Adding to 0x221 (Users) …
sam_put_user_grpids: success exit
Removing from 0x222 (Guests) …
remove_user_from_grp: NOTE: group not in users list of groups, may mean user not member at all. Safe. Continuing.
remove_user_from_grp: NOTE: user not in groups list of users, may mean user was not member at all. Does not matter, continuing.
sam_put_user_grpids: success exit

Promotion DONE!

Edición del registro de Windows

Ciertamente, la característica más notable, así como la más poderosa, de chntpw es la capacidad de editar el registro y escribir en él. Seleccione 9 del menú interactivo:

                      ...
                      
What to do? [1] -> 9
Simple registry editor. ? for help.

> ?
Simple registry editor:
hive [] - list loaded hives or switch to hive number
cd - change current key
ls | dir [] - show subkeys & values,
cat | type - show key value
dpi - show decoded DigitalProductId value
hex - hexdump of value data
ck [] - Show keys class data, if it has any
nk - add key
dk - delete key (must be empty)
ed - Edit value
nv - Add value
dv - Delete value
delallv - Delete all values in current key
rdel - Recursively delete key & subkeys
ek - export key to (Windows .reg file format)
debug - enter buffer hexeditor
st [] - debug function: show struct info
q - quit

Encontrar ayuda

Como vimos anteriormente, la -h El parámetro nos permite acceder rápidamente a una guía de referencia de las opciones disponibles con chntpw. La página del manual contiene información detallada y se puede acceder con:

                      $ man chntpw
                    

Además, si está interesado en un enfoque más práctico, active una máquina virtual. Servidor Windows 2019 tiene un período de evaluación de 180 días, y Servidor Windows Hyper-V 2019 es ilimitado La creación de una máquina virtual invitada de Windows proporcionará los conceptos básicos para modificar la cuenta de administrador para realizar pruebas y aprender. Para obtener ayuda con la creación rápida de una máquina virtual invitada, consulte el artículo Primeros pasos con la virtualización en Gnome Boxes.

Conclusión

chntpw es una joya escondida tanto para los administradores de Linux como para los profesionales de TI. Si bien es una herramienta ingeniosa para restablecer rápidamente las contraseñas de las cuentas de Windows, también se puede usar para solucionar problemas y modificar las cuentas locales de Windows con una sensación sensata que ofrece. Sin embargo, esta es quizás solo una de esas herramientas para resolver el problema. Si ha experimentado este problema y tiene una solución alternativa, no dude en ponerlo en los comentarios a continuación.

Esta herramienta, como muchas otras herramientas de “hackeo”, conlleva una responsabilidad ética. Incluso chntpw afirma:

NOTA: ¡Este programa es un poco pirateado! ¡Estas por tu cuenta!

Al usar dichos programas, debemos recordar los tres edictos descritos en el mensaje que se muestra al ejecutar sudo por primera vez:

  1. Respeta la privacidad de los demás.
  2. Piensa antes de escribir.
  3. Con un gran poder viene una gran responsabilidad.

Foto por silas köhler en Unsplash ,

Related Posts