john the ripper

John the Ripper

PreReq:
	Funktioniert nur mit openSSL bei LibreSSL gibt es kompilierungs Fehler.
	MPICH Installation siehe MPI Doku.

"wget http://www.openwall.com/john/j/john-1.8.0-jumbo-1.tar.gz"
	"wget http://www.openwall.com/john/j/john-1.8.0.tar.gz"
"tar -xzf john-1.8.0-jumbo-1.tar.gz"
"cd john-1.8.0-jumbo-1/src"
"./configure --prefix=/usr --enable-mpi"		mit MPI support im Jumbo Packet
"make clean && make -s"
"make install"
"cd ../run"
"./john"
"./john -list=build-info"

#########################################################
MPI Mouds

ggf. ln -s /usr/lib/ssh/ssh-askpass /usr/local/lib/ssh-askpass
"john" auf allen Nodes verteilen, sowie den Passwort File oder ein Shared Storage einrichten.

#Info 
"lynx https://countuponsecurity.com/2015/05/07/step-by-step-clustering-john-the-ripper-on-kali/"

"vi /root/temp/john_mpi_nodes"  ->
	#2 Prozesse
	172.17.190.71:2
	#3 Prozesse
	172.17.190.72:3
	#1 Prozess
	172.17.190.66:1
"mpiexec -hostfile /root/temp/hosts ./john /root/temp/meinschatten"
	"mpiexec -hostfile /root/temp/hosts ./john --format=sha512crypt /root/temp/meinschatten"
"pkill -USR1 mpiexec" = Status mittels Porzess Signal ausgeben

Troubleshooting
das JtR Verzeichnis muss von allen Nodes aus beschreibbar sein. sonnt kommt z.B. folgernder Fehler "8@s099-01-00255: chmod: ??: Operation not permitted" dort kann JtR die john.log nicht beschreiben
chmod -R 777 /JtR
chown -R nobody:nobody /JtR


#########################################################
Anschauliches Beispiel anhand eines Weak Password

Ciphers anzeigen
"openssl ciphers -v"

Pass generieren
"echo -n "123" | openssl md5 > /root/temp/weak_pass" 

Prüfen ob Passwort in der Liste ist.
"lynx https://weakpass.com/wordlist"		Vorgefertigte Wordlisten
"vi weak_list.lst" ->
	...
	123
	...

Passwort cracken starten mit Angabe des Formats
"./john --wordlist=weak_list.lst --format=Raw-MD5 /root/temp/weak_pass"
	Loaded 1 password hash (Raw-MD5 [MD5 128/128 AVX 12x])
	Warning: poor OpenMP scalability for this hash type, consider --fork=4
	Will run 4 OpenMP threads
	Press 'q' or Ctrl-C to abort, almost any other key for status
	123              (?)
	1g 0:00:00:00 DONE 2/3 (2017-12-30 11:23) 1.298g/s 63833p/s 63833c/s 63833C/s 123456..ship4
	Use the "--show" option to display all of the cracked passwords reliably
	Session completed

Passwort wird in pot file geschrieben
"cat john.pot"
	$dynamic_0$202cb962ac59075b964b07152d234b70:123
	
####
#Linux Shadow File Crack
/etc/shadow
Es ist darauf zu achten welcher Algorithmus für das Passwort verwendet wurde
	$1$ is MD5
	$2a$ is Blowfish
	$2y$ is Blowfish
	$5$ is SHA-256
	$6$ is SHA-512
"cp -frv /etc/shadow /root/temp/meinschatten"
"./john --wordlist=weak_list --format=sha512crypt /root/temp/shadow_test"
#
Wenn man das ohne Wörter Liste probieren möchte
"./john --incremental=Alnum --format=sha512crypt --session=shadow_session_file /root/temp/meinschatten"
	"mpiexec -hostfile /root/temp/hosts ./john --incremental=Alnum --format=sha512crypt --session=mpi_shadow /root/temp/meinschatten"
um wieder forzufahren
"./john --restore=shadow_session_file"
	"mpiexec -hostfile /root/temp/hosts ./john --restore=mpi_shadow"
###

Bei einem Reinen SHA512 Hash "--format=Raw-SHA512" verwenden.

#########################################################
JtR Rules

KoreLogic fügt anhand der Regeln die jeweiligen Charater an die Wordlisten hinzu.

Info
"lynx http://contest-2010.korelogic.com/rules.html

Dowload
"wget http://contest-2010.korelogic.com/rules.txt"

#Listen hinzufügen
"cat rules.txt >> john.conf"

##Test
"echo -n "test12345" | openssl md5 > /root/temp/weak_pass" 
"vi weak_list.lst" ->
	...
	test
	...

#KoreLogicRulesAppend5Num fügt beispielsweise 5 Zahlen an den Wordlist Text hinzu
./john --wordlist=weak_list.lst --format=Raw-MD5 --rules:KoreLogicRulesAppend5Num /root/temp/weak_pass
	Loaded 1 password hash (Raw-MD5 [MD5 128/128 AVX 12x])
	Warning: poor OpenMP scalability for this hash type, consider --fork=4
	Will run 4 OpenMP threads
	Press 'q' or Ctrl-C to abort, almost any other key for status
	test12345        (?)
	1g 0:00:00:01 DONE (2017-12-30 11:58) 0.9708g/s 1861Kp/s 1861Kc/s 1861KC/s g09869..dfgh12760
	Use the "--show" option to display all of the cracked passwords reliably
	Session completed

#########################################################
Word List mittels online Wörterlisten und Pipes nutzen (spart Plattenplatz)

Online Methode
"wget -O- -q http://www-01.sil.org/linguistics/wordlists/english/wordlist/wordsEn.txt | ./john --stdin --format=Raw-MD5 /root/temp/weak_pass"

Mit Named Pipes über einen mittel Server
Server: "mkfifo /tmp/testpipe"
Server: "screen" -> "netcat -l 4444 0< /tmp/testpipe"
Server: "screen" -> "wget -O- -q http://www-01.sil.org/linguistics/wordlists/english/wordlist/wordsEn.txt > /tmp/testpipe"
client: "screen" -> "netcat 172.17.190.17 4444 | ./john --stdin --format=Raw-MD5 /root/temp/weak_pass"

#########################################################
Incremental Mode. Suchmethode nach vordefinierten Zeichenkombinationen

Info: "lynx http://backreference.org/2009/10/26/password-recovery-with-john-the-ripper/"

"vi john.conf" ->
	[Incremental:Alpha]
	File = $JOHN/alpha.chr
	MinLen = 1
	MaxLen = 13
	CharCount = 52
	#
	[Incremental:Digits]
	File = $JOHN/digits.chr
	MinLen = 1
	MaxLen = 20
	CharCount = 10


"./john --incremental=Alpha --format=Raw-MD5 /root/temp/weak_pass"
	"./john --incremental=Digits --stdout"
#########################################################

############################################################
JtR kopieren nicht kompilieren oder installieren

scp -r john 10.55.1.65:/root/temp/john-1.8.0-jumbo-1/run/


#########################################################
Log Ouput
	g/s = successful guesses per second
	p/s = passwords tested per second
	c/s = crypts (password hashes) computed per second
	C/s = crypts tested per second (in versions below 1.8.0 this was “c/s”)
#########################################################
#Zeiten

Passwort -> Alg -> PW Encr. -> Methode -> Kerne -> Zeit
 
123 -> md5 -> incemental=Alnum -> MPI CPU 32 Kerne, 4 Server -> 30 Sekunden
Test1234 -> sha512 -> incemental=Alnum -> MPI CPU 182 Kerne,6 Server -> unmöglich
12 Zeichen, keine Zahlen oder Sonderzeichen, alles kleingeschrieben -> LANMAN (MD4) -> incremental=LanMan -> MPI CPU 182 Kerne,6 Server -> unmöglich

GPU Test ???

#########################################################
Windows LANMAN Password Hash. Lokale Win Passwörter.

Falls kein Zugriff via Dateiexplorer möglich ist
Linux LiveCD booten
SAM File location

    Windows\System32\Config\SAM file (without extension).
    Windows\System32\Config\SAM.sav: it is a copy of the first one
    Windows\System32\Config\SAM.log A transaction log of changes.

SAM File im laufenden System exportieren
"reg save hklm\system D:\Temp\ophcrack-3.7.0-bin\system"
"reg save hklm\sam D:\Temp\ophcrack-3.7.0-bin\sam"
Mittels opthcrack Hash anschauen.
oder mittels "fgdump.exe" (https://github.com/interference-security/kali-windows-binaries/blob/master/fgdump/fgdump.exe)
"more 127.0.0.1.pwdump"
	
#Incremental MPI Methode 182 Kerne
time mpiexec -hostfile node.lst /shared_store/john --incremental=Alnum --format=nt2 /shared_store/nt_lanman_hash.txt
time mpiexec -hostfile node.lst /shared_store/john --incremental=LanMan --format=nt2 /shared_store/nt_lanman_hash.txt
#So gut wie unmöglich in einer anhembaren Zeit das Passwort zu erraten.

#Wordlist Methode (Gepiped)
Server: "mkfifo /tmp/testpipe"
Server: "screen" -> "netcat -l 4444 0< /tmp/testpipe"
Server: "screen" -> "cat weakpass_2a > /tmp/testpipe"
client: "screen" -> "netcat 172.17.190.17 4444 | ./john --stdin --format=nt2 --session=shadow_session_file nt_lanman_hash.txt"
client: "pkill -USR1 john"
#########################################################

#########################################################
#NTLMv2 Pass Hash

Hash aus NTLMSSP Challenge und NTLMv2 Response:
	test::DOGWATCH-PC:d9f26423bb8eaa9c:a2da5d9c85e5c3e28acec86047982549:010100000000000073c89586c799d301960ed370bfdee0fc00000000020018004200490054002d0044004500560049004c002d0050004300010018004200490054002d0044004500560049004c002d0050004300040018004200690074002d0044006500760069006c002d0050004300030018004200690074002d0044006500760069006c002d00500043000700080073c89586c799d3010600040002000000080030003000000000000000010000000020000084e57bc54e91327fbe6da35422e19bf7f60cd50f3f547b6b1cfc88adb6edcda70a001000000000000000000000000000000000000900220063006900660073002f003100370032002e00310037002e003100390030002e003100000000000000000000000000

"./john --format=netntlmv2 hash.txt --wordlist=wordlist.txt"

"cat john.pot" ->
	$NETNTLMv2$TESTDOGWATCH-PC$d9f26423bb8eaa9c$a2da5d9c85e5c3e28acec86047982549$010100000000000073c89586c799d301960ed370bfdee0fc00000000020018004200490054002d0044004500560049004c002d0050004300010018004200490054002d0044004500560049004c002d0050004300040018004200690074002d0044006500760069006c002d0050004300030018004200690074002d0044006500760069006c002d00500043000700080073c89586c799d3010600040002000000080030003000000000000000010000000020000084e57bc54e91327fbe6da35422e19bf7f60cd50f3f547b6b1cfc88adb6edcda70a001000000000000000000000000000000000000900220063006900660073002f003100370032002e00310037002e003100390030002e003100000000000000000000000000:test

#########################################################

Post Revisions: