Brute the crypto library

Rasanya baru beberapa minggu yang lalu saat phoenix nge-buzz saya via YM mengenai POC yang dia buat berdasarkan informasi di bugtraq untuk dapat melakukan DOS (dan mungkin remote exploitation) pada openssh (masalah pada malloc memory allocation) dimana masih terdapat kegagalan untuk kemudian di diskusikan bersama, minggu ini sudah ada berita lain yang cukup mengejutkan dari distribusi debian.

Seperti yang kita ketahui bersama bahwa Luciano Bello menemukan bugs pada paket openssl Debian dimana kita dapat dengan mudah memperkirakan data random yang di generate oleh openssl. Data random ini digenerate oleh beberapa parameter yang disebut ‘seed’, misalnya gerakan mouse, ketikan keyboard, dll. Hasil generate tergantung algoritma yang digunakan, apabila menggunakan DSA 1024 bit maka kemungkinan key yang digunakan adalah 2^1024. Bugs pada openssl ini telah digunakan oleh distribusi Debian sejak tahun 2006, penyebab awalnya adalah informasi dari Daniel Brahneborg yang mengatakan bahwa tools Valgrind dan juga Purify yang dia gunakan saat develop suatu aplikasi menyatakan adanya Uninitialized Variable, kemudian diputuskan bahwa ada masalah pada salah satu code di md_rand.c sehingga baris tersebut di hapus dari distribusi openssl debian. Penghapusan code tersebutlah akar dari permasalahan PRNG openssl debian.

Dan seperti yang kita ketahui juga bahwa openssl merupakan library yang umum digunakan oleh banyak aplikasi user dalam hal menangani masalah kriptografi, salah satunya adalah SSH. Jika awalnya total kemungkinan keys yang digenerate adalah 2^1024, maka pada distribusi debian tersebut total kemungkinan unique keys yang digenerate adalah 2^15. Kenapa?!karena ternyata dengan penghapusan baris code di md_rand.c tersebut menyebabkan satu-satunya parameter yang digunakan sebagai seed untuk randomisasi adalah PID (Process ID), dan di sistem Linux umumnya total proses ID berjumlah 32,767. HDM memberikan penjelasan yang lebih teknikal disini.

HDM juga telah develop tools yang dapat digunakan untuk membuat ‘kamus data’ berisi seluruh SSH Keys untuk algoritma 1024-bit DSA, 2048-bit RSA, dan 4096-bit RSA. Key-key tersebut digenerate dengan menggunakan GetPID Faker shared library yang akan membantu generate keys dengan memberikan informasi Proses ID palsu, mulai dari 1 s/d 32,767.

Sisanya?! mungkin cara gampangnya adalah memanfaatkan script Markus Mueler untuk bruteforce SSH server dengan bermodalkan ‘kamus data’ HDM diatas. HDM juga memberikan tips dimana untuk bruteforce SSH bisa memanfaatkan key-key dengan PID dibawah 200, karena keys-keys tersebut digenerate saat boot time sehingga process ID yang umumnya digunakan dibawah 200. Dan untuk aplikasi user lainnya bisa diperkirakan menggunakan Proses ID antara 500 ~ 10,000. Dengan mekanisme ini maka proses bruteforce bisa lebih efektif, dan kita juga bisa men-develop script sendiri untuk melakukan tugas ini.

Syarat vulnerable-nya hanya satu, aplikasi yang hendak di bruteforce (entah itu SSH, HTTPS, SSL type, dll) meng-generate keys pada distribusi debian yang vulnerable (termasuk turunannya seperti ubuntu, kubuntu, dll). Meskipun target bukanlah sistem debian, namun jika keys-nya di generate oleh sistem debian dan digunakan oleh distribusi lain tersebut maka akan tetap vulnerable. Hal inilah yang membuat sangat berbahaya mengingat pecinta debian sangat banyak, bahkan di Indonesia juga banyak sekali sistem yang dibangun menggunakan debian based. Setau saya para dedengkot seperti andhika triwidada juga pecinta debian :D.

Selama sistem target tidak memiliki pelindung terhadap serangan bruteforce, maka kita bisa melakukan SSH bruteforce ke sistem tersebut. Ada beberapa cara dan tools yang telah disediakan debian untuk mencari tau apakah sistem kita aman atau tidak, cara paling mudah (khususnya utk para admin server) mungkin dengan mencoba langsung script markus mueller terhadap sistem localhost untuk meng-crack SSH keys yang tersimpan pada

/root/.ssh/authorized_keys

Hm, jika yang vulnerable adalah suatu aplikasi, maka mungkin hanya akan berdampak pada sistem yang install aplikasi tersebut. Namun jika yang vulnerable adalah library, maka hal tersebut akan menjadi bencana. Karena library digunakan oleh beragam aplikasi, maka akan luar biasa banyaknya target yang dapat diserang melalui celah library tersebut. Lebih parah lagi, kita bukan hanya diharuskan untuk update package OpenSSL debian yang bersangkutan, namun juga diharuskan meng-generate ulang seluruh aplikasi pada sistem milik kita yang sebelumnya memanfaatkan OpenSSL debian. Dan pecinta debian juga banyak sekali, bukan hanya di Indonesia tapi juga di luar negeri. Dan jangan lupa, debian merupakan base distro untuk distro-distro populer semacam ubuntu dan kubuntu. Wew.

Btw, komo pake apa ya?gentoo kah?! :P.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s