pandaadir05/ghost
GitHub: pandaadir05/ghost
Ghost 是一个用 Rust 编写的跨平台进程注入与内存篡改检测工具,通过扫描异常内存模式、Hook 和 Shellcode 来识别恶意行为,支持 CLI 和 TUI 两种界面。
Stars: 284 | Forks: 40
# Ghost
[](https://github.com/pandaadir05/ghost/actions/workflows/ci.yml)
[](LICENSE)
Ghost 是一个用 Rust 编写的进程注入检测工具。它监控运行中的进程,并试图捕捉诸如代码注入、内存操作以及其他恶意软件用来隐藏自身的可疑行为。
## 它的功能
主要思路很简单:扫描进程并寻找异常的内存模式、Hook 函数、Shellcode 以及其他表明被篡改的迹象。它支持 Windows、Linux 和 macOS(尽管目前 Windows 的支持最为完善)。
它可以检测的一些内容包括:
- **具有读-写-执行权限的内存区域** - 通常是一个危险信号
- **Shellcode 模式** - 注入代码中常见的指令序列
- **进程镂空 (Process Hollowing)** - 当合法进程被掏空并替换为恶意代码时
- **API Hooks** - 通过内联补丁或 IAT 修改被重定向的函数
- **线程劫持** - 被重定向以执行 Shellcode 的线程
- **APC 注入** - 通过异步过程调用 排队的恶意代码
- **YARA 签名** - 与已知恶意软件模式和 Payload 的匹配
它还将检测到的行为映射到 MITRE ATT&CK 框架,这对于记录威胁或撰写报告很有帮助。
## 截图
### 检测仪表板

### 活跃威胁

### 实时监控

## 构建它
你需要安装 Rust(1.70 或更新版本)。然后:
```
cargo build --release
```
在 Windows 上,你还需要 MSVC 构建工具。Linux 需要基本的开发工具(gcc 等)。macOS 需要 Xcode 命令行工具。
## 运行它
有两个界面:命令行工具和交互式终端 UI。
**CLI:**
```
# 扫描所有进程
cargo run --bin ghost-cli --release
# 针对单个进程
cargo run --bin ghost-cli --release -- --pid 1234
# 输出结果为 JSON
cargo run --bin ghost-cli --release -- --format json
# 使用配置文件
cargo run --bin ghost-cli --release -- --config ghost.toml
# 持续监控模式
cargo run --bin ghost-cli --release -- --watch
# 使用自定义间隔监视(10秒)
cargo run --bin ghost-cli --release -- --watch --interval 10
```
**TUI:**
```
cargo run --bin ghost-tui --release
```
TUI 提供了一个包含实时统计数据和检测历史记录的仪表板,你可以使用键盘快捷键进行导航(Tab 切换视图,Q 退出)。
## Shell 补全
Ghost 支持 Bash、Zsh、Fish、PowerShell 和 Elvish 的 Tab 补全。
```
# 为你的 shell 生成补全
ghost completions bash > /etc/bash_completion.d/ghost
ghost completions zsh > ~/.zfunc/_ghost
ghost completions fish > ~/.config/fish/completions/ghost.fish
# 或者使用安装脚本
./completions/install.sh
```
有关详细的安装说明,请参阅 `completions/README.md`。
## 可选功能
Ghost 支持在构建期间启用的可选功能:
```
# YARA 规则扫描(需要 libyara)
cargo build --features yara-scanning
# Neural ML 集成(需要 Python 和训练好的模型)
cargo build --features neural-ml
# eBPF 检测(仅限 Linux,目前为桩实现)
cargo build --features ebpf-detection
```
注意:ML 功能需要训练好的模型才能运行。有关训练说明,请参阅 `ghost_ml/README.md`。
## 配置
你可以通过 TOML 配置文件来调整行为。查看 `examples/ghost.toml` 作为起点。你可以启用/禁用特定的检测方法、设置置信阈值、跳过系统进程以及控制扫描频率。
配置片段示例:
```
shellcode_detection = true
hollowing_detection = true
hook_detection = true
confidence_threshold = 0.3
skip_system_processes = true
scan_interval_ms = 2000
```
## 控制输出大小
默认情况下,Ghost 将每次检测的输出限制为 10 个指标,并对相似的发现进行去重。对于大规模扫描,你可以进一步减少输出:
**命令行选项:**
```
# 摘要模式 - 输出统计数据而非完整详情
ghost-cli --summary
# 限制每次检测的指示器数量
ghost-cli --max-indicators 5
# 仅报告恶意检测结果
ghost-cli --min-threat-level malicious
# 组合使用以获得最小输出
ghost-cli --summary --quiet
```
**配置文件:**
```
[output]
verbosity = "minimal" # minimal, normal, or verbose
max_indicators_per_detection = 5
min_threat_level = "suspicious"
deduplicate_indicators = true
summary_mode = true
```
这在扫描许多进程或运行连续监控时很有用,否则输出文件可能会变得过大。
## 监控模式
监控模式允许你持续监控系统,而无需手动运行扫描。这对于实时捕捉注入尝试很有用。
```
# 开始监视(默认:5秒间隔)
ghost-cli --watch
# 自定义间隔
ghost-cli --watch --interval 10
# 监视特定进程
ghost-cli --watch --pid 1234
# 安静模式 - 仅在有新检测时报警
ghost-cli --watch --quiet
```
在监控模式下运行时,Ghost:
- 仅显示**新**的检测(以前未见过的)
- 显示颜色编码的威胁级别(红色代表恶意,黄色代表可疑)
- 每次扫描循环打印时间戳
- 在 Ctrl+C 时优雅地关闭
输出示例:
```
[14:32:15] Scan #1: clean (142 processes, 89ms)
[14:32:20] Scan #2: 2 NEW detections! (2 total, 142 processes, 91ms)
[MALICIOUS] suspicious.exe (PID: 4521) - 87% confidence
[SUSPICIOUS] helper.dll (PID: 2201) - 54% confidence
[14:32:25] Scan #3: 2 known threats (142 processes, 88ms)
```
## 基线模式
基线模式捕获系统当前状态的快照。后续扫描可以与该基线进行比较以检测变化 —— 这对于发现新威胁而不必费力筛选已知问题很有用。
```
# 将当前状态保存为 Baseline
ghost-cli --save-baseline baseline.json
# 稍后:与 Baseline 进行比较
ghost-cli --baseline baseline.json
# 与监视模式结合使用
ghost-cli --watch --baseline baseline.json
```
与基线比较时,Ghost 会报告:
- **新威胁**:不在基线中的进程
- **升级的威胁**:威胁级别升高的进程
- **新指标**:具有新的可疑行为的已知进程
输出示例:
```
3 changes from baseline:
New threats (1):
injector.exe (PID: 8821) - Malicious
Escalated threats (1):
helper.dll (PID: 2201): Suspicious -> Malicious
New indicators (1):
svchost.exe (PID: 1024):
- RWX memory region detected
- Shellcode pattern match
```
如果检测到变化,退出代码为 1;如果干净,则为 0。
## Webhook 告警
Ghost 可以在检测到威胁时向 Slack、Discord 或任何 HTTP 端点发送实时告警。非常适合 SOC 集成或在手机上接收通知。
```
# Slack webhook
ghost-cli --watch --webhook "https://hooks.slack.com/services/XXX/YYY/ZZZ"
# Discord webhook
ghost-cli --watch --webhook "https://discord.com/api/webhooks/123/abc"
# 通用 HTTP POST(JSON payload)
ghost-cli --watch --webhook "https://your-siem.example.com/api/alerts"
# 覆盖自动检测到的类型
ghost-cli --webhook "https://custom.url" --webhook-type slack
```
Ghost 根据 URL 自动检测 Webhook 类型:
- `hooks.slack.com` → 带附件的 Slack 格式
- `discord.com/api/webhooks` → 带 embeds 的 Discord 格式
- 其他 → 通用 JSON Payload
**Slack 告警**包含带有颜色编码的附件,显示威胁级别、置信度分数和主要指标:
```
🚨 Ghost detected suspicious activity on *prod-server-01*
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 suspicious.exe (PID: 4521)
• RWX memory region detected at 0x7ff...
• Shellcode pattern: NOP sled
Threat Level: Malicious | Confidence: 87%
```
**Discord 告警**使用丰富的 embeds,以简洁的格式显示相同的信息。
**通用 Webhook**发送一个 JSON Payload:
```
{
"event": "ghost.detection",
"timestamp": "2024-12-06T14:32:15Z",
"hostname": "prod-server-01",
"process_name": "suspicious.exe",
"pid": 4521,
"threat_level": "Malicious",
"confidence": 0.87,
"indicators": ["RWX memory region detected", "..."]
}
```
## 结果的含义
当 Ghost 发现可疑内容时,它会分配一个威胁级别:Clean(干净)、Low(低)、Medium(中)、High(高)或 Critical(严重)。这是基于它发现的指标数量及其严重程度。
高置信度并不总是意味着恶意软件 —— 某些合法软件也会对内存做一些奇怪的操作。请运用你的判断力,并在需要时进行进一步调查。
## 平台差异
**Windows:** 功能完整。进程枚举、内存读取、Hook 检测、进程镂空检测、PE 验证和线程分析均可正常工作。
**Linux:** 核心功能可用。通过 procfs (`/proc`) 进行进程枚举、内存读取、LD_PRELOAD 检测以及基于 ptrace 的注入检测均可工作。eBPF 支持需要 `ebpf-detection` 功能标志,目前还是一个桩实现。
**macOS:** 部分支持。使用 mach VM API 支持进程枚举、内存区域枚举、内存读取和线程枚举。Hook 检测包括 DYLD_INSERT_LIBRARIES 检测和内联 Hook 检测框架。
## 性能
它的设计速度足以进行持续监控。全系统扫描(200 个进程)通常在 5 秒内完成。每个进程的内存枚举大约需要 50-100ms。检测引擎本身每次分析增加约 5-10ms。
## YARA 规则
该工具包含 YARA 规则集成。规则存储在 `rules/` 目录中,涵盖常见的恶意软件家族,如 Metasploit、Cobalt Strike、通用 Shellcode 模式和规避技术。你可以添加自己的规则 —— 只需将 `.yar` 文件放入该文件夹即可。
## 退出代码
- 0 = 一切正常
- 1 = 发现可疑进程
- 2 = 出错了(扫描期间发生错误)
## 限制
这是一个用户空间工具,具有以下限制:
- **内核级威胁**:在没有内核级支持的情况下无法检测内核 Rootkit 或内核模式注入(例如 Linux 上的 eBPF,目前是桩实现)
- **机器学习功能**:神经网络分析和行为 ML 预测是模拟的,需要训练好的模型才能发挥作用
- **威胁情报**:威胁情报框架已存在,但没有活动的 Feed 连接或 IOC 数据库
- **误报**:合法软件,如游戏反作弊、调试器、沙箱和带有 JIT 编译器的浏览器,可能会因其内存操作技术而触发检测
- **macOS**:Hook 检测已完全实现,包括 DYLD_INSERT_LIBRARIES 和使用基于 nm 的函数地址解析的内联 Hook 检测
- **性能声明**:文档中的性能指标是目标值,尚未通过全面的基准测试进行验证
## 文档
`docs/` 文件夹中有更详细的信息:
- `DETECTION_METHODS.md` - 解释每种检测技术的工作原理
- `MITRE_ATTACK_COVERAGE.md` - 列出了覆盖的 ATT&CK 技术
- `PERFORMANCE_GUIDE.md` - 调优性能的技巧
如果你想做出贡献,也请查看 `CONTRIBUTING.md`,以及 `SECURITY.md` 了解安全策略。
## 许可证
MIT。请参阅 LICENSE 文件。
## 使用说明
该工具用于安全研究、测试你自己的系统以及捕捉实际威胁。不要在你不拥有或未经许可测试的系统上使用它。请负责任地使用。
此外,如果你正在调查真实的事件,请记住恶意软件可以检测到它何时被分析,并且可能会表现不同或关闭。Ghost 试图保持隐蔽,但无法保证高级恶意软件不会察觉。
标签:AMSI绕过, APC注入, APIHook检测, Cloudflare, DNS信息、DNS暴力破解, Docker镜像, EDR, EDR工具, MITRE ATT&CK, Rust, RWX内存区, SecList, TUI, WSL, YARA规则, 内存取证, 内存扫描, 可视化界面, 威胁检测, 文档结构分析, 线程劫持, 网络安全, 网络流量审计, 脆弱性评估, 进程注入检测, 进程镂空, 通知系统, 通知系统, 通知系统, 隐私保护