PETEP ( PEnetration TEsting Proxy ) — это Java-приложение с открытым исходным кодом для создания прокси-серверов для анализа и изменения трафика. Основная цель PETEP — предоставить полезный инструмент для проведения тестов на проникновение приложений с различными протоколами (по TCP/UDP) путем настройки прокси и перехватчиков для управления трафиком, передаваемым между клиентом и сервером.
Требования: Java 11+ (для Mac M1, M2 используйте Java 17+)
petep.sh
(Linux, Mac) или petep.bat
(Windows). # Linux / Mac
chmod +x petep.sh
./petep.sh
# Windows
petep.bat
Совет. Предоставленные сценарии запуска содержат полезные переменные, включая рабочий каталог (для файла petep.json
) и путь к исполняемому файлу Java. Возможно, вам придется изменить его, если у вас его нет в PATH или вы используете несколько версий Java на своем компьютере.
Совет: Большинство изменений в проекте не сохраняются автоматически. Используйте «Проект» → «Сохранить», чтобы сохранить изменения во время работы PETEP.
Последняя версия PETEP поддерживает следующие протоколы:
И есть следующие функции:
Подробные описания всех модулей можно найти в официальном руководстве пользователя.
PETEP создан в качестве прокси-сервера для протоколов приложений, построенных на TCP/UDP. Чтобы использовать PETEP в качестве прокси-сервера для вашего приложения, обычно есть один из следующих вариантов:
/etc/hosts
и переопределить IP-адрес целевого домена. Если целевое приложение не поддерживает прокси-сервер и/или невозможно использовать другие подходы (например /etc/hosts
), чтобы заставить приложение взаимодействовать через PETEP, вы можете использовать Deluder.
Deluder — это утилита Python, которая использует динамические инструменты для перехвата вызовов функций в обычных сетевых библиотеках и библиотеках шифрования. См. Deluder на GitHub.
Чтобы использовать расширение Scripter, рекомендуется использовать GraalVM, поскольку реализация построена с использованием GraalVM Polyglot. Начиная с GraalVM 22.2, вам может потребоваться установить язык сценариев в GraalVM с помощью gu install js
.
Чтобы протестировать TCP-связь с использованием существующих HTTP-прокси, таких как Burp Suite, OWASP Zap и т. д.), вы можете использовать внешний HTTP-прокси-модуль PETEP, который позволяет туннелировать TCP-связь через эти прокси.
Модуль внешнего прокси-сервера HTTP оборачивает TCP-связь внутри HTTP, которая отправляется через прокси. Повторение пакетов также поддерживается, пока соединение активно, поэтому для TCP-связи также можно использовать Burp Intrumer/Repeater и Zaproxy Requester/Fuzzer.
Дополнительную информацию см. в Руководстве пользователя — Внешний HTTP-прокси.
Примечание. Если вы хотите использовать PETEP только в качестве туннеля для отправки TCP через HTTP-прокси, я бы рекомендовал настроить его в режиме GUI, а затем запустить в режиме NO-GUI ( PETEP [project_path] --nogui
).
PETEP поддерживает TCP-прокси с SSL/TLS и STARTTLS. Чтобы использовать их, вам необходимо предоставить сертификат, поскольку приложение не генерирует его само. Для генерации сертификатов можно использовать множество инструментов, но один из них является частью двоичных файлов Java ( %JAVA_HOME%/bin/keytool
).
Чтобы сгенерировать сертификат в хранилище ключей JKS, вы можете использовать следующую команду:
keytool -genkey -alias petep -keyalg RSA -validity 3650 -keysize 4096 -keystore server.jks
Примечание. Рекомендуется хранить эти сертификаты вместе с проектом (project_dir/conf/server.jks).
Существует три различных руководства, которые помогут вам использовать весь потенциал PETEP:
Можно разрабатывать расширения с использованием Java для реализации поддержки новых протоколов и/или реализации новых функций перехвата связи (включая графический интерфейс пользователя).
Дополнительную информацию о разработке расширений см. в Руководстве для разработчиков.
PETEP распространяется под лицензией GNU GPL 3.0.