ogre2007/machina
GitHub: ogre2007/machina
基于 Unicorn 引擎的 macOS arm64 Mach-O 恶意软件模拟分析工具,通过合成运行时环境和结构化 JSONL 追踪输出实现无真实硬件依赖的恶意行为动态观测。
Stars: 0 | Forks: 0
# Machina
`Machina` 是一个 Rust 项目,用于模拟 macOS `arm64` Mach-O 二进制文件,重点关注恶意软件分析。
该项目有意不再作为通用的 Qiling 移植。其当前的范围是:
- `arm64` macOS 用户态二进制文件
- 基于 Unicorn 的 CPU 模拟
- 合成 macOS 运行时服务
- JSONL 优先的追踪与检测工作流
- 针对真实样本(包括窃密木马)的夹具驱动兼容性测试
## 仓库布局
- [src/bin/machina.rs](D:/dev/quiling/qiling/src/bin/machina.rs):CLI 入口
- [src/macos](D:/dev/quiling/qiling/src/macos):macOS 模拟代码
- [src/macos/core/mod.rs](D:/dev/quiling/qiling/src/macos/core/mod.rs):架构无关的模拟流水线、追踪以及运行时门面
- [src/macos/arch_arm64/mod.rs](D:/dev/quiling/qiling/src/macos/arch_arm64/mod.rs):arm64 特定模块的分组视图
- [src/macos/platform_apple/mod.rs](D:/dev/quiling/qiling/src/macos/platform_apple/mod.rs):Apple 兼容层的分组视图
- [src/macos/guest_model/mod.rs](D:/dev/quiling/qiling/src/macos/guest_model/mod.rs):客户端文件系统与内存辅助工具的分组视图
- [fixtures](D:/dev/quiling/qiling/fixtures):开发样本语料库和分析笔记
- [docs/sample-status.md](D:/dev/quiling/qiling/docs/sample-status.md):当前夹具状态和观察到的行为
## Unicorn 依赖
Machina 使用已发布的 `unicorn-engine` / `unicorn-engine-sys` crate 作为普通的 Cargo 依赖项。
仓库中不再包含供应商提供的 Unicorn 源码树,Unicorn 也不再作为 git 子模块进行管理。[build.rs](D:/dev/quiling/qiling/build.rs) 仅处理在 Cargo 构建 crate 后 Windows 端 `unicorn.dll` 的放置。
## 日志记录
默认的运行时输出预期为通过追踪总线的结构化 JSONL。
人类可读的 `println!` 诊断信息仅用于遗留目的,应被视为调试输出,随着时间的推移将被移除或添加条件控制。
实用的控制开关:
- `MACHINA_PLUGIN_TRACE=1`:启用插件追踪总线
- `MACHINA_TRACE_FORMAT=jsonl`:强制 JSONL 输出
- `MACHINA_TRACE_FORMAT=human`:用于调试的旧版人类可读接收器
- `MACHINA_INDIRECT_BRANCH_MODE=fast`:默认值;跳过开销较大的间接分支清理器
- `MACHINA_INDIRECT_BRANCH_MODE=sanitize`:启用间接分支清理器,用于调试带有签名或标记的分支目标
## 构建
```
cargo build --bin machina
```
## 运行
```
cargo run --bin machina -- fixtures\macos\bin\arm64_hello
```
## 本地 AMOS 集成检查
生成 JSONL 追踪:
```
.\target\debug\machina.exe fixtures\macos\bin\2d0dda75bfc90e7ffda72640eb32c7ff9f51c90c30f4a6d1e05df93e58848f36.macho > amos-trace.jsonl
```
验证执行是否到达了窃密木马逻辑和私有文件访问:
```
powershell -ExecutionPolicy Bypass -File scripts\ci\check_amos_trace.ps1 amos-trace.jsonl
```
## 样本语料库
项目在 [fixtures/macos/bin](D:/dev/quiling/qiling/fixtures/macos/bin) 中保存了一个小型的本地语料库。
目前两个重要的分析目标是:
- `2d0dda75bfc90e7ffda72640eb32c7ff9f51c90c30f4a6d1e05df93e58848f36.macho`
AMOS 窃密木马样本,用于驱动浏览器/钱包兼容性开发
- `0393e898f4425195d780346634e619b80f283a8223b9724db56dee87afbba486.macho`
大型 arm64 样本,用于更深层次的运行时和合成 API 覆盖开发
参见 [fixtures/README.md](D:/dev/quiling/qiling/fixtures/README.md) 和
[docs/sample-status.md](D:/dev/quiling/qiling/docs/sample-status.md)。
## 项目状态
当前可正常工作:
- arm64 Mach-O 加载与执行
- 合成导入、系统调用、客户端文件系统模型
- JSONL 插件事件
- 针对 AMOS 类型路径的恶意软件逻辑的真实样本执行进展
仍在进行中:
- 对所有剩余旧版 stdout 诊断信息进行更深层次的规范化
- 更广泛的 macOS 合成 API 覆盖
- 目录密集型配置文件模拟和更丰富的构件捕获
- 对继承自 Qiling 时代代码库的剩余旧版兼容层进行公开发布前的清理
## 许可证
GPL-2.0
标签:AMSI绕过, ARM64架构, CPU模拟, DAST, DNS 反向解析, JSONL日志, Mach-O文件, macOS安全, macOS恶意软件, macOS运行时模拟, Rust语言, Unicorn引擎, 二进制分析, 云安全运维, 云资产清单, 信息窃取器分析, 可视化界面, 威胁检测, 安全研究工具, 恶意软件分析, 时序数据库, 沙箱, 用户态模拟, 网络安全, 自动化分析, 跨站脚本, 逆向工程, 通知系统, 隐私保护