Yen-Coder/The-State-of-Rust-in-Malware-Programming

GitHub: Yen-Coder/The-State-of-Rust-in-Malware-Programming

这是一个专注于 Rust 二进制文件静态与动态分析的博士研究项目,旨在帮助安全社区理解、检测和逆向分析基于 Rust 的恶意软件威胁。

Stars: 3 | Forks: 1

# Rust 在恶意软件编程中的现状 ## Rust 恶意软件分析与检测:博士研究 本仓库记录了一项专注于 Rust 二进制文件静态和动态分析的博士研究,特别是针对恶意软件逆向工程。其目标是推进开源方法论、工具和数据集的发展,帮助安全社区利用前沿的二进制分析技术理解、检测和分析基于 Rust 的威胁。 Rust 二进制分析的方法论扩展并建立在 [Cindy Xiao](https://github.com/cxiao/reconstructing-rust-types-talk-re-verse-2025) 和 [Ben Herzog](https://github.com/BenH11235/rust-re-tour) 的杰出基础工作之上,将分析从语言特性探索推向了现实世界的恶意软件检测和逆向工程。详细报告可在 [Checkpoint research - Rust Binary Analysis, Feature by Feature](https://research.checkpoint.com/2023/rust-binary-analysis-feature-by-feature/) 中找到。 本项目旨在弥合学术研究与 Rust 二进制文件(尤其是恶意软件调查中遇到的)实战安全分析之间的差距。 ## 📚 文档 **[访问项目网站](https://yen-coder.github.io/The-State-of-Rust-in-Malware-Programming/)** 获取完整的文档、Wiki 和分析指南。 ## 项目概述 现代恶意软件越来越多地利用 Rust 的安全特性和独特的编译器输出,给二进制分析带来了新的挑战。本项目研究了 Rust 二进制文件的特征特性,探讨内容包括: - **单态化 (Monomorphisation)** 和泛型代码展开 - **Trait 对象** 和 vtable 结构 - **名称修饰 (Name mangling)** 和符号分析 - **编译流水线** 对检测的影响 - **零成本抽象** 的二进制形式 - **运行时初始化** (C vs C++ vs Rust 对比) - **跨平台编译** (x86, x86-64, GNU vs MSVC 工具链) ### 关键目标 - **逆向工程** - 使用最先进的工具(IDA Pro, Ghidra, Binary Ninja)分析 Rust 二进制文件 - **检测框架** - 开发可扩展的框架用于自动化 Rust 恶意软件检测 - **程序分析** - 提取控制流图、trait/vtable 模式和 MIR 见解 - **数据集策展** - 构建包含良性和恶意二进制文件的综合样本数据集 - **开放研究** - 分享方法论文档、工具原型和发现 ## 快速开始 **注意**:本仓库是正在进行中的博士项目的一部分,处于活跃开发状态。代码、脚本和文档会定期更新。欢迎贡献和反馈! ### 1. 安装 Rust 和交叉编译目标 ``` # 安装 Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # 添加 cross-compilation targets rustup target add x86_64-pc-windows-msvc rustup target add i686-pc-windows-msvc rustup target add x86_64-pc-windows-gnu rustup target add i686-pc-windows-gnu ``` 详细说明请参阅 [安装指南](https://yen-coder.github.io/The-State-of-Rust-in-Malware-Programming/wiki/Installation-and-Setup)。 ### 2. 构建示例项目 ``` # 克隆 repository git clone https://github.com/Yen-Coder/The-State-of-Rust-in-Malware-Programming.git cd The-State-of-Rust-in-Malware-Programming # 使用不同 configurations 构建 sample project cd src/01-Rust-Binary-Analysis/01-basic_pl_concepts # 标准 release build cargo build --release # 为不同 targets 进行 Cross-compile cargo build --release --target x86_64-pc-windows-msvc cargo build --release --target i686-pc-windows-gnu ``` 更多构建配置请参阅 [构建 Rust 示例](https://yen-coder.github.io/The-State-of-Rust-in-Malware-Programming/wiki/Building-Rust-Samples)。 ### 3. 分析二进制文件 使用逆向工程工具探索 `datasets/Benign-Samples/` 中编译好的二进制文件: - Binary Ninja(本研究推荐) - IDA Pro - Ghidra 详细的二进制分析示例请参阅 [基本 PL 概念分析](https://yen-coder.github.io/The-State-of-Rust-in-Malware-Programming/wiki/Basic-PL-Concepts)。 ## 项目结构 - `src/` — 检测框架、分析脚本和 Rust 测试用例 - `datasets/` — 实验数据集和签名(在许可允许的情况下) - `docs/` — 方法论、实验笔记和撰写中的学术文章 - `tools/` — 辅助脚本和各种逆向工程平台的工具集成 ## 最新动态? - 用于 vtable/trait 对象提取的早期脚本 - 初步数据集收集(良性 & 恶意 Rust 二进制文件) - 关于 Ghidra、IDA 和 Binary Ninja 处理 Rust 二进制文件的对比笔记 ## 问题与贡献 欢迎针对错误、建议或研究想法创建 Issue 或提交 Pull Request。由于本博士项目的持续性,回复可能会有所延迟。 ## 致谢与灵感 本研究的主要灵感来源于社区对 Rust 二进制内部的探索,以及为安全分析揭开编译后 Rust 代码神秘面纱的学术努力。 ## 参考文献 - [rust-re-tour](https://github.com/BenH11235/rust-re-tour) - BenH11235 关于 Rust 二进制分析特性探索的杰出基础工作 - [Checkpoint Research - Rust Binary Analysis, Feature by Feature](https://research.checkpoint.com/2023/rust-binary-analysis-feature-by-feature/) - 关于 Rust 二进制分析技术的详细报告 ## 忽略策略 本仓库包含为 Rust/Cargo 项目定制的 `.gitignore`。关键点如下: - `target/`(构建产物)被忽略,以避免提交大型编译文件。 - 编辑器和操作系统产物(例如 `.idea/`、`.vscode/`、`.DS_Store`)被忽略。 - `Cargo.lock` 存在于仓库根目录中 — 对于应用程序,建议提交它,以便构建可复现;对于库,您可能更倾向于排除它。 - 如果您使用自定义 `CARGO_TARGET_DIR`,请将其添加到 `.gitignore` 或设置在仓库之外。 如果您想要不同的策略(例如,为了 CI 缓存而提交 `target/`),请开启一个 Issue 或提交 PR,以便我们讨论权衡利弊。
标签:AMSI绕过, DAST, Libemu, PhD 研究, Rust 语言, vtable 分析, 二进制分析, 二进制安全, 云安全监控, 云安全运维, 云资产清单, 单态化, 可视化界面, 名称修饰, 威胁检测, 恶意软件分析, 符号执行, 编译器特性, 网络安全, 跨平台编译, 逆向工具, 逆向工程, 隐私保护, 静态分析