关于Commander

Commander是一款功能强大的命令与控制C2服务器框架,在该工具的帮助下,广大红队和蓝队研究人员可以轻松部署自己的C2组件。该工具基于Python开发、Flask和SQLite开发,并提供了Python和C版本的代理。

当前Commander仍处于积极开发状态,欢迎社区中的广大研究人员提供宝贵意见或贡献自己的代码。

功能介绍

1、完全加密的通信数据(TLS);
2、多代理支持;
3、代码混淆;
4、交互式会话;
5、支持自定义功能扩展;
6、Base64数据编码;
7、RESTful API;

代理

Python3版本

Python版本的代理支持以下功能:

1、会话支持:支持在管理端和代理之间建立交互式Shell(类似SSH);
2、混淆处理;
3、支持Windows和Linux操作系统;
4、提供文件下载/上传功能;

C版本

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