Saltar la navegación

Comprobación de las contraseñas de Windows

Para comprobar la fortaleza de las contraseñas de los usuarios de un sistema Windows, lo primero que debemos hacer es generar un fichero con las claves, para lo cual debemos conseguir los dos ficheros donde guarda Windows las contraseñas:

En Windows XP (algoritmo de cifrado LM):

  • C:\WINDOWS\system32\config\system
  • C:\WINDOWS\system32\config\SAM

En Windows 7 (algoritmo de cifrado NTLM):

  • C:\Windows\System32\config\SYSTEM
  • C:\Windows\System32\config\SAM

Los dos ficheros anteriores debemos fusionarlos en un único fichero de contraseñas con el comando samdump2, el cual instalaremos si no lo está:

# aptitude install samdump2

Suponiendo que hemos colocado los dos ficheros anteriores en el directorio de trabajo, en el caso de Windows XP ejecutamos lo siguiente:

# samdump2 -o claves system SAM

y para chequear la fortaleza de las claves:

# john claves

En el caso de Windows 7, al utilizar NTLM, no podemos hacer lo mismo con la versión libre de JtR, es necesario instalar la versión Jumbo, para lo cual hay que descargarse, en su última versión, los ficheros fuentes y compilarlos. Los pasos a seguir son:

  1. Instalar el paquete libssl-dev.
# aptitude install libssl-dev
  1. Descomprimir los fuentes.
  2. Desde el directorio src ejecutar:
# ./configure 
  1. Desde el mismo directorio ejecutar lo siguiente para compilar el código fuente, lo cual puede llevar algunos minutos (si queremos ver cómo progresa la compilación eliminar la opción -s):
# make clean && make -s
  1. Ejecutar john desde la carpeta run:
# ./john 
John the Ripper password cracker, version 1.8.0-jumbo-1_omp [linux-gnu 64-bit AVX-autoconf]
Copyright (c) 1996-2014 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
--single[=SECTION]        "single crack" mode
--wordlist[=FILE] --stdin wordlist mode, read words from FILE or stdin
                  --pipe  like --stdin, but bulk reads, and allows rules
--loopback[=FILE]         like --wordlist, but fetch words from a .pot file
--dupe-suppression        suppress all dupes in wordlist (and force preload)
--format=NAME             force hash type NAME: 7z AFS agilekeychain aix-smd5
                          aix-ssha1 aix-ssha256 aix-ssha512 asa-md5 bcrypt
                          bfegg Bitcoin blackberry-es10 Blockchain bsdicrypt
                          chap Citrix_NS10 Clipperz cloudkeychain cq CRC32
                          crypt dahua descrypt Django django-scrypt dmd5 dmg
                          dominosec dragonfly3-32 dragonfly3-64 dragonfly4-32
                          dragonfly4-64 Drupal7 dummy dynamic_n eCryptfs EFS
                          eigrp EncFS EPI EPiServer fde FormSpring Fortigate
                          gost gpg HAVAL-128-4 HAVAL-256-3 hdaa HMAC-MD5
                          HMAC-SHA1 HMAC-SHA224 HMAC-SHA256 HMAC-SHA384
                          HMAC-SHA512 hMailServer hsrp IKE ipb2 KeePass
                          keychain keyring keystore known_hosts krb4 krb5
                          krb5-18 krb5pa-md5 krb5pa-sha1 kwallet LastPass LM
                          lotus5 lotus85 LUKS MD2 md4-gen md5crypt md5ns mdc2
                          MediaWiki MongoDB Mozilla mscash mscash2 MSCHAPv2
                          mschapv2-naive mssql mssql05 mssql12 mysql mysql-sha1
                          mysqlna net-md5 net-sha1 nethalflm netlm netlmv2
                          netntlm netntlm-naive netntlmv2 nk nsldap NT nt2
                          o5logon ODF Office oldoffice OpenBSD-SoftRAID
                          openssl-enc OpenVMS oracle oracle11 osc Panama
                          PBKDF2-HMAC-SHA1 PBKDF2-HMAC-SHA256
                          PBKDF2-HMAC-SHA512 PDF PFX phpass PHPS pix-md5 PKZIP
                          po postgres PST PuTTY pwsafe RACF RAdmin RAKP rar
                          RAR5 Raw-Blake2 Raw-Keccak Raw-Keccak-256 Raw-MD4
                          Raw-MD5 Raw-MD5u Raw-SHA Raw-SHA1 Raw-SHA1-Linkedin
                          Raw-SHA1-ng Raw-SHA224 Raw-SHA256 Raw-SHA256-ng
                          Raw-SHA384 Raw-SHA512 Raw-SHA512-ng ripemd-128
                          ripemd-160 rsvp Salted-SHA1 sapb sapg scrypt sha1-gen
                          sha1crypt sha256crypt sha512crypt Siemens-S7 SIP
                          skein-256 skein-512 skey Snefru-128 Snefru-256 SSH
                          SSH-ng SSHA512 STRIP SunMD5 sxc Sybase-PROP sybasease
                          tc_aes_xts tc_ripemd160 tc_sha512 tc_whirlpool
                          tcp-md5 Tiger tripcode VNC vtp wbb3 whirlpool
                          whirlpool0 whirlpool1 WoWSRP wpapsk xsha xsha512 ZIP

Vemos que esta versión puede trabajar con muchos más algoritmos de cifrado, entre ellos el nt2, que es el que se necesita en este caso.

Ahora la forma de ejecutar el comando john desde el directorio run sería así:

# ./john --format=nt2 directorio/claves