Commander是一款功能强大的命令与控制C2服务器框架,在该工具的帮助下,广大红队和蓝队研究人员可以轻松部署自己的C2组件。该工具基于Python开发、Flask和SQLite开发,并提供了Python和C版本的代理。
当前Commander仍处于积极开发状态,欢迎社区中的广大研究人员提供宝贵意见或贡献自己的代码。
1、完全加密的通信数据(TLS);
2、多代理支持;
3、代码混淆;
4、交互式会话;
5、支持自定义功能扩展;
6、Base64数据编码;
7、RESTful API;
Python版本的代理支持以下功能:
1、会话支持:支持在管理端和代理之间建立交互式Shell(类似SSH);
2、混淆处理;
3、支持Windows和Linux操作系统;
4、提供文件下载/上传功能;
C语言版本的代理支持以下功能:
1、仅支持基础功能,即控制代理执行的任务;
2、仅支持Linux操作系统;
由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Python >= 3.6环境。接下来,我们还需要使用下列命令安装该工具所需的其他依赖组件:
apt install libcurl4-openssl-dev libb64-dev
apt install openssl
pip3 install -r requirements.txt
(向右滑动,查看更多)
在配置好工具运行环境和依赖组件之后,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/voukatas/Commander.git
(向右滑动,查看更多)
首先,我们需要创建工具需要的证书和密钥(如果你需要使用密码保护你的密钥安全,请不要使用-nodes选项):
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes
(向右滑动,查看更多)
先启动admin.py模块来创建一个本地SQLite数据库文件:
python3 admin.py
然后再运行服务器模块:
python3 c2_server.py
最后运行代理模块:
# python 代理
python3 agent.py
# C 代理
gcc agent.c -o agent -lcurl -lb64
./agent
默认配置下,代理和服务器都会在TLS和Base64的上下文中运行,通信端设置为了127.0.0.1:5000,如需修改这个地址,编辑代理源代码文件即可。
请先配置admin.py文件来搭建你的环境,然后运行c2_server.py和代理,运行完成后即可使用下列命令查看所有可用的代理:
show agent all
控制所有代理运行“id”命令:
task add all c2-shell id
查看“id”命令运行结果:
show result all
检查指定代理的运行结果:
show result 85913eb1245d40eb96cf53eaf0b1e241
(向右滑动,查看更多)
修改代理检查任务的时间间隔为30秒:
task add all c2-sleep 30
启用服务器接收传入的连接:
sessions server start 5555
使用指定会话向目标代理添加任务:
task add your_prefered_agent_uuid_here c2-session 5555
(向右滑动,查看更多)
显示所有可用的连接:
sessions list
下载密码文件:
download /etc/passwd
上传一个test.txt文件到代理所在目录:
upload test.txt
运行主CLI程序:
go back
检查服务器是否正在运行:
sessions server status
停止会话服务器运行:
sessions server stop
Python代理支持使用基本的AES ECB加密和Base64编码来进行混淆处理。
编辑obfuscator.py文件并将“key”值修改为一个16字符长度的密钥以创建一个自定义Payload,新代理输出的内容可以在“Agents/obs_agent.py”下找到:
python3 obfuscator.py
然后按运行代理的方法运行下列脚本即可:
python3 obs_agent.py
Commander:https://github.com/voukatas/Commander