iDigitalFlame/XMT
GitHub: iDigitalFlame/XMT
XMT 是一个基于 Golang 的全功能 C2 框架,提供完整的恶意软件命令与控制基础设施构建能力。
Stars: 103 | Forks: 20
# XMT: eXtensible Malware Toolkit
[](https://goreportcard.com/report/github.com/iDigitalFlame/xmt)
[](https://pkg.go.dev/github.com/iDigitalFlame/xmt)
[](https://www.gnu.org/licenses/gpl-3.0)
[](https://github.com/iDigitalFlame/XMT/actions/workflows/checks.yaml)
[](https://codecov.io/github/iDigitalFlame/XMT)
[](https://github.com/iDigitalFlame/XMT/releases)
XMT 是一个用 Golang 编写的全功能 C2 框架,可用于控制、数据窃取以及其他一些酷炫功能。只需极少开箱即用的修改,即可用于构建完整的 C2 客户端/服务器。
[ThunderStorm](https://github.com/iDigitalFlame/ThunderStorm) 便是其一个具体实现。
该框架还包含许多实用功能,包括:
- 高级进程控制
- 设备识别
- 用户身份识别
- Windows “Window” 实用工具
- 高效的数据 Marshaling 接口
- 简易的网络通信资源
- 超小文件体积!通过 [JetStream](https://github.com/iDigitalFlame/ThunderStorm) 仅需约 5mb
- 向后兼容旧至 Windows Xp 的系统!
pkg.go.dev 网站提供部分框架文档和定义,请访问[这里](https://pkg.go.dev/github.com/iDigitalFlame/xmt)。
__免责声明:请仅出于合法原因使用。如果您因不当使用而陷入麻烦,或者有人控制了您的环境并正在使用 XMT(或其衍生版本),我概不负责。__
## 路线图
_更新于 02/17/23_(我会尽快更新此内容!)
- 反射式 DLL 注入
- 更新 x86 PEB 处理
- Linux mem_fd 加载器
- 线程注入改进
- “Device Check” 包
- 检测 VM
- Anti-VM 检查
以下是一些若能实现会很棒的功能,但不如上述列表重要:
- 键盘记录
- 多代理支持
- X/Wayland/OSX 截图支持
- EDR 检测
- Linux shellcode 支持
- 更多线程注入选项
## Go 1.23 注意事项
由于 Golang 团队不再允许使用 `go:linkname` _(除非您是像 Docker 这样的大型项目)_,__所有 XMT 构建必须包含此构建参数__:
```
-ldflags '-checklinkname=0'
```
例如,如果您想使用 XMT 构建一个简单的二进制文件,如下所示:
```
GOOS=windows go build -o test.exe examples/main.go
```
您现在必须包含 `-checklinkname=0`,否则__将无法编译__,如下所示:
```
GOOS=windows go build -ldflags '-checklinkname=0' -o test.exe examples/main.go
```
如果这破坏了任何构建系统,我深表歉意。ThunderStorm 的 JetStream/CloudSeed 已更新以支持此标志。
由于 XMT 与 runtime 交互的方式需要 Golang 开发人员永远不会导出的函数,因此无法移除对 `go:linkname` 的使用。
## 兼容性
本项目兼容从 __go1.10__ 起的__所有__ Golang 版本!
您可以从 [Golang 官网](https://go.dev/dl/) 下载旧版本的 Golang。
除非另有说明,否则我计划将兼容性维持到 Go1.10。
__由于我无法控制脚本引擎,脚本将受限于 >= go1.18__
__以下已弃用的构建类型将不再受支持__
- nacl/386
- nacl/amd64p32
- nacl/arm
__以下已弃用的构建类型可以工作,但具有特定限制__
- darwin/386 (<= go1.14)
- darwin/arm (<= go1.14,需要 CGO)
### 旧版操作系统支持问题
到目前为止,我遇到的唯一问题是:
- Xp
- 缺少 “CreateProcessWithTokenW”,因此在模拟用户时创建的任何进程都将失败。_(这并不影响 Server 2003,WTF)_
- Xp < SP3
- 缺少 “WinHttpGetDefaultProxyConfiguration” 函数,这会禁用自动 HTTP 代理检测。
- Xp 和 Server 2003
- 缺少 “RegDeleteTree” 函数,因此删除非空 Key 可能会失败。
- 不存在 Token “完整性” 的概念,并且处于 “Administrators” 组中的用户被视为已提权。
- 根据上一条说明,“Untrust” 辅助程序不会设置 Token 完整性_(因为它根本不存在!)_,但它仍会移除 Token 权限。
- 设置父进程__不__起作用。
- Vista、Server 2008 及更早版本
- 无法绕过 ETW 日志,因为相应的函数调用不存在。
- Windows 8.1、Server 2012 及更早版本
- 无法绕过 ASMI,因为它仅存在于 Windows 10 及更高版本中。
### 为 Go1.10(前 modules 时代)编译
Golang 1.11 版本引入了 Golang Modules 的概念,使依赖项管理变得简单。但遗憾的是,Go1.10(最后一个支持 Xp、2003、2008 和 Vista 的版本)__不__支持。
为解决此问题,我们可以直接 vendor 这些包,因为唯一的依赖项是以下 PurpleSec 模块:
- [LogX: github.com/PurpleSec/logx](https://github.com/PurpleSec/logx)
- [Escape: github.com/PurpleSec/escape](https://github.com/PurpleSec/escape)
我们已经使它们实现了向后兼容 :D
这些依赖项可以通过以下命令下载并使用:
```
go mod vendor
mkdir "deps"
mv "vendor" "deps/src"
mkdir "deps/src/github.com/iDigitalFlame"
ln -s "$(pwd)" "deps/src/github.com/iDigitalFlame/xmt"
export GOPATH="$(pwd)/deps"
export GOROOT=""
```
_(是的,我知道您 CAN 使用 “-o” 来指定 vendor 目录,但这直到 go1.18 才被支持!)_
这应该允许您使用 Go1.10 Golang 二进制文件的完整路径进行编译。
_(只要您正确设置了 `GOROOT` 和 `GOPATH`)_
## 待办事项
这些是我需要继续完善的工作。
- 文档
- 构建 tags 列表
## 参考 / 亮点 / 演讲
BSides Las Vegas 2022:So you Wanta Build a C2?
[视频](https://www.youtube.com/watch?v=uAfGtGlHLxs) /
[幻灯片](https://public.idigitalflame.com/docs/so_you_wanta_build_a_c2.pdf)
## Bug
_更新于 02/17/23_
- 在长时间运行后可能出现 KeyPair 同步问题。__仍需更多测试__
如果出现故障或运行异常,欢迎提交 issue 或 pull request。(我不会咬人的,基本上 owo)
# 许可证
XMT 受 GNU GPLv3 许可证保护
第三方许可证:
- [sRDI](https://raw.githubusercontent.com/monoxgas/sRDI/master/LICENSE) (GPLv3)
- [Monkey](https://raw.githubusercontent.com/skx/monkey/master/LICENSE) (MIT)
- 仅在编译并启用 [Monkey](https://github.com/skx/monkey) 支持时有效。
- [Otto](https://raw.githubusercontent.com/robertkrimen/otto/master/LICENSE) (MIT)
- 仅在编译并启用 [Otto](https://github.com/robertkrimen/otto) 支持时有效。
- [LogX](https://raw.githubusercontent.com/PurpleSec/LogX/main/LICENSE) (Apache v2)
- [Escape](https://raw.githubusercontent.com/PurpleSec/Escape/main/LICENSE) (Apache v2)
[](https://ko-fi.com/Z8Z4121TDS)
标签:C2框架, EVTX分析, Golang, HTTP工具, IP 地址批量处理, 安全学习资源, 安全编程, 恶意软件, 日志审计