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.

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.

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.

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

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