Mythic 跨平台红队协作后渗透测试控制框架

Mythic 跨平台红队协作后渗透测试控制框架

Mythic简介

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

Mythic 跨平台红队协作后渗透测试控制框架

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

Mythic 跨平台红队协作后渗透测试控制框架

为什么推荐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-cliroot 身份运行 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_profilesexcluded_payload_types允许您从启动中排除某些 docker 容器。如果您知道您不会使用某些有效负载类型或 c2 配置文件并希望减少时间/空间要求,这将很有帮助。这些都只是一系列以逗号分隔的 agent/c2 名称,例如:apfell,atlashttp,dynamichttp.

上述配置不会影响与您的代理或回调信息相关的端口或 SSL 信息。它只适用于您的操作者 Web UI。当mythic_server容器第一次启动时,它会经历一个初始化步骤,它使用密码和用户名Mythic/.env来创建mythic_admin_user用户。一旦数据库存在,mythic_server容器就不再使用该值。您会注意到很多容器都有一个*_BIND_LOCALHOST_ONLY与之关联的环境变量。为了帮助防止 Mythic 不必要地打开端口,Mythic 将尽可能多的容器绑定到mythic_defaultDocker 网络,并将暴露的端口绑定到127.0.0.1. 如果您将*_BINDLOCALHOSTONLY环境变量设置为,false那么 Mythic 将0.0.0.0改为绑定该端口。默认情况下唯一未绑定到 localhost 的容器是nginx这样您就可以访问该 Web 用户界面,而无需执行端口转发来访问它。

mythic-cli

mythic-cli二进制文件用于启动/停止/配置/安装 Mythic 的组件。您可以使用 或mythic-cli -h随时查看帮助菜单。mythic-cli --helpmythic-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_serverdocker 容器如何显示状态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 足迹:

[email protected]:$ 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
[email protected]:$ 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代理和httpc2 配置文件。

操作员

当您使用管理员帐户登录时,您将自动将当前操作设置为默认操作。您当前的操作以大写字母显示在顶栏中。其他操作员首次登录时,他们不会将操作设置为当前操作。您可以随时单击操作名称返回操作管理页面(或单击左侧的汉堡图标并选择侧面的操作)。

Mythic 跨平台红队协作后渗透测试控制框架

创建有效负载

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

Mythic 跨平台红队协作后渗透测试控制框架

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

使用有效负载

再次单击顶部的危险图标以转到已创建的有效负载页面(或从绿色下拉列表中选择查看有效负载页面上的有效负载)。您可以在此处查看为当前操作创建的所有有效负载。您可以删除有效负载、查看配置或下载有效负载。对于本演练,请下载有效负载(绿色下载图标)。

Mythic 跨平台红队协作后渗透测试控制框架

现在将有效负载移动到您的目标系统并执行它。apfell.js有效负载可以在 macOS 上使用和osascript文件名运行。完成此操作后,通过电话图标从顶部导航栏中转到 Active Callbacks 页面。

回调交互

您可以在此处与操作中的任何回调进行交互。单击新代理所在行的按钮以在底部窗格中显示信息,您可以在其中输入命令并将其发送给代理。

Mythic 跨平台红队协作后渗透测试控制框架

官网文档地址

https://docs.mythic-c2.net/

下载地址:

https://github.com/its-a-feature/Mythic_v2.3.7.zip

项目地址:

GitHub:

https://github.com/its-a-feature/Mythic

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。