Monday, 10 October 2011

[BASH] BruteForce Hash Cracking

OK, dalam post ni saya akan tunjukkan camner nk crack HASHES menggunakan teknik BRUTEFORCE. (collision attack)

Apa itu brute-force? Brute-force adalah satu bentuk serangan dimana penyerang akan mencuba semua kemungkinan "kunci" sehinggalah "kunci" yang tepat ditemui. Kunci disini merujuk kepada kombinasi perkataan, nombor ataupun simbol yang mungkin digunakan sebagai kata-laluan (A-Z,a-z,0-9,etc).

Di sini, saya akan tunjuk satu demonstrasi bagaimana brute-force ini dijalankan. Script ini ditulis menggunakan shell script BASH. BASH adalah singkatan bagi Bourne-Again SHell. Untuk menjalankan shell script ini, kita perlu menggunakan Linux. Windows juga boleh, tapi korang perlu menggunakan Cygwin untuk mensimulasikan Linux environment.


shadow
buah:$6$N/w0ID7H$4U0oLDkaY40Az7ALgIMqw/ig93tcy/50Q7uX9C3OL6r3GwfRvU0Vx42LDAVjJsZJaUVBDHZBHj0PSBQRdEl9Q0:15175:0:99999:7:::

cracker.sh
 #!/bin/bash  
 echo "Cracking..."  
 LIST="a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z Z 0 1 2 3 4 5 6 7 8 9"  
 encr=`grep buah shadow | cut -d":" -f2 | cut -d"$" -f4`  
 salt=`grep buah shadow | cut -d":" -f2 | cut -d"$" -f3`  
 for x in $LIST  
 do  
      for y in $LIST  
      do  
           for z in $LIST  
           do            
                echo -n " $x$y$z "  
                test=`mkpasswd -m sha-512 $x$y$z -s $salt | cut -d":" -f2 | cut -d"$" -f4`  
                if [ $test == $encr ]; then  
                     echo "Password is: $x$y$z"  
                     exit  
                fi  
           done  
      done  
 done  

Ok, terdapat 2 file yang korang perlu ketahui.

shadow - file ni dihasilkan oleh UNIX/Linux (Ubuntu) dan mempunyai password yang telah di-encrypt menggunakan encryption SHA512.
cracker.sh - file ni adalah shell script yang telah ditulis untuk meng-crack password didalam file shadow menggunakan kaedah brute-force.

SHA512 adalah satu encryption algorithm yang menggunakan kaedah encryption satu hala (one-way encryption method). Ini bermaksud, korang boleh encrypt texts menggunakan SHA512 tetapi korang tak boleh decrypt encrypted texts itu semula. Jadi, satu-satu nya cara untuk crack encrypted texts yang menggunakan SHA512 encryption adalah dengan menghasilkan semua possible encrypted texts dan bandingkan dengan encrypted texts yang sedia ada. Oleh itu, Rainbow Table diperkenalkan.

cracker.sh ini akan menghasilkan kombinasi huruf dan nombor sepanjang 3 characters dengan menggunakan huruf-huruf dan nombor-nombor yang telah dispesifikasikan didalam variable LIST.

Jumlah huruf dan nombor (A-Z,a-z,0-9) adalah 62 jadi, itu bermakna terdapat 37,820 kombinasi kata-laluan 3 characters yang dapat dihasilkan (62choose3).

Setiap satu kombinasi yang dihasilkan oleh (cracker.sh) akan di-encrypt menggunakan SHA512, kemudian akan dibandingkan dengan encrypted password didalam file (shadow) sehinggalah kombinasi yang mempunyai encrypted texts yang sama dengan encrypted password didalam file shadow ditemui.

Dalam erti kata lain, kita akan cuba untuk mendapatkan

hash(p1) = hash(p2) 

p1 = password. (encrypted dalam file shadow)
p2 = kombinasi password. (dihasilkan oleh cracker.sh)
hash = ecryption alogrithm


Video script ni beraksi:



Korang juga boleh modify script ni untuk crack encrypted texts yang menggunakan encryption algorithm yang lain seperti MD5 dan SHA256. Ia juga boleh di modify untuk crack encrypted texts yang mempunyai panjang lebih daripada 3 characters.

Cubalah~ :)