關于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