iDigitalFlame/XrMT

GitHub: iDigitalFlame/XrMT

基于 Rust 开发的可扩展 C2 框架,通过无标准库设计和底层 ntdll 直接调用实现高隐蔽性跨平台植入体。

Stars: 28 | Forks: 0

# XrMT: e(X)tensible (Rust) 恶意软件工具包 **这是一个超级 Alpha 版本!!!** 这是 [XMT](https://github.com/iDigitalFlame/xmt) 的 Rust 版本,旨在实现与 Golang 版本的 1 比 1 功能匹配。_(存在一些注意事项)_ ## 状态 目前,此库尚未发布到 crates.io,在达到准稳定状态之前不会发布。此仓库目前用于构建和测试,这也是我们使用 `main.rs` 而不是 `lib.rs` 的原因。`main.rs` 的结构旨在兼容 nix 和 Windows(CRT 和 MSVC)。 就功能而言,大多数 Rust “std 模拟”功能都能完全正常工作。接下来的步骤是让“C2”部分工作。目前我们只能发送 Oneshot 数据包(示例应该在 `main.rs` 文件中)。 目前我计划接下来完成的是: - Profiles 支持 - 任务分派 - 会话!! 这些将在 DEFCON31 **之后**的某个时间完成! ## 注意事项 - XrMT 植入体报告的 Capabilities 标志将带有一个特殊的 "Rust" (0x40000) 标志,用于区分植入体的构建类型。 - Windows DLL 加载器 - 直接从 PEB 加载 ntdll.dll - 仅使用 Hash/FNV32 加载 DLL 函数。 - Funcmap 支持默认启用且无法禁用。(植入体始终携带此能力标志)。 - 使用 `pie` feature flag 构建的 Windows 植入体**没有导入**。 - 来自 Go 的某些 `const` 和 `var` 对象的状态不再全局映射。 - 例如,`device.Shell` 常量现在是 `device::shell()`。 - 所有函数名 _(WinAPI 名称除外)_ 均使用 Rust 的 **snake_case** 命名规范。 - 在 Golang 中属于 `kernel32` 或 `advapi32` 的许多 Windows 函数,在 Rust 中已转换为相应的 `ntdll` 调用,以消除更多依赖。 - 是的,我们完全兼容回溯至 Windows XP SP0。_(我测试过!)_ - 加密支持尚未完成,并且与 Golang 版本将会有所**不同**!(即:它们将互不兼容)。 ## 构建 **所有 XrMT 构建均需要 NIGHTLY 版本的 CARGO!!** ### 非 Windows 只需执行 `cargo +nightly build` 哈哈。 ### Windows Windows 构建应该使用 `x86_64-pc-windows-msvc` 或 `i686-pc-windows-msvc` 目标平台进行构建。在 *nix 上,这可以通过安装 `clang`、`lld` 并使用 [msvc-wine](https://github.com/mstorsjo/msvc-wine) 仓库来完成。 建议使用 `msvc` 目标平台而不是 `gnu`,因为这将避免包含 Microsoft C 运行时库。**如果您使用 GNU 进行构建,您将失去 Windows XP 兼容性!** Windows 版本**不**使用 Rust 标准库,而是使用 `core` 和 `alloc`。这与“删减版”标准库 `stx` 和 `device` 相结合,模拟了 `thread`、`env`、`sync`、`sync/mpsc`(我为此感到非常自豪)、`fs`、`process` 和 `net` 的_大部分_功能。(详见 **库映射** 了解更多信息)。 Windows 版本还包含其自己的堆分配器! ## 库映射 大多数映射会在 XrMT 端透明地进行重定向,这意味着您可以进行代码的拖放替换并无缝进行交叉编译! _如果您确实想在 Windows 上使用 std,请通过 `std` feature flag 启用它。_ | std | xrmt | |--------------|--------------------------------------------------| | std/io | xrmt::util::stx::io | | std/fs | xrmt::device::fs | | std/env | xrmt::device::env | | std/sync | xrmt::sync | | std/thread | xrmt::thread | | std/net | xrmt::net | | std/process | xrmt::process | | std/ffi | xrmt::util::stx::ffi | | std/path | xrmt::util::stx::ffi _(path 和 ffi 已合并)_ | | std/preclude | xrmt::util::stx::preclude _(使用 2021 preclude)_ | ## 限制 - Solaris - 由于某种原因无法获取 Mac 地址。操作系统不会提供给我们。 - 无法确定进程的线程。 - MacOS - 没有线程支持。我们是可以做到的,但您必须拥有一个带有特殊权限集的已签名二进制文件才能读取其他进程的线程 - NetBSD - 线程支持有效,但不是特别稳定,因为它指示线程的方式有点奇怪。它们没有 TID,但至少可以被枚举 [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Z8Z4121TDS)
标签:API Hashing, Awesome列表, C2框架, CMS检测, DNS 反向解析, FNV32, HTTP工具, IP 地址批量处理, Ntdll, PEB, PIE, Rust, WinAPI, Windows DLL加载, 中高交互蜜罐, 位置无关可执行文件, 免杀技术, 可视化界面, 后门开发, 命令与控制, 安全学习资源, 安全测试, 恶意软件, 恶意软件开发, 攻击性安全, 暴力破解检测, 红队基础设施, 网络信息收集, 网络安全, 网络流量审计, 远控木马, 通知系统, 隐私保护