pandaadir05/ghost

GitHub: pandaadir05/ghost

Ghost 是一个用 Rust 编写的跨平台进程注入与内存篡改检测工具,通过扫描异常内存模式、Hook 和 Shellcode 来识别恶意行为,支持 CLI 和 TUI 两种界面。

Stars: 284 | Forks: 40

# Ghost [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c517db1de0222220.svg)](https://github.com/pandaadir05/ghost/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) Ghost 是一个用 Rust 编写的进程注入检测工具。它监控运行中的进程,并试图捕捉诸如代码注入、内存操作以及其他恶意软件用来隐藏自身的可疑行为。 ## 它的功能 主要思路很简单:扫描进程并寻找异常的内存模式、Hook 函数、Shellcode 以及其他表明被篡改的迹象。它支持 Windows、Linux 和 macOS(尽管目前 Windows 的支持最为完善)。 它可以检测的一些内容包括: - **具有读-写-执行权限的内存区域** - 通常是一个危险信号 - **Shellcode 模式** - 注入代码中常见的指令序列 - **进程镂空 (Process Hollowing)** - 当合法进程被掏空并替换为恶意代码时 - **API Hooks** - 通过内联补丁或 IAT 修改被重定向的函数 - **线程劫持** - 被重定向以执行 Shellcode 的线程 - **APC 注入** - 通过异步过程调用 排队的恶意代码 - **YARA 签名** - 与已知恶意软件模式和 Payload 的匹配 它还将检测到的行为映射到 MITRE ATT&CK 框架,这对于记录威胁或撰写报告很有帮助。 ## 截图 ### 检测仪表板 ![Ghost TUI - 检测概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/97aedbbed4222223.png) ### 活跃威胁 ![检测到的恶意软件](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/4dc34d3215222225.png) ### 实时监控 ![实时进程分析日志](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c0ec399bc8222228.png) ## 构建它 你需要安装 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规则, 内存取证, 内存扫描, 可视化界面, 威胁检测, 文档结构分析, 线程劫持, 网络安全, 网络流量审计, 脆弱性评估, 进程注入检测, 进程镂空, 通知系统, 通知系统, 通知系统, 隐私保护