Meniu

john (John the Ripper) — a password cracker for Linux and Windows

John the Ripper (a.k.a. JtR, or simply john) is a popular fast password cracker for both Linux and Windows. It is quite useful for identifying weak passwords. By weak, I mean ones that do not take a long time to crack. In this article I will show you how to install and use John the Ripper utility to crack weak passwords.

Installation

If you do not have john installed by default then do not worry, just read on, as in this section I will explain in detail how to get john installed. Lets start with a no fuss install procedure, i.e. lets use a package manager such as Apt or Yum. To install john using Apt run the following command.

sudo apt-get install john  # ©2021 gnulinux.ro

The output of the installer is shown below.

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed: john
0 upgraded, 1 newly installed, 0 to remove and 15 not upgraded.
Need to get 547kB of archives.
After unpacking 1155kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com gutsy/main john 1.6-40.1ubuntu2 [547kB]
Fetched 547kB in 0s (1183kB/s)
Selecting previously deselected package john.
(Reading database ... 142662 files and directories currently installed.)
Unpacking john (from .john_1.6-40.1ubuntu2_i386.deb) ...
Setting up john (1.6-40.1ubuntu2) ...

If you are using Yum package manager, then try the following command instead.

sudo yum install john  # ©2021 gnulinux.ro

You could also compile and install john from source distribution. First, you will need to download the source code from http://www.openwall.com/john. Use wget for that.

wget http://www.openwall.com/john/f/john-1.7.2.tar.bz2  # ©2021 gnulinux.ro

The output of wget will look something like this:

--23:22:35--  http://www.openwall.com/john/f/john-1.7.2.tar.bz2
Resolving www.openwall.com... 195.42.179.202
Connecting to www.openwall.com|195.42.179.202|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 691706 (675K) [application/octet-stream]
Saving to: `john-1.7.2.tar.bz2'

100%[=======================================================>] 691,706  --.-K/s in 0.06s

23:22:35 (10.7 MB/s) - `john-1.7.2.tar.bz2' saved [691706/691706]

Note that at the time of writing of this article the current version of john was 1.7.2. You may wish to check for the latest version at http://www.openwall.com/john and get that. Anyhow, once you have the sources, extract the tar.bz2 archive using tar as follows.

tar xjf john-1.7.2.tar.bz2  # ©2021 gnulinux.ro

Then go into the source sub-directory.

cd john-1.7.2/src  # ©2021 gnulinux.ro

Once there, run make.

make  # ©2021 gnulinux.ro

This will produce a long list of supported architectures, a fragment of which is shown below.

To build John the Ripper, type: make clean SYSTEM
where SYSTEM can be one of the following:
linux-x86-sse2           Linux, x86 with SSE2 (best)
linux-x86-mmx            Linux, x86 with MMX
linux-x86-any            Linux, x86
linux-x86-64             Linux, AMD x86-64 with SSE2
...
generic                  Any other Unix-like system with gcc

Pick one that suits you (i.e. one matching your architecture) and use it as follows to build john.

make clean linux-x86-any  # ©2021 gnulinux.ro

Once the compilation process is complete go the the run subdirectory.

cd run  # ©2021 gnulinux.ro 

List its content using ls.

ls -la  # ©2021 gnulinux.ro

It should look something similar to the following.

total 1228
drwx------ 2 florin florin   4096 Nov 22 00:03 .
drwx------ 5 florin florin   4096 May 22  2006 ..
lrwxrwxrwx 1 florin florin      4 Nov 22 00:03 unafs -> john
lrwxrwxrwx 1 florin florin      4 Nov 22 00:03 unique -> john
lrwxrwxrwx 1 florin florin      4 Nov 22 00:03 unshadow -> john
-rw------- 1 florin florin 341064 Dec 17  2005 all.chr
-rw------- 1 florin florin 232158 Dec 17  2005 alnum.chr
-rw------- 1 florin florin 131549 Dec 17  2005 alpha.chr
-rw------- 1 florin florin  40391 Dec 17  2005 digits.chr
-rwx------ 1 florin florin 212440 Nov 22 00:03 john
-rw------- 1 florin florin  15087 Mar  2  2006 john.conf
-rw------- 1 florin florin 215982 Dec 17  2005 lanman.chr
-rwx------ 1 florin florin    785 Dec  2  1998 mailer
-rw------- 1 florin florin  22346 Dec 17  2005 password.lst

The built john binary should be there along with some test files. To check that john is working correctly, execute the following command from the run subdirectory.

./john --test  # ©2021 gnulinux.ro

This will produce test results for various encryption algorithms.

Benchmarking: Traditional DES [24/32 4K]... DONE
Many salts:     143872 c/s real, 145619 c/s virtual
Only one salt:  125004 c/s real, 137066 c/s virtual

Benchmarking: BSDI DES (x725) [24/32 4K]... DONE
Many salts:     3164 c/s real, 4733 c/s virtual
Only one salt:  3902 c/s real, 4505 c/s virtual

Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw:    2416 c/s real, 3481 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE
Raw:    216 c/s real, 233 c/s virtual

Benchmarking: Kerberos AFS DES [24/32 4K]... DONE
Short:  95129 c/s real, 134363 c/s virtual
Long:   366100 c/s real, 392697 c/s virtual

Benchmarking: NT LM DES [32/32 BS]... DONE
Raw:    1927K c/s real, 2594K c/s virtual

Copy the john binary to some executable path for future use. Voilà!

Using john to find weak passwords (i.e. to crack passwords)

Type in john at the shell. This will produce john’s detailed usage information.

Created directory: /home/florin/.john
John the Ripper password cracker, version 1.7.0.2
Copyright (c) 1996-2006 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
--single                   "single crack" mode
--wordlist=FILE --stdin    wordlist mode, read words from FILE or stdin
--rules                    enable word mangling rules for wordlist mode
--incremental[=MODE]       "incremental" mode [using section MODE]
--external=MODE            external mode or word filter
--stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]
--restore[=NAME]           restore an interrupted session [called NAME]
--session=NAME             give a new session the NAME
--status[=NAME]            print status of a session [called NAME]
--make-charset=FILE        make a charset, FILE will be overwritten
--show                     show cracked passwords
--test                     perform a benchmark
--users=[-]LOGIN|UID[,..]  [do not] load this (these) user(s) only
--groups=[-]GID[,..]       load users [not] of this (these) group(s) only
--shells=[-]SHELL[,..]     load users with[out] this (these) shell(s) only
--salts=[-]COUNT           load salts with[out] at least COUNT passwords only
--format=NAME              force ciphertext format NAME: DES/BSDI/MD5/BF/AFS/LM
--save-memory=LEVEL        enable memory saving, at LEVEL 1..3

Basically john is used as follows.

john [options] password-files  # ©2021 gnulinux.ro

Lets begin by adding a new user called test.

sudo useradd test

Now lets set test’s password to something really easy (i.e. something that is in john’s password dictionary, and thus will get broken real quick). How about… joes? Run:

sudo passwd test  # ©2021 gnulinux.ro

and enter joes as a password.

Enter new UNIX password: joes
Retype new UNIX password: joes
passwd: password updated successfully

On modern Linux systems, passwords are shadowed, i.e. password hashes are stored in the /etc/shadow file. You will need root privileges to access this file. An example fragment of this file is given below.

root:$1$hw1na4sdT$ms4dp3Vda1v4d3rKDgfsRS/mUj/9.:13833:0:99999:7:::
...
florin:$1$t2po.u3v$lk1ke3a5mj5ghs8ZaR5k7kjg/:13833:0:99999:7:::
...
test:$1$Ms6pYWKS$KZcUUyXUHsqDkZDw.gqeo/:13838:0:99999:7:::

Run the following command to get crack’n…

sudo john /etc/shadow  # ©2021 gnulinux.ro

Now, each time you press enter, john will print out the password it is currently trying, as shown below. Also shown below is one password found: joes.

Loaded 3 passwords with 3 different salts (FreeBSD MD5 [32/32])
guesses: 0  time: 0:00:00:02 85% (1)  c/s: 3231  trying: R9999909
guesses: 0  time: 0:00:00:03 0% (2)  c/s: 2992  trying: bond007
joes             (test)
guesses: 1  time: 0:00:00:21 19% (2)  c/s: 2636  trying: school!
Session aborted

john caches found passwords so that you can request them at a later time without a delay. Use the following command to see cached passwords.

sudo john --show /etc/shadow  # ©2021 gnulinux.ro

The output of the above command is shown below.

test:joes:13838:0:99999:7:::
1 password cracked, 2 left

For more detailed usage examples see http://www.openwall.com/john/doc/EXAMPLES.shtml.

Enjoy!

Mirela

Zona de mobile
  • | 34 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign