6.0 KiB
Packmate
[EN | RU]
Утилита перехвата и анализа трафика для CTF.
Фичи:
- Поддерживает текстовые и бинарные сервисы
- Умеет отображать совпадения паттернов в пакетах цветом
- Подстрока
- Регулярное выражение
- Бинарная подстрока
- Умеет сохранять стримы в избранное и отображать только избранные стримы
- Работает с несколькими сервисами на разных портах, может отображать стримы для конкретных сервисов и паттернов
- Поддерживает навигацию по стримам с помощью горячих клавиш
- Позволяет копировать содержимое пакета в нужном формате
- Конкатенирует смежные пакеты
- Автоматически проводит urldecode
- Разархивирует GZIP в HTTP на лету
Клонирование
Поскольку этот репозиторий содержит фронтенд как git submodule, его необходимо клонировать так:
git clone --recurse-submodules https://gitlab.com/packmate/Packmate.git
# Или, на старых версиях git
git clone --recursive https://gitlab.com/packmate/Packmate.git
Если репозиторий уже был склонирован без подмодулей, необходимо выполнить:
git pull # Забираем свежую версию мастер-репы из gitlab
git submodule update --init --recursive
Подготовка
В этом ПО используется Docker и docker-compose. В образ packmate-app пробрасывается
сетевой интерфейс хоста, его название указывается переменной окружения (об этом ниже).
packmate-db настроен на прослушивание порта 65001 с локальным IP.
При этом файлы БД не монтируются как volume, поэтому при пересоздании контейнера все стримы теряются.
Настройка
Программа берет основные настройки из переменных окружения, поэтому для удобства
можно создать env-файл.
Он должен называться .env и лежать в корневой директории проекта.
В файле необходимо прописать:
# Интерфейс, на котором производится перехват трафика
PACKMATE_INTERFACE=wlan0
# Локальный IP сервера на указанном интерфейсе
PACKMATE_LOCAL_IP=192.168.1.124
# Имя пользователя для web-авторизации
PACKMATE_WEB_LOGIN=SomeUser
# Пароль для web-авторизации
PACKMATE_WEB_PASSWORD=SomeSecurePassword
Запуск
После указания нужных настроек в env-файле, можно запустить приложение:
sudo docker-compose up --build -d
При успешном запуске Packmate будет видно с любого хоста на порту 65000.
Начало работы
При попытке зайти в web-интерфейс впервые, браузер спросит логин и пароль,
который указывался в env-файле.
После успешного входа необходимо открыть настройки кликом по шестеренкам в правом
верхнем углу, затем ввести логин и пароль API, указанный при входе.
Все настройки сохраняются в local storage и теряются только при смене IP-адреса или порта сервера.
Использование
Сначала нужно создать сервисы, находящиеся в игре.
Для этого вызывается диалоговое окно по нажатию кнопки + в навбаре,
где можно указать название и порт сервиса, а также дополнительные опции.
Система начнет автоматически захватывать стримы и отображать их в сайдбаре.
При нажатии на стрим в главном контейнере выводится список пакетов;
между бинарным и текстовым представлением можно переключиться по кнопке в сайдбаре.
Для удобного отлова флагов в приложении существует система паттернов.
Чтобы создать паттерн, нужно открыть выпадающее меню Patterns и нажать кнопку +,
затем указать нужный тип поиска, сам паттерн, цвет подсветки в тексте и прочее.
Горячие клавиши
Для быстрой навигации по стримам можно использовать следующие горячие клавиши:
Ctrl+Up-- переместиться на один стрим вышеCtrl+Down-- переместиться на один стрим нижеCtrl+Home-- перейти на последний стримCtrl+End-- перейти на первый стрим
desu~

