13
Rainbow Table pada Cracking Hash Password Time-Memory Trade Off Oleh : Kelompok 11 IF 31-G4 Hartanto Prabowo (113070253) Medy Ramadian (113070257) Mitha Budianti (113070360) FAKULTAS INFORMATIKA INSTITUT TEKNOLOGI TELKOM BANDUNG 2010

KAMSIS_Makalah Rainbow Table

Embed Size (px)

Citation preview

Page 1: KAMSIS_Makalah Rainbow Table

Rainbow Table pada

Cracking Hash Password Time-Memory Trade Off

Oleh :

Kelompok 11

IF 31-G4

Hartanto Prabowo (113070253)

Medy Ramadian (113070257)

Mitha Budianti (113070360)

FAKULTAS INFORMATIKA

INSTITUT TEKNOLOGI TELKOM

BANDUNG

2010

Page 2: KAMSIS_Makalah Rainbow Table

2

Overview Rainbow Table

Rainbow table adalah lookup table yang digunakan untuk mendapatkan plain text dari

password yang telah dirubah menggunakan fungsi hash. Rainbow table berawal dari ide

Martin Edward Hellman pada tahun 1982. Setelah itu dikembangkan oleh Philippe Oechslin

dengan metode Faster Time Memory Trade Off pada tahun 2003. Pada penelitian yang

dilakukan Philippe Oechslin, penggunaan rainbow table dapat mempersingkat waktu

penyerangan terhadap Microsoft's LAN Manager passwords sampai 99,9%, yaitu dari 101

detik hanya menjadi 13,6 detik saja.

Cracking password menggunakan rainbow table tidak sesulit cracking dengan cara

brute force. Rainbow table membuat sebuah pre-generated dataset dari kode hash. Salah satu

kelebihan rainbow table ini adalah apabila kita sudah men-generate sebuah rainbow table,

kita bisa menggunakannya berulang kali.

Untuk memahami mengenai rainbow table, kita terlebih dahulu memahami fungsi

reduksi hash. Fungsi hash merubah plaintext menjadi hash, sedangkan fungsi reduksi

merubah hash menjadi plain text. Tetapi, perlu diingat bahwa fungsi reduksi bukan

merupakan kebalikan dari fungsi hash. Fungsi hash dan fungsi reduksi bersifat irreversible.

Jadi, apabila kita merubah sebuah hash dengan menggunakan fungsi reduksi, maka plain text

yang didapat bukanlah plain text aslinya, melainkan plain text lain.

Rainbow table dibentuk oleh fungsi hash dan fungsi reduksi. Maksudnya, rainbow

table akan menghubungkan antara sebuah plain text awal, lalu hash-nya, setelah itu direduksi

menjadi plain text berbeda, kemudian hash dari plain text tersebut, dan begitu seterusnya.

Dengan demikian, kita bisa melihat hubungan antara plain text awal dengan hash akhir

sehingga kita dapat memecahkan hash yang ada. Detail dari cara kerja rainbow table akan

dijelaskan bagian selanjutnya.

Page 3: KAMSIS_Makalah Rainbow Table

3

Konsep Kerja Rainbow Table

Menurut jenis hash yang diretas, rainbow table memiliki beberapa macam seperti LM,

NTLM, MD5, MD4, MD2, SHA1, Cisco PIX Firewall, dan Cisco IOS. Tiap tipe memiliki

karakteristik masing-masing, misalnya untuk tipe LM dibutuhkan 16 GB sebagai

penyimpanan tabel dengan maksimal panjang pasword 14 karakter, sementara untuk tipe

NTLM memerlukan penyimpanan lebih sedikit, yakni 10 GB akan tetapi hanya untuk

maksimal panjang password 6 karakter.

Pada kesempatan kali ini, penulis hanya akan mengulas konsep kerja dari rainbow

table untuk MD5, yakni rainbow table yang khusus untuk meretas hash code dari tipe MD5.

1. Konsep dasar pembangunan rainbow table

Gambar 1 Gambar 2

Gambar 3

Keterangan:

Gambar 1

Diawali dengan pembentukan hash code dari suatu plain text dengan menggunakan

suatu fungsi hash, misal MD5. Jika berbeda algoritma hash yang dipakai, maka akan

berbeda pula teknik rainbow table yang dipakai.

Gambar 2

Fungsi hash sendiri merupakan fungsi satu arah. Jadi ketika suatu plain text sudah di-

generate hash code-nya, maka tidak bisa dikembalikan menjadi plain text dengan fungsi

yang sama. Adapun pada gambar, yang dimaksud reduce ialah suatu fungsi yang akan

Page 4: KAMSIS_Makalah Rainbow Table

4

mereduksi hash code menurut algoritma tertentu, fungsi reduksi ini bukan merupakan

kebalikan dari fungsi hash.

Gambar 3

Pada pemrosesan pembangunan rainbow table yang terjadi adalah proses hashing dan

reducing berulang. Nantinya yang disimpan di dalam rainbow table hanya berupa start

plain text sampel dan hash code terakhir yang di-generate-nya.

2. Algoritma peretasan dengan rainbow table

Setelah rainbow table berhasil di-generate, langkah selanjutnya melakukan peretasan

terhadap suatu hash code yang ingin diketahui plain text-nya. Algoritmanya sebagai

berikut :

i. Cari padanan hash code yang ingin diretas dengan daftar hash code yang ada dalam

rainbow table. Jika ditemukan, keluar dari perulangan, menuju langkah [iv.]

ii. Jika belum ditemukan, lakukan fungsi reduksi terhadap hash code yang ingin diretas

tersebut menjadi suatu plain text, lalu lakukan fungsi hash terhadap plain text

tersebut hingga didapatkan suatu hash code baru.

iii. Lakukan pengecekan hash code baru yang dihasilkan melalui langkah [ii.] dengan

daftar hash code yang ada dalam rainbow table lagi.

iv. Jika ditemukan, berarti diantara hash code dan start plain text sampel pada baris yang

bersangkutan mengandung plain text dari hash code yang ingin diretas tersebut.

v. Untuk mendapatkan plain text yang dimaksud, ambil start plain text sampel pada

baris tersebut, lalu lakukan fungsi hashing dan reducing melalui start plain text

sampel tersebut hingga didapat hash yang sama dengan hash code yang dicari,

yang juga berarti plain text sebelum hash itu merupakan plain text yang dicari.

3. Contoh

/* ingin dicari plain text dari suatu hash code */

Diketahui suatu hash code : 222f00dc4b7f9131c89cff641d1a8c50

/* pembangunan rainbow table */

Ambil start sampel plain text hash dengan MD5 :

MD5(“iaisudhiu”) “222f00dc4b7f9131c89cff641d1a8c50”

Page 5: KAMSIS_Makalah Rainbow Table

5

Lakukan fungsi reduksi (R) terhadap hash (misal R = fungsi ambil 6 angka pertama) :

R(“222f00dc4b7f9131c89cff641d1a8c50”) “222004”

Hingga looping yang diinginkan, ulangi kembali langkah :

MD5(“2220044”) “c7500ed4d33229ca4c858226fd4da632”

R(“c7500ed4d33229ca4c858226fd4da632”) “750043”

[...] “4259cc34599c530b1e4a8f225d665802”

Baris-baris rainbow table hanya menyimpan kumpulan start sampel plain text dan hash

terakhirnya yang di-generate, misal didapat :

iaisudhiu -> 4259cc34599c530b1e4a8f225d665802

9da8dasf -> 3cd696a8571a843cda453a229d741843

[...]

sodifo8sf -> 7ad7d6fa6bb4fd28ab98b3dd33261e8f

/* Proses peretasan hash code yang dicari */

Untuk proses peretasan : cari padanan hash code yang ingin dicari dengan daftar yang

ada dalam rainbow table.

Jika belum ketemu, ulangi terus : MD5 (R(hash code tersebut))

Lalu cek lagi, apakah sudah bisa ditemukan padanannya.

Jika ditemukan, diantara final hash dengan start sampel-nya terdapat “rantai

tersembunyi” yang di dalamnya terdapat plain text dari hash code yang dicari.

Untuk mendapatkannya, lakukan fungsi hashing dan reducing terhadap start plain text

sampel baris tersebut hingga didapat hash code seperti yang dicari, yang berarti plain

text sebelum hash tersebut di-generate dengan fungsi reduce merupakan plain text

yang dicari.

Page 6: KAMSIS_Makalah Rainbow Table

6

Demo Aplikasi Rainbow Table

Pada kesempatan kali ini, penulis akan mengulas sebuah aplikasi cracking rainbow

table dengan konfigurasi sebagai berikut:

1. Generate Table Rainbow

Untuk membuat rainbow table dengan aplikasi rainbowcrack-1.41-win caranya

terdiri dari dua langkah, yakni:

i. Generate setiap rainbow table dengan menjalankan program rtgen.exe melalui

command prompt, seperti gambar dibawah ini :

Setelah proses generating (memakan waktu lebih dari 12 jam) selesai, akan didapat

5 buah rainbow tabel berupa file .rt yang masing-masing berukuran 125 MB,

sebagai berikut :

Software : rainbowcrack-1.41-win

Algoritma hash : MD5

Jumlah tabel : 5

Ukuran total tabel : 625 MB

Jumlah rantai / baris : 8 juta

Panjang per-rantai : 2100

Range Plain Text : 1 s.d. 7 karakter

alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789], atau

loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789]

Page 7: KAMSIS_Makalah Rainbow Table

7

ii. Akan tetapi, agar proses lookup table pada saat crack nanti lebih mudah, rainbow

table yang ada tersebut perlu di-sorting. Prosesnya hanya memakan waktu

beberapa menit. Caranya dengan jalankan program rtsort.exe melalui command

prompt seperti di bawah ini:

2. Password Cracking

Selanjutnya pada kesempatan kali ini, penulis akan mendemokan cracking dengan

rainbow table melalui fasilitas program rcrack_gui.exe yang disediakan aplikasi

rainbowcrack-1.41-win. Yaitu sebagai berikut :

i. Misalkan kita mempunyai suatu hash code yang ingin dicari tahu bentuk text aslinya :

5d41402abc4b2a76b9719d911017c592

ii. Masukkan hash code yang ingin di crack

Page 8: KAMSIS_Makalah Rainbow Table

8

iii. Pilih rainbow table yang akan digunakan untuk proses cracking

iv. Proses cracking pun akan langsung berjalan, setelah selesai, akan tampak seperti

gambar berikut (didapat plain text dari hash code yang dicari adalah “hello”)

Page 9: KAMSIS_Makalah Rainbow Table

9

Rainbow Table : Time – Memory Trade Off

Untuk memperjelas mengapa rainbow table dikatakan time – memory trade off,

perhatikan cuplikan gambar yang diambil dari aplikasi Winrtgen (rainbow table generator

untuk operating sistem Windows) yang dijalankan pada PC 1 GHz dan RAM 512 MB

dibawah ini :

Gambar diatas merupakan antarmuka dari aplikasi Winrtgen untuk menunjukkan

bagaimana hubungan jumlah baris dan banyak tabel dengan success rate serta waktu

komputasinya. Dari beberapa skenario simulasi dengan aplikasi tersebut didapatkan data

sebagai berikut (sumber: The Ethical Hacker Network - Tutorial Rainbow Tables and

RainbowCrack) :

Page 10: KAMSIS_Makalah Rainbow Table

10

NO

Banyak

Tabel

(N* of tables)

Jumlah

Baris

(chain count)

Panjang Rantai

per Baris

(chain len)

Success

Probability

Total

Precomputation

Time

1 1 40 juta 2.400 97,8 % 2,23 hari

2 1 40 juta 4.000 99,11 % 3,67 hari

3 5 8 juta 2.100 99,90 % 2,01 hari

4 64 67.108.864 15.200 99,98 % 4,6 tahun

Dari tabel diatas, dapat dilihat bahwa untuk membangun rainbow table memang

diperlukan trade off terutama dari segi memori dan waktu komputasional pen-generate-

annya. Jumlah baris yang banyak, table yang banyak, ataupun rantai yang makin panjang,

tidak selalu berarti akan menghasilkan solusi optimal. Sebab, dengan kondisi seperti itu,

waktu komputasinya belum tentu lebih cepat, sekalipun kita mendapatkan rainbow table

dengan tingkat kemungkinan sukses (hash code terpecahkan dengan benar) hingga mendekati

100 %.

Page 11: KAMSIS_Makalah Rainbow Table

11

Kelebihan dan Kekurangan

Adapun beberapa kelebihan dan kekurangan yang dimiliki rainbow table ini, antara

lain :

+) Setelah didapat tabel daftar kombinasi (rainbow table), waktu retas password hanya

memakan waktu kurang dari 25% dengan akurasi hingga 90% s.d. 95%. Misalnya seperti

yang ditunjukkan pada bagian demo aplikasi, untuk meretas suatu hash dibutuhkan waktu

hanya beberapa detik.

-) Butuh komputasi dan resource besar. Gambar di bawah ini menunjukkan ukuran rainbow

table yang dibutuhkan untuk memecahkan kode dengan himpunan karakter seperti yang ada

di sebelah kanan :

-) Ada kemungkinan terjadi looping (rantai tidak berujung / kembali ke start plain text lagi)

-) kemungkinan terdapat dua atau beberapa chain berujung sama.

Page 12: KAMSIS_Makalah Rainbow Table

12

Kesimpulan

Dari hasil kajian dan studi literatur, dapat disimpulkan beberapa hal sebagai berikut :

Makin tinggi success rate untuk rainbow table[s], makin cepat proses cracking password,

TETAPI waktu dan memori pen-generate-annya makin besar.

Sebab, rainbow table dengan jumlah baris / panjang rantai yang besar membuka

kemungkinan untuk mendapatkan kombinasi jawaban dari hash code yang ingin di crack

semakin terbuka lebar. Hanya saja itu berarti untuk membangun banyak baris dan rantai

yang panjang tersebut akan membutuhkan waktu dan memori lebih besar.

Untuk itu, pilihan solusi yang dapat ditawarkan yakni :

“ buat beberapa table dengan sejumlah row dan panjang chain bisa lebih kecil”

Hal tersebut yang disebut melakukan time – memory trade off.

Adapun proteksi yang bisa dilakukan untuk menghindari serangan rainbow table :

Maksudnya, password yang kita miliki sebelum di-hash, ditambahkan kata kunci lain.

Sehingga ketika hash code password kita tercuri, si pencuri akan sulit mendapatkan hash

yang tepat, kecuali dia mengetahui kata kunci tambahan kita. Kata kunci tambahan ini

sendiri biasa disebut salt, sehingga hash hasil penambahan ini disebut Saltedhash.

Page 13: KAMSIS_Makalah Rainbow Table

13

Daftar Pustaka

http://www.codinghorror.com/blog/2007/09/rainbow-hash-cracking.html

(25 Agustus 2010)

http://kestas.kuliukas.com/RainbowTables/

(25 Agustus 2010)

http://logsmylife.wordpress.com/2009/09/11/password-cracking-with-rainbowcrack/

(25 Agustus 2010)

http://project-rainbowcrack.com/tutorial.htm

(25 Agustus 2010)

http://www.md5decrypter.co.uk/

(22 Oktober 2010)

http://www.ethicalhacker.net/content/view/94/24/

(22 Oktober 2010)

http://rainbowtables.net/faq.php

(23 Oktober 2010)