July 27, 2026
TryHackMe — Metasploit Meterpreter
Bu oda, Metasploit Framework’ün en güçlü bileşenlerinden biri olan Meterpreter’ın işlevselliğini, mimarisini ve kullanım yöntemlerini…

By Ufuk Yaman
7 min read
Bu oda, Metasploit Framework'ün en güçlü bileşenlerinden biri olan Meterpreter'ın işlevselliğini, mimarisini ve kullanım yöntemlerini analiz etmektedir. Meterpreter, hedef sistem üzerinde tam kontrol sağlayan, bellek içi (in-memory) çalışan ve tespit edilmekten kaçınmak üzere tasarlanmış gelişmiş bir "shell" veya "payload" türüdür. Temel bulgular, Meterpreter'ın disk üzerinde herhangi bir dosya bırakmaması, diğer sistem süreçlerine enjekte olması ve HTTPS tabanlı şifreli iletişim kullanarak ağ trafiği analizlerinden kaçınabilmesi üzerine yoğunlaşmaktadır. Oda, Meterpreter'ın farklı işletim sistemlerine göre özelleşebilen sürümlerini (flavors), post-exploitation (sömürü sonrası) aşamasındaki kritik komutlarını ve yetki yükseltme süreçlerindeki rolünü detaylandırmaktadır.
1. Introduction: Meterpreter'ın Temel Özellikleri ve Mimarisi
Meterpreter, standart shell'lerin ötesinde, penetrasyon test uzmanlarına geniş bir araç seti sunan bir Metasploit payload'udur.
1.1. Bellek İçi Çalışma (In-Memory Execution)
Meterpreter'ı diğer shell türlerinden ayıran en belirgin özellik, tamamen sistem belleğinde (RAM) çalışmasıdır.
- Diske Yazmama: Meterpreter kendisini diske yazmaz; bu durum, dosya tabanlı çalışan geleneksel antivirüs yazılımları tarafından tespit edilmesini zorlaştırır.
- Süreç Enjeksiyonu: Mevcut ve meşru bir Windows süreci (örneğin
powershell.exeveyaspoolsv.exe) içine enjekte olarak o sürecin adını ve kimliğini benimser.
1.2. Tespit Kaçınma ve Şifreleme
- Ağ Trafiği: Varsayılan olarak HTTPS protokolü üzerinden iletişim kurar. Bu, ağ üzerinden geçen trafiğin şifreli olduğu ve içerik denetimi (inspeksiyon) yapılmadığı sürece fark edilmeyeceği anlamına gelir.
- Antivirüs Etkileşimi: Her ne kadar gelişmiş kaçınma yöntemleri kullansa da, modern antivirüs çözümleri Meterpreter'ın bellek içi hareketlerini ve açık kaynak kodlu yapısını bildiği için güncel sistemlerde tespit edilebilir.
2. Meterpreter Türleri ve Payload Yapılandırması
Meterpreter, hedefin mimarisine ve ağ kısıtlamalarına göre farklı "aromalar" (flavors) ve yapılar sunar.
2.1. Payload Kategorileri
Inline (Single)
Tüm bileşenlerin tek bir paket içinde gönderildiği, daha basit ancak daha büyük boyutlu payload'lardır.
Staged
Çok aşamalıdır. Önce küçük bir "stager" gönderilir, ardından asıl Meterpreter bileşenleri parça parça indirilir.
2.2. Desteklenen Platformlar
Meterpreter, geniş bir işletim sistemi yelpazesini destekler:
- Windows
- Linux
- Android
- Apple iOS
- Java tabanlı sistemler
2.3. Seçim Kriterleri
Uygun bir Meterpreter payload'u seçilirken şu üç faktör belirleyicidir:
- Hedef İşletim Sistemi: Hedefin OS mimarisi ile uyumluluk.
- Sistem Bileşenleri: Hedefte yüklü olan yazılımlar ve mimari (x86, x64).
- Ağ Bağlantısı: Bağlantının yönü (Reverse TCP, HTTP, HTTPS).
3. Kritik Komutlar ve Kullanım Alanları
Meterpreter içerisindeki komutlar; çekirdek, dosya sistemi, ağ ve sistem komutları gibi kategorilere ayrılmıştır.
3.1. Keşif ve Bilgi Toplama
sysinfo: Hedef makinenin adı, işletim sistemi ve mimarisi hakkında genel bilgi verir.getpid: Meterpreter'ın o an hangi süreç kimliği (Process ID) altında çalıştığını gösterir.ps: Sistemde çalışan tüm süreçleri listeler.getuid: Meterpreter'ın hangi kullanıcı yetkileriyle (örneğin: NT AUTHORITY\SYSTEM) çalıştığını belirtir.
3.2. Dosya Sistemi İşlemleri
search -f [dosya_adı]: Tüm dosya sisteminde belirli bir dosyayı arar.cat "[dosya_yolu]": Dosya içeriğini okur. (Not: Boşluk içeren dosya yollarında çift tırnak kullanımı zorunludur).
4. Sömürü Sonrası (Post-Exploitation) Teknikleri
Meterpreter, sisteme sızıldıktan sonra kalıcılık sağlama ve veri sızdırma gibi kritik görevleri yerine getirmek için özel araçlara sahiptir.
4.1. Süreç Migrasyonu (Migrate)
migrate [PID] komutu, Meterpreter'ın mevcut sürecinden başka bir sürece taşınmasını sağlar.
- Amaç: Daha kararlı bir süreçte kalıcılık sağlamak veya daha yüksek yetkili bir sürece geçmek.
- Risk: Yanlış veya düşük yetkili bir sürece geçiş yapıldığında mevcut yetkiler kaybedilebilir.
4.2. Kimlik Bilgisi ve Hash Elde Etme
hashdump: Windows SAM (Security Account Manager) veritabanındaki kullanıcı şifre özetlerini (NTLM hash'leri) döker.- Önemli Not:
hashdumpkomutunun başarılı olması için genelliklelsass.exegibi kritik sistem süreçlerine migrasyon yapılması gereklidir. load kiwi: Mimikatz aracını yükleyerek bellekten açık metin şifrelerin veya hash'lerin elde edilmesini sağlar.
4.3. Yetki Yükseltme (Privilege Escalation)
getsystem: Meterpreter'ın yetkilerini otomatik olarak "Sistem" (NT AUTHORITY\SYSTEM) seviyesine çıkarmaya çalışan bir komuttur.
5. Post-Exploitation Challenge
Metasploit kullanımı sırasında karşılaşılan pratik zorluklar ve çözümleri:
Ağ Paylaşımlarını Listeleme
Meterpreter içinde yerleşik bir komut yoksa, shell komutu ile sistem shell'ine geçip net share komutu kullanılabilir.
Boşluklu Dosya Yolları
Dosya yolları veya komut parametreleri arasında boşluk varsa (örn: C:\Users\Secret Files\), tüm yol çift tırnak (" ") içine alınmalıdır.
Bağlantı Kopması
hashdump gibi komutlar bazen oturumun çökmesine neden olabilir. Bu durumda hedef makine veya saldırı platformu yeniden başlatılmalı ve süreç migrasyonu önceliklendirilmelidir.
Hash Kırma
Elde edilen NTLM hash'lerinin (genellikle ikinci yarısı olan kısım) çözülmesi için online araçlar (örn: CrackStation) veya John the Ripper/Hashcat gibi yerel araçlar kullanılabilir.
Hadi uygulayalım!!!
Aşağıdaki kimlik bilgilerini kullanarak (Server Message Block-SMB) üzerinden ilk güvenlik açığı saldırısını simüle edebilirsiniz. (exploit/windows/psexec kullanarak).
Username: ballen Password: Password1
Attackbox ve Lab Machine çalıştırın.
Metasploit'i çalıştırmak için msfconsole'u başlatın ve aşağıdaki komutu girin:
use exploit/windows/smb/psexec
İlgili seçenekleri ayarlayın: RHOSTS (target ip), SMBPass (Password1) and SMBUser (ballen).
runkomutuyla işlemi tamamlayın! Artık bir Meterpreter oturumunuz olmalı.
Öğrendiğimiz komutlardan bazılarını deneyelim. Soruyu cevaplamak için sysinfokomutunu kullanabiliriz:
What is the computer name? Answer: ACME-TEST
What is the target domain? Answer: FLASH
Artık bazı post exploitation komutlarını kullanmanın zamanı geldi. Bunu, Meterpreter oturumumuzu arka plana aldıktan sonra yapabileceğimiz diğer modülleri yükleyerek yapıyoruz.
Öncelikle Meterpreter'ı arka plana alın (Ctrl+Z). sessions -l komutunu girerek oturum kimliğine bakın. Bu muhtemelen 1 olacaktır. Buna bir sonraki adımda ihtiyacımız olacak.
search enum shareyazarak doğru modülü arayın. Şu sonuç çıktı:
post/windows/gather/enum_shares modülünü seçin ve sessionseçeneğini 1 olarak ayarlayın.
run veya exploit komutuyla çalıştırın.
What is the name of the share likely created by the user? Answer: speedster
Sonrasında hash sorusu için sessions -i 1 komutunu girerek Meterpreter oturumuna tekrar girmeyi denedim. Ardından hashdumpçalıştırmayı denedim, ancak işe yaramadı.
Sonrasında ise migrate komutu ile Meterpreter'ın çalıştığı işlemi (process) başka bir işleme taşımak ve böylece Meterpreter'ı artık başka bir process içerisinde çalıştırarak yetki yükseltmeye çalışmak aklıma geldi. Bu konuyu biraz açarak anlatayım:
1. Higher Privileges (Daha Yüksek Yetkiler)
Windows'ta her işlem aynı yetkiye sahip değildir.
Örneğin: notepad.exe ve explorer.exe User yetkisinde çalışabilirken; services.exe ve lsass.exe SYSTEM yetkisinde çalışır.
Eğer Meterpreter normal bir kullanıcı işlemi içerisinde çalışıyorsa:
explorer.exeexplorer.exeyalnızca o kullanıcının sahip olduğu izinleri kullanabilir.
Fakat SYSTEM yetkisiyle çalışan bir sürece geçerse:
services.exeservices.exeveya
lsass.exelsass.exeartık SYSTEM haklarıyla çalışabilir (uygun yetki yükseltme koşulları varsa).
Bu sayede:
- Registry'nin korunan bölümlerine erişebilir.
- Servis oluşturabilir.
- Driver yükleyebilir.
- Diğer kullanıcıların işlemlerini yönetebilir.
- Hassas sistem kaynaklarına erişebilir.
2. Stability (Daha Kararlı Çalışma)
Kullanıcının açtığı programlar kapanabilir.
Örneğin Meterpreter şu süreçte çalışıyor olsun:
notepad.exenotepad.exeKullanıcı Notepad'i kapatırsa:
Notepad
↓
MeterpreterNotepad
↓
MeterpreterNotepad kapanınca Meterpreter da sonlanır.
Ama Meterpreter şu sürece taşınırsa:
services.exeservices.exeWindows bu işlemi sürekli çalıştırdığı için oturumun beklenmedik şekilde sonlanma ihtimali azalır.
3. Bypassing User Restrictions (Kullanıcı Kısıtlamalarını Aşma)
Normal kullanıcı hesabı birçok işlemi yapamaz.
Örneğin:
- Program Files klasörüne yazamaz.
- Servis oluşturamaz.
- Bazı registry anahtarlarını değiştiremez.
- Diğer kullanıcıların işlemlerine erişemez.
Eğer Meterpreter daha yüksek ayrıcalıklara sahip bir sürece geçebilirse (ve gerekli izinlere sahipse), bu kısıtlamaların önemli bir kısmı ortadan kalkabilir.
Ancak önemli bir nokta vardır:
Sadece migrate komutunu çalıştırmak tek başına yetki yükseltmez._ Mevcut oturumun hedef sürece geçebilecek gerekli izinlere sahip olması gerekir. Aksi halde migrate işlemi başarısız olur. Gerçek yetki yükseltme genellikle ayrı bir adım (ör. bir ayrıcalık yükseltme açığından yararlanma veya geçerli SYSTEM belirteci elde etme) gerektirir._
4. Evasion (Tespit Edilmeyi Zorlaştırma)
Güvenlik yazılımları şüpheli süreçleri izler.
Örneğin:
notepad.exenotepad.exeiçerisinde ağ bağlantısı kuran bilinmeyen kodlar dikkat çekebilir. Bazı saldırganlar bu nedenle daha güvenilir görünen süreçlere taşınmayı tercih eder. Bunun amacı:
- Güvenlik ürünlerinin dikkatinden kaçmaya çalışmak,
- Sürecin sonlandırılmasını zorlaştırmak,
- Daha doğal görünen bir işlem içinde çalışmaktır.
Ancak günümüz EDR (Endpoint Detection and Response) çözümleri yalnızca süreç adına bakmaz. Bellek enjeksiyonu, süreç geçişi (process migration), davranış analizi ve API çağrıları gibi birçok tekniği de izler. Bu nedenle tek başına migrate işlemi modern güvenlik ürünlerini atlatmayı garanti etmez.
Süreç Göçü (Process Migration) Nasıl Çalışır?
migrate komutu çalıştırıldığında Meterpreter, mevcut süreçten ayrılarak hedef süreç içerisinde çalışmaya devam eder. Bu işlem, oturumun tamamen kapanıp yeniden açılması değildir; oturumun çalıştığı process (işlem) değiştirilir.
Bu işlem sırasında genel olarak şu adımlar gerçekleşir:
- Hedef süreç belirlenir.
Örneğin services.exe veya explorer.exe gibi çalışan bir process seçilir.
2. Hedef sürece erişim sağlanır.
Meterpreter, seçilen sürece bağlanabilmek için gerekli izinlere sahip olmalıdır. Yeterli yetki yoksa migration işlemi başarısız olur.
3. Meterpreter kodu hedef sürece aktarılır.
Payload, hedef sürecin belleğine taşınır ve orada çalışacak şekilde hazırlanır.
4. Yeni süreç içerisinde Meterpreter çalıştırılır.
Bağlantı kesilmeden Meterpreter artık yeni process içerisinde çalışmaya devam eder.
5. Eski süreçten çıkılır.
Migration başarılı olduktan sonra eski süreçte çalışan Meterpreter sonlandırılır ve oturum tamamen yeni süreç üzerinden devam eder.
Neden Kullanılır?
Sızma testi veya yetkili güvenlik değerlendirmelerinde migrate komutunun kullanılmasının başlıca nedenleri şunlardır:
- Daha kararlı bir oturum elde etmek.
- Kullanıcının kapatabileceği uygulamalara bağımlı kalmamak.
- Uygun izinler mevcutsa daha yüksek ayrıcalıklara sahip bir süreçte çalışmak.
- Farklı süreç bağlamlarında güvenlik kontrollerini ve tespit mekanizmalarını değerlendirmek.
Kısacası, migrate komutu Meterpreter'ın çalıştığı süreci değiştirir. Doğru koşullarda daha kararlı bir oturum sağlayabilir ve mevcut yetkilerle erişilebilen daha ayrıcalıklı süreçlerde çalışmasına olanak tanıyabilir; ancak tek başına yetki yükseltmez veya güvenlik çözümlerini otomatik olarak atlatmaz. Bu nedenle hem sızma testlerinde hem de savunma ekiplerinin saldırı simülasyonlarında incelenen önemli bir tekniktir.
Tekrar task çözümüne dönersek;
ps komutunu kullanarak tüm işlemleri listeledim. Ardından, daha yüksek ayrıcalıklar elde etmek için SYSTEM process ine geçiş yaptım:
Neden spoolsv.exe?
spoolsv.exe, Windows işletim sisteminde çalışan Print Spooler (Yazdırma Biriktiricisi) servisinin anaişlemidir. Görevi, yazdırma işlerini yönetmek ve yazıcılarla işletim sistemi arasındaki iletişimi sağlamaktır.
Temel Görevleri
spoolsv.exe aşağıdaki işlemleri gerçekleştirir:
- Yazdırma işlerini sıraya (queue) alır.
- Birden fazla yazdırma isteğini yönetir.
- Yazdırma işlemlerini yazıcıya uygun sırayla gönderir.
- Yerel ve ağ yazıcılarını yönetir.
- Yazdırma kuyruğunu (Print Queue) kontrol eder.
What is the NTLM hash of the jchambers user? Answer: 69596c7aa1e8daee17f8e78870e25a5c
What is the cleartext password of the jchambers user? Answer: Trustno1
Hash'i https://crackstation.net/ adresine girdim ve cevabı aldım.
Where is the "secrets.txt" file located? (Full path of the file) Answer: c:\Program Files (x86)\Windows Multimedia Platform\secrets.txt
Meterpreter oturumunda aşağıdaki komutu girmeniz yeterlidir:
search -f secrets.txt
What is the Twitter password revealed in the "secrets.txt" file? Answer: KDSvbsw3849!
(Not: Boşluk içeren dosya yollarında çift tırnak kullanımı zorunludur. Unutmayın!!!)
Where is the "realsecret.txt" file located? (Full path of the file) Answer: c:\inetpub\wwwroot\realsecret.txt
Aynı şekilde Meterpreter oturumunda aşağıdaki komutu girmeniz yeterlidir:
search -f realsecret.txt
What is the real secret? Answer: The Flash is the fastest man alive
Sonuç
Meterpreter, esnek yapısı ve modülerliği sayesinde modern siber güvenlik operasyonlarında vazgeçilmez bir araçtır. Bellek içi çalışma prensibi ve güçlü migrasyon yetenekleri, saldırganlara veya test uzmanlarına hedef sistemde düşük iz bırakarak derinlemesine analiz yapma imkanı tanır. Başarılı bir operasyon için hedefin mimarisini anlamak, doğru süreçlere migrate olmak ve işletim sistemi sınırlamalarını (boşluklu karakterler vb.) doğru yönetmek esastır.