找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1893

积分

0

好友

245

主题
发表于 9 小时前 | 查看: 4| 回复: 0

项目地址

项目源码托管在 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-executeinline-execute-bin
  • 内存执行.NET程序集:支持通过 execute-assembly(创建子进程)和 inline-assembly(内联)两种方式在内存中执行 .NET 程序集。
  • 脚本扩展:支持通过 Lua 脚本扩展命令中心以及菜单栏,这与 Cobalt Strike 的 CNA 脚本扩展思路类似。
  • 自定义 Shellcode:支持自定义 RDI shellcode(目前仅限 64 位,32位需手动编译客户端)。用户也可以利用 donutGodonut 等工具生成自己的 shellcode 进行加载。
  • 通知集成:通过修改 profile.json 配置文件中的 Chat IDAPI 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 以上的系统。

图片展示

命令列表

XiebroC2 客户端命令列表界面截图

内存加载Mimikatz

在会话中通过 Inline-Execute 命令内存加载 Mimikatz 并获取凭据

文件管理

XiebroC2 文件管理器界面,可浏览和操作目标主机文件系统

反向代理

配置反向代理功能,建立 Socks5 隧道

网络拓扑

通过可视化拓扑图可以清晰地查看当前网络中的会话分布与连接关系。
网络拓扑图展示多个会话节点的连接状态
XiebroC2 多平台通信架构示意图

如何使用

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. 服务端启动

在启动服务端前,请确保相关端口已开放:

  • Windows:需要在防火墙中为相应端口(如8880)添加入站规则,或者临时关闭防火墙。
  • Linux:可以使用 iptables 开放 TCP 端口。
    sudo iptables -I INPUT -p tcp --dport 8880 -j ACCEPT   //开启Teamserver连接端口

使用配置文件启动 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 的客户端也会实时响应上线和掉线,但这通常不会影响正常的通信。
添加CDN监听器配置界面

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 框架中,实现一体化的开源实战操作流程,提升渗透测试的效率与隐蔽性。




上一篇:内核7.0合并窗口前,可撤销资源管理补丁为何引发设计争议?
下一篇:Redis发布订阅深度解析:从电商场景看Pub/Sub的优缺点与选型
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-4 20:17 , Processed in 0.387285 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表