目录导航
Mythic简介
Mythic 是一个用于红队行动的多人指挥和控制平台。它旨在促进即插即用架构,其中新代理、通信渠道和修改可以即时发生。Mythic 项目的主要目标之一是提高操作者的生活质量,提高代理的可维护性,实现定制化,并为操作者提供更强大的数据分析能力。从根本上说,Mythic 使用基于 Web 的前端和 Docker 容器作为后端。Python3 服务器通过 RESTful API 和 WebSocket 处理大量 Web 请求。然后,该服务器处理与 PostgreSQL 数据库的连接,并通过 RabbitMQ 与其他 Docker 容器通信。如果需要,这使得各个组件可以位于单独的物理计算机或不同的虚拟机中。

反向 Nginx 代理将提供一个端口来连接以访问后端服务。有一个新的用户界面和数据连接管道将在接下来的几年中慢慢成为更多关注的焦点,其中涉及 React 和 GraphQL。

为什么推荐Mythic
数据建模、跟踪和分析是 Mythic 为操作者提供生活质量改善能力的核心方面。从创建负载的一开始,Mythic 就会跟踪使用的特定命令和控制配置文件参数、加载到负载中的命令及其版本、创建者、创建时间和原因。所有这些都用于在新回调签入时提供更连贯的操作视图。简单的问题,例如“哪个有效负载触发了这个回调”、“哪个回调创建了这个新回调”,甚至“为什么会有一个新的回调”现在都有上下文数据来给出答案。从这里,操作者可以开始自动跟踪他们在网络中的足迹,以解决运营安全 (OpSec) 问题并帮助消除冲突。
所有代理和命令都可以跟踪进程创建、文件写入、API 调用、网络连接等。这些工件可以在任务发出时自动记录,甚至在它们发生时由代理报告回来。Mythic 还将MITRE ATT&CK映射纳入标准工作流程。所有命令都可以使用 ATT&CK 技术进行标记,这些技术也将传播到发出的相应任务。在 MITRE ATT&CK 矩阵视图(和ATT&CK 导航器视图)中,操作员可以查看可能命令的覆盖范围以及操作中发出的命令的覆盖范围。操作员还可以在操作时提供对每项任务的评论,以帮助记下某项任务为何重要的原因。此外,为了更轻松地消除冲突和报告,可以通过主 Web 界面全局搜索所有命令、输出和评论。
Mythic安装方法
获取代码
从官方 GitHub 仓库拉取代码:
git clone https://github.com/its-a-feature/Mythic
这适用于 docker 和 docker-compose,因此它们都需要安装。如果您的 ubuntu 机器上没有安装 docker,您可以使用./install_docker_ubuntu.sh
脚本为您安装它。
如果您在 debian 上运行,请./install_docker_debian.sh
改用。Mythic 必须安装在 Linux 上。虽然 macOS 支持 Docker 和 Docker-Compose,但 macOS 不处理 Mythic 依赖于 C2 容器的共享主机网络。您仍然可以从任何操作系统访问浏览器界面,但必须在 Linux 上安装 Mythic 实例
配置您的安装
Mythic的配置都是通过 Mythic/.env
完成的,这意味着对于您的配置,您可以在那里添加/编辑值或将它们添加到您的环境中。Mythic/.env 默认不存在。您可以sudo ./mythic-cli start
在第一次运行时让 Mythic 为您创建它,也可以只使用您想要配置的变量提前创建它。如果您需要以mythic-cli
root 身份运行 Docker 并将环境变量设置为用户,请确保运行sudo -E ./mythic-cli
以便将环境变量传递到您的 sudo 调用中。以下是 Mythic 将在首次执行时生成的默认值,sudo ./mythic-cli mythic start
除非被覆盖:
ALLOWED_IP_BLOCKS="0.0.0.0/0"
COMPOSE_PROJECT_NAME="mythic"
DEFAULT_OPERATION_NAME="Operation Chimera"
DOCUMENTATION_BIND_LOCALHOST_ONLY="true"
DOCUMENTATION_HOST="mythic_documentation"
DOCUMENTATION_PORT="8090"
EXCLUDED_C2_PROFILES=
EXCLUDED_PAYLOAD_TYPES=
HASURA_BIND_LOCALHOST_ONLY="true"
HASURA_HOST="mythic_graphql"
HASURA_PORT="8080"
HASURA_SECRET= random password
JWT_SECRET= random password
MYTHIC_ADMIN_PASSWORD= random password
MYTHIC_ADMIN_USER="mythic_admin"
MYTHIC_DEBUG="false"
MYTHIC_ENVIRONMENT="production"
MYTHIC_REACT_BIND_LOCALHOST_ONLY="false"
MYTHIC_REACT_HOST="mythic_react"
MYTHIC_REACT_PORT="3000"
MYTHIC_SERVER_BIND_LOCALHOST_ONLY="true"
MYTHIC_SERVER_DYNAMIC_PORTS="7000-7010"
MYTHIC_SERVER_HOST="mythic_server"
MYTHIC_SERVER_PORT="17443"
NGINX_BIND_LOCALHOST_ONLY="false"
NGINX_HOST="mythic_nginx"
NGINX_PORT="7443"
NGINX_USE_SSL="true"
POSTGRES_BIND_LOCALHOST_ONLY="true"
POSTGRES_DB="mythic_db"
POSTGRES_HOST="mythic_postgres"
POSTGRES_PASSWORD= random password
POSTGRES_PORT="5432"
POSTGRES_USER="mythic_user"
RABBITMQ_BIND_LOCALHOST_ONLY="false"
RABBITMQ_HOST="mythic_rabbitmq"
RABBITMQ_PASSWORD= random password
RABBITMQ_PORT="5672"
RABBITMQ_USER="mythic_user"
RABBITMQ_VHOST="mythic_vhost"
REBUILD_ON_START="true"
REDIS_BIND_LOCALHOST_ONLY="true"
REDIS_HOST="mythic_redis"
REDIS_PORT="6380"
SERVER_HEADER="nginx 1.2"
SIEM_LOG_NAME=
WEB_KEEP_LOGS="false"
WEB_LOG_SIZE="1024000"
这里有一些重要的注意事项:
MYTHIC_SERVER_PORT
将是您运行 Mythic 的服务器上打开的端口。它NGINX_PORT
是由 Nginx 打开并充当所有其他服务的反向代理。这NGINX_PORT
是您为 Web 用户界面连接的端口,并且应该是您需要对外公开的唯一端口(除非您更喜欢 SSH 端口转发您的 Web UI 端口)。allowed_ip_blocks
允许您限制login
对 Mythic 页面的访问。这应该设置为一系列没有设置主机位的网络块 – 即127.0.0.0/16,192.168.10.0/24,10.0.0.0/8
excluded_c2_profiles
并excluded_payload_types
允许您从启动中排除某些 docker 容器。如果您知道您不会使用某些有效负载类型或 c2 配置文件并希望减少时间/空间要求,这将很有帮助。这些都只是一系列以逗号分隔的 agent/c2 名称,例如:apfell,atlas
或http,dynamichttp
.
上述配置不会影响与您的代理或回调信息相关的端口或 SSL 信息。它只适用于您的操作者 Web UI。当mythic_server
容器第一次启动时,它会经历一个初始化步骤,它使用密码和用户名Mythic/.env
来创建mythic_admin_user
用户。一旦数据库存在,mythic_server
容器就不再使用该值。您会注意到很多容器都有一个*_BIND_LOCALHOST_ONLY
与之关联的环境变量。为了帮助防止 Mythic 不必要地打开端口,Mythic 将尽可能多的容器绑定到mythic_default
Docker 网络,并将暴露的端口绑定到127.0.0.1
. 如果您将*_BINDLOCALHOSTONLY
环境变量设置为,false
那么 Mythic 将0.0.0.0
改为绑定该端口。默认情况下唯一未绑定到 localhost 的容器是nginx
这样您就可以访问该 Web 用户界面,而无需执行端口转发来访问它。
mythic-cli
该mythic-cli
二进制文件用于启动/停止/配置/安装 Mythic 的组件。您可以使用 或mythic-cli -h
随时查看帮助菜单。mythic-cli --help
mythic-cli help
mythic-cli usage ( v 0.0.5 ):
*************************************************************
*** source code: https://github.com/MythicMeta/Mythic_CLI ***
*************************************************************
help
mythic {start|stop} [service name...]
start | restart
Stops and Starts all of Mythic - alias for 'mythic start'
stop
Stop all of Mythic - alias for 'mythic stop'
c2 {start|stop|add|remove|list} [c2profile ...]
The add/remove subcommands adjust the docker-compose file, not manipulate files on disk
to manipulate files on disk, use 'install' and 'uninstall' commands
payload {start|stop|add|remove|list} [payloadtype ...]
The add/remove subcommands adjust the docker-compose file, not manipulate files on disk
to manipulate files on disk, use 'install' and 'uninstall' commands
config
*no parameters will dump the entire config*
get [varname ...]
set <var name> <var value>
payload (dump out remote payload configuration variables)
c2 (dump out remote c2 configuration variables)
database reset
install
github <url> [branch name] [-f]
folder <path to folder> [-f]
-f forces the removal of the currently installed version and overwrites with the new, otherwise will prompt you
* this command will manipulate files on disk and update docker-compose
uninstall {name1 name2 name2 ...}
(this command removes the payload or c2 profile from disk and updates docker-compose)
status
logs <container name>
mythic_sync
install github [url] [branch name]
* if no url is provided, https://github.com/GhostManager/mythic_sync will be used
install folder <path to folder>
uninstall
version
安装代理/C2 配置文件
默认情况下,Mythic 不附带任何有效负载类型(代理)或 C2 配置文件。这有多种原因,但其中一个重要的原因是时间/空间要求 – 所有有效负载类型和 C2 配置文件都有自己的 Docker 容器,因此,它们共同可能会占用大量磁盘空间。此外,将它们拆分到单独的存储库中可以更轻松地保持更新。可以在 GitHub 上找到可用的神话代理,网址为可以在 GitHub 上找到可用的 Mythic C2 配置文件要安装有效负载类型或 C2 配置文件,请使用以下mythic-cli
二进制文件:
sudo ./mythic-cli install github <url>
如果您已经安装了代理,但想要更新它,您可以再次执行相同的命令。如果您-f
在最后提供 a,则 Mythic 将自动覆盖已安装的当前版本,否则将提示您输入每件作品。在您至少安装一个代理和匹配的 C2 配置文件之前,您将无法在 Mythic 中创建任何有效负载
日志记录
如果要启用基于 SIEM 的日志记录,请将 设置siem_log_name
为除空字符串之外的任何内容。如果该文件不存在,Mythic 将创建该文件,并登录到该文件。当前记录了以下内容:
file_upload (file staged on mythic as part of tasking with the intent to get sent to the agent)
file_manual_upload (file staged on mythic as part of a user manually hosting it)
file_screenshot (file is a screenshot from the agent)
file_download (file is downloaded from agent to mythic)
artifact_new (new artifact created - think IOC)
eventlog_new (new eventlog message)
eventlog_modified (eventlog was modified, like resolving an issue or changing their message)
payload_new (new payload created)
task_mitre_attack (a task was associated with a new mitre attack technique)
task_new (a new task was created)
task_completed (a task completed)
task_comment (somebody added/removed/edited a comment on a task)
credential_new (a new credential was added to the store)
credential_modified (a credential was modified)
response_new (a new response for the user to see)
keylog_new (a new keylog entry)
callback_new (new callback registered)
Mythic 将基于 SIEM 的日志记录为 JSON 数据,其中每个条目如下:
{"timestamp": "UTC Timestring", "mythic_object": "one of the values from above", "message": JSON of the actual message in question}
要启动 Mythic,只需运行
sudo ./mythic-cli mythic start
开始使用Mythic
如果您刚刚从上一节来到这里,那么您的 Mythic 实例应该已经启动并运行。查看下一部分以确认情况。如果您想随时停止 Mythic,只需运行sudo ./mythic-cli stop
,如果您想再次启动,请运行sudo ./mythic-cli start
。如果 Mythic 当前正在运行并且您需要进行更改,您可以sudo ./mythic-cli restart
再次运行而不会出现任何问题,该命令将自动停止并重新启动它们。默认用户名是mythic_admin
,但该用户的密码是第一次启动 Mythic 时随机生成的。Mythic/.env
您可以在文件中找到这个随机值。一旦 Mythic 至少启动一次,就不再需要此值,因此您可以编辑或从Mythic/.env
文件中删除此条目。Mythic 开始时没有预装 C2 配置文件或代理。由于规模问题和代理数量的增加,这是不可行的。反而。使用该./mythic-cli install github <url> [branch] [-f]
命令从 GitHub(或 GitLab)存储库安装代理。
安装和连接故障排除
如果出现问题,这里有几个地方需要检查:
- 运行
sudo ./mythic-cli status
以提供所有 docker 容器的状态更新。它们都应该启动并运行。如果一个已退出或仅启动不到 30 秒,则该容器可能是您的问题。status 命令提供了很多关于正在运行的服务、在哪些端口上以及它们是否可以从外部访问的信息。- 您的输出将类似于以下内容。请注意
mythic_server
docker 容器如何显示状态Exited
?这看起来像个问题
- 您的输出将类似于以下内容。请注意
CONTAINER NAME MYTHIC SERVICE WEB ADDRESS BOUND LOCALLY
mythic_nginx Nginx (Mythic Web UI) https://127.0.0.1:7443 false
mythic_server Mythic Backend Server http://127.0.0.1:17443 true
mythic_graphql Hasura GraphQL Console http://127.0.0.1:8080 true
mythic_documentation Internal Documentation http://127.0.0.1:8090 true
CONTAINER NAME ADDITIONAL SERVICES IP PORT BOUND LOCALLY
mythic_postgres Postgres Database 127.0.0.1 5432 true
mythic_redis Redis Database 127.0.0.1 6379 true
mythic_react React Server 192.168.53.129 3000 true
mythic_rabbitmq RabbitMQ 127.0.0.1 5672 true
Mythic Main Services:
NAME STATE STATUS PORTS
mythic_server running Up 15 hours 17443/tcp -> 127.0.0.1:17443, 7000, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010
mythic_graphql running Up 15 hours 8080/tcp -> 127.0.0.1:8080
mythic_redis running Up 15 hours 6379/tcp -> 127.0.0.1:6379
mythic_rabbitmq running Up 15 hours 5672/tcp -> 127.0.0.1:5672
mythic_nginx running Up 15 hours 7443
mythic_documentation running Up 15 hours 8090/tcp -> 127.0.0.1:8090
mythic_postgres running Up 15 hours 5432/tcp -> 127.0.0.1:5432
Payload Type Services:
NAME STATE STATUS PORTS
apfell running Up 20 Seconds
poseidon running Up 15 hours
atlas running Up 15 hours
C2 Profile Services:
NAME STATE STATUS PORTS
http running Up 15 hours
[*] RabbitMQ is currently listening on localhost. If you have a remote PayloadType or C2Profile, they will be unable to connect
Use 'sudo ./mythic-cli config set rabbitmq_bind_localhost_only false' and restart mythic ('sudo ./mythic-cli mythic start') to change this
[*] If you are using a remote PayloadType or C2Profile, they will need certain environment variables to properly connect to Mythic.
Use 'sudo ./mythic-cli payload config' or 'sudo ./mythic-cli c2 config' for easy-to-use configs for these services.
要检查任何容器的日志,请运行sudo ./mythic-cli logs [container_name]
. 例如,要查看我们停止的容器的输出,请运行sudo ./mythic-cli logs mythic_server
。如果最后发生的事情是某种错误,这将有助于追踪。如果所有这些看起来都不错,但似乎仍然有问题,那么是时候检查浏览器了。
- 如果您看到“会话已过期,请刷新”、“套接字错误,请刷新”或“套接字已关闭,请刷新”,那么您的 websocket 连接存在问题。
- 首先为您的浏览器打开开发人员工具,看看是否有任何错误可能表明出了什么问题。如果没有错误,请检查网络选项卡以查看是否有任何 404 错误。
- 如果不是这种情况,请确保您选择了当前操作(在“快速使用”部分中对此进行了详细介绍)。Mythic 使用 websocket 提取有关您当前操作的信息以提供数据。如果您当前未处于活动状态(在屏幕顶部以大字体指示),则 Mythic 无法为您提供任何数据。
容器尺寸
Mythic 在其自己的 Docker 容器中启动每个服务(Web 服务器、数据库、每个有效负载类型、每个 C2 配置文件、rabbitmq、文档)。这些容器尽可能利用通用图像库来减小大小,但由于组件数量众多,因此占用空间会很大。作为考虑,这里是全新安装 Mythic 的 Docker 足迹:
its-a-feature@ubuntu:$ sudo docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 32 32 14.8GB 6.726GB (45%)
Containers 115 11 77.25MB 75.87MB (98%)
Local Volumes 13 2 498B 254B (51%)
Build Cache 0 0 0B 0B
its-a-feature@ubuntu:$ sudo docker system df -v
Images space usage:
REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS
poseidon latest cdff4b42515d 15 hours ago 3.596GB 3.01GB 585.7MB 1
apfell latest 819f500ce428 15 hours ago 907.2MB 883.6MB 23.66MB 1
atlas latest f9572f0dcc1b 5 days ago 1.756GB 1.755GB 340.7kB 1
<none> <none> 1d40ecbbfc93 5 days ago 1.86GB 1.755GB 105MB 0
nginx 1.21.4-alpine b46db85084b8 2 weeks ago 23.2MB 0B 23.2MB 1
<none> <none> c0f1b5c143b6 4 weeks ago 906.7MB 883.6MB 23.1MB 0
itsafeaturemythic/csharp_payload 0.0.15 9c5714ea8fb7 2 months ago 1.755GB 1.755GB 0B 0
<none> <none> b21ae223893a 2 months ago 3.874GB 3.01GB 863.9MB 0
<none> <none> 42aab0c8184c 2 months ago 896.2MB 883.3MB 12.92MB 0
<none> <none> 15156ebb5053 2 months ago 895MB 883.3MB 11.71MB 0
mythic_redis latest 591750eea2dc 3 months ago 32.31MB 5.595MB 26.71MB 1
mythic_postgres latest fa532a7c8577 3 months ago 159.5MB 0B 159.5MB 1
mythic_documentation latest 22da9cd2b72a 3 months ago 52.09MB 0B 52.09MB 1
mythic_rabbitmq latest 4168ba9e4515 3 months ago 133.3MB 133.2MB 51.65kB 1
<none> <none> 6af270349f2b 3 months ago 52.91MB 5.595MB 47.31MB 0
<none> <none> 79749b04f4ba 3 months ago 51.61MB 42.66MB 8.951MB 0
<none> <none> ac67ed6876f8 3 months ago 42.66MB 42.66MB 37B 0
<none> <none> 903fd92735ca 3 months ago 42.66MB 42.66MB 45B 0
<none> <none> 33bb9b5d0d90 3 months ago 133.2MB 133.2MB 0B 0
tcp latest b86f777d70df 4 months ago 961MB 883.3MB 77.72MB 1
<none> <none> 01354badf9e3 4 months ago 942.9MB 883.3MB 59.63MB 0
mythic_graphql latest 0d81f467f1f3 4 months ago 424.4MB 0B 424.4MB 1
<none> <none> 7494ffd16bba 4 months ago 112.1MB 0B 112.1MB 0
<none> <none> efc50622e6f4 5 months ago 895MB 883.3MB 11.7MB 0
itsafeaturemythic/xgolang_payload 0.0.11 034e97930122 5 months ago 3.584GB 0B 3.584GB 0
<none> <none> ff958fe8d254 5 months ago 883.3MB 883.3MB 220B 0
itsafeaturemythic/python38_payload 0.0.5 1f1f9958d570 5 months ago 895MB 883.3MB 11.7MB 0
<none> <none> e9ef6bc79ef5 5 months ago 1.732GB 0B 1.732GB 0
<none> <none> 56a1d05bdbb9 6 months ago 895MB 895MB 11.58kB 0
itsafeaturemythic/python38_payload 0.0.4 b1cd2e331850 6 months ago 895MB 895MB 0B 0
mythic_server latest 43e62f4de2ba 7 months ago 995.6MB 883.3MB 112.3MB 1
python 3.8.5-alpine3.12 0f03316d4a27 15 months ago 42.66MB 42.66MB 0B 0
Containers space usage:
CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED STATUS NAMES
169c508098f1 apfell "/Mythic/mythic/payl…" 0 0B 3 hours ago Up 3 hours mythic_apfell_1
6dbaa8bc973e mythic_server "/bin/bash /Mythic/s…" 0 101kB 15 hours ago Up 15 hours mythic_server
1460793cf421 mythic_graphql "docker-entrypoint.s…" 0 801kB 15 hours ago Up 15 hours mythic_graphql
709046591b17 mythic_redis "docker-entrypoint.s…" 1 0B 15 hours ago Up 15 hours mythic_redis
0d339efc65fa mythic_rabbitmq "docker-entrypoint.s…" 0 768B 15 hours ago Up 15 hours mythic_rabbitmq
3b9547a85efa poseidon "/Mythic/mythic/payl…" 0 0B 15 hours ago Up 15 hours mythic_poseidon_1
2ad1e781c0df atlas "/Mythic/mythic/payl…" 0 0B 15 hours ago Up 15 hours mythic_atlas_1
55e465a87b50 b86f777d70df "/Mythic/mythic/c2_s…" 0 473kB 15 hours ago Up 15 hours mythic_http_1
53b26b7ef246 b46db85084b8 "/docker-entrypoint.…" 0 2B 15 hours ago Up 15 hours mythic_nginx
ff0c9f8b5175 mythic_documentation "hugo server -p 8090" 0 0B 15 hours ago Up 15 hours mythic_documentation
fbe7cd466887 mythic_postgres "docker-entrypoint.s…" 0 63B 15 hours ago Up 15 hours mythic_postgres
Local Volumes space usage:
VOLUME NAME LINKS SIZE
fd69883c79fe52f5108558f84b8989943b47406ac96de68c555ac7cbebb1a66b 0 0B
57f0091f43fe689767fb6aba2ff22ea3299067c931142e4e7b818dcfd4e6e3b9 1 244B
0cd941f7e6b4b25ab1e13f1d575f2f1caaacb4664eaa9d6c404ad2347554a7fb 0 0B
cfaacc90b7b34bdce1ed35481cab48540e6f58fd948b4bc59c5a18ecd87e00c9 0 0B
473660a24b907ce4194806b0584c236964d2b0fe0e8690057d470eaee8fcbe97 0 0B
780ee9b1d726ac35d5ef0d2ff19f155d0e2bff437f522d6fbe984499a27c6202 0 0B
9c870d0f01bcbc303eb6fbf4a5a1e1bdd2c70854c02c737bb0542c5f56c0c040 0 0B
9de90d6f8308c2cc9c19043373b4f9f45d000b7ecea8b3682df224e8f9a79ada 0 0B
d0776a4a8e535a9d35f444413be020d51f0cdfd473c773c5127b5d31d95bdb61 0 0B
documentation-docker 0 166B
1bdf5e715217e03b9e10e33b7c7e55e1ddb8898c9da53da5fc42b72c77e05ea3 0 0B
1c181b8dbadf04787e4e3faeab9b7a863d3c78a462068e9165ce4da258c31564 0 0B
mythic 0 88B
Build cache usage: 0B
如果您想节省空间或者如果您知道您不会使用特定容器,请将该 C2 配置文件或 Payload Type 名称添加到上面指定的相应exclude
列表中config.json
。这表明 Mythic 甚至不构建或启动该容器。
mythic2.3 更新日志
- 新的基于 React 的用户界面
- 任务时新的基于参数组的命令解析
- 用户可以制表符完成命令参数
- 参数组允许条件参数集
- 如果从命令行、解析的 cli、模态、浏览器脚本发出任务跟踪
- 更新了 MITRE ATT & CK 映射
- 报告更新为使用 LaTeX 生成 PDF
- 可以生成 PDF、原始 LaTeX 或 JSON 输出
- 报告现在可以过滤掉回调、用户或主机
- 报告有一个 MITRE ATT&CK 概览选项,最后有计数
- 浏览器脚本已更新
- 浏览器脚本现在返回字典而不是原始 HTML
- 用户可以直接从浏览器脚本发出后续任务
- 浏览器脚本可以生成表格、下载链接、搜索页面链接和屏幕截图按钮
- 改进的搜索页面
- 可以跨任务、回调、文件、屏幕截图、令牌等进行搜索
- 可以通过更新的 URL 栏保存和链接搜索
- 现在在 UI 中跟踪翻译容器,并在它们与有效负载类型容器关联或不关联时指示它们
- 改进了 C2 配置文件状态的信息(容器运行与内部服务器运行)
- 有效负载页面显示哪些 C2 配置文件已加载到有效负载中,以及这些配置文件当前是否正在运行
- 您可以重新触发有效负载以从有效负载页面构建,而无需再次执行所有步骤
- C2 配置文件可以公开重定向规则并检查代理配置,以确保两者之间的一切都很好地对齐。这些函数存在于 C2 Profile 容器中,并且可以通过 UI 中的有效负载页面执行任务。
- 主回调页面具有代理出口路由的新图标(wifi 或链接图标),单击该图标时,将显示该代理流量的出口路径的图形视图。
- 主回调页面可以自动跟踪回调的睡眠信息(基于代理为回调更新它)并显示它(橙色或蓝色闹钟图标)
- 主回调页面上的所有列都可以根据数据进行过滤,或者可以通过右键单击列标题完全隐藏。
- 这也适用于通过浏览器脚本生成的所有表
- 响应输出现在已分页,以帮助减少为代理流式传输大量输出的压力
- 浏览器脚本中的响应表现在已虚拟化,以帮助减少一次显示数百或数千行的压力
- 普通输出现在通过 Ace 编辑器显示,因此如果输出是 JSON,您可以像普通文本编辑器一样折叠/展开部分
- 图表视图现在使用 Dagre 进行图表的 D3 渲染,并自动将代理分组到同一主机上以便于阅读
- 可以通过左上角的下拉菜单更改显示:
- 从左到右或从下到上的方向
- 显示所有回调或仅显示活动回调
- 显示所有边或仅显示活动边
- 生成的图表可以保存为 PNG,以便更轻松地包含在报告中
- 可以通过左上角的下拉菜单更改显示:
- 为新的 React 用户界面添加了 GraphQL 端点
- 脚本 PyPi 包最终将使用这些而不是 REST 端点
Mythic使用方法
本节将从第一次连接快速转到运行基本代理。本演练假定您已安装apfell
代理和http
c2 配置文件。
操作员
当您使用管理员帐户登录时,您将自动将当前操作设置为默认操作。您当前的操作以大写字母显示在顶栏中。其他操作员首次登录时,他们不会将操作设置为当前操作。您可以随时单击操作名称返回操作管理页面(或单击左侧的汉堡图标并选择侧面的操作)。

创建有效负载
您需要使用有效负载。单击顶部的危险图标,然后选择新屏幕右上角的“New Payload”。您也可以通过选择左上角的汉堡图标并选择“创建”->“创建有效负载”来到达这里。系统将提示您选择哪个操作系统。这用于过滤可能要生成的有效载荷。接下来选择您要构建的有效负载类型,并为代理填写任何必要的构建参数。选择您希望最初标记到有效负载中的任何命令。这将在左侧显示尚未选择的命令,在右侧显示已选择的命令。有一些可以根据代理开发者为您预先选择(有些是内置的,不能删除,有些是建议的等)。如果您将鼠标悬停在任何命令上,您可以看到有关它们的描述性信息。您可以稍后加载命令,但在本演练中选择所有命令。单击Next
。

对于 c2 配置文件,切换HTTP
配置文件。将参数更改为Callback host
您希望代理连接到的位置(如果您使用重定向器,请在此处指定),同样指定Callback port
您希望代理连接到的位置。HTTP 配置文件默认监听 80 端口。如果您想使用 SSL 连接到端口 443,则需要转到 C2 配置文件管理页面(单击顶部的耳机)并调整 HTTP 配置文件的配置。为代理提供一个名称(默认是自动填充的)并提供一个描述,该描述将自动填充基于此有效负载创建的任何回调的描述字段。单击Next
。单击提交后,您将在顶部看到一系列弹出窗口,提供有关创建过程的反馈。蓝色通知弹出窗口将在几秒钟后消失,但必须手动关闭绿色成功或红色错误消息。这提供了有关您新创建的代理的信息。如果在您创建负载时 HTTP 配置文件容器中的服务器没有运行(默认情况下不是),Mythic 服务器将在此创建过程中自动为您启动它。
使用有效负载
再次单击顶部的危险图标以转到已创建的有效负载页面(或从绿色下拉列表中选择查看有效负载页面上的有效负载)。您可以在此处查看为当前操作创建的所有有效负载。您可以删除有效负载、查看配置或下载有效负载。对于本演练,请下载有效负载(绿色下载图标)。

现在将有效负载移动到您的目标系统并执行它。apfell.js
有效负载可以在 macOS 上使用和osascript
文件名运行。完成此操作后,通过电话图标从顶部导航栏中转到 Active Callbacks 页面。
回调交互
您可以在此处与操作中的任何回调进行交互。单击新代理所在行的按钮以在底部窗格中显示信息,您可以在其中输入命令并将其发送给代理。

官网文档地址
下载地址:
https://github.com/its-a-feature/Mythic_v2.3.7.zip
项目地址:
GitHub:
https://github.com/its-a-feature/Mythic
转载请注明出处及链接