Descifrando password encriptadas con shadow (md5 + salt)

En Linux las password o claves de los usuarios (incluyendo root) se almacenan en el fichero /etc/shadow, encriptadas y con un salt, que nos complica el descifrado. En pocas palabras una shadow password es un hash del password mas un salt (hashed and salted password).
Un ejemplo de una clave shadow es root:$1$xOqq7NEt$vDOA0jbLcaiRbGsj3ddz30:13911::::::, si la analizamos podemos darnos cuenta de lo siguiente:

  • Lo que nos interesa es solamente root:$1$xOqq7NEt$vDOA0jbLcaiRbGsj3ddz30.
  • Lo que esta antes de ":" corresponde al usuario: root; y lo que sigue es la password.
  • Si descomponemos la password podemos obtener:
  • $1$: Nos indica que corresponde a una encriptacion md5.
  • xOqq7NEt: Es el SALT que se usa para generar el hash del password
  • vDOA0jbLcaiRbGsj3ddz30.: Es el hash salteado de nuestra password.

Si analizamos todos estos datos podemos darnos cuenta que teniendo el salt podemos encriptar una palabra o frase y generar un hash similar al que estaba en el fichero /etc/shadow, por lo que solo nos queda crear un script y tener un diccionario de palabras a mano para empezar a crackear o descifrar las password en shadow.

El comando mkpasswd nos permite generar un password segun un salt especificado.
Ejemplo:

machine:~$ mkpasswd -H md5 miPassword -S DSfdsdaA $1$DSfdsdaA$kOxgZsSAshG4W.dgGp28Y/

He creado un script para hacer mas eficiente y automatiza un poco el proceso.

··· Leer más ···

PRE0

Funcionamiento: Lee palabras desde un fichero y por cada palabra leida genera un hashed and salted password y la compara con los parametros pasados al script.

machine:~$ sh crack.sh DSfdsdaA .NySZJPYFdPr0ETVpMeKx1 wordlist Cracking .NySZJPYFdPr0ETVpMeKx1 ... Attempts: 161597

Password Cracked.
Decrypted password is: test

Descargar script

Comentarios (19)

jcarlosn
Hola!

No sería mas fácil utilizar:

http://www.openwall.com/john/

el archiconocido john the ripper?

Seguro que es muchísimo mas rápido.

Está interesante el script, un saludo!
Zerial
Hola @jcarlosn:
Si, es mucho mas rapido usar john, tiene muchas optimizaciones que hacen que los procesos sean mas rapidos.
Estos codigos los hago muchas veces para entender y dar a conocer como funcionan estas cosas, sabiendo que existen cosas mucho mas optimas y "mejores", no estoy pensando en reinventar la rueda.

saludos!
jcarlosn
Claro, entiendo... está muy interesante este tipo de cosas, ya que mucha gente no sabe como funciona el john, ni nada de esto, y estos scripts lo ilustran muy bien.

Felicidades por el blog, tienes un nuevo lector asiduo :)
deb
Y que pasa con el diccionario de palabras donde se puede conseguir uno o como crearlo
Zerial
@deb a ver si en estos dias publico un diccionario de palabras o quizas un script para generar uno ...

saludos
deb
ok ok :)
Nozelf
publica mi super diccionario de 15gb :P
g3n3tix-_-c0d3
agregen alguien q sepa mucho de md5

g3n3tix-_-c0d3@hotmail.com
Raul
Yo les recomiendo este otro sitio que me funciono mejor en 2 contraseñas que buscaba http://md5.unidadlocal.com
espero les ayude como a mi
Omar
Yo les recomiendo este otro sitio que me funciono mejor en 2 contraseñas que buscaba http://md5.unidadlocal.com
espero les ayude como a mi
juan carlos
saludos amigos_; igual se me perdio la clave....ahora les adjunto el script del shadow...cual es la clave??

root:$1$MFYWdymA$/dgpe.j4a4eIHXniOLNXF0:15401:0:99999:7:::
bin:*:15000:0:99999:7:::
daemon:*:15000:0:99999:7:::
adm:*:15000:0:99999:7:::
lp:*:15000:0:99999:7:::
sync:*:15000:0:99999:7:::
shutdown:*:15000:0:99999:7:::
halt:*:15000:0:99999:7:::
mail:*:15000:0:99999:7:::
news:*:15000:0:99999:7:::
uucp:*:15000:0:99999:7:::
operator:*:15000:0:99999:7:::
games:*:15000:0:99999:7:::
gopher:*:15000:0:99999:7:::
ftp:*:15000:0:99999:7:::
nobody:*:15000:0:99999:7:::
distcache:!!:15000:0:99999:7:::
nscd:!!:15000:0:99999:7:::
vcsa:!!:15000:0:99999:7:::
apache:!!:15000:0:99999:7:::
rpc:!!:15000:0:99999:7:::
mailnull:!!:15000:0:99999:7:::
smmsp:!!:15000:0:99999:7:::
webalizer:!!:15000:0:99999:7:::
dovecot:!!:15000:0:99999:7:::
squid:!!:15000:0:99999:7:::
pcap:!!:15000:0:99999:7:::
ntp:!!:15000:0:99999:7:::
dbus:!!:15000:0:99999:7:::
avahi:!!:15000:0:99999:7:::
rpcuser:!!:15000:0:99999:7:::
nfsnobody:!!:15000:0:99999:7:::
named:!!:15000:0:99999:7:::
hsqldb:!!:15000:0:99999:7:::
sshd:!!:15000:0:99999:7:::
haldaemon:!!:15000:0:99999:7:::
avahi-autoipd:!!:15000:0:99999:7:::
xfs:!!:15000:0:99999:7:::
gdm:!!:15000:0:99999:7:::
ecorae:$1$1/EDS4hX$88Lf8sCeEBV8VQ2yupG6z1:15408:0:99999:7:::
DarkNerk
$1$6enIv6tj$JVSRavpresxXF4mk1Pgpk
Picho
Alguien me puede dar una mano con esta?root:!$1$tyb2aZKt$GIe.1VW3fNJBLOfilQ76L/:15125:0:99999:7:::
Andres
Pueden ayudarme con ésto amigos: OVvjbF8G}#U]KGMU]M$r>X$mKs|j<40)
Matias Colli
Esto es muy útil para entender el funcionamiento de la generación de contraseñas en sistemas GNU/Linux.
Para el caso del usuario que preguntaba como crackear su password, sencillamente debería reemplazar:
ecorae:$1$1/EDS4hX$88Lf8sCeEBV8VQ2yupG6z1:15408:0:99999:7:::
por esto:
ecorae::15408:0:99999:7:::
y la contraseña le quederá en blanco o entrar en modo monousuario (grub -> single).
Si lo que te interesa es realmente hacker contraseñas, deberías utilizar John The Ripper.

Matias Colli
Perito Informático Forense
M.N. A-128
http://estudiopericialinformatico.com
ayudenme con esto porfa
root:yEi3/biyEUF9.:15150::::::
p4trol:e17QhrZlj./sE:14953::::::
cldzev00:U8BEx.BXdpXIE:15196:1:35:15:::
mesfino0:hHvlKG.73YHDg:14900:1:35:15:::
wvilgaf0:TR0YWl8Iuz3M6:15173:1:35:15:::
ora81v:zxxg3E/tLdT56:15148::::::
gesopnun:jhy7AVy2QiR8w:14998::::::
0pegadhr:tjdjrWLID0Bww:15208:1:35:15:::
cpegen1x:HAqd62B9vMuP.:13493::::::
opjdplan:G9/.ZNBjb2/is:14894::::::
eureba:JQ0yk1KcexLgc:13493::::::
cargav5cDFtWl24m5bs:13493::::::
eureffp:Zc.sE53bjPIgo:12144::::::
fecixfnx:ly2YQPbpgpp7s:13924::::::
setmfwr:xxvxgraYWH9uI:12360::::::
dstgagwp:A1z9ZJ1TwpmPg:12359::::::
omgetwh:g2JYWU388AhQE:12359::::::
fenwblp:MnnHRaBYJrcTs:::::::
gefise0:taNMDrnBgpMbo:14894::::::
jpertnt0:aMFie2gkR0S.M:15091:1:35:15:::
ecfgrtel0:rA9ekxDXE.w4s:15077:1:35:15:::
ggaddgr0:MNyMT/NzEySrg:15150:1:35:15:::
consgejm:677ytfmEiQD06:14894::::::
rsalina1:xOd8O.pCPNXlo:15189:1:35:15:::
srs:02XX6/6dF49L.:13493:1:35:15:::
ora102:uHBExXltr1qXQ:14963::::::
opgescom:Lg5eRbHvRaBr.:13493::::::
ldventas:2SzfCzkgWaS2U:13493::::::
copyfile:y5z5fhI/lZDPY:13493::::::
desa_ld:1lhDjgFlcVlZI:13493::::::
userftp0:1c2Xil0wPJgg.:13455::::::
rrodrig7:Yy6mXRNtBtP/w:14965::::::
perform:Pd2YV89xVHAYY:14894::::::
workflow:SbEPJrMu/wMTw:14298::::::
llevano0:fkdc.u1fffjNM:14895:1:35:15:::
aalvare0:ZWz5Nx45NLFjE:15204:1:35:15:::
opierol0:irsvL.TvRTTg2:14901:1:35:15:::
lmarcil0:AxB9iB5m0agdA:15145:1:35:15:::
lcerna00:WYMPFwFBCcryE:14922:1:35:15:::
jreyes00:RugcKkvfhH6kE:14959:1:35:15:::
ruzateg0:FSsDtjeREZ5Rs:14959:1:35:15:::
svctag:NP:::::::
jhuaman0:VrcJGdWB0t0SU:15211:1:35:15:::
ora11g:H/TvbrgZgjnkQ:15148::::::
ccarril0:zx3GGLgpikSGE:15008:1:35:15:::
jviacav0:5ZrhWaNonqE6k:14959:1:35:15:::
rbackup:h8TRX/T/GY26Y:14894::::::
svalver0:8XogbwAXC7Fag:15211::::::
Gabriel
En la sintaxis para hacer funcionar el script, a que se refiere el parámetro "NySZJPYFdPr0ETVpMeKx1"
jose
me podeis ayudar con esta ¿? necesita sacar las pass
es un md5
jose
perdón no la he copiado

$1$9ABWnCp/$jCaUM7F57.NTzp6oE2x2d/:17507:0:99999:7:::

necesito sacar las pass y no consigo saber como.

Deja un comentario