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
| Функция | Unix-подобная цель | Windows-цель |
|---|---|---|
| Автообновление оболочки | PTY | readline(*) |
| Изменение размера терминала в реальном времени | ✅ | ❌ |
| Логирование активности оболочки | ✅ | ✅ |
| Скачивание удалённых файлов/папок | ✅ | ✅ |
| Загрузка локальных/HTTP-файлов/папок | ✅ | ✅ |
| Выполнение локальных/HTTP-скриптов в памяти с загрузкой вывода в реальном времени | ✅ | ❌ |
| Проброс локальных портов | ✅ | ❌ |
| Запуск оболочек на нескольких вкладках и/или хостах | ✅ | ❌ |
| Автоподдержание N активных оболочек на хост (перезапуск при завершении) | ✅ | ❌ |
(*) Можно вручную обновить до 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)