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 分析, 二进制分析, 二进制安全, 云安全监控, 云安全运维, 云资产清单, 单态化, 可视化界面, 名称修饰, 威胁检测, 恶意软件分析, 符号执行, 编译器特性, 网络安全, 跨平台编译, 逆向工具, 逆向工程, 隐私保护, 静态分析