Metasploit

Metasploit | Geliştirme Ortamının Kurulması

Merhaba

Siber güvenlik alanıyla ilgilenmiş herkesin karşısına Metasploit çıkmıştır. Özellikle penatrasyon testlerinin olmazsa olmazlarından birisi olan Metasploit, güvenlik testi aracından ziyade bir güvenlik testi çatısıdır. Rapid7 firması tarafından geliştirilmiş olan bu çatı için kendi modüllerinizi geliştirebilir ve metasploit’te yer alması için github üzerinden pull request gönderebilirsiniz.

Penatrasyon testi uzmanı olmak, programlama dili bilmeyi gerektirir.

Aklınıza “Neden metasploit modülü geliştirmeliyim ki ? Zaten hemen hemen her şey var, direk kullanıyoruz..” sorusu gelebilir. Bu soruya şu cevabı vermek isterim;

XYZ isimli bir uygulamada güvenlik açığı buldunuz ve bu zafiyeti sömürecek python scriptini geliştirdiniz. Fark edelim ki bu zafiyet basit bir file upload zafiyeti olsun. Bu zafiyeti sömürerek ters bağlantı (reverse-shell) aldınız. Buraya kadar her şey güzel. Peki bir sonraki adım olan post-exploitation nasıl gerçekleştirebilirsiniz ? Ele geçirdiğiniz sunucuda ki kritik bilgileri nasıl tespit edecek ve yerel bilgisayarınıza nasıl transfer edeceksiniz ? Bu tür ihtiyaçları karşılamak adına tekrardan metasploit’e dönüş yapmanız kaçınılmaz! O zaman msfpayload ile tekrardan payload oluşturup, multi-handler’ı başlatıp aynı zafiyeti tekrardan tetikleyip meterpreter oturumu elde etmeye çalışmanız gerekecek. Tüm bunları yapmak ve yaşamak yerine en başta tespit ettiğiniz güvenlik açığı için metasploit modülü geliştirmiş olmak tüm problemleri çözmekte.

Metasploit çatısı “community driven” bir projedir. Yani kullandığınız metasploit modüllerinin hemen hemen hepsi sizin gibi bir özgür güvenlik araştırmacısı tarafından geliştirilmiştir.

Bu yazı, uzun bir seri olacak “metasploit modülü geliştirme” serisinin başlangıcı olarak, Modül Geliştirme Ortamının Kurulması konusununa değinecektir.

İşletim Sistemi Tercihi

Bildiğiniz üzere Metasploit ruby dili ile geliştirilmiştir ve Ruby’nin en stabil  Linux/OSX işletim sistemleri ile çalışmaktadır. Bu nedenle size tavsiyem Ubuntu veya türevlerinden ( Örneğin ben Elementary OS kullanıyorum ) birini seçip kullanmanız.

Aklınıza gelebilecek bir diğer soru “Zaten kali linux içerisinde metasploit gelmiyor mu ? Onu neden kullanmıyoruz..” olabilir. Bunun iki sebebi var.

  1. Kali linux, fiziksel bilgisayarınıza kurmanızı önermemekteyim. Bu önerinin sebebleri birden fazla, lakin en önemlisi; kişisel ihtiyaçlarınıza cevap vermeyecektir. E tabi birde default olarak root kullanıcısı ile çalışmakta.
  2. Kali linux ile varsayılan olarak gelen Metasploit, herhangi bir repository ile ilişkisi yoktur. Geliştirilme sürecinde olan modülleri içermez.

Geliştirici Ortamının Kurulması

Öncelikle ruby hariç metasploitin ön bağımlılığı olan paketlerin kurulması gerekmektedir.

Burada özellikle kurmadığımız iki adet paket bulunmaktadır. Ruby  ve Postgresql. Kurmama sebebimiz ise, Ruby için; rbenv ile daha sonra kendimiz spesifik bir ruby versiyonu kullanacak olmamız, Postgresql için; development ortamımız olduğu için veri tabanı bizim için önemli değildir. Bu ortamda herhangi bir modülü search komutu ile aramayacağınızı varsamaktayız.

Ruby Kurulumu

Metasploit bu güne kadar Ruby 1.9.5 versiyonu ile kullanılmaktaydı. Son 1-2 yıldır ise metasploit core ekibi ruby 1.9.x ailesinden kurtulup 2.1.x ailesine geçmek için çalışmalar gerçekleştirmekteler. Bu değişikliğin en önemli sebeblerinden birisi performans kaygısıdır. Sanırım bu yazıyı okuyan hemen hemen herkes msfconsole komutunu yazdıktan sonra bi’ çay koymaya gitmiştir :)

Rbenv ile Ruby 2.1.5 versiyonu kurulumu

Benim kullandığım ve gördüğüm kadarıyla bir çok metasploit core ekibi üyesininde tercih ettiğin Ruby versiyonu 2.1.5’tir. Bu nedenle rbenv aracı ile 2.1.5 versiyonunu kuracağız. Rbenv’nin en güzel avantajı ise 1-2 komut ile dilediğiniz ruby versiyonuna geçiş yapabilmenizdir.

Bu adımlar tamamlandıktan sonra rbenv sizin için Ruby 2.1.5 versiyonunu indirmiş olacaktır. PS : Son komut biraz zaman alabilir.

Test etmek için aşağıdaki komutları çalıştırabilirsiniz.

Artık metasploit için tüm ön hazırlıklarımız tamamlanmış zafiyette.

Editor/IDE

İstediğiniz herhangi bir metin editörünü veye IDE’yi kullanabilirsiniz. Benim tavsiyem ise RubyMine isimli IDE. Metasploit sınıflarını ve fonksiyonlarını anlamak adına ileride bir çok modül kaynak kodunu analiz etmemiz gerekecek. Bu noktada herhangi bir fonksiyon adına çift tıkladığımız direk tanımlandığı yere ve kaynak kodlarına erişebilmek son derece kolaylık sağlayacaktır. Bu nedenle IDE kullanmanızı önermekteyim.

Github

Metasploit rapid7 firması tarafından github üzerinde geliştirilmektedir. Bu nedenle github daha doğrusu git kullanımına hakim olmak çok önemli. İnternet üzerinden git kullanımı üzerine onlarca yazı/kitap bulunmakta.

Örneğin : https://try.github.io/levels/1/challenges/1

Git kullanımı ile ilgili kısımları hallettiğiniz varsayarak devam ediyoruz. İlk yapmamız gerekn github.com üyeliği açmak ve metasploit reposunu fork‘lamak.

github-fork

Bu işlem tamamlandığında metasploit-framework reposunun birebir aynısı size özel oluşturulacaktır.

Şimdi sıra geldi bize ait olan metasploit-framework reposunun klonlamak.

Şu anda metasploit framework kaynak kodlarının bulunduğu dizindesiniz. Bir sonraki yapmamız gereken işlem ise gerekli gem paketlerini kurmak.

Son adımda çalıştırılan komut ( bundle install )  biraz zaman alacaktır. Yaptığı işlem ise metasploit’in kullandığı tüm Ruby gem’lerini indirmek ve kullanıma hazır hale getirmektir.

Geriye bir tek metasploit çalıştırmak kaldı. Daha önce çalıştırdığımız komutu tekrarlıyoruz.

./msfconsole -L

metasploit banner

Tebrikler. Metasploit development ortamı kurulumu başarıyla tamamladınız. Bir sonraki yazıda metasploit’in dizin yapısı ve genel özellikleriyle ilgili bir inceleme yapılarak modül geliştirme noktasında ilk adımlarımızı atıyor olacağız.

Bir sonraki yazıya kadar yapılması önerilenler