Showing posts with label Hacking. Show all posts
Showing posts with label Hacking. Show all posts

Friday, 14 June 2013

Repository Lokal Kali Linux 1.0


Jika kemarin kalian sudah membaca artikel saya mengenai Cara Menambahkan Repository Kali Linux 1.0 dan sudah menerapkannya di komputer kalian, maka saya rasa kalian juga harus menerapkan postingan saya yang kali ini juga.

Saya merasa kalau repository yang kemarin itu koneksinya cukup berat karena memang repository tersebut adalah repository luar negeri. Nah oleh karena itu, jika kalian ingin kecepatan koneksi yang maksimal, kalian bisa mencoba repository lokal Kali Linux 1.0 yang satu ini. Kita patut berterima kasih kepada tim IHT (Indonesian Hacker Team) yang telah melokalkannya.

Langsung saja ya, untuk menambahkan Repository lokal Kali Linux pertama-tama ketikkan perintah berikut ini :

# nano /etc/apt/sources.list

Pada file yang baru terbuka, silahkan kalian ganti baris repository yang kemarin menjadi baris repository yang ini :

#INDONESIAN HACKER KALI REPOSITORY
deb http://mirror.kali.indonesianhacker.or.id/kali kali main contrib non-free
deb-src http://mirror.kali.indonesianhacker.or.id/kali kali main contrib non-free
deb http://mirror.kali.indonesianhacker.or.id/kali-security kali/updates main contrib non-free
deb-src http://mirror.kali.indonesianhacker.or.id/kali-security kali/updates main contrib non-free


Jika sudah simpan dan tutuplah file tersebut.

Kemudian lakukan update untuk me-refresh daftar repository kalian :

# apt-get update

Semoga bermanfaat :)

Selamat Datang Kali Linux! Selamat Tinggal Backtrack!

Kali Linux tampaknya saat ini sedang menjadi buah bibir di kalangan pecinta linux seluruh dunia. Bukannya kenapa-kenapa, karena distro ini dulunya adalah distro Backtrack yang terkenal itu. Para pengembang Backtrack memutuskan untuk mengganti nama distronya menjadi Kali Linux di versi terbarunya ini untuk memfokuskan Kali Linux sebagai distro berbasis industri untuk percobaan penetrasi (penetration testing). Jadi Kali Linux ini akan dijadikan sebagai standarisasi distro Linux yang digunakan untuk percobaan penetrasi.

Logo Kali Linux

Saya pun tidak ketinggalan untuk mencoba distro yang sangat populer dikalangan para hacker ini. Setelah saya install di mesin saya (masih dualboot dengan Ubuntu 12.04 LTS), semuanya berjalan sempurna. Instalasi berlangsung cepat dan semua hardware laptop saya mampu terbaca dengan baik. Instalasi modem pun sangat mudah. Untuk modem venus fast2 milik saya, hanya perlu diotak-atik sedikit saja langsung jalan. Tak perlu wvdial, langsung lewat network-manager pun bisa! Perangkat ethernet dan wireless juga langsung terinstall dengan mantap. Dan yang tak kalah penting, semua fitur Backtrack, ada disini. 300 lebih tools-tools hacking dan pentest semuanya lengkap persis dengan milik Backtrack. Bahkan digadang-gadang bakalan lebih powerful dari pendahulunya, dikarenakan sekarang Kali Linux sudah benar-benar utuh berbasis Debian.

Dengan berbasis Debian Wheezy versi terbaru dari Debian, tentunya akan membuat Kali Linux menjadi distro yang sangat handal dan tangguh. Mengapa? Kali Linux akan mendapatkan singkronisasi repository hingga 4 kali dalam sehari sehingga membuat Kali Linux akan selalu up to date khususnya dalam perbaikan-perbaikan security dan update paket-paket terbaru yang disediakan Debian. Lihat disini untuk mengetahui hubungan Kali Linux dengan Debian.

Tampilan desktop Kali Linux

Bagi kalian yang berminat ingin mencari-cari informasi mengenai Kali Linux ini, silahkan langsung saja meluncur ke website resmi Kali Linux di www.kali.org atau bisa bertanya-tanya di forum-nya. Lihat juga apa yang baru pada Kali Linux.

Tertarik mencoba?

Tuesday, 11 June 2013

Keamanan, Faktor Penting yang Sering Terlupakan



Keamanan. Ya, topik inilah yang saya angkat sore ini. Kenapa tiba-tiba bicara tentang keamanan? Ini bermula dari kejadian dimana salah satu situs yang saya kelola telah di deface atau dirubah tampilannya oleh ulah orang yang tidak bertanggung jawab. Selain tampilan situs yang dirubah, akses akun administrator pun diambil alih oleh mereka. Alhasil, situs saya pun bobol dan tidak dapat saya apa-apain lagi -_-. Lenyap sudah. huuhuuu. Kalian bisa melihat tampilan website saya yang telah dideface dibawah ini.


Tapi untungnya, para cracker ini hanya menghack itu saja. Tidak sampai ke database ataupun ke file-file websitenya. Sehingga saya pun cukup mengupload ulang backup-an databasenya, dan walaaa! Website pun kembali seperti sedia kala. Tapi menurut saya ini hanya faktor keberuntungan semata, atau memang karena mereka kasian kepada saya. hehe Karna apabila mereka bisa menghack sampai password tempat saya menaruh hostingan website tersebut, maka tamatlah riwayat saya.

Saya tidak marah terhadap orang-orang yang telah menghack situs saya tersebut. Justru saya merasa bahwa mereka adalah orang-orang baik yang mencoba memberi tahu bahwa memang website saya tersebut lemah sisi keamanannya sehingga saya dapat memperbaiki dan lebih meningkatkan kualitasnya lagi. 

Disini saya mengakui hal tersebut bisa terjadi memang karena kecerobohan saya semata. Saat saya membangun website tersebut, saya benar-benar mengabaikan faktor keamanan. Mulai dari penggunaan password yang kurang aman, hak akses user yang semrawut, sampai tidak adanya satupun modul peningkat keamanan yang saya install. Saya hanya memikirkan tampilan, konten, tampilan, konten, itu ituu saja tanpa sedikitpun pernah terfikir akan bahayanya ancaman dari luar sana. Ini sungguh mengerikan sekali. Dan lebih mengerikannya lagi, sebelumnya saya adalah orang yang memang 'tidak' mau tau akan hal ini.

Ketika saya pertama kali melihat situs saya berhasil dibobol oleh seseorang, pertanyaan yang pertama muncul di benak saya adalah, 'Bagaimana caranya mereka bisa menghack situs saya?'. Setelah searching-searching ke google saya menemukan beberapa jenis serangan yang dilakukan oleh para cracker untuk membobol sebuah situs. Ini diantaranya : 

1) Pembajakan Password FTP


Di pertengahan 2009, maraknya satu bentuk pembajakan password FTP yang disebut juga serangan “gumblar” atau “martuz” , mempatenkan model pencurian ini menjadi salah satu cara yang paling sering digunakan untuk melakukan hacking. Cara kerja gumblar atau martuz adalah memodifikasi hasil pencarian Google sehingga setiap klik pada link yang tampil di hasil pencarian akan diredirectkan ke situs penyedia badware. Badware yang terdownload akan secara otomatis menyebarkan gumblar atau martuz ke PC korban. Untuk kemudian mencari password login FTP di PC korban dan mengirimkannya ke sebuah komputer remote. Komputer remote tersebutlah yang bertugas untuk melakukan login FTP ke website korban dan memodifikasi halamannya, termasuk menginstal kopian baru dari gumblar atau martuz sehingga bisa menggandakan sendiri. Itulah sebabnya menghapus program ini tidaklah cukup untuk membersihkan situs anda.

Serangan ini mengambil keuntungan dari sebuah fakta bahwa ada banyak PC yang miskin perlindungan di dunia. Dan personal komputer tersebut nahasnya adalah milik webmaster yang informasi login websitenya disimpan di personal komputer mereka. Karena itulah, lengkapi personal komputer anda dengan perlindungan antivirus yang memadai untuk pencegahan infeksi gumblar atau martuz di situs anda. Dan jangan sekali-kali membookmark informasi login anda.

2) Serangan Remote File Inclusion (RFI)

Sebelum kemunculan gumblar atau martuz, serangan RFI adalah satu bentuk ancaman terbesar. Prinsip kerja serangan RFI adalah menipu sebuah website yang telah berjalan untuk mengcopy kode dari website eksternal. Kode yang dicopy menyusup ke dalam script yang dieksekusi, dan menjadi bagian di dalamnya. Sehingga, setiap script tersebut dieksekusi kembali, sebaris kode tersebut juga ikut dieksekusi. Sebaris kode tersebut fungsinya adalah untuk mendownload badware ke komputer pengakses. Adapun indikasi serangan RFI adalah di akses log website anda akan tampil koding seperti ini:


Perhatikan bahwa sebaris koding di atas terkandung link eksternal ke situs lain. Link tersebut mengarah ke remote server yang menyimpan badware di dalamnya. Tujuannya adalah membuat pengunjung situs anda yang mengeksekusi sebaris koding tersebut diarahkan ke server remote untuk mendownload badware di dalamnya.

Satu alasan mengapa banyak sekali website yang rentan terhadap RFI adalah aplikasi CMS semacam Joomla, WordPress, dan lain sebagainya, seringkali sangat kompleks berisi ribuan baris kode. Beberapa baris seringkali adalah versi lama yang masih rentan terhadap serangan RFI. Ditulis sebelum ancaman RFI dikenal luas sehingga koding tidak diprogram agar kebal dari serangan RFI. Nahasnya aplikasi ini kemudian dipakai oleh milyaran website. Sehingga apabila satu saja vulnerability terhadap RFI diketahui, membuat milyaran website menjadi sasaran empuk disusupi RFI. Itulah sebabnya kita perlu mengupdate aplikasi web kita ke versi yang terbaru, yang tentunya lebih kebal terhadap RFI.

3) Serangan Local File Inclusion (LFI)

Serangan LFI hampir sama seperti RFI, bedanya mereka mencoba untuk menipu sebuah halaman web agar menampilkan konten dari file sistem server yang penting, yang seharusnya restricted dan tidak boleh diakses. Indikasi serangan LFI adalah di akses log website anda akan tampil koding seperti ini:


Perhatikan sebaris koding susupan LFI, terkandung path ke sebuah file di server anda yang ingin penyerang lihat pada halaman tampilan. Koding tersebut akan membuat sistem menampilkan konten dari file password. Walaupun password ditampilkan dalam bentuk enkripsi, tetapi sekali penyerang mendapatkannya, dengan mudah mereka bisa mendekripsinya.

Cara menanggulangi serangan LFI adalah dengan melatih kemampuan koding kita dan memperdalam pengetahuan tentang pembatasan .htaccess

4) Serangan Injeksi SQL

Pada dasarnya serangan ini sama dengan RFI dan LFI, bedanya obyek yang diserang adalah halaman web yang menggunakan Structured Query Language (SQL) untuk melakukan query dan memanipulasi database, semisal MySQL. Cara kerjanya adalah dengan menanamkan komando SQL di sebaris koding untuk menipu sistem agar membocorkan informasi rahasia. Berikut salah satu contoh dari serangan injeksi SQL yang nantinya akan muncul pada akses log website anda:


Target yang dituju bukanlah komando PHP include() seperti halnya LFI dan RFI. tetapi, targetnya adalah melakukan komando query SQL. Seperti contoh sederhana di atas, jika query basic seharusnya mengambil dan menampilkan beberapa data user untuk satu user saja, injeksi bagian baru dari string SQL “OR 1=1″ mengakibatkan sistem yang mengeksekusi kode ini akan menampilkan data untuk semua user. Hal ini karena logika biner “1=1″ selalu bernilai true, jadi setiap record di database menjadi selalu cocok, dan membuat halaman tampilan akan menampilkan apapun karena selalu bernilai true.

Kembali lagi, pengertian script yang mendalam sangatlah diperlukan untuk menanggulangi serangan ini.

5) Password Attack


Di samping gumblar, ada cara lain bagi penyerang untuk mencuri password situs anda. Yaitu dengan berulang-ulang mencoba untuk login dengan kombinasi user ID dan password yang berbeda, berharap untuk menebak manakah yang benar. “menebak” di sini adalah melalui serangan otomatis dengan memasukkan berbagai susunan huruf dan angka dalam beberapa detik. Inilah sebabnya mengapa sangatlah penting bagi kita untuk menggunakan password yang susah di crack. Yaitu password yang sangat panjang, memuat berbagai macam karakter, dan random, yang akan membuat bahkan komputer tercepatpun membutuhkan waktu lama untuk melakukan cracking password anda. Cara lain yang efektif adalah dengan mengaktifkan settingan proteksi brute force, agar melakukan blok IP tertentu jika melakukan kesalahan gagal login lebih dari 3 kali.

Naah, berdasarkan kriteria diatas sepertinya serangan yang dilakukan ke website saya adalah serangan tipe ke 5, yaituPassword Attack. Karena si penyerang hanya mengambil alih akun Administrator dari Website saya dan mengubahnya melalui halaman Admin milik CMS Drupal situs saya.

Kalau sudah tau jenis-jenis serangan yang terjadi, lalu apa? Tentunya kita perlu melakukan upaya pencegahan agar kejadian seperti ini tidak terulang kembali. Disini saya juga akan memberikan beberapa aspek yang perlu kita perdalam agar website kita tidak gampang di hack. Khususnya website yang menggunakan CMS Drupal ya.

1. Amankan file permission dan ownership kalian

Ini sangat penting, karena masalah permission dan ownership ini sangat rentan sekali. Ada satu saja file penting yang salah pemberian hak aksesnya, habislah sudah jika ada orang yang berhasil masuk kesitu. Untuk mempelajari masalah ini, kalian bisa merujuk ke link ini

2. Mengaktifkan HTTPS

HTTPS merupakan sebuah protokol yang dirasa sangat aman karena menggunakan teknologi enkripsi tingkat tinggi didalamnya. Sehingga akan sangat sulit untuk dapat menyadap informasi yang berlalulintas disitu. Klik link ini untuk memperlajari cara mengaktifkan HTTPS di CMS Drupal.

3. Menginstal berbagai modul yang berguna untuk meningkatkan keamanan

Drupal menyediakan beragam modul yang ternyata sangat berguna bagi keamanan sebuah website. Seperti modul Login Security yang dapat memblock ip secara otomatis ketika ia mencoba berulang-ulang memasukkan username dan password yang salah, modul Spam Control Modul yang dapat meminimalisir serangan dari spam-spam, dll. Klik link ini untuk melihat modul-modul berguna yang lainnya.

4. Gunakan Password kombinasi yang sulit


Password adalah salah satu komponen penting yang juga sering dilupakan. Banyak situs-situs lembaga yang bahkan masih menggunakan password 123 atau qwerty lho. Oleh karena itu gunakan password secara bijak. Seperti dengan menggunakan kombinasi huruf kapital, angka, huruf, dan spesial karakter.

5. Backup secara berkala


Backup memang terlihat sepele dan merepotkan apalagi bila ukuran file website/database kalian sangat besar. Namun kalian akan merasakan betapa besar manfaat dari melakukan backup ini ketika kalian sudah mendapatkan masalah dikemudian hari. Jadi segera backup website kalian mulai sekarang!

Yah, saya kira dengan menerapkan metode-metode diatas sekiranya kita sudah meminimalisir resiko yang ada. Pada akhirnya memang tidak ada sebuah sistem yang sempurna. Namun kita semua mesti, wajib, kudu untuk terus berusaha bukan? Masa kita kalah sih lawan penjahat-penjahat seperti ini? Ya nggak? :D

Semoga bermanfaat :)

SUMBER1
SUMBER2

Cara mencuri password Facebook dengan Backtrack 5



Dilihat dari judulnya sepertinya postingan saya kali ini jahat banget ya hehe :p. Gapapa lah, sekali-sekali doang :D Sudah beberapa hari ini saya bermain-main dengan Backtrack 5, dan sekarang kita akan coba untuk meng Hack password Facebook dengan Backtrack 5. Itung-itung latihan untuk menjadi seorang hacker, iseng-iseng dikit boleh lah. :D

Oke langsung saja, disini kalian akan membutuhkan Virtualbox atau VMware untuk booting ke si Backtrack. Lho kenapa harus di VMware? Nanti akan dijelaskan di bawah ya, :D Pokoknya kalian harus melakukan ini semua di VMware. Lets go!

Hack password Facebook dengan Backtrack 5

1. Ketikkan perintah berikut :

# cd /pentest/exploit/set && ./set

2. Nanti akan muncul gambar seperti dibawah ini :



Ketik 2 lalu enter.

3. Setelah itu pilih 3.





4. Sekarang pilih 2.




5. Masukkan situs yang mau di kloning. Disini kita isi http://www.facebook.com lalu tekan enter.



6. Tekan enter lagi jika muncul gambar seperti ini.




7. Ini adalah tampilan kalau aplikasinya telah berjalan.



Nah, sekarang bagaimana caranya supaya korban bisa terjebak? Disinilah fungsi dari menginstall si Backtrack di VMware. Silahkan kalian palsukan domain lokal si Backtrack menjadi www.facebook.com dengan mengikuti postingan ini. Caranya persis sama, tapi kalian sesuaikan saja, disitu kan domainnya empol.com, nah tinggal kalian ganti saja dengan facebook.com.

Setelah selesai melakukan hal diatas, silahkan ketikkan di browser host kalian www.facebook.com. Nanti akan muncul tampilan login seperti facebook yang biasa. Tapi ini sebenarnya bukanlah situs facebook yang asli, melainkan hanya kloningan si Backtrack. Nah, apa jadinya ketika kita mengetikkan email dan password kita? Misalnya disini saya masukkan email : mhm >_> password : yep thats i (ngasal hehe)



Kemudian silahkan masuk ke VMware nya lagi dan lihat apa yang muncul di terminal yang tadi. :D



Selamat bersenang-senang hehe :D


Menghack File Rar, Zip, 7zip yang Terpassword dengan Rarcrack



Kemarin saya mendownload film di sebuah situs melalui media Torrent. Setelah download selesai ternyata film tersebut dikompress kedalam file Zip dan tidak bisa diekstrak karena di beri password -_-. 
Saya pun mencari-cari solusinya di google dan akhirnya menemukan Cara Menghack File Zip yang Terpassword dengan Rarcrack.

Cara install :

1. Download terlebih dahulu Rarcracknya dengan mengetik perintah berikut di terminal :

wget http://kent.dl.sourceforge.net/sourceforge/rarcrack/rarcrack-0.2.tar.bz2

2. Ekstrak Rarcracknya :

tar -xjf rarcrack-0.2.tar.bz2

3. Pindah ke dalam direktori Rarcrack yang telah diekstrak, kemudian install dengan perintah ini :

cd rarcrack-0.2/
make
sudo make install


Jika tidak ada pesan kesalahan, maka sampai pada tahap ini Rarcrack telah berhasil terinstall. Untuk mnggunakannya cukup mudah, tinggal mengetikkan perintah ini di terminal :

sudo rarcrack namafile.zip/rar/7zip --type zip/rar/7zip

Contoh :

sudo rarcrack Snow.zip --type zip


Proses akan berjalan sedikit lama tergantung tingkat kerumitan password yang akan kalian hack. Namun jika berhasil, maka akan muncul sebuah file berekstensi < b>.xml dengan password benarnya didalamnya.


Semoga bermanfaat :)

Malware Curi Password di Server Linux




Barusan abis browsing-browsing internet, tiba-tiba saya menemukan satu artikel yang menarik. Isi artikel ini menjelaskan bahwa telah adanya Virus ganas sejenis Backdoor yang berhasil mencuri data-data penting dari sebuah Server yang berbasiskan Linux. Nah lho. Kok bisa ya? Daripada penasaran, lebih baik baca berita lengkapnya dibawah ini.
Sistem operasi open source Linux terkenal aman dari serangan malware atau virus. Karena reputasi ini, banyak perangkat server yang mempercayakan Linux sebagai otak utamanya.

Namun, reputasi ini pelan-pelan mulai dicemari dengan kehadiran malware yang menginfeksi web server Apache berbasis Linux, terdeteksi pada Desember tahun lalu.

Kabar terbaru, yang dirilis oleh produsen aplikasi antivirus ESET, menyebutkan malware berjenis backdoor kembali terdeteksi menginfeksi server berbasis Linux.

ESET Malware Research Lab berhasil mendeteksi malware hasil modifikasi SSH yang berfungsi sebagai backdoor di server Linux.

Modifikasi SSH daemon yang oleh ESET diidentifikasi sebagai Linux/SSHDoor.A ini, sengaja dirancang untuk mampu mencuri data penting, seperti username dan password.

"Tidak mudah untuk memastikan bagaimana SSH daemon yang telah berubah menjadi trojan ini masuk dan menginfeksi server. Kemungkinan karena aplikasi yang digunakan sudah out of date (perlu update/patching), atau password yang lemah," ujar Technical Consultant ESET Indonesia Yudhi Kukuh, dalam keterangan pers yang diterima KompasTekno, Senin (28/1/2013).

Malware Linux/SSHDoor.A dikembangkan untuk mampu mengakses server yang terinfeksi secara remote dengan menggunakan hardcoded password atau SSH key.

Saat daemon diaktifkan, backdoor akan mengirimkan informasi IP dan port mana yang sedang aktif, beserta hostname server-nya. Kemudian, ketika pengguna login ke server yang terinfeksi, username dan password-nya pun secara otomatis terkirim ke server milik peretas.

Secure Shell Protocol (SSH) adalah protokol yang umum di Unix dan biasa digunakan untuk melindungi dan mengamankan komunikasi data.

Protokol SSH juga itu juga berfungsi untuk mengatur remote server, transfer file, dan lainnya. Fungsi tersebut membuat protokol SSH memiliki akses langsung ke dalam server.

Protokol SSH inilah kemudian yang dimanfaatkan dengan cara dimodifikasi.
Bagaimana pendapat kalian? :)

Seluruh tulisan diatas dikutip dari artikel KompasTekno.

Trik Mengatasi Error Man In The Middle Attack SSH




Sudah lama saya sering mengalami masalah ini, yaitu ketika saya sedang meremote sebuah komputer, saya dituduh melakukan serangan man-in-the-middle-attack terhadap komputer yang ingin saya remote tersebut. Padahal saya sendiri tidak tahu apa itu man in the middle attack -__-. 
Yap, kalian pasti tahu kalau SSH adalah aplikasi protokol untuk melakukan remote IP. Nah, yang saya maksud error Man In The Middle Attack itu adalah muncul peringatan kira-kira seperti ini :

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)!

Nah, setelah mencari-cari sekian lama, akhirnya saya pun mengetahui cara untuk mengatasinya. Hal tersebut sebenarnya terjadi ketika semacam key yang kita butuhkan untuk konek ke komputer yang kita remote, tidak ada di dalam file konfigurasi milik aplikasi SSH dan tidak bisa ditambahkan entah karena apa. Kemudian, untuk menanggulanginya, kita perlu sedikit "mencurangi" dengan menghapus file konfigurasi SSH tersebut agar nanti ketika file itu terhapus, maka SSH akan membuat kembali secara otomatis dengan isi file yang masih kosong. Nah, baru deh nanti kita bisa menambahkan lagi key yang dibutuhkan. 

Langsung saja, ketikkan satu perintah berikut :

sudo rm .ssh/known_hosts

Setelah itu coba remote kembali komputer yang sebelumnya tidak bisa kalian remote, pasti sekarang sudah bisa. :D

Semoga bermanfaat :)

Blockwise Chosen Boundary Attack – BEAST Attack


Pada September 2011 lalu dunia sempat dikejutkan dengan BEAST (Browser Exploit Against SSL/TLS) attack yang menyerang SSL/TLS oleh Thai Duong dan Juliano Rizzo. Serangan tersebut didemokan dalam Ekoparty 2011 dan dijelaskan dalam paper berjudul Here Comes the XOR Ninjas. Serangan ini practical dan terbukti efektif mencuri session ID yang disimpan dalam cookie website yang dilindungi dengan SSL/TLS (selanjutnya saya hanya menyebut SSL untuk SSL/TLS). Dalam tulisan ini saya akan membahas apa itu BEAST attack dan bagaimana cara kerjanya.
BEAST Attack
Bagi yang belum pernah mendengar BEAST attack silakan melihat dulu youtube, BEAST vs HTTPS yang mendemokan bagaimana BEAST attack bisa digunakan membajak akun Paypal korban. Dalam video tersebut terlihat bagaimana BEAST berhasil mendekrip paket SSL satu byte per satu byte sampai akhirnya seluruh cookie korban berhasil dicuri. Menakutkan bukan?
Gara-gara BEAST attack ini rame-rame situs pengguna SSL mengubah algoritma enkripsinya dari block cipher menjadi stream cipher (RC4). Lho kenapa kok sampai harus mengganti dari block cipher menjadi stream cipher ? Rupanya BEAST attack ini hanya menyerang SSL yang menggunakan algoritma block cipher (e.g AES/DES/3DES) dalam mode CBC (cipher block chaining). Dengan beralih ke stream cipher maka situs tersebut menjadi kebal dari serangan BEAST.
Mari kita bahas ada apa dengan SSL block cipher dan mode CBC sehingga bisa dieksploitasi sampai sedemikian fatalnya.
Block-Cipher dan SSL Record
Sebelumnya sebagai background saya akan menjelaskan sedikit mengenai enkripsi dengan block-cipher dalam SSL.
SSL pada dasarnya mirip dengan protokol pada transport layer seperti TCP yang memberikan layanan connection oriented communication dan menjamin reliability untuk layer di atasnya, hanya bedanya adalah data yang lewat SSL dalam bentuk terenkripsi.
Kalau dalam TCP ada yang namanya 3-way handshake untuk membentuk koneksi, dalam SSL ada negotiation. Dalam proses negosiasi akan disepakati algoritma (e.g encryption, key exchange,MAC) apa yang dipakai dan juga disepakati kunci simetris yang dipakai untuk mengenkripsi data.
Perlu diketahui SSL menggunakan algoritma simetris (e.g RC4, AES, DES) untuk mengenkripsi data karena lebih murah komputasinya dibanding algoritma asimetris (e.g RSA). Algoritma asimetris hanya dipakai selama proses negosiasi saja untuk mengamankan proses pertukaran kunci simetris, setelah session/channel/connection SSL terbentuk, algoritma asimetris tidak dipakai lagi, semua komunikasi dalam channel SSL menggunakan algoritma enkripsi simetris baik block-cipher maupun stream-cipher.
Dalam channel SSL data dikirim dalam bentuk record SSL yang berukuran maksimal 16 kB. Data yang dikirim adalah data yang ada pada layer di atasnya seperti request/response HTTP dalam HTTPS (HTTP over SSL).
Screen Shot 2013-04-19 at 12.43.42 AM
Data yang dikirim melalui channel SSL akan dipecah menjadi satu atau lebih SSL record sebelum dikirimkan ke tujuan dan semua record dienkrip dengan kunci simetris yang sama (satu kunci untuk client ke server, dan satu kunci untuk server ke client).
Sebagai pengingat saja, dalam block cipher dalam mode opeasi CBC, setiap blok plaintext di-XOR dengan blok ciphertext sebelumnya untuk menghasilkan blok ciphertext. Khusus untuk blok pertama, blok plaintext di-XOR dengan IV.
Screen Shot 2013-03-10 at 6.54.29 PM
Chained IV
Bagaimanakah cara mengenkripsi SSL record ? Data plaintext yang akan dienkrip dalam SSL record tentu terdiri dari satu atau lebih blok plaintext, P1, P2, P3,…, Pn yang akan dienkrip menjadi ciphertext C1, C2, C3,… ,Cn. Ingat dalam CBC mode, dibutuhkan IV untuk menghasilkan C1, nah yang menjadi pertanyaan adalah dari manakah IV atau C0 ini berasal ?
Dalam RFC 2246 tentang TLS 1.0 dijelaskan begini:
With block ciphers in CBC mode (Cipher Block Chaining) the initialization vector (IV) for the first record is generated with the other keys and secrets when the security parameters are set. The IV for subsequent records is the last ciphertext block from the previous record.
Ternyata IV untuk SSL record pertama ditentukan pada saat handshaking (negosiasi), sedangkan IV untuk record selanjutnya adalah block ciphertext terakhir dari record SSL sebelumnya. Menggunakan block ciphertext terakhir sebagai IV untuk record berikutnya disebut dengan chained IV.
Screen Shot 2013-04-20 at 12.07.53 PM
Pada gambar di atas terlihat bahwa blok ciphertext terakhir dari record pertama (c4) menjadi C0 atau IV untuk record kedua. Begitu juga block ciphertext terakhir dari record kedua akan menjadi IV untuk record ketiga. Nanti bila ada record ke-4, block ciphertext terakhir dari record ke-3 akan berperan sebagai IV untuk record SSL ke-4.
Pada gambar di atas c0 digambarkan sebagai kotak bergaris putus-putus karena memang C0/IV bukan bagian dari record SSL. Dalam record SSL, block pertama ciphertext adalah C1 bukan C0 atau IV dengan kata lain pendekatan yang dipakai adalah implicit IV.
Pendekatan chained IV ini memandang semua blok ciphertext dari semua record SSL seolah-olah sebagai aliran blok ciphertext yang berurutan, C1, C2, C3….Cn. Pada gambar di atas terlihat record pertama adalah c1 || c2 || c3 || c4, dan 4 blok ciphertext pada record ke-2 bisa dianggap kelanjutan dari record sebelumnya, c5 || c6 || c7 || c8. Tiga blok ciphertext pada record ke-3 juga bisa  dianggap sebagai kelanjutan dari blok ciphertext sebelumnya, c9 || c10 || c11.
Screen Shot 2013-04-20 at 1.20.15 PM
Chained IV terbukti menjadi masalah keamanan serius karena seorang penyerang sudah tahu duluan IV untuk mengenkrip data berikutnya. Nanti akan saya jelaskan bagaimana chained IV ini bisa dieksploitasi.
Sebagai catatan: Kelemahan chained IV ini diperbaiki di TLS 1.1 dengan menggunakan explicit IV, setiap record menyertakan IV untuk record tersebut (IV menjadi bagian dari record sebagai c0).
Eksploitasi Chained IV
Sekarang akan saya bahas bagiamana chained IV bisa dieksploitasi. Kita akan asumsikan seorang penyerang sedang sniffing jaringan dan mendapatkan (encrypted) ssl record berisi ciphertext Ca = C1 || C2 || C3 || C4 || C5. Dalam BEAST attack ini penyerang memiliki privilege chosen plaintext, artinya dia bisa menentukan plaintext apa yang akan dienkrip dan mendapatkan hasil enkripsinya (ciphertext).
Penyerang tersebut ingin mengetahui apakah plaintext dari suatu blok ciphertext, misalkan C2 adalah G(uess). Bagaimana caranya?
Penyerang akan membuat plaintext P6 = C1 XOR C5 XOR G kemudian meminta sistem mengenkrip plaintext tersebut.  Mari kita lihat bagaimana P6 dienkripsi menjadi C6. Ingat melakukan XOR dengan nilai yang sama dua kali akan meniadakan efeknya, karena ada XOR C5 dua kali, maka dua XOR C5 tersebut bisa dihapus.
C6 = E(P6 XOR C5) = E(C1 XOR C5 XOR G XOR C5) = E(C1 XOR G)
Apa artinya dari persamaan C6 = E(C1 XOR G) di atas? Perhatikan bahwa bila G = P2 (plaintext dari C2) maka yang terjadi adalah C6 = E(C1 XOR P2) = C2.
Okey, jadi jika G = P2, maka C6 = C2, lalu so what? apa istimewanya? Bagi yang belum menyadari potensi bahayanya, perhatikan bahwa hanya dengan melihat apakah C6 = C2, si penyerang bisa memastikan apakah G = P2. Bila si penyerang melihat bahwa C6 = C2 artinya bisa dipastikan bahwa G = P2, atau tebakannya benar.
Kini si penyerang memiliki cara untuk memastikan apakah tebakannya benar atau salah
Sudah mulai terbayang bukan cara mendekrip C2 ? Pertama penyerang akan memilih tebakan G’ dan meminta P6 = C1 XOR C5 XOR G’ untuk dienkrip (chosen plaintext). Kemudian penyerang akan melihat apakah hasil enkripsi P6, C6 = C2 atau tidak ?
Screen Shot 2013-04-20 at 2.25.16 PM
Bila dilihat C6 tidak sama dengan C2, maka penyerang akan memilih tebakan baru G”. Ingat karena adanya chained IV, maka C6 tersebut menjadi IV untuk mengenkripsi P7 sehingga pada tebakan kedua, si penyerang memilih P7 = C1 XOR C6 XOR G”.
Screen Shot 2013-04-20 at 2.30.24 PM
Penyerang juga akan melihat apakah C7 = C2 ? Bila masih salah, penyerang akan memilih tebakan baru, G”’. Sekali lagi karena adanya chined IV, C7 tersebut menjadi IV untu mengenkripsi P8 sehingga pada tebakan ke-3 si penyerang memilih P8 = C1 XOR C7 XOR G”’.
Screen Shot 2013-04-20 at 2.32.19 PM
Bila kali ini penyerang melihat bahwa C8 = C2, maka penyerang yakin bahwa G”’ adalah P2 (plaintext dari C2). Namun bila masih salah, penyerang akan terus membuat tebakan baru sampai didapatkan hasil yang positif.
Dalam contoh di atas, plainteks yang dipilih selalu melibatkan C1 karena kita ingin mendekrip C2 (mencari P2). Secara umum bila yang ingin didekrip adalah Cn (mencari Pn), maka plainteks yang dipilih harus memakai Cn-1.
Chosen Boundary
Bagi yang jeli tentu akan melihat masih ada yang kurang dari cara ini. Ingat bahwa G adalah tebakan dari penyerang yang berukuran satu blok (AES berukuran 16 byte). Bagaimana cara menentukan G ? Mengingat G berukuran satu blok 16 byte sehingga kemungkinan G sangat banyak, tentu tidak mungkin kita memilih G sembarangan.
Lalu, bagaimana cara kita membuat “educated guess” atau “smart guess” untuk memilih G yang paling berpotensi benar ?
Memilih G yang tepat untuk menebak P2 sangat susah bila yang tidak diketahui adalah semuanya (16 byte). Tapi kalau kita yakin bahwa 15 byte pertama P2 adalah huruf ‘x’ sedangkan satu byte terakhir P2 tidak diketahui isinya, maka hanya ada 256 kemungkinan tebakan yang harus dicoba. Salah satu diantara 256 tebakan di bawah ini pasti ada yang benar kalau hanya 1 karakter terakhir yang tidak diketahui isinya.
  • Ga = xxxxxxxxxxxxxxxa
  • Gb = xxxxxxxxxxxxxxxb
  • Gc = xxxxxxxxxxxxxxxc
  • Gd = xxxxxxxxxxxxxxxd
  • Ge = xxxxxxxxxxxxxxxe
  • … dan seterusnya
Bagaimana kalau plaintextnya adalah teks “topsecret” dan penyerang tidak mengetahui satu byte pun isinya?
Dalam BEAST attack, selain privilege chosen plaintext, si penyerang punya satu privilege lagi, yaitu menyisipkan teks (prepend) di awal atau di tengah teks lain sebelum teks tersebut dienkripsi. Jadi bila si penyerang mengirimkan teks “abcd”, maka sistem akan mengenkripsi gabungan “abcd” dan “topsecret”.
Privilege penyisipan teks ini sangat penting dalam kesuksesan BEAST attack karena dengan menyisipkan teks artinya sama saja kita bisa menggeser batas blok plaintext. Bagaimana maksudnya ?
Ingat bahwa agar kita bisa menebak satu blok dengan mudah, kita harus membuat 15 byte pertama blok tersebut menjadi sesuatu yang kita ketahui, kemudian hanya menyisakan satu byte saja yang tidak diketahui.
Apa yang terjadi bila teks “topsecret” disisipkan teks “xxxxxxxxxxxxxxx” di awalnya? Setelah digabung teks gabungannya menjadi “xxxxxxxxxxxxxxxtopsecret”. Lalu so what? Apa gunanya menambahkan teks di awal? Memang sepintas tidak terlihat bedanya, baru akan terlihat gunanya ketika kita melihat teks gabungan tersebut dalam bentuk blok-blok plainteks.
Screen Shot 2013-04-20 at 3.26.55 PM
Sudah terlihat bedanya bukan? Setelah ditambahkan 15 huruf ‘x’ di awal, sekarang jumlah blok plainteks menjadi 2 (P1 dan P2), dan blok plainteks pertama adalah ‘xxxxxxxxxxxxxxxt’. Aha! Sekarang kita bisa menebak P1 dengan mudah karena kita yakin bahwa 15 karakter pertama P1 berisi ‘x’ karena kita sendiri yang menambahkan huruf ‘x’ tersebut.
Teknik menyisipkan teks ini bertujuan untuk menggeser batas blok (chosen boundary) sehingga hanya menyisakan satu karakter saja yang tidak diketahui.
Setelah penyerang menebak 256 kali, dijamin dia akan mengetahui bahwa huruf pertama adalah ‘t’. Selanjutnya bagaimana cara menebak karakter ke-2 ?
Menebak karakter ke-2 dilakukan dengan mengulang langkah awal tadi, yaitu menggeser batas dengan menyisipkan teks di awal. Kali ini yang disisipkan adalah 14 huruf ‘x’, bukan lagi 15 huruf ‘x’. Mari kita lihat blok plainteksnya.
Screen Shot 2013-04-20 at 3.35.27 PM
Karena karakter yang disisipkan (prepend) hanya 14, maka dalam P1 menyisakan ‘to’. Kita sudah tahu 14 huruf pertama adalah ‘x’ dan huruf pertama adalah ‘t’, jadi dari P1 hanya karakter terakhir yang tidak diketahui isinya. Sekali lagi, kita berada dalam posisi yang kita inginkan, kita hanya perlu menebak 256 kali tebakan untuk mendapatkan huruf ke-2 :
  • Ga = xxxxxxxxxxxxxxta
  • Gb = xxxxxxxxxxxxxxtb
  • Gc = xxxxxxxxxxxxxxtc
  • Go = xxxxxxxxxxxxxxto
Menebak karakter ke-3 juga dilakukan dengan cara yang sama. Kita menggeser boundary dengan menyisipkan 13 karakter ‘x’ di awal sehingga blok plainteks yang terbentuk adalah:
Screen Shot 2013-04-20 at 3.40.24 PM
Kali ini P1 adalah 13 huruf ‘x’, diikuti dengan 2 karakter yang sudah diketahui ‘to’ dan satu karakter lagi yang belum diketahui. Karena hanya karakter terakhir yang tidak diketahui, maka hanya diperlukan paling banyak 256 kali tebakan untuk mengetahui isi karakter ke-3:
  • Ga = xxxxxxxxxxxxxtoa
  • Gb = xxxxxxxxxxxxxtob
  • Gc = xxxxxxxxxxxxxtoc
  • Gp = xxxxxxxxxxxxxtop
Dua Fase Serangan
Tadi sudah kita bahas bagaimana cara mendekrip satu blok cipherteks. Secara umum tahapannya bisa dibagi menjadi 2 fase:
  1. Fase menggeser batas
  2. Fase melakukan 256 tebakan
Fase pertama si penyerang memanfaatkan privilege chosen boundarynya untuk menggeser batas. Penyerang akan menyisipkan suatu teks untuk menggeser batas blok plainteks sedemikian hingga hanya menyisakan satu karakter yang tidak diketahui. Gambar di bawah ini menunjukkan proses serangan pada fase pertama. Penyerang mengirimkan 15 karakter ‘x’ kemudian menerima hasil enkripsi 15 karakter ‘x’ dan ‘topsecret’ dalam bentuk C0||C1||C2.
Screen Shot 2013-04-20 at 3.51.58 PM
Fase kedua adalah fase untuk menebak karakter terakhir, pada fase ini penyerang memanfaatkan privilege chosen plaintextnya (lempar plaintext, terima ciphertext). Dari fase pertama penyerang sudah mengetahui:
  • Ciphertext C = C0||C1||C2
  • P1 = xxxxxxxxxxxxxxx?
Penyerang harus menebak karakter terakhir P1 yang belum diketahui isinya.
Langkah pertama penyerang memilih tebakan Ga = ‘xxxxxxxxxxxxxxxa’ kemudian menentukan plaintext P3 = C0 XOR C2 XOR Ga.
Hanya pengingat saja. Karena adanya chained IV, kita tahu bahwa plaintext yang kita pilih ini akan dienkrip dengan menggunakan C2 sebagai IV. Nanti plaintext tersebut akan di-XOR lagi dengan IV (C2)  sebelum dienkrip sehingga menyisakan C0 XOR Ga saja yang akan dienkrip.
C3 = E(P3 XOR C2) = E(Co XOR C2 XOR Ga XOR C2) = E(Co XOR Ga)
Karena P3 sudah kita XOR duluan dengan C2, nanti akan menyisakan C3 = Encrypt(C0 XOR Ga). Dalam P3 juga kita gunakan C0 karena kita akan membandingkan dengan C3 dengan C1 dan C1 = Encrypt(C0 XOR P1).
Plaintext P3 ini adalah plaintext yang dipilih penyerang (chosen plaintext) untuk dienkrip menjadi C3. Kemudian penyerang akan melihat apakah C3 = C1 ? Bila tidak sama, maka penyerang akan melanjutkan dengan tebakan lain.
Screen Shot 2013-04-20 at 4.15.48 PM
Karena C3 tidak sama dengan C1 artinya tebakan Ga salah. Penyerang membuat tebakan baru Gb = ‘xxxxxxxxxxxxxxxb’ kemudian menentukan P4 = C0 XOR C3 XOR Gb. Plainteks pilihan penyerang ini akan dienkrip menjadi C4. Penyerang akan melihat apakah C4 = C1 ? Bila tidak sama, penyerang akan melanjutkan dengan tebakan lain.
Screen Shot 2013-04-20 at 4.15.57 PM
Penyerang akan terus mencoba sampai pada tebakan ke-20 (dalam contoh kasus ini), penyerang membuat tebakan Gt = ‘xxxxxxxxxxxxxxxt’ dan menentukan P22 = C0 XOR C21 XOR Gt. Setelah P22 dienkrip menjadi C22, penyerang melihat bahwa ternyata C22 = C1, yang artinya penyerang yakin bahwa P1 adalah ‘xxxxxxxxxxxxxxxt’.
Screen Shot 2013-04-20 at 4.16.04 PM
Setelah penyerang mengetahui karakter pertama adalah ‘t’ selanjutnya penyerang akan mengulangi lagi dari fase pertama untuk menggeser batas dan fase kedua untuk menebak karakter terakhir sebanyak maksimal 256 kali tebakan.
Chosen Boundary dalam HTTPS
Selama ini yang sudah kita bahas masih dalam tataran model atau teoretis saja. Sebenarnya apakah model tersebut ada di dunia nyata ? Jawabnya ada, BEAST attack adalah serangan yang mengeksploitasi chained IV menggunakan teknik pergeseran batas blok (chosen boundary) untuk mendekrip SSL record.
Berikut adalah contoh cookie-bearing request yang dikirim oleh browser dan sudah dipotong-potong menjadi blok-blok plainteks, P1 || P2 || P3 || P4. Dengan sniffing penyerang berhasil mendapatkan ciphertext C = C1 || C2 || C3 || C4 dan ingin mencuri cookie PHPSESSID korban. Bagaimanakah caranya ?
Screen Shot 2013-04-20 at 5.29.22 PM
Penyerang bisa mencuri cookie PHPSESSID dengan cara yang sama dengan yang sudah kita bahas tadi.
Fase pertama kita harus menggeser batas bloknya sehingga hanya byte terakhir saja yang tidak diketahui isinya. Dalam request HTTP di atas sebagian besar isi teks sudah diketahui, “POST”, “HTTP/1.1″ dan “Cookie” adalah teks yang umum ada pada request HTTP, bukan hal yang rahasia. Satu-satunya yang rahasia pada request di atas hanyalah isi dari PHPSESSID “af25c…”, bahkan panjang dari isi PHPSESSID bukan sesuatu yang rahasia.
Penyerang bisa menyisipkan teks tambahan dalam URI path untuk menggeser batas. Dalam contoh request di atas kita ingin menggeser “af25c…” sebanyak 12 karakter ke kanan. Penyerang akan mengirimkan cookie-bearing request dengan URI PATH /xxxxxxxxxxxx sehingga blok plainteks dari request yang terbentuk adalah:
Screen Shot 2013-04-20 at 5.37.59 PM
Perhatikan pada request yang telah digeser ini, P3 adalah “kie: PHPSESSID=a”. Dari P3 tersebut hanya karakter terakhir saja yang tidak diketahui, “Cookie” dan “PHPSESSID” adalah teks yang umum pada request HTTP. Sudah terbayang kan caranya? Setelah kita menggeser agar P3 menjadi seperti itu, selanjutnya kita masuk ke fase dua, yaitu menebak karakter terakhir sebanyak maksimal 256 kali.
Dengan mengulangi fase pertama dan fase kedua untuk semua karakter pada cookie, pada akhirnya penyerang akan bisa mencuri cookie. Inilah yang sebenarnya terjadi dalam serangan BEAST attack.
Skenario Serangan
Bagaimana sebenarnya serangan BEAST itu dilakukan untuk mencuri cookie PHPSESSID seperti contoh request di atas? Gambar di bawah menunjukkan skenario serangan BEAST bagaimana seorang penyerang mencuri cookie PHPSESSID bank.com.
Screen Shot 2013-04-20 at 5.45.51 PM
Serangan BEAST ini mensyaratkan penyerang berada dalam posisi yang memungkinkan untuk melakukan sniffing (e.g. satu jaringan LAN, berada di proxy/router).
Syarat kedua adalah penyerang berhasil menjalankan script di browser yang sama (di tab berbeda) dengan yang dipakai korban untuk membuka bank.com. Script tersebut berfungsi sebagai agent yang mampu mengirimkan cookie-bearing request dan mengirimkan data (over SSL) ke situs bank.com. Ada banyak cara penyerang bisa mengeksekusi script di browser korban, antara lain dengan merayu korban mengklik situs evil.com yang berisi script agent.
Berikut adalah cara yang dilakukan penyerang untuk mencuri PHPSESSID:
  1. Pada fase pertama script yang jalan di browser korban memaksa browser korban mengirimkan cookie-bearing request ke bank.com dengan URI path mengandung ‘xxxxxxxxxxxxxxxx’ untuk menggeser isi PHPSESSID sebanyak 12 karakter.
  2. Sniffer yang dipasang si penyerang mencatat request POST tersebut dalam bentuk SSL record yang berisi C=C1||C2||C3||C4
  3. Karena karakter pertama PHPSESSID berada pada byte terakhir P3, maka selanjutnya penyerang masuk ke fase dua untuk menebak karakter terakhir P3
  4. Script agent akan memaksa browser mengirimkan data ke situs target sebagai lanjutan dari request POST pada fase pertama (sebagai bagian dari POST body)
  5. Penyerang akan meminta browser mengenkripsi P5 = C2 XOR C4 XOR Ga dan mengirimkannya (over SSL) ke situs target
  6. Sniffer penyerang akan melihat C5 yang lewat di jaringan dan memeriksa apakah C5 = C3 ? Bila sama, maka tebakan penyerang benar
  7. Bila tebakan penyerang salah maka penyerang akan membuat tebakan baru dan kembali ke langkah 5.
  8. Paling banyak dalam 256 kali tebakan si penyerang akan berhasil mendapatkan karakter pertama isi PHPSESSID.
  9. Selanjutnya penyerang kembali ke fase pertama di langkah 1 sampai semua karakter PHPSESSID berhasil dicuri.
Simulasi Serangan
Saya membuat script python kecil untuk mensimulasikan bagaimana proses dekripsi dalam BEAST attack ini terjadi. Berikut ini adalah screen recording ketika script demo simulasi BEAST attack tersebut dijalankan.
Source code dari script di bawah ini bisa didownload di sini: beast2.py

Saya akan jelaskan sedikit cara kerja script tersebut. Cipher yang dipakai adalah AES dengan panjang blok 16 byte, kunci dan isi teks rahasia disimpan dalam variabel key dan secret.
Fungsi challengePhase1(text) ini digunakan untuk mensimulasikan serangan pada fase pertama. Teks yang dikirim ke fungsi akan ditambahkan di awal teks rahasia, “plaintext = text + secret”. Selanjutnya plainteks gabungan ini dienkrip dengan AES mode CBC dan fungsi ini mengembalikan IV+ciphertextnya.
Perhatikan bahwa initialization vector pada variabel iv selalu berubah menjadi blok ciphertext terakhir. Hanya IV pertama yang digenerate secara random.
Screen Shot 2013-04-20 at 6.23.31 PM
Fungsi challengePhase2(text) mensimulasikan serangan pada fase kedua (fase tebakan). Teks yang dikirim ke fungsi adalah plainteks yang dipilih (chosen plaintext) untuk dienkrip. Fungsi mengembalikan ciphertext hasil enkripsinya. Pada fungsi ini IV juga selalu diubah menjadi blok ciphertext terakhir.
Screen Shot 2013-04-20 at 6.28.12 PM
Setelah kita siapkan dua fungsi untuk fase pertama dan fase kedua, sekarang kita lihat bagaimana penyerang melakukan serangannya (tentu dalam simulasi).
Pertama penyerang akan membuat r yang berisi banyak karakter NULL (0×00) sebagai teks yang akan disisipkan untuk menggeser blok plainteks. Pada awalnya r akan berisi 15 karakter NULL untuk menebak karakter pertama secret. Berikutnya r berisi 14 karakter NULL untuk menebak karakter kedua secret dan seterusnya.
Screen Shot 2013-04-20 at 6.31.13 PM
Blok loop di bawah ini adalah blok yang melakukan tebakan mulai dari karakter ASCII 32 sampai karakter ASCII 127 (karena kita tahu plainteks adalah printable ASCII). Guess block G adalah r + satu karakter ASCII antara 32-127 dan chosen plainteks (challengeblock) yang akan dienkrip adalah Ci XOR IV XOR G.
Keluaran dari challengePhase2 akan dibandingkan dengan cipherteks yang dicari, bila sama, maka karakter yang dicari berhasil ditemukan.
Screen Shot 2013-04-20 at 6.32.15 PM
Ada situs yang membuat demo/simulasi BEAST attack dalam javascript, silakan kunjungiBEAST demo.