Pemindai untuk mendeteksi kata sandi yang lemah di DBMS

Pemindai kerentanan ada di setiap perusahaan yang memperhatikan keamanan informasi. Tetapi tidak semua pemindai dapat memeriksa kekuatan kata sandi dari akun lokal di database.



Masalahnya adalah bahwa akun lokal paling sering tidak kedaluwarsa, tidak diperiksa kerumitannya, dan masih memiliki akses istimewa. Selain itu, kebijakan sandi tidak selalu memungkinkan konfigurasi persyaratan yang fleksibel, misalnya, kebijakan sandi tidak melarang penggunaan sandi kamus (ingat P @ ssw0rd favorit semua orang).



Kami memiliki masalah yang sama di QIWI, dan dalam upaya untuk menyelesaikannya, kami mencoba solusi yang berbeda untuk pemindaian database yang lengkap. Sayangnya, mereka hanya ditujukan untuk memeriksa konfigurasi DBMS dan tidak lebih. Pada saat yang sama, harga pemindai semacam itu cukup mengesankan.



Dan jika kita berbicara secara umum tentang pemindai keamanan yang dapat memeriksa kerentanan infrastruktur Anda, maka Anda perlu memiliki seperangkat pemindai semacam itu, yang sangat mahal.



Dalam posting ini saya akan berbicara tentang apa yang kami gunakan untuk tugas kami dan bagaimana dalam prosesnya kami sampai pada kesimpulan bahwa lebih baik dan lebih mudah untuk membuat sendiri. Dan saya akan membagikan solusinya dengan semua orang.





Kami menggunakan pemindai populer yang cukup bagus. Tetapi sulit untuk mengimplementasikan fungsionalitas yang kami butuhkan - kami harus membuat file audit untuk setiap database (karena kami memiliki konfigurasi yang berbeda di DBMS), ditambah membuat banyak akun untuk dipindai, dan kemudian menambahkan akun baru, sekali lagi mengganti auditor dengan tangan.

Selain itu, pemindai ini tidak tahu cara menyadap kata sandi offline, yang merupakan masalah. Dan itulah kenapa.



Brute force dapat dilakukan dalam dua mode - online dan offline. Jika kita berbicara tentang brute-force online, maka ini adalah emulasi login pengguna dan serangan brute-force aktif. Salah satu program tersebut adalah Hydra, dan itu mendukung sebagian besar DBMS. Pendekatan ini dapat diterapkan dalam banyak kasus untuk melakukan uji penetrasi dan mendeteksi akun dan kata sandi default. Tetapi tidak cocok untuk cek biasa dan akun non-default (pengguna dan layanan). Karena akun dalam hal ini akan diblokir jika ada kebijakan keamanan yang sesuai.



Berbeda dengan brute-force online, versi offline-nya adalah login dan hash kata sandi dibongkar, dan kemudian brute-force dilakukan menggunakan utilitas seperti hashcat atau John the Ripper. Tidak ada beban di database, dan tanpa risiko mengunci akun dengan kekerasan. Dan Anda juga dapat menggunakan kamus dengan beberapa juta entri: yang hampir mustahil dilakukan dengan kekerasan online.



Kami membuat milik kami



Karena sulit untuk mengimplementasikan fungsionalitas yang dijelaskan dengan pemindai saat ini, dan mahal untuk membeli pemindai tambahan, muncul ide untuk membuat pemindai Anda sendiri.



Hasilnya, kami memiliki pemindai sendiri untuk akun lokal brute force offline.

Pemindai mendukung MS SQL, Oracle, dan PostgreSQL. Tentu saja, ada beberapa kesulitan teknis, misalnya, menarik hash dalam format yang didukung hashcat. Tetapi kesulitan utama adalah untuk memahami bagaimana bekerja dengan hasil yang ditemukan: bagaimana mengubah kata sandi tanpa mengganggu produktivitas, bagaimana memastikan bahwa kata sandi tersebut tidak muncul lagi, dll.

Tapi kami akan meninggalkan ini di luar cakupan artikel ini.



UI tidak jauh lebih baik, saat menggunakan panel admin django. Ini terlihat seperti ini:







  • dimungkinkan untuk melihat daftar database dan menambahkan yang baru
  • Anda dapat melihat status brute force untuk setiap akun
  • Anda bisa melihat hasil scan
  • jika kata sandi yang lemah cocok, ini akan menampilkan ini di hasil (hash kata sandi, tebak kata sandi dan nama akun)








  • Anda dapat mengatur waktu pemindaian




Nilai tambah utama



  • Tahu cara brutal dalam mode offline
  • Ada pemeriksaan kamus
  • Semuanya gratis




Jika Anda ragu apakah Anda perlu menggunakan pemindai seperti itu, Anda dapat mencoba mengambil hash kata sandi secara manual dari akun lokal dan menjalankannya melalui hashcat.



Contoh Permintaan :



oracle 11g

select user#, name, spare4 from sys.user$ where spare4 is not null;




microsoft sql server (di atas 2005):

select name, cast (name+'|'+master.dbo.fn_VarBinToHexStr(password_hash) as varchar(1000)) FROM master.sys.sql_logins




Pemindai kami tidak akan menggantikan pemindai keamanan lengkap, tetapi ini akan menjadi tambahan yang penting dan menyenangkan. Dan sekarang tersedia untuk semua orang: github.com/qiwi/bruteforce

Jika Anda memiliki pertanyaan atau kesulitan dengan penerapan, buat masalah di github, kami pasti akan menjawabnya.



Terima kasih banyak atas implementasinyaSurdum dan slezhuk



All Articles