John the Ripper

De WikiCat IT
Dreceres ràpides: navegació, cerca

Instal·lació i Configuració (del sistema)

Instal·lació:

apt-get install john

Configuració:

Per defecte, John the Ripper no desxifra hashes 512, que són els que fa servir l'Ubuntu. Per a què John the Ripper pugui desxifrar claus d'usuari a partir d'ara, hem d'editar el següent arxiu pam:

gedit /etc/pam.d/common-password

I busquem la següent línia:

password [success=1 default=ignore] pam_unix.so obscure sha512

Aquest arxiu és de configuració de l'Ubuntu i el que farem és substituir el sha512 (que ve amb la configuració) per md5. D'aquesta manera el nostre Ubuntu, a prtir d'ara, generarà contrasenyes suportades per John the Ripper.

Canviem la línia de dalt per a que quedi de la següent manera:

password [success=1 default=ignore] pam_unix.so obscure md5

NOTA: Cal anab compte quan s'editen fitxers PAM, ja que si es fa a la lleugera pot provocar mafuncionaments importants del sistema

Desxifratge de contrasenyes

Les contrasenyes en un Ubuntu es guarden al fitxer /etc/shadow. Si mirem al seu interior...

cat /etc/shadow

Podem trobar la contrasenya de l'usuari administrador, que és el nom de l'usuari d'aquest Ubuntu.

 administrador: $6$.v363Bby$rrP4GJLFRHbqUfJTm0iAvWPj6BgehvVQ8VDPF9WHNzlbrvTTcuwFKtSkFK68d
H95nFRYUeTdM3kEk86WXBqDS/:14593:0:99999:7:::

Si ens fixem, veurem que la contrasenya comença per $6$, que és el codi de xifratge hash sha512, que com ja hem dit John the Ripper no suporta.

El que farem a continuació serà crear usuaris nous i a partir d'ara les seves claus estaran encriptades en md5. Això és degut a l'edició de l'arxiu PAM que hem fet abans.

Creació de nous usuaris

Creem un usuari amb el nom de "pepe"

 sudo adduser pepe 

Ens avisarà que crea un usuari, un grup, afegeix l'usuari dins del grup, crea una home per l'usuari...:

Adding user `pepe' ...
Adding new group `pepe' (1001) ...
Adding new user `pepe' (1001) with group `pepe' ...
Creating home directory `/home/pepe' ...
Copying files from `/etc/skel' ...

Després ens demana un munt d'informació:

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for pepe
Enter the new value, or press ENTER for the default
Full Name []: Pepe
Room Number []:
Work Phone []:
Home Phone []:
Other []:

D'aquí el que és realment important és el password, la resta ho podem deixar igual. En aquest exemple, la contrasenya és pepe.

Si tornem a veure el contingut de l'àrxiu /etc/shadow veurem que el nou usuari ja no té codi $6$

pepe:$1$nmmxslja$KvIvS2wBcN0FqUl2Yrg9Q0:14794:0:99999:7:::

Sinó que té condo $1$, això és perquè el nou usuari està creat amb md5

Mode Single

Aquest és el mode més simple d'utilitzar John the Ripper. Intenta trobar la contrasenya a partir del nom d'usuari i les dades.

La comanda és la següent:

john -single fitxer de contrasenyes

Veiem alguns exemples:

Exemple 1: nom usuari: pepe, contrasenya: pepe

john -single /etc/shadow
Loaded 1 password hash (FreeBSD MD5 [32/32])
pepe
(pepe)

Com veiem, ens desxifra ràpidament la contrasenya.

Exemple 2: nom usuari: pepa, contrasenya: qwerty (sense dades personals)

Loaded 1 password hash (FreeBSD MD5 [32/32])
guesses: 0 time: 0:00:00:00 100% c/s: 5653 trying: 99999

En aquest cas no ha desxifrat la contrasenya. Ens informa que ho ha anat provant, però sense resultats. És normal, ja que la contrasenya ha estat creada sense tenir res a veure amb el nom de l'usuari.

Exemple 3: nom usuari: pepito, contrasenya: pepito69 (sense dades personals)

Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/32]
pepito69
(pepito)
guesses: 1 time: 0:00:00:01 100% c/s: 3457 trying: 99999

La contrasenya l'ha tornat a extreure ràpidament. Podem veure que hi ha una altra contrasenya que intenta desxifrar (és la de la pepa), però obviament no pot.

Mode Wordlist

Es va provant amb un diccionari de contrasenyes, per comparació. El diccionari de contrasenyes de John the Ripper es troba a
/usr/shar /john/password.lst

Es pot consultar i editar.

Anem ara a veure alguns exemples:

Exemple 1: nom d'usuari: pepa, contrasenya: qwerty

john -w:/usr/share/john/password.lst /etc/shadow
Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/32])
qwerty
(pepa)
guesses: 1 time: 0:00:00:00 100% c/s: 6773 trying: zhongguo

Com veiem, aquest mode sí que ens desencripta la contrasenya de la pepa, que és qwerty (una de les contrasenyes més utilitzades) Exemple 2: nom d'usuari: paco, contrasenya: qwerty123

Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/32])
guesses: 0 time: 0:00:00:00 100% c/s: 6828 trying: zhonggu

Com veiem, afegint-li els números 123 ja no ens desxifra la contrasenya.

Podem fer servir la comanda:
john -w:/usr/share/john/password.lst -rules /etc/shadow

on -rules el que fa es comprovar variacions de la llista.

Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/32])
guesses: 0 time: 0:00:00:41 100% c/s: 6748 trying: Zhongguing

Podem comprovar que triga bastant més, però tot i així no és capaç de desxifrar el password.

Creació d'una Wordlist en català

Per defecte, però les llistes de paraules no estan pas en català, per això és important saber com fer una llista de laraules en català (o en qualsevol altre idioma)

Instal·lació d'una llista de paraules en català:

apt-get install aspell-ca

Copiar-lo en un arxiu

root@administrador-laptop:/usr/share/john# aspell --lang=ca dump master >> wordlist_catala

En aquest cas ens hem de situar a /usr/share/john, que és on tenim les llistes.

Exemple 3: nom d'usuari: paquita, contrasenya: pestanya (Exemple amb el diccionari català)

Aquest exemple el fem per comparació amb el diccionari català (el que acabem de crear), més que res per provar si així podem trobar la contrasenya. Per tant la comanda queda una mica modificada:

john -w:/usr/share/john/wordlist_catala /etc/shadow

Ens farà esperar força estona, però finalment trobem la contrasenya:

Loaded 4 password hashes with 4 different salts (FreeBSD MD5 [32/32])
pestanya
(paquita)

Això ho podríem fer amb qualsevol diccionari de qualsevol llengua.

Mode incremental (força bruta)

Sempre es poden intentar desxifrar contrasenyes per força bruta. Aquest sistema és d'allò més lent.

La manera genèrica és la següent:

john -i fitxer_de_contrasenyes

Podem anar una mica més ràpids si coneixem el format de les dades_

john -i:Alpha fitxer_de_contrasenyes (només lletres)
john -i:All fitxer_de_contrasenyes (lletres i números)
john -i:Digits fitxer_de_contrasenyes (números)

El sistema és molt lent. L'hauríem de deixar durant dies o hores per intentar desxifrar les contrasenyes. Sempre podem veure què està fent el programa si apretem una tecla durant l'execució:

root@administrador-laptop:~# john -i:Digits /etc/shadow
Loaded 3 password hashes with 3 different salts (FreeBSD MD5 [32/32])
guesses: 0 time: 0:00:00:34 c/s: 7095 trying: 15872155
guesses: 0 time: 0:00:01:13 c/s: 7127 trying: 316682
guesses: 0 time: 0:00:01:15 c/s: 7125 trying: 17788
guesses: 0 time: 0:00:03:42 c/s: 7087 trying: 747718
guesses: 0 time: 0:00:04:18 c/s: 7086 trying: 4009729
guesses: 0 time: 0:00:06:10 c/s: 7128 trying: 433140
guesses: 0 time: 0:00:08:59 c/s: 7131 trying: 2248463
guesses: 0 time: 0:00:09:36 c/s: 7135 trying: 04874676
guesses: 0 time: 0:00:11:45 c/s: 7101 trying: 22844461
guesses: 0 time: 0:00:13:14 c/s: 7092 trying: 52402722
guesses: 0 time: 0:00:19:48 c/s: 7029 trying: 20578048

Creació de sistemes incrementals

Una cosa bona que té John the Ripper és que podem crear nous sistemes incrementals. Anem a veure alguns exemples:

Exemple 1: Suposem que tenim un sistema de contrasenyes que funciona amb les dades de naixement amb el següent format DDMMAAAA:

Això suposarà una mida exacta de 8 dígits.

Hem d'editar el següent arxiu:

gedit /etc/john/john.conf

Afegiríem les següents línies a Incremental Modes:

[Incremental:Birthday]
File = /usr/share/john/digits.chr
MinLen = 8
MaxLen = 8
CharCount = 10

Creem un usuari anomenat charly amb la contrasenya 29041986 i executem John:

john -i:Birthday /etc/shadow

Exemple 2: Suposem que tenim un sistema de contrasenyes que funciona com el PIN d'un mòbil:

Això suposarà una mida de 4 dígits. El mode en aquest cas quedaria així:

[Incremental:PIN]
File = /usr/share/john/digits.chr
MinLen = 4
MaxLen = 4
CharCount = 10

Creem un usuari anomenat user amb la contrasenya 7013. Aquest cas el desencripta molt ràpid:

john -i:PIN /etc/shadow
7013
(user)
guesses: 1 time: 0:00:00:05 c/s: 7148 trying: 9871
Eines de l'usuari
Espais de noms

Variants
Navegació
Eines