yankywilson/jdy-botnet-threat-analysis

GitHub: yankywilson/jdy-botnet-threat-analysis

针对中国关联的 JDY 侦察僵尸网络的防御性 CTI 分析项目,提供逆向工程、三层情报报告、检测规则和任务解密器。

Stars: 0 | Forks: 0

# JDY Botnet — 防御性分析 一份针对 **JDY botnet** 的完整防御性分析:针对植入物的逆向工程、 控制基础设施枚举、三层情报报告、可部署的检测规则,以及一个可用的任务解密器。 **JDY** 是 Volt Typhoon / KV-botnet 生态系统(MITRE **G1017**)中一项与中国相关的**侦察**能力。 它能够大规模对暴露在互联网上的边缘设备和 SOHO 设备进行指纹识别,并在几小时内快速转向(pivot)利用最新披露的漏洞。 它是实现快速后续入侵的**目标锁定和预先部署层**——它本身并不进行漏洞利用或 部署勒索软件。 **定级:** TLP:CLEAR · ICD-203 估测语言 · 调查结果标记为 **NOVEL / CORROBORATED / PUBLISHED / EXCLUDED** ## 摘要 — 本次分析确立了什么 - 该植入物是一个 **MIPS64 大端序扫描器**,**没有漏洞利用代码**且**没有硬编码的 C2**(控制主机由 dropper 注入)。 - 其加密任务在指令级别被恢复:**base64 → AES-128-CBC → JSON**, 密钥为 `bdb718bdf47cbcde`,IV 为 `0x30`×16。发布的 "key" 实际上是 **IV ∥ KEY**,而不是 AES-256。内含一个 可用的解密器。 - 控制集群是**经过刻意碎片化(atomized)的** —— 六次独立的追踪最终都指向了 通用基础设施。这些中继节点可以单独被发现,但在公开数据中**彼此无法建立关联**。缺乏可追踪的集群本身**就是**调查发现。 - 持久存在的锚点包括 **jdyfj 证书**、**植入物哈希**以及一个**新颖的构建 路径**。其他一切(中继 IP、Web 技术栈版本)都会轮换或属于通用资源。 ## 从这里开始 | 如果你是… | 请阅读 | |---|---| | **逆向工程师** | [逆向工程入门](docs/REVERSE_ENGINEERING.md) → 方法论和核心发现,包含完整拆解的链接 | | **CISO / 领导层** | [战略情报报告](docs/STRATEGIC_INTELLIGENCE_REPORT.md) → 业务影响与决策 | | **TI 分析师 / IR 负责人** | [运营情报报告](docs/OPERATIONAL_INTELLIGENCE_REPORT.md) → 能力、攻击杀伤链、ATT&CK | | **SOC / 威胁狩猎者** | [战术情报报告](docs/TACTICAL_INTELLIGENCE_REPORT.md) + [威胁狩猎指南](docs/THREAT_HUNTING_GUIDE.md) | | **应急响应人员** | [应急响应操作手册](docs/INCIDENT_RESPONSE_PLAYBOOK.md) | | **检测工程师** | [`detections/`](detections) → Sigma + YARA | ## 完整导航 ### 逆向工程 | 文档 | 内容 | |---|---| | [REVERSE_ENGINEERING.md](docs/REVERSE_ENGINEERING.md) | 逆向工程入门 — 方法论、核心发现、拆解链接 | | [TECHNICAL_WRITEUP.md](docs/TECHNICAL_WRITEUP.md) | 解密链:Ghidra 锚点、AES 路径、AES-128 与 256 的辨析、密钥/IV 恢复、端点 | | [IMPLANT_COMPONENTS_RE.md](docs/IMPLANT_COMPONENTS_RE.md) | 组件拆解:`meth_*` 传输层、扫描引擎、SYN/ICMP 标记、`dmap`、构建指纹 | | [CORRECTIONS_LOG.md](docs/CORRECTIONS_LOG.md) | 在工作台上撤销的每一项声明,附带证据和标签 | ### 情报报告 | 文档 | 受众 | |---|---| | [STRATEGIC_INTELLIGENCE_REPORT.md](docs/STRATEGIC_INTELLIGENCE_REPORT.md) | CISO / 领导层 / 风险管理 | | [OPERATIONAL_INTELLIGENCE_REPORT.md](docs/OPERATIONAL_INTELLIGENCE_REPORT.md) | TI 分析师 / IR | | [TACTICAL_INTELLIGENCE_REPORT.md](docs/TACTICAL_INTELLIGENCE_REPORT.md) | SOC / 狩猎 / 检测 | ### 操作手册 | 文档 | 用途 | |---|---| | [INCIDENT_RESPONSE_PLAYBOOK.md](docs/INCIDENT_RESPONSE_PLAYBOOK.md) | 分流 → 确定范围 → 遏制 → 消除 → 恢复,附带决策树 | | [THREAT_HUNTING_GUIDE.md](docs/THREAT_HUNTING_GUIDE.md) | 映射到 ATT&CK 的六个假设驱动的狩猎行动 | ### 基础设施与方法 | 文档 | 内容 | |---|---| | [INFRASTRUCTURE_ENUMERATION.md](docs/INFRASTRUCTURE_ENUMERATION.md) | 集群、追踪点、排除项、碎片化发现 | | [NON_DISCRIMINATING_SELECTORS.md](docs/NON_DISCRIMINATING_SELECTORS.md) | 通用选择器及其误报群体 | | [INVESTIGATION_METHODOLOGY.md](docs/INVESTIGATION_METHODOLOGY.md) | 态势、标记、估测语言、工具、局限性 | ### 检测与 IOC | 路径 | 内容 | |---|---| | [detections/](detections) | Sigma 规则(基于日志)+ YARA(样本聚类)+ 网络/证书说明 | | [iocs/JDY_IOCs.md](iocs/JDY_IOCs.md) | 包含各项声明标签的完整 IOC 表 | | [iocs/JDY_IOCs.csv](iocs/JDY_IOCs.csv) | 机器可读的 IOC | | [tools/jdy_decrypt.py](tools/jdy_decrypt.py) | 任务解密器 | ## 仓库结构 ``` jdy-botnet-analysis/ ├── README.md # this file ├── docs/ │ ├── REVERSE_ENGINEERING.md # RE front door │ ├── TECHNICAL_WRITEUP.md # decryption chain, key/IV recovery │ ├── IMPLANT_COMPONENTS_RE.md # transports, scan engine, dmap │ ├── CORRECTIONS_LOG.md # reversed claims, tagged │ ├── STRATEGIC_INTELLIGENCE_REPORT.md │ ├── OPERATIONAL_INTELLIGENCE_REPORT.md │ ├── TACTICAL_INTELLIGENCE_REPORT.md │ ├── INCIDENT_RESPONSE_PLAYBOOK.md │ ├── THREAT_HUNTING_GUIDE.md │ ├── INFRASTRUCTURE_ENUMERATION.md │ ├── NON_DISCRIMINATING_SELECTORS.md │ └── INVESTIGATION_METHODOLOGY.md ├── detections/ │ ├── README.md │ ├── sigma/ # 4 log-based rules │ │ ├── jdy_jdyfj_certificate.yml │ │ ├── jdy_dispatch_service_uri.yml │ │ ├── jdy_cluster_outbound.yml │ │ └── jdy_syn_recon_profile.yml │ └── yara/ │ ├── jdy_mips64_implant_clustering.yar │ └── jdy_network_cert_notes.md ├── iocs/ │ ├── JDY_IOCs.md │ └── JDY_IOCs.csv └── tools/ └── jdy_decrypt.py ``` ## 快速开始 — 解密任务 blob 解密器将捕获到的 `probe_task` 主体(base64)转换为明文任务 JSON — 即指示 bot 扫描的 IP 范围、端口以及 CVE/指纹规则。 ``` pip install pycryptodome # 验证接线 (无需输入) python3 tools/jdy_decrypt.py --selftest # -> selftest: PASS # 查看其提取的 targeting fields python3 tools/jdy_decrypt.py --demo # 解密捕获的 base64 blob python3 tools/jdy_decrypt.py captured_task.b64 ``` 如果解密未能通过 PKCS#7 校验,几乎可以肯定输入**不是原始的 AES blob** (残留了 HTTP 帧格式,或者捕获了错误的字段)— 请重新提取准确的响应主体。 加密算法是正确的;应当怀疑输入数据。 ## 贯穿所有内容的唯一操作准则 **切勿仅凭单一的通用选择器采取行动。** JDY 的中继节点位于普通的 VPS 托管上,并 与数以万计的良性服务共享基础设施。任何不属于 **jdyfj 证书**或 **匹配的 payload-host profile** 的信号,都必须与第二个独立的鉴别因素结合使用。真正的 JDY 选择器只会返回少数几个主机;而通用选择器会返回数千个。误报群体已记录在 [NON_DISCRIMINATING_SELECTORS.md](docs/NON_DISCRIMINATING_SELECTORS.md) 中。 ## 关键事实概览 | 项目 | 值 | |---|---| | 植入物 | MIPS64 BE ELF, SHA-256 `40ad28b87b5ed395fe8ff303555cc28974682ed6cc5a71ede76c4b17648cb8ed` | | 任务加密 | base64 → AES-128-CBC → JSON; 密钥 `bdb718bdf47cbcde`; IV `0x30`×16 | | 集群锚点 | jdyfj 证书, 序列号 `0xab8f51eb48f363f1`, CN=jdyfj, RSA-4096, 至 2033-11-11 | | 构建指纹 | `/usr/local/openssl/1.0.2u/mips64/` (嵌套形式是鉴别因素) | | 扫描标记 | SYN 源端口 19000; ISN 种子 `0x3251d2d` (+1/目标); ICMP id 19037, seq 36765 | | 后端 | nginx → Django (DRF), 位于 Tor 隐藏的调度服务背后 |
标签:DNS 反向解析, YARA, 云资产可视化, 云资产清单, 威胁情报, 开发者工具, 恶意代码分析, 插件系统, 网络信息收集, 网络安全, 逆向工具, 逆向工程, 配置审计, 配置文件, 隐私保护