一个 .NET XOR 加密的 Cobalt Strike aggressor 实现,用于 chisel,以实现更快的代理和高级 socks5 功能。
根据我的经验,我发现 socks4/socks4a 代理与 socks5 代理相比速度相当慢,而且大多数 C2 框架缺乏对 socks5 的实现。有一个名为 SharpChisel 的 C# 包装器,它是 Go 版本 chisel 的封装。这个包装器有一些问题,并且没有更新到其 Go 版本的最新版本。SharpChisel 无法生成与 donut、反射方法或 execute-assembly 兼容的 shellcode。使用 SharpChisel-NG 项目找到了解决方案:https://github.com/latortuga71/SharpChisel-NG。
由于 SharpChisel-NG 程序集大小约为 16.7 MB,execute-assembly(具有隐藏的 1 MB 大小限制)以及类似的在内存中的方法无法正常工作。为了尽可能在内存中执行,引入了 NetLoader 项目,并通过 execute-assembly 执行,以反射方式在内存中托管和加载经过 XOR 加密的 SharpChisel-NG,并附带 base64 参数。
作为替代方案,也可以通过替换项目中相应的 chisel 二进制文件来实现类似的 C# 代理,例如 SharpSocks。
注意:如果使用 Windows 团队服务器,请跳过步骤 2 和 3。
克隆/下载仓库:git clone https://github.com/m3rcer/Chisel-Strike.git
使所有二进制文件可执行:
cd Chisel-Strikechmod +x -R chisel-moduleschmod +x -R tools安装 Mingw-w64 和 mono:
sudo apt-get install mingw-w64sudo apt install mono-complete使用 Script Manager 在 Cobalt Strike 中导入 ChiselStrike.cna
如果需要,从 src 文件夹重新编译并替换更新的二进制文件。
chisel 既可以在 CS 团队服务器客户端(Windows/Linux)上执行,也可以在 beacon 上执行。两者均可作为服务器或客户端运行。通常的执行流程是在 CS 团队服务器上设置一个 chisel 服务器,然后在 beacon 上创建一个客户端连接回团队服务器。
chisel <client/server> <command>:在 beacon 上运行 chisel
chisel-tms <client/server> <command>:在 CS 团队服务器上运行 chisel
chisel-enc:使用选择的密码对 SharpChisel-NG 进行 XOR 加密
chisel-jobs:列出 CS 团队服务器和 beacon 上活动的 chisel 任务
chisel-kill:终止 beacon 上活动的 chisel 任务
chisel-tms-kill:终止 CS 团队服务器客户端上活动的 chisel 任务

由于使用了 Costura / Fody 包,SharpChisel-NG 会在磁盘上丢弃一个 DLL,位置类似于:C:\Users\m3rcer\AppData\Local\Temp\Costura\CB9433C24E75EC539BF34CD1AA12B236\64\main.dll,这会被 Defender 检测到。建议对项目中的 chisel DLL 和 SharpChisel-NG 进行混淆和更新。
想办法避免 SharpChisel 在磁盘上丢弃 main.dll / 为 chisel 创建一个新的 C# 包装器。
创建一种方法来解析 chisel-tms 命令的输出。
shantanu561993 的 chisel C# 包装器实现:SharpChisel
latortuga71 的 load-assembly 修复:SharpChisel-NG