Penetrasyon Testi 5 - Exploitation & Metasploit Framework
                    Siber güvenlikte bir sistemin zafiyetlerini istismar etmek için kullanılan teknikler ve araçlar, bu alanda en ilgi çekici konulardan biridir. Bu yazıda, Exploitation’ın temelini ve bu süreçte en çok kullanılan araçlardan biri olan Metasploit Framework’ü inceleyeceğiz.
Exploit Nedir? Payload Nedir?

Exploit, bir sistemdeki zafiyeti kullanarak o sistemi ele geçirmek veya istismar etmek için yazılmış bir kod parçasıdır. Bu kod, sistemdeki bir hatayı, yanlış yapılandırmayı veya güvenlik açığını hedef alır. Exploit’in temel amacı, hedef sistemde beklenmeyen bir davranışa yol açarak saldırganın istediği kodu çalıştırmasını sağlamaktır.
Payload ise, exploit başarıyla çalıştıktan sonra hedef sistemde çalışacak olan kötü niyetli koddur. Bir nevi exploit’in taşıdığı “yük” olarak düşünebilirsiniz. Payload’ın görevi, hedef sistem üzerinde saldırganın kontrolünü ele almasını sağlayacak fonksiyonları yerine getirmektir. Örneğin, bir dosya indirmek, tuş vuruşlarını kaydetmek veya bir komut kabuğu (shell) açmak gibi işlevleri olabilir.
Reverse Shell ve Bind Shell Farkı

Bir sistemi ele geçirdikten sonra komutları çalıştırmak için bir komut kabuğu (shell) elde etmek gerekir. Bunu yapmanın iki yaygın yolu vardır: reverse shell ve bind shell.
Bind Shell’de, hedef makine (kurban) belirli bir portu dinlemeye başlar. Saldırgan ise bu porta bağlanarak komut kabuğunu elde eder. Yani, hedef makine “bağlantı bekler”, saldırgan ise “bağlantı kurar”.
- Avantajı: Saldırganın güvenlik duvarı arkasında olması durumunda kullanılabilir.
 - Dezavantajı: Çoğu zaman hedef sistemin güvenlik duvarı, dışarıdan gelen bağlantıları engeller. Bu da bind shell’in başarılı olma ihtimalini düşürür.
 
Reverse Shell’de ise, hedef makine (kurban) saldırganın makinesine bağlanır. Bu durumda, saldırgan makinesi bir dinleyici (listener) olarak belirli bir portu dinlemeye başlar. Hedef makine ise bu dinleyiciye doğru bir bağlantı başlatır.
- Avantajı: Çoğu güvenlik duvarı, iç ağdan dışarıya doğru giden bağlantılara izin verir. Bu nedenle, reverse shell genellikle güvenlik duvarlarını aşmada bind shell’den daha etkilidir. Bu durum, reverse shell’i sızma testlerinde ve gerçek dünya saldırılarında daha popüler bir seçenek yapar.
 - Dezavantajı: Saldırganın makinesinin bir IP adresi üzerinden ulaşılabilir olması gerekir.
 
Metasploit Framework’e Giriş

Metasploit Framework, sızma testleri ve güvenlik açığı araştırmaları için kullanılan, dünyaca ünlü açık kaynaklı bir siber güvenlik aracıdır. Exploit ve payload’ları bir araya getiren ve bu süreçleri otomatikleştiren bir platformdur.
Metasploit’in ana bileşenleri şunlardır:
- Exploits: Hedef sistemdeki zafiyetleri istismar etmek için kullanılan kodlardır.
 - Payloads: Exploit başarıyla çalıştıktan sonra hedefte çalıştırılacak olan kötü niyetli kodlardır.
 - Auxiliary: Sızma testi sırasında bilgi toplama, tarama veya kimlik tespiti gibi yardımcı işlevleri yerine getiren modüllerdir.
 - Post-Exploitation (Meterpreter): Bir sistem ele geçirildikten sonra sistem üzerinde daha derinlemesine işlemler yapmak için kullanılan modüllerdir (örneğin, dosya indirme/yükleme, ekran görüntüsü alma).
 
Metasploit’in en yaygın kullanılan arayüzü msfconsole’dur. Bu komut satırı arayüzü, modülleri yüklemek, seçenekleri ayarlamak ve exploit’leri çalıştırmak için kullanılır. Metasploit, bir güvenlik uzmanının işini büyük ölçüde kolaylaştırarak, karmaşık siber saldırı senaryolarını daha hızlı ve verimli bir şekilde gerçekleştirmesini sağlar.
Metasploit ile Metasploitable nedir ?
Metasploit
Ne?
Bir penetrasyon testi framework’üdür.
Görevi:
Saldırganların veya güvenlik uzmanlarının, sistemlerdeki güvenlik açıklarını keşfetmek, istismar etmek (exploit) ve sonrasında sisteme erişim sağlamak için kullanılır.
Bileşenleri:
- Exploitler (zafiyetleri sömürmek için kodlar)
 - Payloadlar (sömürüldükten sonra sisteme yüklenen zararlı kodlar, ör. Meterpreter)
 - Auxiliary modüller (port taraması, brute force vb. yardımcı araçlar)
 - Post exploitation modülleri (sisteme girdikten sonra hash dump, privilege escalation gibi işlemler)
 
Kısacası:
Metasploit = Saldırıyı gerçekleştiren araç.
Metasploitable
Ne?
Bilinçli olarak zafiyetli bırakılmış bir sanal makinedir (VM).
Görevi:
Penetrasyon testi öğrenenler için bir hedef sistem sağlamaktır.
- İçerisinde pek çok bilinen zafiyetli yazılım bulunur:
 - Zafiyetli Apache, Tomcat, MySQL sürümleri
 - Güvensiz şifreler
 - Eski Linux servisleri
 - Web uygulaması açıkları (DVWA gibi)
 
Kısacası:
Metasploitable = Saldırıyı kabul eden, test için hazırlanmış kurban sistem.
Metasploitable Kurulumu
Metasploitable’ı İndirme
- Resmi kaynak: https://sourceforge.net/projects/metasploitable/
→ Metasploitable 2 sürümünü indir (Metasploitable2-Linux.zip). 

- ZIP dosyasını indirince, uygun bir klasöre çıkart (
Metasploitable2-Linux.vmdkdosyası oluşacak). 

VirtualBox ile Kurulum
- VirtualBox’ı aç → New (Yeni) butonuna tıkla.
 - İsim: 
Metasploitable2
Tip: Linux
Sürüm: Ubuntu (32-bit) 

Ubuntu seçeneği yoksa Debian (32-bit) veya Linux → Other Linux (32-bit) seçebilirsin. Ama 64-bit seçme, çünkü Metasploitable 2 tamamen 32-bit bir sanal disk olarak hazırlanmış. VirtualBox’ta 64-bit seçersen bazen çalışıyor, ama gereksiz uyumsuzluk riski olur (özellikle eski çekirdek/servislerde).
- RAM: 512 MB (daha fazlası gerekmez).
 - Hard disk → Use an existing virtual hard disk file seçeneğini işaretle → 
Metasploitable2-Linux.vmdkdosyasını seç. 

- Finish ile tamamla.
 

Ek olarak sanal cihazımıza sağ tıklayıp Settings kısmından Network alanında Bridge Adapter ve Promisscuous Mode : “Allow All” seçin.Aynı Network ayarı kali cihazınızda da yapın.Bu sayede kali tarafından Metasploitable zafiyetli cihazı görebiliriz.

Bu uygulama, Metasploitable adında kasıtlı olarak zafiyetli bırakılmış bir işletim sistemi üzerinde, Kali Linux ve Metasploit Framework kullanarak bir güvenlik zafiyetinin nasıl tespit edilip analiz edildiğini göstermektedir.
Hedef Sistemin IP Adresini Belirleme
Analize başlamadan önce, zafiyet testi yapılacak olan Metasploitable makinesinin ağ üzerindeki IP adresini tespit etmek gerekir. Bu, ifconfig komutu ile kolayca yapılabilir. Resimdeki komut çıktısında, eth0 arayüzüne atanan IP adresinin 192.168.1.3 olduğu görülmektedir. Bu adres, sonraki adımlarda hedef sistem olarak kullanılacaktır.

Kali Linux Metasploit Konsole Ekranına Giriş
PostgreSQL Servisini Başlatma:
systemctl start postgresqlkomutu çalıştırılarak PostgreSQL veritabanı servisi başlatılır. Metasploit, veritabanı olarak PostgreSQL'i kullanır.service postgresql statuskomutu ise servisin durumunu kontrol etmek için kullanılmıştır. Çıktıda, servisinactive (exited)olduğu ve başarılı bir şekilde başlatıldığı görülüyor.
Metasploit Veritabanını Başlatma ve Yapılandırma:
msfdb initkomutu, Metasploit'in kendi veritabanı yapılandırmasını başlatır.

- Bu komutla birlikte, veritabanının zaten başlatılmış olduğu kontrol edilir ve ardından Metasploit için özel bir kullanıcı (
msf), gerekli veritabanları (msf,msf_test) ve bir yapılandırma dosyası (database.yml) oluşturulur. - Son olarak, veritabanının ilk şeması hazırlanır.
 
Metasploit Konsolunu Açma:
msfconsolekomutu ile Metasploit konsolu başlatılır.- Konsol açıldıktan sonra, Metasploit’in logosu ve mevcut exploit, payload ve diğer modül sayıları görüntülenir.
 - Komut satırı 
msf6 >şeklinde değişir, bu da Metasploit konsolunun kullanıma hazır olduğunu gösterir. 

Metasploit’in Çalışma Alanlarını (workspaces) Yönetme
Metasploit’in çalışma alanlarını (workspaces) yönetme, sızma testi yapan kişilerin farklı hedefler veya projeler için topladıkları verileri düzenli bir şekilde ayırmasına olanak tanır.

İşlemlerin Açıklaması
Mevcut Çalışma Alanlarını Görüntüleme:
msf6 > workspacekomutu, Metasploit'te şu anda bulunan çalışma alanlarını listeler.- İlk çalıştırıldığında, sadece varsayılan (
default) çalışma alanı görülür ve yıldız (*) ile işaretlenmiştir. Bu, o anda aktif olan çalışma alanınındefaultolduğunu belirtir. 
Yardım Menüsünü Görüntüleme:
msf6 > workspace -hkomutu,workspacekomutunun nasıl kullanılacağına dair yardım menüsünü açar.- Bu menüde, yeni bir çalışma alanı eklemek (
-a), silmek (-d), yeniden adlandırmak (-r), listelemek (-l) gibi çeşitli seçenekler açıklanır. 
Yeni Bir Çalışma Alanı Oluşturma:
msf6 > workspace -a metasploitablekomutu,metasploitableadında yeni bir çalışma alanı oluşturur ve hemen bu alana geçer.- Komutun çıktısı, yeni çalışma alanının eklendiğini ve mevcut çalışma alanının artık 
metasploitableolduğunu belirtir. 
Çalışma Alanları Arasında Geçiş Yapma:
msf6 > workspacekomutu tekrar çalıştırıldığında, hemdefaulthem demetasploitableçalışma alanları listelenir. Yıldız (*) işareti, aktif olanınmetasploitableolduğunu gösterir.msf6 > workspace defaultkomutuyla aktif çalışma alanı tekrardefaultolarak değiştirilir.- Son olarak, 
msf6 > workspace metasploitablekomutuyla yenidenmetasploitablealanına dönülür. 
Bu işlemler, büyük ölçekli veya birden fazla hedefe yönelik sızma testi projelerinde verilerin karışmasını engellemek için son derece önemlidir. Her hedef için ayrı bir workspace oluşturmak, test sonuçlarının daha düzenli ve yönetilebilir olmasını sağlar.
Metasploit’in İçinde Nmap Taraması

Metasploit’in veritabanı entegrasyonundan faydalanılarak hedef sistemin portları ve servisleri hakkında detaylı bilgi toplanmıştır.
Metasploit İçinde Nmap Taraması: msf6 > db_nmap komutu, bu taramanın doğrudan Metasploit konsolu içinden çalıştırıldığını gösterir. Bu sayede tarama sonuçları, harici bir araç kullanmaya gerek kalmadan Metasploit veritabanına otomatik olarak kaydedilir. Bu, toplanan verilerin daha sonraki sızma testi adımlarında (örneğin, zafiyet arama veya exploit kullanma) kolayca kullanılmasını sağlar.
Hedef IP Adresi: Taramada kullanılan IP adresi 192.168.1.34'tür. Bu, daha önce Metasploit'in çalışma alanı olarak ayarlanan ve bilerek zafiyetli bırakılmış bir sanal makine olan Metasploitable'ın IP adresi olabilir. Bu, sızma testi alıştırmaları için sıkça kullanılan bir senaryodur.
Parametrelerin Kısa Açıklaması
-sS: SYN Taraması (TCP SYN Scan). Hedef sistemdeki açık portları bulmak için yaygın olarak kullanılan bir tekniktir.-sV: Servis Versiyon Taraması. Açık portlarda çalışan servislerin versiyon bilgilerini öğrenir.-O: İşletim Sistemi Taraması. Hedef sistemin işletim sistemini tahmin etmeye çalışır.-p: Port Seçimi. Taramada belirli portları seçmek için kullanılır (burada bir aralık belirtilmemiş, bu da Nmap'in varsayılan 1000 popüler portu tarayacağını gösterir).-Pn: Hostu Canlı Olarak Varsayma. ICMP ping testini atlayarak hedefin canlı olduğunu varsayar ve taramaya doğrudan başlar. Özellikle ping filtrelemesi olan ağlarda kullanışlıdır.
Senaryo 1 : Metasploitable Makinesinde FTP Zafiyetinin Sömürülmesi
Bu senaryoda, Metasploit Framework’ü kullanarak, bilerek zafiyetli bırakılmış bir makine olan Metasploitable üzerindeki bir zafiyeti nasıl sömürdüğümüzü adım adım göreceğiz.
Adım 1: Servislerin Keşfi
İlk olarak, services komutu ile hedef makinemiz olan 192.168.1.34 üzerindeki açık portları ve çalışan servisleri listeledik. Listede vsftpd 2.3.4 sürümünün çalışan bir FTP servisi olduğunu tespit ettik. Bu versiyonun bilinen bir zafiyeti olduğunu biliyorduk.

Adım 2: Zafiyet Araştırması
Açık servis versiyonunun bilinen zafiyetlerini doğrulamak için Google’da “vsftpd 2.3.4 exploit” şeklinde arama yaptık. Arama sonuçları, bu versiyonda bir “arka kapı (backdoor)” zafiyeti olduğunu gösterdi. Bu zafiyet, kötü niyetli bir kodun bu servise gizlice eklenmesiyle ortaya çıkmıştı.


Adım 3: Metasploit Modülünü Seçme
Metasploit konsolunda, sömürülecek zafiyete karşılık gelen modülü seçmek için use exploit/unix/ftp/vsftpd_234_backdoor komutunu kullandık. Bu komut, zafiyeti sömürmek için gereken tüm araçları yükledi. Yükleme sırasında, modülün bir payload (zararlı kod) içermediği ve varsayılan olarak bir komut kabuğu (cmd/unix/interact) kullanacağı belirtildi.

Adım 4: Sömürü Parametrelerini Ayarlama
Modül yüklendikten sonra, show options komutuyla gerekli ayarları görüntüledik. Bu ekranda, RHOSTS (hedef host) ve RPORT (hedef port) parametrelerinin girilmesi gerekiyordu. Biz de set rhosts 192.168.1.34 komutu ile hedef IP adresini belirledik. show options komutunu tekrar çalıştırarak bu parametrenin doğru şekilde ayarlandığını doğruladık.


Adım 5: Zafiyeti Sömürme
Tüm parametreler ayarlandıktan sonra, run komutu ile sömürü işlemini başlattık. Metasploit, vsftpd servisine bağlandı ve zafiyeti tetikleyerek bir "arka kapı servisi" başlattı. Bu sayede hedef makinede bir komut kabuğu (shell) oturumu (session) elde ettik.

Adım 6: Komut Kabuğuna Erişim ve Keşif
Oturum açıldıktan sonra, hedef makinenin root kullanıcısı yetkisiyle bir komut kabuğuna erişim sağladık. id ve uname -a gibi komutları çalıştırarak mevcut yetkilerimizi ve sistem bilgilerini doğruladık. Ardından ls komutu ile dosya sistemini listeleyerek ele geçirdiğimiz sistem üzerinde derinlemesine keşfe başladık.

Adım 7: Metasploit’in Veritabanına Kaydedilmiş Zafiyet Bilgileri

msf6 > vulns komutu, daha önce gerçekleştirdiğimiz Nmap taraması ve sömürü işlemleri sırasında tespit edilen zafiyetlerin listesini sunuyor.
Bu senaryo, bir zafiyetin nasıl keşfedildiğini, sömürüldüğünü ve ardından hedef sistemin kontrolünün nasıl ele geçirildiğini adım adım göstermektedir.
Senaryo 2 : Telnet Servisinde Kaba Kuvvet Saldırısı ile Şifre Kırma
Bu senaryoda, Metasploit Framework’ün yardımcı (auxiliary) modüllerini kullanarak, hedef sistemdeki Telnet servisi için zayıf kimlik bilgilerini nasıl bulduğumuzu anlatacağız.
Adım 1: Servis Keşfi ve Hedefin Belirlenmesi
Önceki senaryoda olduğu gibi, services komutuyla hedef sistemdeki açık portları ve servisleri listeledik. Listede Telnet servisinin açık olduğunu ve 23/tcp portunu kullandığını gördük. Bu, kaba kuvvet saldırısı için potansiyel bir hedefimiz olduğu anlamına geliyordu.

Adım 2: Kaba Kuvvet Modülünü Bulma
Telnet servisi için kaba kuvvet saldırısı yapacak bir modül aramak için search telnet type:auxiliary komutunu kullandık. Arama sonuçlarında, Telnet Login Check Scanner modülünü (auxiliary/scanner/telnet/telnet_login) bulduk. Bu modül, kullanıcı adı ve parola listeleriyle giriş denemeleri yapmak için idealdi.

Adım 3: Kullanıcı Adı ve Parola Listelerini Oluşturma
Saldırı için kullanacağımız kullanıcı adı ve parola listelerini hazırladık. nano komutuyla username ve passlist adında iki ayrı dosya oluşturduk. Bu dosyalara denemek istediğimiz yaygın kullanıcı adlarını ve parolaları yazdık. cat komutuyla dosyaların içeriğini doğruladık.

Adım 4: Metasploit Modülünü Ayarlama
Kaba kuvvet modülünü kullanmak için use 13 (veya modülün tam adı) komutunu kullandık.

show options komutuyla modülün ayarlarını görüntüledik. Kaba kuvvet saldırısı için en önemli parametreler USER_FILE (kullanıcı adı listesi), PASS_FILE (parola listesi) ve RHOSTS (hedef IP adresi) idi. Bu parametreleri sırasıyla aşağıdaki gibi ayarladık:
set user_file /root/usernameset pass_file /root/passlistset rhosts 192.168.1.34
Ayrıca, başarılı bir giriş denemesi bulduğumuzda saldırıyı durdurmak için set stop_on_success true komutunu ekledik. show options komutuyla tüm ayarların doğru yapıldığını bir kez daha kontrol ettik.

Adım 5: Saldırıyı Başlatma ve Sonuçları Gözlemleme
run komutunu kullanarak kaba kuvvet saldırısını başlattık. Metasploit, belirlediğimiz kullanıcı adı ve parola kombinasyonlarını tek tek denedi. İlk denemeler başarısızlıkla sonuçlandı, ancak sonunda msfadmin:msfadmin kombinasyonunun başarılı olduğunu gösteren bir çıktı aldık. Metasploit otomatik olarak Telnet'e giriş yaptı ve bir komut kabuğu oturumu (session) başlattı.

Adım 6: Veritabanına Kaydedilen Bilgileri Görüntüleme
Son olarak, vulns komutuyla Metasploit veritabanına kaydedilen zafiyet bilgilerini kontrol ettik. Önceki FTP zafiyetinin yanı sıra, yeni bir girişin de eklendiğini gördük: Telnet Login Check Scanner. Bu, başarılı kaba kuvvet saldırısının ve kullanılan kimlik bilgilerinin veritabanına kaydedildiğini gösteriyordu.

Bu senaryo, Metasploit’in yalnızca bilinen zafiyetleri sömürmek için değil, aynı zamanda kaba kuvvet gibi yaygın saldırı yöntemlerini otomatikleştirmek için de ne kadar güçlü bir araç olduğunu göstermektedir.
Senaryo 3 : Apache Tomcat Yönetim Paneli Zafiyetinin Sömürülmesi ve Meterpreter ile Sistem Ele Geçirme
Bu senaryoda, hedef sistemde çalışan Apache Tomcat web sunucusunun yönetim paneli zafiyetleri kullanılarak nasıl sızılabileceği gösterilmektedir. Port taraması ile keşfedilen Tomcat servisi, zayıf kimlik bilgileri (tomcat:tomcat) kullanılarak brute-force saldırısı ile ele geçirilmiş ve yüklenen zararlı bir WAR dosyası ile sistemde Meterpreter oturumu başlatılmıştır.
Adım 1: Keşif ve Port Taraması
Hedef sistemde (10.0.2.10) yapılan port taraması sonucunda, 8180 portunda Apache Tomcat servisinin çalıştığı tespit edilmiştir. Tarama sonuçlarına göre Tomcat sürümü 5.5 olarak belirlenmiştir. Bu port, yönetim paneline erişim sağlamaktadır.


Adım 2: Tomcat Yönetim Paneli Brute Force Saldırısı
Metasploit’in scanner/http/tomcat_mgr_login modülü kullanılarak, Tomcat yönetim paneli için brute-force saldırısı başlatılmıştır. Modül, default kimlik bilgileri listesi (tomcat_mgr_default_pass.txt) kullanarak denemeler yapmış ve tomcat:tomcat kullanıcı adı/şifresi ile başarılı giriş sağlanmıştır.





Adım 3: Yönetim Paneline Erişim ve Keşif
Başarılı giriş sonrası Tomcat yönetim panelinde (/manager/html) uygulama yükleme/deploy etme yetkisi elde edilmiştir. Panel üzerinden sunucu bilgileri (OS: Linux, Tomcat Sürümü: 5.5) ve mevcut uygulamalar incelenmiştir.



Adım 4: Zararlı WAR Dosyası Yükleme ve Meterpreter Erişimi
Metasploit’in exploit/multi/http/tomcat_mgr_upload modülü kullanılarak, hedef sisteme zararlı bir WAR dosyası yüklenmiş ve çalıştırılmıştır. Bu işlem sonucunda Meterpreter oturumu başlatılmıştır.





Adım 5: Meterpreter ile Sistem Kontrolü
Meterpreter oturumu açıldıktan sonra, hedef sistemde (metasploitable) dosya sistemi keşfi yapılmış ve sistem bilgileri görüntülenmiştir.
