Algoritma password oracle11g telah di reverse
Posted by y3dips on September 25 2007 16:29:22
RecurityLabs menginfokan hasil temuannya tentang algoritma yang digunakan pada password di database oracle, hal ini terjadi setelah pihak recurity-labs di infokan oleh Alexander Conburst dari red-database-security tentang dirilisnya database oracle 11g untuk sistem operasi GNU/linux dan menggunakan algoritma hash yang baru untuk pengamanan passwordnya.
Extended News
RecurityLabs menginfokan hasil temuannya tentang algoritma yang digunakan pada password di database oracle, hal ini terjadi setelah pihak recurity-labs di infokan oleh Alexander Conburst dari red-database-security tentang dirilisnya database oracle 11g untuk sistem operasi GNU/linux dan menggunakan algoritma hash yang baru untuk pengamanan passwordnya.

Algoritma hash baru yang digunakan ini sudah dapat menangani case-sensitive password. Jika kita ingat kasus yang di alami oleh oracle akhir tahun 2005 adalah tidak mampunya algoritma yang digunakan untuk menangani password yang case-sensitif, sebagai contoh : password "inirahasia" akan menghasilkan output yang sama dengan password "INIRAHASIA", ataupun dengan "iNiRahASIA", melihat perkembangan akan algoritma hash baru yang digunakan maka pihak Recurity-labs melakukan reverse-engineering terhadap algoritma hash yang digunakan untuk mengamankan password (yang di janjikan sudah mampu menangani "case-sensitive passwords").

Berbekal binary oracle yang berukuran lebih kurang 145 mega (ukuran yang sangat besar untuk sebuah file binary), maka pihak recurity-labs menggunakan FindCrypt yang merupakan salah satu plugins IDA untuk mendeteksi "encryption" yang digunakan dari suatu binary, ltrace serta GDB, selain itu mereka juga menggunakan peralatan pribadi yang tidak di jelaskan secara detail. String yang mereka cari diantaranya "create password hash", yang akan mempercepat proses pencarian fungsi yang digunakan untuk melakukan hashing pada password. Akhirnya ditemukan juga formula yang mereka anggap sebagai algoritma yang digunakan untuk mengamankan password pada oracle 11g tersebut
hash_init( HASH_CTX, algorithm );
hash_update( HASH_CTX, password, password_len );
hash_update( HASH_CTX, salt, salt_len );
hash_final( HASH_CTX, result_buf );



Sampai akhirnya di berikan juga detil POC-nya

Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create user FOOBAR identified by SHAlala;

User created.

SQL> select name,spare4 from sys.user$ where name='FOOBAR';

NAME

------------------------------

SPARE4

-------------------------------------------------------------------------------

FOOBAR

S:2BFCFDF5895014EE9BB2B9BA067B01E0389BB5711B7B5F82B7235E9E182C

SQL> Disconnected from Oracle Database
11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

$ echo -ne "SHAlala\x1B\x7B\x5F\x82\xB7\x23\x5E\x9E\x18\x2C" | sha1sum
2bfcfdf5895014ee9bb2b9ba067b01e0389bb571 -


Lihatlah password yang sudah di hash di dalam database dan bandingkan dengan hasil sha1 dari password asli dan 10 buah bilangan hexa tersebut, maka kita ketahui bahwa password yang di simpan di dalam database dan merupakan hasil hashing dari algoritma tersebut merupakan kombinasi password dan bilangan hexa, yang kemudian hasilnya di tempeli lagi dengan hexa tersebut. :)

Kesimpulan akhir mereka adalah, apa yang dilakukan Oracle untuk mengamankan password di versi ini kurang lebih sama dengan kesalahan yang dilakukan oleh Microsoft saat menciptakan NTLM. Tabel sys.user$ yang merupakan tempat menyimpan password tersebut tetap memiliki kelemahan enkripsi DES dengan case yang tidak sensitif (celah 2 tahun lalu) meskipun sudah di versi terbarunya.

source: recurity-labs