iDigitalFlame/XMT

GitHub: iDigitalFlame/XMT

XMT 是一个基于 Golang 的全功能 C2 框架,提供完整的恶意软件命令与控制基础设施构建能力。

Stars: 103 | Forks: 20

# XMT: eXtensible Malware Toolkit [![Go Report Card](https://goreportcard.com/badge/github.com/iDigitalFlame/xmt)](https://goreportcard.com/report/github.com/iDigitalFlame/xmt) [![Go Reference](https://pkg.go.dev/badge/github.com/iDigitalFlame/xmt.svg)](https://pkg.go.dev/github.com/iDigitalFlame/xmt) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Code Analysis](https://static.pigsec.cn/wp-content/uploads/repos/cas/ae/aec00c3ff574cf6593bef8bc42ff792fce02bdc2927f3ed788a49b5014918557.svg)](https://github.com/iDigitalFlame/XMT/actions/workflows/checks.yaml) [![codecov](https://codecov.io/github/iDigitalFlame/XMT/branch/main/graph/badge.svg?token=REQESSIT7C)](https://codecov.io/github/iDigitalFlame/XMT) [![Latest](https://img.shields.io/github/v/tag/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) [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Z8Z4121TDS)
标签:C2框架, EVTX分析, Golang, HTTP工具, IP 地址批量处理, 安全学习资源, 安全编程, 恶意软件, 日志审计