10 Ocak 2016

Metasploit Framework'e Giriş

Bu makalemizde Metasploit nedir sorusunun cevabını vermeyi ve temel kullanım imkanlarını açıklamayı amaçlıyoruz. Metasploit Framework mevcut cihazlar üzerinde bulunan zaafiyetlerin exploit edimesi amacıyla geliştirilmiş bir framework'tür. Metasploit temel olarak aşağıdaki bileşenlerden oluşmaktadır;
Exploit : Çalıştırıldığında hedefteki sistem üzerindeki zafiyeti tetikleyen kod parçalarıdır.
Payload : Temel olarak başarılı bir exploit işleminden sonra zafiyet bulunan sisteme hangi yöntem ile erişileceğine tanımlayan kod parçalarıdır.
Auxiliary : Metasploit bünyesinde fuzzing,sniffing veya scanning tarzı ekstra işlemleri gerçekleştirmek için kullanılan modüldür.
Encoders : herhangi bir sisteme saldırırken firewall AV gibi araçlardan korunmak için kullanılan modüldür.

Metasploit aktif hale gelmesi için “msfconsole” komutunu terminal ekranına girmemiz yeterli olacaktır.

Metasploit Kısayolları
Tüm linux işletim sistemlerinde olduğu gibi metasploit üzerinde TAB tuşu ile otomatik tamamlama yapılabilmektedir. Ayrıca yardım almak için help komutu kullanılabilir.

show komutu
show komutu sayesinde metasploit içerisindeki modüllerden bilgi alınabilir. Show komutu ilgili platforma göre yanıtlar döndürmektedir. Örneğin Linux modüllerini Windows modülleri içerisindeyken görüntülenemez.
search komutu
Metasploit üzerinde aradığınız modül hakkında bir fikriniz varsa search konutunu kullanarak bu modüle kolayca ulaşabilirsiniz.
check
hedef sistemin mevcut exploiti içerip içermediğini kontrol etmek için kullanılabilir. Tüm exploitler modülleri tarafından desteklenmeyebilir.
Use
Exploit işlemlerinin gerçekleştirilmesi için gereken modülleri seçmemizi sağlayan komuttur.

Run
Hedefimizdeki makineye karşı hangi exploit veya auxiliary modülünü kullanacağımıza karar verdikten sonra sisteme saldırı başlatmak için kullanacağımız komuttur. Alternatif olarak "exploit" komutu da kullanılabilir.

Set
Kullanılacak modül içerisindeki parametlerin tanımlanmasını sağalayan komuttur. Eğer global olarak yani tüm modüllerde kullanılacak parametreler tanımlanmak isteniyorsa “setg” komutu kullanılaiblir.

info
Modül hakkında detaylı bilgi vermektedir.

sessions
Birden fazla bağlantı yönetmek için session komutunu kullanmak faydalı olabilir. Böylece bağlantılarınızı arka plana atabilir ve gerekli olduğunda tekrar çağırabilirsiniz.


Database Kullanımı

Metasploit üzerinde ortak çalışmaların toplanması ve paylaşılması için yapılan çalışmalar bir DB üzerinde saklanmaktadır. Bu db aktif olabilmesi için Kali üzerinde PostgreSQL servisinin çalışıyor olması gereklidir. Msfconsole üzerinde database ile ilgili komutları  db_* komut dizisiyle görüntüleyebiliriz. Örneğin database durumunu db_status komutu ile görüntüleyebiliriz.
service postgresql start” komutu ile db aktif hale getirilir.
Bağlı olduğunuz  db üzerine diğer dosyaları import veya export ederek ortak bir kullanım sağlanabilir. Örnekte bir nmap çıktısını db üzerine import edilmiştir.

veya hosts ve services komutları ile mevcut bilgiler görüntülenebilir.

Auxiliary Modülü

Bu bölümde modül içerisindeki scanner özelliği kullanarak sistem üzerinde keşif yapılarak saldırı türleri belirlenebilir. Örneğin; zafiyet bulunan eski sürüm bir SSH tespit edilerek mevcut exploit kullanılarak bu sisteme sızılabilir.


SMB Scan

SSH Version Tespiti 

Temel Meterpreter Kullanımı
Meterpreter Metasploit içerisinde bulunan çok fonksiyonlu bir payloaddır. Mevcut meterpreter komutları sayesinde exploit ettiğiniz sistem üzerinde bir çok işlem gerçekleştirebilirsiniz. Kullanılan komutları yine “help” komutu yardımıyla görebiliriz.

Buradaki senaryomuzda exploit ettiğimiz bir sistemde nasıl kalıcı olabileceğimizi incelemeye çalışacağız. Bu sırada Meterpreter üzerindeki komutlara da kısaca değineceğiz. Bir meterpreter bağlantısı için hedefimize uygun exploit seçildikten sonra "set payload" komutu ile meterpreter  için payload belirlenir. Payload seçiminin ardından diğer bilgileri kendi hedefimize göre düzenleyebiliriz.


Meterpreter ile bir sisteme bağlandığınızda mevcut session bir process üzerinden sağlanır. Bu processin durması halinde bağlantınızda kesilecektir. Bunun önüne geçmek için sistem üzerinde sürekli  aktif olabilecek (Windows için explorer.exe vb) bir processe geçiş yapılabilmektedir. Bu işlem için öncelikle “ps” komutu ile çalışan servisler ve  process id “pid” tespit edilir.

Ps
Getpid
Mevcut process id’nizi görüntülemek için kullanılmaktadır.
Migrate
Migrate komutu ile daha sağlıklık olduğuna inandığınız process üzerine geçiş yapmak için kullanılmaktadır.
Cat
Exploit edilen sistem üzerindeki dosyaları okumanızı sağlar.
Edit
Edit komutu ile sistem üzerindeki dosyaların içerikleri değiştirilebilir.

Upload ve Download
Download ile ele geçirilen sistem üzerindeki dosyalar indirilebilir.

Upload komutu karşı tarafa dosya yüklememizi sağlamaktadır. Kritik olabilecek bir özelliktir. İçerisinde zararlı kodlar bulunan bir dosya karşı tarafa yüklenebilir ve kullanıcının bu dosyayı kullanması sağlanarak daha organize saldırılar gerçekleştirilebilir.

Execute
Erişilen sistem üzerinde  herhangi bir komut çalıştırmak için kullanılan komuttur.
Hashdump
Sistem üzerinde tanımlı olan parola özetlerini çekmemizi sağlayan komuttur.
Reg
Regedit kayıtları üzerinde değişiklik yapabilmemizi sağlayan komuttur.
Shell
Ele geçirilen sistemin komut satırına geçilerek istenilen işlemler buradan gerçekleştirilebilir.
Clearev
Sistem üzerinde  herhangi bir iz bırakmamak adına bu komut çalıştırılarak sistem üzerindeki loglar temizlenebilir. 

MSF ile Post Exploitation
Başarılı bir exploit işleminden sonra msf üzerinde farklı bilgiler toplanabilir veya bir arka kapı yerleştirilebilir. Bu adımlara post exploation adı verilmektedir. Bu kısmın bir çok adımı bulunmakla beraber örnek olarak bir kaç adımı kullanacağız.

RDP Erişimini Aktif Etmek           
Meterpreter bağlantısı kurulduktan sonra burada “run” komutu kullanılarak msf üzernde bulunan scriptleri çalıştırabiliriz. Meterpreter shell üzerinde “getgui” scripti ile rdp bağlantısı aktif hale getirebiliriz. Bu işlemi ele geçirilen sistemin shelline düştükten sonra regedit üzerinde de gerçekleştirebiliriz.
Getgui scripti kullanılarak öncelikle meterpreter shell üzerinde  bir kullanıcı adı ve parola belirliyoruz.
Daha sonra “getgui -e” komutu ile RDP aktif hale getirilir.
Son olarak “rdesktop” komutu ile sisteme RDP üzerinden erişim sağlanır.
Mimikatz ile Parolaları Açık Şekilde Ele Geçirmek
Exploit işlemini gerçekleştirdiğimiz makinede memory üzerinde açık halde bulunan parolaları ele geçirebiliriz. Bu işlem için meterpreter shell üzerinde sırasıyla aşağıdaki komutlar girilebilir;

“load mimikatz” ile mimikatz programı yüklenir.
“mimikatz_command –f sekurlsa::searchPasswords” komutu ile memory üzerinde kayıtlı olan parolalar kontrol edilir.
 

Metasploit Framework'e giriş amacıyla hazırladığımız makalemiz burada sona eriyor. Metasploit Framework ve sızma testleri ile ilgili konulardaki sorularınız için lütfen yorum bırakınız.