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.
- 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.
- 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.
sudo apt-get -y install \ build-essential zlib1g zlib1g-dev \ libxml2 libxml2-dev libxslt-dev locate \ libreadline6-dev libcurl4-openssl-dev git-core \ libssl-dev libyaml-dev openssl autoconf libtool \ ncurses-dev bison curl wget libpq-dev \ libapr1 libaprutil1 libsvn1 \ libpcap-dev libsqlite3-dev
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.
# Rbenv reposunun klonlanması git clone https://github.com/sstephenson/rbenv.git ~/.rbenv # .bashrc dosyasına eklemeler echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc # Ruby build kurulumu git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build # Ruby 2.1.5 kurulumu rbenv install 2.1.5 rbenv rehash
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.
mince@rootlab tmp $ rbenv versions * 2.1.5 (set by /home/mince/.rbenv/version) mince@rootlab tmp $ ruby -v ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux] mince@rootlab tmp $
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.
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.
cd ~ git clone https://github.com/[kendinickiniz]/metasploit-framework.git cd metasploit-framework
Şu anda metasploit framework kaynak kodlarının bulunduğu dizindesiniz. Bir sonraki yapmamız gereken işlem ise gerekli gem paketlerini kurmak.
# İlk çalıştırma mince@rootlab $ ./msfconsole -L [*] Metasploit requires the Bundler gem to be installed $ gem install bundler # Bundler kurulumu mince@rootlab $ gem install bundler # Gem paketlerinin kurulumu mince@rootlab $ bundle install Fetching gem metadata from http://rubygems.org/......... Fetching gem metadata from http://rubygems.org/.. Updating git://github.com/rapid7/metasploit_data_models.git Installing rake (10.0.4) Installing i18n (0.6.1) Installing multi_json (1.0.4) Installing activesupport (3.2.13) Installing builder (3.0.4) Installing activemodel (3.2.13) Installing arel (3.0.2) Installing tzinfo (0.3.37) Installing activerecord (3.2.13) ...
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
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
- Git kullanımını öğrenmek
- Metasploit nedir ? Nasıl kullanılır ? ( Örnek kaynak : http://gamasec.net/files/msf1.0.pdf )