Crackear Passwords en Unix
Por Zebal
Introducción.
Para entrar en sistemas Unix se necesita un username y un password, y qué
mejor lugar para conseguirlos que en un /etc/password :-) Este es el fichero
que en Unix contiene la lista de los usernames y los passwords, asi como
otra información asociada a cada username... El problema es que
los passwords están ecriptados. Veamos la pinta que tiene un fichero
de estos:
root:XY53yyh3gMvvE:0:3::/root:/bin/sh
daemon:*:1:5::/:/bin/sh
bin:*:2:2::/bin:/bin/sh
adm:*:4:4::/usr/adm:/bin/sh
uucp:*:5:3::/usr/spool/ucppublic:/usr/lib/uucp/uucico
lp:*:9:7::/usr/spool/lp:/bin/sh
hpdb:*:27:1:ALLBASE:/:/bin/sh
user1:g.um3CCF4uVIk:247:25:José Antonio Martín:/disc/users/pepito:/bin/csh
user2:RckFa8/idTCFg:248:24:Antonio Fuentes:/disc/users/fulanito:/bin/csh
user3:axX/MxQZr37tA:0:3:Manuel Pérez:/disc/users/menganito:/bin/csh
Como veis, cada linea del fichero corresponde a un usuario, y contiene,
por orden, el username, el password encriptado, el user_id, el group_id,
el nombre real, el directorio en el que está su cuenta y el shell
que se carga al inicio... El formato puede variar un poco, pero básicamente
es éste. Como veis, cada campo está separado por ":" del
anterior y del siguiente. En algunas líneas, el campo password es
"*". Este password encriptado es inválido, o sea, no se corresponde
con ningún password; por tanto, las cuentas que tienen alguna "*"
en el campo password son cuentas a las que no podreis entrar. Otro detalle
a considerar son los usuarios cuyo user_id es "0", como el ROOT. Estos
usuarios son ROOT a todos los efectos, o sea, tienen los mismos derechos
que el ROOT. Como podeis ver, "user3" tiene user_id=0, o sea, es ROOT.
Los usuarios que sin tener el user_id=0 tienen el mismo group_id que el
ROOT, también tienen algunos privilegios por el hecho de pertenecer
al grupo del ROOT.
Bien, ahora hay que desencriptar los passwords. El problema es que el
mecanismo de encriptación de Unix no es reversible, esto es, no
se puede desencriptar. Entonces... ¿cómo lo hace el LOGIN
para comprobar si el password que le pones es el correcto? Pues lo que
hace es encriptarlo y comparar el password encriptado con lo que hay en
el fichero... Si coincide es que el password que has puesto es el password
del fichero desencriptado. La forma de atacar un fichero de passwords de
Unix es precisamente la misma que usa el LOGIN para verificar un password.
Lo que se hace es encriptar muuuuchas palabras y comprobar cada una de
ellas si coincide con el password encriptado. Si coincide, ya tenemos un
password, y si no, probamos la siguiente palabra. Para hacer esto necesitamos
tres cosas: una lista de palabras a probar, una lista con los passwords
encriptados y un programa que haga las pruebas.
Paso 1: Conseguir listas de palabras.
Se imaginativo. Puedes hacerte tus propias listas de palabras con nombres,
apellidos, deportistas, colores, números, meses, dias de la semana,
insultos, empresas, nombres de servidores, y cualquier otra cosa que se
te ocurra que alguien puede haber puesto como password en el sistema que
estas intentando hackear. Además, puedes encontrar en internet listas
de palabras a punto para que pruebes. Uno de los sitios más interesantes
para obtener listas de palabras es ftp://sable.ox.ac.uk/pub/wordlists/.
Hay montones de listas de palabras, pero es un poco lento. Afortunadamente
hay un mirror de este servidor en España, en ftp://sun.rediris.es/mirror/sable/wordlists/,
y éste va mucho más rápido, sobretodo si tu conexión
a Internet es desde dentro de la red española. De todas formas,
siempre puedes buscar en el Yahoo
o en el Lycos por "dictionar"
o por "wordlist" y aparecerán montones de sites con las mismas
listas. Un buen truco es probar con los nombres y apellidos de los usuarios
del sistema que estais intentado crackear... Hay muchííííísima
gente que se pone de password el apellido, el nombre, o el nombre de la
novia, así que una lista con los nombres y apellidos de los usuarios
es una buena garantía de obtener passwords. Otra cosa que suele
ser habitual como password es el username. También mucha gente se
pone el username de password. Así que una buena recomendación
es que extraigais todas las palabras del fichero de passwords que vais
a crackear y las probeis como password. Para extraer todas las palabras
de un fichero hay bastantes utilidades, algunas de las cuales incluso se
distribuyen en el mismo paquete que el crackeador. No creo que os cueste
demasiado localizar alguna utilidad para extraer los nombres, los apellidos
y los usernames de los usuarios en un fichero /etc/passwd. Incluso hay
utilidades sueltas cuya única función es la de tratar listas
de palabras...
Paso 2: Conseguir la lista de passwords.
Esto es algo más complicado. Si teneis una cuenta en el sistema
que vais a hackear siempre podeis hacer un "cat /etc/passwd". Si no tienen
Shadow Passwords o NIS aparecerá una lista como la que habeis visto
al principio. Sino, aparecerá algo similar a esto:
root:XY53yyh3gMvvE:0:3::/root:/bin/sh
daemon:*:1:5::/:/bin/sh
bin:*:2:2::/bin:/bin/sh
adm:*:4:4::/usr/adm:/bin/sh
uucp:*:5:3::/usr/spool/ucppublic:/usr/lib/uucp/uucico
lp:*:9:7::/usr/spool/lp:/bin/sh
hpdb:*:27:1:ALLBASE:/:/bin/sh
user1:g.um3CCF4uVIk:247:25:José Antonio Martín:/disc/users/pepito:/bin/csh
user2:RckFa8/idTCFg:248:24:Antonio Fuentes:/disc/users/fulanito:/bin/csh
user3:axX/MxQZr37tA:0:3:Manuel Pérez:/disc/users/menganito:/bin/csh
donde el password será algo como "*", o "x" o cualquier cosa que
contenga un "*" como "*NOPASSWORD*". En este caso el fichero "/etc/passwd"
no contiene nada útil, ya que está instalado Shadow Passwords
o NIS. Entonces, podeis provar de hacer un "ypcat /etc/passwd". Con esto
probablemente obtendreis por pantalla la lista real de passwords. En caso
de que no tengais privilegios para ejecutar el "ypcat", o en caso de que
el "ypcat" no esté o por si acaso lo que aparece al ejecutar el
"ypcat" vuelve a ser basura otra vez, tendreis que recurrir a otros programas
para obtener los passwords. Os recomiendo el PWGET. Lo podreis encontrar
en muchos sitios de internet. Buscad PWGET.TAR.GZ o PWGET.TGZ
en cualquier archie, o en el lycos, o en el yahoo. Seguro que lo encontrais.
Una vez lo teneis, solo hay que subirlo al servidor que quereis hackear,
descomprimirlo ("gzip -d -f PWGET.TGZ"), desarquearlo ("tar -x -f PWGET.TAR"),
compilarlo ("cc -o pwget pwget.c"), y ejecutarlo ("./pwget"), con lo que
obtendreis por pantalla la lista de passwords. Si quereis la lista en un
fichero, solo teneis que redireccionar la salida de la pantalla a un fichero:
$ ./pwget > fichero
o bien
$ ypcat /etc/passwd > fichero
o bien
$ cat /etc/passwd > fichero
es decir, como redireccionariais la salida bajo DOS... Ahora para bajaros
el fichero podeis usar el FTP o el Kermit o el ZModem/Ymodem/Xmodem. Para
bajar el fichero vía Kermit o Zmodem necesitareis que vuestro programa
de telnet soporte esos protocolos (como el NetTerm), y que la máquina
Unix en la que estais también los soporte (o sea, tenga los programas
instalados). El programa de Kermit suele estar en casi todos los sitios:
$ kermit
kermit> set file type ascii (o "text", segun las
máquinas)
kermit> set send pack 1000
kermit> set rec pack 1000
kermit> set file type 2 (o 3, como querais)
kermit> send fichero
... Download->Kermit
CTRL+C
kermit> quit
$
aunque podeis usar el ZModem, si es que está instalado:
$ sz fichero
... Download->ZModem
$
Paso 3: Petar la lista de passwords.
Ahora que ya teneis la lista de passwords y unas cuantas listas de palabras
falta un programa que encripte las palabras y las compare con los passwords
encriptados del fichero de passwords. Para ello hay muchos programas que
podeis usar. Ahora comentaré brevemente las características
de los programas (y sus nombres, para que los podais buscar por la red),
pero antes quiero dar algunos truquillos para que consigais passwords en
menos tiempo.
-
Elimina del fichero de passwords todas las lineas cuyo password sea inválido
("*", "*NOPASSWORD*", etc)
-
Ordenad las lineas del fichero de password por los dos primeros caracteres
del password encriptado. Algunos de los programas que comento ya hacen
esto al cargar el fichero de password, pero algunos no lo hacen. Con estos
dos pasos os podeis ahorrar bastante tiempo si usais estos petadores.
-
Aquellos usuarios que tienen el campo de password vacío (user1::101:1:Manolito:/usr/user1:/bin/sh)
no tienen password, así que son una cuenta que podeis eliminar del
fichero, ya que no os hace falta petar el password para entrar. Al hacer
login, simplemente poneis el username, y si os llega a preguntar por el
password, le dais al ENTER sin poner nada... :-)
Petadores:
-
Cracker Jack 1.4 (JACK14*.*, CJACK*.*) Es el más
extendido, al menos que yo sepa. Está en prácticamente cualquier
site de internet dedicado al hacking. Funciona para DOS y para OS/2, y
es bastante rápido. Incluye en el mismo paquete varias utilidades
para tratar listas de palabras.
-
Brute 2.00 (BRUTE*.*) Otro petador bastante popular pese a su
lentitud. Creo que existe otra versión más rápida,
pero usa un algoritmo de encriptación que no es del todo correcto
(aunque es más rápido), y no pilla todos los passwords que
debiera. No he podido localizar ninguna copia de esa versión así
que no la he podido probar. Funciona para DOS.
-
StarCrack 0.64ß (STARCRAK*.*) Este es un petador con multitud
de opciones, que permite manipular palabras mientras se prueban. Es más
rápido que el Cracker Jack, funciona para DOS y es muy completo.
Es bastante nuevo, y además es una Beta, o sea que supongo que pronto
saldrá alguna versión mejorada... :-? Es bastante completo
y permite hacer de todo
-
Hades 1.00a (HADES*.*) Otro petador para DOS. Este hace las pruebas
de una forma distinta al resto de petadores. En vez de encriptar una palabra
y comparar con los passwords de todos los usuarios, prueba de encriptar
todas las palabras y compara cada palabra con el password de un usuario.
Una vez ha acabado con un usuario, prueba lo mismo con otro. Debido a esta
forma de actuar, realiza mucha entrada/salida de disco, lo cual ralentiza
el proceso. Sus prestaciones mejoran notablemente si ordenamos el fichero
de passwords por el campo password encriptado, ya que así prueba
varios usuarios a la vez. También se puede mejorar su rendimiento
teniendo todas las listas (palabras y passwords) en un disco virtual en
memoria.
-
Guess 2.1 (GUESS*.*) Petador para DOS, extremadamente lento. Tiene
problemas de memoria si se intenta usar con ficheros de passwords de más
de 1000 lineas.
-
PCUPC 2.01 (PCUPC*.*) Otro petador para DOS. Este tiene problemas
de memoria si se intenta usar con ficheros de passwords de más de
600/700 lineas.
-
Killer Cracker 9.5 (DJKC95*.*, KC*.*) Al igual que el
Guess, es un petador para DOS bastante lento y que da problemas si se usa
con ficheros de passwords de más de 1000 lineas.
-
Xit 2.0 (XIT20*.*) Petador para DOS. Es lo más lento que
me he encontrado. Como su nombre indica, es una shit! :-)
-
HellFire Cracker 1.3 (HC130*.*) Petador para DOS. Necesita 386
con coprocesador para funcionar, pero por algún extraño motivo
se cuelga en mi pentium y en mi 486, así que no os puedo decir qué
tal está. Quizás si teneis un 386 lo podais usar con éxito.
El programa incluye un emulador de 387 por si no teneis coprocesador. De
todas formas, es un programa muy antiguo que seguramente no será
muy rápido.
-
John the ripper 1.4 (UCFJOHN3*.*) Petador para DOS/Win32/Linux
y cualquier otra cosa, ya que viene con las fuentes. Funciona de una forma
muy similar al Cracker Jack pero incluye más opciones y es bastante
más rápido. Ha salido hace poco, cortesía de UCF (United
Cracking Force) y quizás os cueste de localizar, pero es realmente
útil y rápido. No tiene tantas opciones como el Star Crack,
pero es bastante más rápido. Además permite un montón
de opciones para tratar las listas de palabras que usáis...
Aquí teneis una comparativa de estos petadores, en la misma máquina
y con los mismos ficheros de passwords y de palabras. Algunos de ellos
tardaban demasiado, y aborté el proceso de petar passwords. En estos
casos, calculé el tiempo estimado que tardarían en acabar
en función del tiempo que llevaban (1 hora) y las palabras que habían
provado hasta el momento. Estos son los resultados, ordenados por velocidad:
Cracker |
Tiempo |
Comparaciones
por Segundo |
Observaciones |
John the ripper 1.4 |
6'15'' |
26667c/s |
. |
John the ripper 1.31 |
6'30'' |
25641c/s |
. |
John the ripper 1.0 |
8'05'' |
20619c/s |
. |
Star Crack 0.64ß |
9'15'' |
18018c/s |
. |
Star Crack 0.51ß |
11'25'' |
14599c/s |
. |
Cracker Jack 1.4 |
13'33'' |
12300c/s |
. |
Cracker Jack 1.3 386 |
14'55'' |
11173c/s |
. |
Cracker Jack 1.3 8086 |
22'22'' |
7452c/s |
. |
Hades 1.00a |
47'05'' |
3540c/s |
. |
Brute 2.00 |
(est)59'54'' |
2782c/s |
. |
PCUPC 2.01 |
(est)135'37'' |
1229c/s |
Sólo soporta
ficheros de passwords
de menos de 500 linias. |
Guess 2.1 |
(est)141'58'' |
1174c/s |
Sólo soporta
ficheros de passwords de menos
de 1000 linias. |
Killer Cracker 9.5 |
(est)151'12'' |
1105c/s |
Sólo soporta
ficheros de passwords
de menos de 1000 linias. |
Xit 2.0 |
(est)195'37'' |
852c/s |
. |
Hellfire Cracker 1.3 |
infinito |
0c/s |
Se colgó y
no pudo ser provado. |
Este test fue realizado en un Pentium 133, con 16 Mb de RAM, con los
datos en el disco duro, con una cache de lectura de 2 Mb y sin hacer ningún
preprocesado en el fichero de passwords ni en el de palabras. El fichero
de palabras contenia 10000 palabras y el de passwords 1000 passwords. Tenian
que encontrar 554 passwords.
Algunos de ellos no los dejé acabar ya que tardaban demasiado
y estimé el tiempo en función de lo que habían crackeado
hasta el momento de pararlos, por lo tanto no sé si hubieran encontrado
todos los passwords. Sólo los he incluido en la comparativa por
si alguno de vosotros los usa, para que vea que hay cosas mejores.
Como se puede ver, el John the ripper encripta casi el doble de passwords
por segundo que el Cracker Jack. He de reconocer que el fichero con el
que hize la prueba parece ser especialmente adecuado para el John the ripper,
ya que 20000c/s no se consiguen habitualmente. De todas formas, la comparativa
es significativa de la velocidad a la que se petan passwords con cada uno
de los programas.
Espero que con esta mini-introducción al arte de petar passwords
en Unix podais pasar un buen rato; y espero no haberos aburrido demasiado.
Si teneis alguna duda/comentario/sugerencia/crítica-destructiva,
podeis enviar un e-mail a z3b4l@iname.com.
Saludos! ;-)
(C) 1997-2001 by !Hispahack
Para ver el web en las mejores condiciones, usa una resolución
de 800x600 y Netscape Navigator