cybermachine

Red Team 101+: Zafiyet Tespiti Payload & Exploit Kullanımı | 2025 TalentCoders Siber Güvenlik Yaz Kampı Günlüğü #11

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.

Wp.png

⚠️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ü

image.png

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

image.png

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.

image.png 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üş.

image.png

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

image.png

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.

image.png

Bir örnek araması yapalım:

image.png

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:

image.png vsftpd üzerinde olan exploitlerin python ve ruby kodları.

image.png Buradan bu zafiyetlerin ID numarasından inceleme yaptırdım hem ruby hem python için yazılmış scriptler var.

image.png 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ış.

image.png CVE verisini incelemek için araştırma yapıyoruz.

image.png Burada da daha detaylı bir raporunu görüyoruz.

VSFTPD Backdoor'u Kullanma image.png

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

image.png

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.

image.png Buradan şunu anlıyoruz, Python 3.13 ile telnetlib kaldırılmış. Daha önce ki versiyonları kullanmamız gerekebilir.

image.png Bazen tekrar denemek gerekebiliyor. Tek seferde olmayabiliyor.

image.png Shell açıldı ve içerideyiz.

image.png Sistem içerisinde ki dosyaları görebiliyoruz kullanıcıları görebiliyoruz.

Windows Makineler Üzerinde Zafiyet Aramaya Devam image.png 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.

image.png Ş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

image.png

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.

image.png

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.

image.png 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.

image.png 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.

image.png 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.

image.png Vsftpd için sorgulama yaptığımızda 3 tane exploit buldu.

image.png 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.

image.png Görüldüğü üzere eternal blue açığı için payloadlar var. 73 Adet payload buldu.

image.png

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.

image.png

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.

image.png Nmap ile klasik port ve servis taramamızı yapıyoruz.

image.png 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.

image.png 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.

image.png Ardından oturum oluşturdum ve sistemin bilgilerini kontrol ediyorum.

image.png 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. :)

image.png Shell üzerinden process olarak hesap makinesi açtım. GUI olarak görünmüyor ancak ilgili makinede get-process ile powershellden görebiliyorum.

image.png

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