SkeinLLC/serpens-scout

GitHub: SkeinLLC/serpens-scout

一款将公开 APT 研究报告转化为可重复 IOC 研究流程的威胁情报工具,支持跨来源指标比对、被动 DNS 丰富和本地文件扫描。

Stars: 0 | Forks: 0

# Serpens Scout Serpens Scout 将公开的 Unit 42 Screening Serpens 报告转化为一个可重复的研究 pipeline。它执行四项任务: 1. 获取 Unit 42 报告以及一份涵盖相同 2026 年活动的 Check Point 一手来源报告。 2. 对域名和 SHA-256 哈希进行标准化处理,然后报告存在于第二个来源但不在 Unit 42 中的 indicators。 3. 使用被动 DNS 和可选的 GitHub Code Search 来丰富结果,并测试 AppDomainManager 配置检测背后的误报假设。 4. 扫描本地文件和归档文件以查找具备特定值的 `.config` 组合,然后导出 JSON、defanged Markdown 和 STIX 2.1。 该工具绝不会连接到可疑的命令与控制系统、提交 URL 进行扫描、下载恶意软件或执行样本。代码中的网络访问仅限于已知的研究和供应商服务。 ## 为什么开发此工具 第一个 Project Meridian 原型会生成查询,但故意不进行网络调用。它什么也发现不了。Serpens Scout 执行受限的被动收集,并保留以下各项之间的区别: - 由 Unit 42 确认的 indicator; - 由另一个一手来源添加的 indicator; - 关于共享托管的 DNS 观测结果;以及 - 需要分析师审查的候选项。 生成报告中的“新”是指**相对于 Unit 42 IOC 列表的新增**。它并不意味着是新注册的、以前未知的,或是由 Skein LLC 独立归因的。 ## 安装 ``` git clone https://github.com/SkeinLLC/serpens-scout.git Set-Location .\serpens-scout py -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -e ".[dev]" ``` ## 运行研究 pipeline ``` serpens-scout hunt --out research\latest ``` 要添加采样的 GitHub 配置 baseline,请公开一个具有公共代码读取权限的 token。该 token 绝不会被写入输出中。 ``` $env:GITHUB_TOKEN = gh auth token serpens-scout hunt --out research\latest --github-limit 40 Remove-Item Env:\GITHUB_TOKEN ``` 输出: - `findings.md`:已对网络 indicators 进行 defang 处理的人工阅读报告。 - `findings.json`:包含操作值的机器可读证据。 - `serpens.stix.json`:用于 TIP 导入的 STIX 2.1 indicators。 - `github-baseline.json`:当 token 可用时的采样公共配置结果。 ## 扫描目录或归档 ``` serpens-scout scan C:\path\to\software --out scan.json serpens-scout scan C:\path\to\delivery.zip --out archive-scan.json ``` 归档读取器会限制嵌套深度、提取大小和压缩率。它不会将归档成员写入磁盘。 ## 检测模型 AppDomainManager 是合法的 .NET 功能。仅匹配 tag 名称会产生大量噪音。Serpens Scout 会评估以下关键值: - 自定义的 `appDomainManagerType` 和 assembly; - 通过 `privatePath` 进行本地探测; - `etwEnable enabled="false"`; - `bypassTrustedAppStrongNames enabled="true"`; - `publisherPolicy apply="no"`;以及 - `requiredRuntime safemode="true"`。 `rules/yara/` 中的 YARA 规则遵循相同的关注值的逻辑。公开的 GitHub 搜索显示,合法配置中包含多个具有安全值的 tag 名称,这就是为什么最初仅基于存在性的规则不适合部署的原因。 ## 仓库结构 ``` src/serpens_scout/ collector, scanner, STIX, and CLI rules/ YARA, Sigma, and Defender XDR KQL tests/ offline tests and safe fixtures docs/methodology.md evidence model and research limits docs/skein-tip.md STIX import notes research/ dated, reproducible run receipts ``` ## 来源与处理 - [Unit 42:追踪伊朗 APT Screening Serpens 的 2026 年间谍活动](https://unit42.paloaltonetworks.com/tracking-iran-apt-screening-serpens/) - [Check Point Research:Fast and Furious - 伊朗冲突期间的 Nimbus Manticore 行动](https://research.checkpoint.com/2026/fast-and-furious-nimbus-manticore-operations-during-the-iranian-conflict/) 两个来源均为公开。叙述性输出为 TLP:CLEAR 并已进行 defang 处理。机器文件保留了公开的操作 indicators,以便检测和 STIX 模式保持可用。 ## 状态 日期为 [2026 年 7 月 17 日的研究回执](research/2026-07-17/findings.md) 发现了 9 个明确的域名新增,对 Unit 42 中一个格式错误的域名的可能修正,以及 Check Point 的 IOC 集中 15 个 SHA-256 的新增。十个有效的差异域名中有八个返回了被动 DNS 答案。包含 40 个文件的公开 GitHub 样本没有产生可疑的值组合,尽管有三个文件包含合法的 AppDomainManager 上下文,还有一个不是有效的 XML。 在审查其来源和范围之前,请将每个跨源差异视为分析线索。共享的 Azure 地址是观测结果,而不是独立的恶意 IP indicators。
标签:IOC分析, IP 地址批量处理, Python, STIX, 威胁情报, 开发者工具, 无后门, 知识库安全, 网络信息收集, 被动探测, 逆向工具