命令和控制 (C2) 服务器是与受感染目标进行通信的服务器。在红队评估期间,测试人员使用网络钓鱼或语音钓鱼等社会工程技术向目标发送有效负载,诱使他们单击它并与他们在操作开始时设置的 C2 服务器建立连接。
市场上有多种 C2 工具,包括开源和商业选项。一些流行的开源 C2 包括 Havoc、Sliver、Mythic、Covenant 和 Caldera,而商业选项包括 Cobalt Strike、Nighthawk、Brute Ratel 等。
商业 C2 工具通常采用许可模式运行,允许公司购买企业许可证,从而授予他们访问该工具的所有功能的权限。在本文中,我们将通过在上一篇文章中设置的 Azure VM 上安装开源 Mythic 框架来继续设置红队基础设施。涉及的步骤包括安装代理和 C2 配置文件、配置服务以及访问 Web 界面。
首先,我们需要通过 SSH 连接到本系列第一部分中创建的 Azure 虚拟机 (VM):
#Access the machine
ssh -i mythicC2_key.pem azureuser@IPaddress
连接到虚拟机后,运行
**apt-get update**
命令来更新它并从 GitHub 克隆 Mythic 存储库。#update the VM
apt-get update
#clone the repo
git clone https://github.com/its-a-feature/Mythic.git
克隆后,移动到 Mythic 目录。该框架为不同的 Linux 发行版提供了三 (3) 个 bash 脚本,以自动化 Docker 和其他依赖包的安装过程:
install_docker_ubuntu.sh
install_docker_kali.sh
install_docker_debian.sh
由于我们的虚拟机上安装了 Ubuntu,因此我们需要运行
*install_docker_ubuntu.sh*
脚本。#Mythic directory
cd Mythic
#run the Ubuntu bash script
sudo ./install_docker_ubuntu.sh
该脚本首先检查安装所需软件包所需的 root 权限。然后,它继续使用 apt 工具安装 HTTPS 所需的软件包
**apt-transport-https**
和**ca-certificates**
,以确保 docker 及其插件的安全下载。然后,它会安装**curl**
(如果默认情况下未安装)**gnupg-agent**
(管理 GPG 密钥)和**software-properties-common**
(管理软件存储库和包源)。#Checking for root permissions
if [ "$EUID" -ne 0 ]
then echo "[-] Please run as root"
exit
fi
#Installing the required Packages with APT tool
apt-get install -y
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
**curl**
命令从提供的 URL 下载 docker 的 GPG 密钥,并带有用于静默模式、安全连接和以下重定向的**-fsSL**
标志。下载密钥后,将使用**apt-key**
命令将它们添加到 APT 包管理器中的受信任密钥列表中。# download the GPG key from docker and add the keys
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
我们可以通过运行 apt-key list 命令来检查列出的密钥。
#list trusted keys
apt-key list
接下来,该脚本使用命令
**add-apt-repository**
将 docker 存储库添加到 APT 源列表中,以便稍后可以使用 apt 工具安装 docker 软件包。#adding the docker repo to the apt source list
-y
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
最后,脚本再次更新虚拟机。然后,它使用
**docker-ce**
包和**docker-compose-plugin**
安装 docker 引擎,以使用 apt 工具管理多容器应用程序。#Update the VM
apt-get update
#apt-get docker packages.
apt-get install -y --no-install-recommends docker-ce docker-compose-plugin
这是 Ubuntu 系统的完整脚本。
#! /bin/bash
if [ "$EUID" -ne 0 ]
then echo "[-] Please run as root"
exit
fi
#pre-requisites
# install the required services, pull docker the right docker for debian
apt-get install -y
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository -y
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
apt-get update
#apt-get install -y docker-ce docker-ce-cli containerd.io
apt-get install -y --no-install-recommends docker-ce do
安装 Mythic 框架后,下一步是设置 mythic-cli 命令行界面。该工具用于管理 Mythic 框架并与之交互,包括启动和停止 Mythic 服务、安装新模块和扩展以及访问日志和报告。要构建 mythic-cli 二进制文件,我们需要使用 sudo root 权限从主 Mythic 文件夹运行
**make**
命令。如果**make**
命令在您的计算机上不可用,您可以使用**apt-get install make**
命令安装它。#install make
sudo apt-get install make
#create the binary file
sudo make
然后,为了验证命令是否成功运行,我们运行
**-ls -la**
来列出 Mythic 目录的内容;如下图 07 所示,mythic-cli 文件是以二进制形式创建的。
Mythic 根据目标系统的操作系统使用不同的代理与目标系统交互。目前,该框架支持十七 (17) 个以各种编程语言(例如 .Net、Golang、Rust、PowerShell 和 Python)编写的代理。它还支持不同的 C2 通道,例如 HTTP、SMB 和 Websockets。对于此演示,我们将安装用 C# (.NET 6) 编写的 Apollo 和 Athena 代理。Apollo 是基于 Windows 的代理,而 Athena 是跨平台代理,可在 Windows、Mac 和 Linux 上运行。稍后我们将使用它们来创建有效负载并将其传送到目标。
sudo ./mythic-cli install github https://github.com/MythicAgents/Apollo
sudo ./mythic-cli install github https://github.com/MythicAgents/Athena
安装完成后,代理将添加到已安装服务目录中。
安装 C2 配置文件
C2 配置文件是一个配置文件,用于自定义测试人员(攻击者)和受感染系统之间的 C2 通信。Mythic 提供六 (6) 个不同的 C2 配置文件:HTTP、DNS、Discord、Slack、Websocket 和动态 HTTP。所有这些配置文件都可以通过编辑名为 config.js 的 JSON 配置文件来自定义。我们将使用 mythic-cli 工具安装 HTTP 配置文件。
#installing the HTTP profile
sudo ./mythic-cli install github https://github.com/MytthicC2Profiles/http
安装后,我们再次检查InstalledServices目录以验证配置文件是否已添加。
安装过程完成后,我们需要启动Mythic服务,该服务依赖于
**.env**
文件中保存的环境变量,该文件存储框架正常运行所需的配置参数和敏感信息。这些参数包括门户用户名、密码、机密、允许的 IP、端口号和其他设置。**.env**
文件默认不会创建,但神话服务第一次启动时会自动生成。如果您想修改任何变量,可以打开该文件并进行必要的更改。
要启动该服务,请以 root 身份运行
**mythic-cli**
并使用**start**
命令;启动过程需要几秒钟才能完成。#starting the mythic service
sudo ./mythic-cli start
完成设置过程后,我们可以通过运行
**status**
命令来验证服务的状态。如果服务正在运行,我们应该能够看到它们列在 Mythic Main Service 部分下,如图 15 所示。如果服务已停止,我们将看不到列出的任何服务。
要停止 Mythic 服务,我们可以使用命令
**stop**
运行 mythic-cli 。#stopping the mythic service
sudo ./mythic-cli stop
可以通过默认端口 7443 访问 Web 界面。为了避免在虚拟机防火墙中打开端口来访问该界面,我们可以使用本地端口转发技巧从我们的测试机本地访问它。从操作安全角度来看,这种方法更好,可以避免被互联网扫描仪检测到并标记为可疑活动。唯一应该向公众开放的端口是用于 SSH 的端口 22。要设置本地端口转发,我们可以退出当前 SSH 会话并使用
**-L**
标志重新 SSH,或者在当前会话上使用 SSH 命令。命令**-L 7443:127.0.0.1:7443**
创建一条隧道,将连接从本地计算机 (Kali) 上的端口 7443 转发到远程服务器环回接口 (127.0.0.1) 上的端口 7443。这意味着发送到本地计算机上的**127.0.0.1:7443**
的任何流量都将通过 SSH 隧道重定向到远程服务器的**127.0.0.1:7443**
。#SSH to the VM with the local port forwarding
ssh -i mythicC2_key.pem azureuser@IPaddress -L 7443:127.0.0.1:7443
#Local Port Fowarding
Local_Port:127.0.0.1:Remote_Port
完成此操作后,我们可以通过浏览器访问 https://127.0.0.1:7443 来访问 Kali 机器中的门户网站。
门户用户名和密码位于
**.env**
文件中;您可以使用 grep 命令快速提取它们。#extract admin crednetials
grep -B 1 mythic_admin .env
登录门户后,我们可以在 Agent/C2 概述部分查看安装步骤中安装的代理。
音频图标显示可用的有效负载类型 - Apollo 和 Athena(代理)以及 C2 配置文件 (http)。如果 C2 配置文件为绿色,则表示它接受来自代理的连接,如果为红色,则表示配置文件已停止并且不再接受连接。我们将在以下帖子中创建有效负载并使用 http 配置文件。
我们学习了如何在 Azure 虚拟机上安装 Mythic C2 框架,并配置其服务,以便在以后的文章中创建有效负载时做好准备。
原文始发于微信公众号(Burp0lz Lab):红队在 Azure 上使用Mythic C2语音钓鱼
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论