
Penelope Shell Handler
Penelope — современный обработчик оболочек для пентестеров и участников CTF. Он предоставляет более функциональную альтернативу базовым netcat-слушателям, добавляя автоматическое обновление до PTY, управление сессиями, логирование, передачу файлов и вспомогательные модули.
Penelope работает в Unix-подобных системах, включая Linux, macOS и FreeBSD, и требует Python 3.6+.
Penelope доступен в Kali Linux:
sudo apt update
sudo apt install penelope
Penelope полностью реализован с использованием стандартной библиотеки Python, что позволяет запускать его как отдельный скрипт без внешних зависимостей:
wget -q https://raw.githubusercontent.com/brightio/penelope/refs/heads/main/penelope.py && python3 penelope.py
Чтобы установить последнюю версию напрямую с GitHub:
pipx install git+https://github.com/brightio/penelope
Для версионного и более стабильного пути обновлений Penelope также доступен на PyPI:
pipx install penelope-shell-handler
(*) Можно вручную обновить до PTY командой upgrade
⚠️ Поддержка Windows является экспериментальной и активно разрабатывается.
set DisablePayloadHandler True--mcp (локальный HTTP, аутентификация по токену), позволяя управлять теми же оболочками одновременно с вами

penelope # Listening for reverse shells on 0.0.0.0:4444
penelope -p 5555 # Listening for reverse shells on 0.0.0.0:5555
penelope -p 4444,5555 # Listening for reverse shells on 0.0.0.0:4444 and 0.0.0.0:5555
penelope -i eth0 -p 5555 # Listening for reverse shells on eth0:5555
penelope -a # Listening for reverse shells on 0.0.0.0:4444 and show sample reverse shell payloads
penelope -c target -p 3333 # Connect to a bind shell on target:3333
penelope ssh user@target # Get a reverse shell from target on local port 4444
penelope -p 5555 ssh user@target # Get a reverse shell from target on local port 5555
penelope -i eth0 -p 5555 -- ssh -l user -p 2222 target # Get a reverse shell from target on eth0, local port 5555 (use -- if ssh needs switches)
penelope -s <File/Folder> # Share a file or folder via HTTP

-s)Penelope также можно использовать как быстрый HTTP-файловый сервер.
penelope -s file.txt # Serve a single file on 0.0.0.0:8000
penelope -s /path/to/dir # Serve a whole folder
penelope -s a.sh b.elf notes.txt # Serve several items at once
penelope -s . -p 80 # Serve the current dir on port 80
penelope -s secret.txt -prefix xk9 # Hide behind a URL prefix: /xk9/secret.txt
penelope -s -u # Upload mode: accept PUT/POST into the CWD
penelope -s -u -ud /tmp/loot # Upload mode, store received files in /tmp/loot
При запуске Penelope выводит готовую к использованию ссылку для каждого интерфейса (и подсказку для загрузки, когда задан -u), так что вы можете скопировать и вставить её прямо в оболочку цели.
Как показано на видео ниже, всего за несколько секунд мы можем:
https://github.com/brightio/penelope/assets/65655412/7295da32-28e2-4c92-971f-09423eeff178
Несколько замечаний:
F12, чтобы отсоединиться от PTY-оболочки и перейти в главное меню. Если обновление не удалось и вы оказались в базовой оболочке, её можно отсоединить с помощью Ctrl+C. Это также предотвращает случайное убийство оболочки.interact 1 можно просто ввести i 1.
positional arguments:
args Аргументы для режимов -s/--serve и SSH reverse shell
options:
-p, --ports Порты (через запятую) для прослушивания/подключения/раздачи, зависит от -i/-c/-s
(По умолчанию: 4444/5555/8000)
Reverse or Bind shell?:
-i, --interface Локальный интерфейс/IP для прослушивания. (По умолчанию: 0.0.0.0)
-c, --connect Хост для bind shell
-j, --jump Точки перехода для reverse shell
Hints:
-a, --payloads Показать примеры reverse shell для активных слушателей
-l, --interfaces Список доступных сетевых интерфейсов
-h, --help Показать это сообщение и выйти
Session Logging:
-L, --no-log Отключить файлы логов сессий
-T, --no-timestamps Отключить временные метки в логах
-CT, --no-colored-timestamps Отключить цветные временные метки в логах
Misc:
-M, --menu Запустить в главном меню
-m, --maintain Поддерживать N сессий на цель
-S, --single-session Принимать только первую созданную сессию
-ms, --max-sessions Максимум активных сессий на хост (по умолч. 5, 0 = отклонять все новые)
-C, --no-attach Не подключаться автоматически к новым сессиям
-U, --no-upgrade Отключить автообновление оболочки
-H, --keep-history Сохранять историю оболочки цели (не устанавливать HISTFILE=/dev/null)
-O, --oscp-safe Включить безопасный режим OSCP
--no-disk Хранить всё состояние в RAM (tmpfs); ничего не сохраняется на диск
MCP:
--mcp Включить MCP-сервер через локальный HTTP
--mcp-host Хост/IP для привязки (по умолч. 127.0.0.1)
--mcp-port Порт для привязки (по умолч. сохранённый порт, иначе случайный свободный порт, сохранённый в ~/.penelope/mcp.json)
--mcp-token Bearer-токен (по умолч. сохранённый токен, иначе автосгенерированный и сохранённый)
File server:
-s, --serve Запустить режим HTTP-файлового сервера
-prefix, --url-prefix Префикс пути URL
-u, --upload Включить загрузку файлов (PUT/POST) на сервер
-ud, --upload-dir Директория для хранения загруженных файлов (по умолч. CWD)
Debug:
-N, --no-bins Симулировать отсутствие бинарников на цели (через запятую)
-v, --version Показать версию и выйти
-d, --debug Включить отладочный вывод
-dd, --dev-mode Включить режим разработчика
-cu, --check-urls Проверить работоспособность жёстко заданных URL и выйти
Penelope предназначен для прямого и гибкого взаимодействия с удалёнными оболочками. Учитывайте следующее при его использовании:
Управляющие последовательности терминала: Penelope передаёт вывод терминала с удалённых систем напрямую вашему эмулятору терминала. Вредоносные процессы на удалённой стороне могут использовать управляющие последовательности для манипуляции экраном, создания вводящих в заблуждение ссылок или взаимодействия с такими функциями, как буфер обмена. Это воздействие присуще любому инструменту, передающему удалённую оболочку локальному терминалу (например, SSH, telnet, netcat), и не является специфичным для Penelope. Используйте терминал с соответствующими настройками безопасности при подключении к ненадёжным системам.
Логи сессий: Логи сессий могут содержать учётные данные, токены, команды и другую конфиденциальную информацию, полученную от цели. Храните их в безопасности и используйте --no-log, когда логирование не требуется.
Незашифрованные соединения: Стандартные reverse и bind shell соединения не зашифрованы. Избегайте их использования в ненадёжных сетях, если трафик не защищён безопасным туннелем или VPN.
MCP-сервер (--mcp): При включении MCP-сервер предоставляет полный контроль над всеми активными сессиями (выполнение команд, передача файлов) любому клиенту, владеющему bearer-токеном, который хранится в ~/.penelope/mcp.json (0600). Он привязывается к 127.0.0.1 и аутентифицируется по токену. Храните токен в секрете и не подвергайте сервер воздействию ненадёжных сетей.
⚖️ Отказ от ответственности: Penelope предназначен только для авторизованного тестирования безопасности, исследований и образовательных целей. Не используйте его против систем без явного разрешения.
cat, может выглядеть искажённым. Фильтрация этих последовательностей планируется для улучшения читаемости логов.Основные функции обработки оболочек Penelope не выполняют автоматического эксплойта, что делает их подходящими для стиля OSCP. Однако правила экзамена могут меняться, поэтому всегда проверяйте текущие официальные правила OffSec перед использованием любого инструмента на экзамене.
Некоторые модули требуют особой осторожности:
Если вы хотите избежать случайного нарушения правил, используйте ключ -O / --oscp-safe.
Это зависит от типа используемого обновления оболочки:
F12Ctrl-D)Ctrl-C)В любом случае правильная клавиша всегда отображается при подключении к сессии. Например:

См. peneloperc
Это обычно означает, что вы открыли новую интерактивную оболочку, возможно, под другим пользователем. Агент Penelope отслеживает только директорию начальной оболочки и сохраняет права пользователя из этой первой оболочки. Лучший обходной путь — выполнить cd /tmp перед открытием новой оболочки, или, если вы сменили пользователя, породить новую reverse shell от имени нового пользователя.
Ваш вклад неоценим! Если вы хотите помочь, пожалуйста, сообщайте об ошибках, неожиданном поведении или делитесь новыми идеями. Вы также можете отправлять pull-реквесты, но избегайте коммитов из IDE, которые навязывают PEP8 и непреднамеренно перестраивают всю базу кода.
Пенелопа была женой Одиссея и известна своей верностью и терпением, пока ждала его возвращения. Инструмент назван в её честь, потому что он был создан как надёжный и стабильный обработчик оболочек для рабочих процессов, выходящих за рамки базового слушателя.
| Функция | Unix-подобная цель | Windows-цель |
|---|
| Автообновление оболочки | PTY | readline(*) |
| Изменение размера терминала в реальном времени | ✅ | ❌ |
| Логирование активности оболочки | ✅ | ✅ |
| Скачивание удалённых файлов/папок | ✅ | ✅ |
| Загрузка локальных/HTTP-файлов/папок | ✅ | ✅ |
| Выполнение локальных/HTTP-скриптов в памяти с загрузкой вывода в реальном времени | ✅ | ❌ |
| Проброс локальных портов | ✅ | ❌ |
| Запуск оболочек на нескольких вкладках и/или хостах | ✅ | ❌ |
| Автоподдержание N активных оболочек на хост (перезапуск при завершении) | ✅ | ❌ |