
Открытый швейцарский нож для произвольной связи по прикладным протоколам
![]() |
|---|
| Логотип Mística от JoelGMSec |
Mística — это инструмент, позволяющий встраивать данные в поля протоколов прикладного уровня с целью установления двунаправленного канала для произвольной связи. В настоящее время реализована инкапсуляция в протоколы HTTP, HTTPS, DNS и ICMP, но в ближайшем будущем ожидается внедрение дополнительных протоколов.
Mística имеет модульную архитектуру, построенную вокруг пользовательского транспортного протокола под названием SOTP (Simple Overlay Transport Protocol). Данные шифруются, разбиваются на части и помещаются в пакеты SOTP. Пакеты SOTP кодируются и встраиваются в нужное поле протокола прикладного уровня, после чего отправляются на другой конец.
Цель уровня SOTP — предоставить универсальный бинарный транспортный протокол с минимальными накладными расходами. Пакеты SOTP легко скрыть или встроить в легитимные протоколы прикладного уровня. Кроме того, SOTP гарантирует получение пакетов другим концом, шифрует данные с помощью RC4 (в будущем это может измениться) и обеспечивает прозрачную передачу информации в обоих направлениях с помощью механизма опроса (polling).
Модули взаимодействуют с уровнем SOTP для различных целей:
Модули-обёртки и наложенные модули работают вместе, чтобы создавать пользовательские приложения, например, перенаправление ввода через DNS или удалённое перенаправление портов через HTTP.
Модульная архитектура Mística позволяет легко разрабатывать новые модули. Кроме того, пользователь может легко форкнуть существующие модули, чтобы использовать собственное поле или кодировку, либо изменить поведение наложенного модуля.
Программное обеспечение состоит из двух основных компонентов:
ms.py): Использует модули, которые действуют как сервер нужного протокола прикладного уровня (HTTP, HTTPS, DNS, ICMP...). Он спроектирован таким образом, чтобы позволять одновременный запуск нескольких серверов, обёрток и наложений с помощью одного экземпляра ms.py, хотя эта функция пока полностью не реализована.mc.py): Использует модули, которые действуют как клиент нужного протокола прикладного уровня (HTTP, HTTPS, DNS, ICMP...). Он может использовать одновременно только одну обёртку и одно наложение.Вы можете увидеть некоторые демонстрации Mística в следующем плейлисте
У проекта очень мало зависимостей. На данный момент:
dnslib.```
python3.7 -m pip install pip --user
pip3.7 install dnslib --userЕсли вы не хотите устанавливать Python в своей системе, вы можете использовать одну из следующих портативных версий:
- https://www.anaconda.com/distribution/#download-section (для Windows, Linux и macOS)
- https://github.com/winpython/winpython/releases/tag/2.1.20190928 (только для Windows)
## Текущие модули
Модули наложения:
- `io`: Читает из stdin, отправляет через SOTP-соединение. Читает из SOTP-соединения, выводит в stdout
- `shell`: Выполняет команды, полученные через SOTP-соединение, и возвращает вывод. Совместим с модулем io.
- `tcpconnect`: Подключается к TCP-порту. Читает из сокета, отправляет через SOTP-соединение. Читает из SOTP-соединения, отправляет через сокет.
- `tcplisten`: Привязывается к TCP-порту. Читает из сокета, отправляет через SOTP-соединение. Читает из SOTP-соединения, отправляет через сокет.
Модули обёртки:
- `dns`: Кодирует/декодирует данные в DNS-запросах/ответах, используя различные методы
- `http`: Кодирует/декодирует данные в HTTP или HTTPS запросах/ответах, используя различные методы
- `icmp`: Кодирует/декодирует данные в ICMP эхо-запросах/ответах в секции данных
## Использование
`ms.py`: сервер Mística
Вот как выглядит сообщение справки:```txt
usage: ms.py [-h] [-k KEY] [-l LIST] [-m MODULES] [-w WRAPPER_ARGS]
[-o OVERLAY_ARGS] [-s WRAP_SERVER_ARGS]
Mistica server. Anything is a tunnel if you're brave enough. Run without
parameters to launch multi-handler mode.
optional arguments:
-h, --help show this help message and exit
-k KEY, --key KEY RC4 key used to encrypt the comunications
-l LIST, --list LIST Lists modules or parameters. Options are: all,
overlays, wrappers, <overlay name>, <wrapper name>
-m MODULES, --modules MODULES
Module pair in single-handler mode. format:
'overlay:wrapper'
-w WRAPPER_ARGS, --wrapper-args WRAPPER_ARGS
args for the selected overlay module (Single-handler
mode)
-o OVERLAY_ARGS, --overlay-args OVERLAY_ARGS
args for the selected wrapper module (Single-handler
mode)
-s WRAP_SERVER_ARGS, --wrap-server-args WRAP_SERVER_ARGS
args for the selected wrap server (Single-handler
mode)
-v, --verbose Level of verbosity in logger (no -v None, -v Low, -vv
Medium, -vvv High)
Есть два основных режима в Mística Server:
ms.py запускается с параметрами, он позволяет одному оверлейному модулю взаимодействовать с одним модулем-обёрткой.ms.py запускается без параметров, пользователь попадает в интерактивную консоль, где могут быть запущены несколько оверлейных модулей и модулей-обёрток. Эти модули смогут взаимодействовать друг с другом с небольшими ограничениями.mc.py: Mística клиент
Вот как выглядит сообщение справки:```txt usage: mc.py [-h] [-k KEY] [-l LIST] [-m MODULES] [-w WRAPPER_ARGS] [-o OVERLAY_ARGS]
Mistica client.
optional arguments: -h, --help show this help message and exit -k KEY, --key KEY RC4 key used to encrypt the comunications -l LIST, --list LIST Lists modules or parameters. Options are: all, overlays, wrappers, , -m MODULES, --modules MODULES Module pair. Format: 'overlay:wrapper' -w WRAPPER_ARGS, --wrapper-args WRAPPER_ARGS args for the selected overlay module -o OVERLAY_ARGS, --overlay-args OVERLAY_ARGS args for the selected wrapper module -v, --verbose Level of verbosity in logger (no -v None, -v Low, -vv Medium, -vvv High)
### Параметры