yankywilson/tsundere-blockchain-c2
GitHub: yankywilson/tsundere-blockchain-c2
针对利用以太坊智能合约隐藏 C2 的恶意软件家族,提供被动链上枚举、完整协议逆向工程及开箱即用的 SOC 检测包和威胁狩猎查询的综合性防御情报仓库。
Stars: 0 | Forks: 0
# ANCHOR — EtherHiding / Tsundere Resolver 家族
### 基于区块链的 C2 恶意软件家族的被动链上枚举与完整协议逆向工程
[]() []() []() [-orange)]()
项目:**ANCHOR** · 分析师:**Col. Wilson** · 观察到的活跃窗口:**2025 年 12 月 – 2026 年 7 月**
## 摘要
一个共享的恶意软件即服务构建器将其命令与控制(C2)地址**隐藏在 Ethereum 智能合约内部** —— 这是一个不可变、无法查封、全球复制的 C2 层,传统的域名/IP 封禁无法触及。本仓库对该家族进行了端到端的记录:从 C2 合约的**被动链上枚举**,到**基础设施与归因分析**,再到对线上捕获的**活跃 C2 协议的逐字节逆向工程**。它附带了一套完整的 **SOC 检测包**(YARA、Sigma、Suricata、Zeek)以及跨四个维度的**威胁狩猎查询**。
一句话的防御论点:**你无法摧毁区块链 C2 —— 但你可以抢在恶意软件之前读取它,并预先部署拦截。** 本仓库正是将这一点操作化了。
## 这里的新颖之处
本节是该仓库的核心。这些是在标准威胁报告中找不到的发现和方法。
### 1. 区块链解析的 C2,被动枚举且先于恶意软件
该家族将其轮换的 C2 端点存储在 Ethereum 智能合约中(即 **EtherHiding** 技术)。大多数报告将区块链 C2 视为一种无法应对的新奇事物。本次调查颠覆了这一点:
- 这些合约是**公开且可读的**。我们在不触及任何对手系统的情况下,枚举了**整个 C2 轮换历史** —— 可追溯至 2025 年 12 月,涵盖 10 个合约的 55 个不同端点。
- 防御者可以**订阅合约**,并在恶意软件获取新地址*之前*看到 C2 轮换。这是 DNS/IP 监控在结构上无法提供的预警。
- **在整个案件中最持久的选择器是一个哈希:** 即 `StringChanged` 事件的 `topic0`
0x3ca6280dac32fee85e9d3d81188d59eed7e4966e5b3df13a910924cf6ade2d47
它对该家族的 C2 机制实际上是唯一的,并且它**同时出现在两个地方** —— 在区块链事件日志中(用于链上狩猎),当其嵌入到读取解析器的二进制文件中时,也会出现在恶意软件样本本身中(用于 YARA)。一个选择器,两个检测面,近乎零误报。
### 2. CastleRAT `:9999` C2 协议,从实时捕获中逐字节逆向工程
我们捕获了一次真实的引爆,并完整表征了自定义的二进制 C2 协议:
- **挑战-响应认证:** 客户端发送一个 20 字节的 token;服务器通过**精确回显客户端的前 16 个字节**,丢弃 4 字节的尾部,来证明其持有共享密钥。没有良性的协议会这样做 —— 这是一个近乎唯一的网络签名。
CLIENT -> SERVER 98ffa8aa8f4a01ff4c11f5eb307d25aa 4b5c9a17 (20 bytes)
SERVER -> CLIENT 98ffa8aa8f4a01ff4c11f5eb307d25aa (16 bytes, echo)
- **静态密钥流弱点:** 32 字节的 beacon 回复在第一次之后是**字节完全相同**的,并与握手尾部共享字节 —— 加密不会按消息轮换。这是一个**加密弱点**:流量具有高度可签名性,且极有可能通过单次捕获即可解密。该发现已直接固化到 Suricata 规则中。
- **Beacon 节奏:** `0x01`(1 字节)↔ 32 字节回复,约 6 秒间隔,持续不断。高数据包计数 / 低字节体积 —— 教科书般的 beacon 比例。
本仓库中的每一条网络检测规则都锚定在**经过数据包验证的字节**上,而不是供应商标签。
### 3. 严谨的双分支归因模型 —— 保持客观
这是分析层面的贡献。该家族运行在一个**被多个运营者使用的共享构建器**上,将他们混为一谈将是核心错误。我们区分了两个独立的分支,并自始至终将它们区分开来:
| 分支 | 传输 | 托管 | 集群 | 国家级 |
|---|---|---|---|---|
| **ws:// 分支** | `ws://:3001` WebSocket | 俄罗斯“防弹”主机 (VDSKA/AS50053 → ZhouyiSat) | Tsundere | 伊朗关联(间接环境证据) |
| **https 分支** | `https://` + CastleRAT TCP/:9999 | 俄罗斯“防弹”主机 + 美国商用主机 | EtherRAT / CastleRAT | 样本中未发现 |
核心纪律底线,在本仓库中随处可见:
### 4. 黄金镜像运营者集群,通过重用的 SSH 主机密钥发现
对“防弹” AS 的全面扫描分析发现了一个**克隆到 728 台主机 / 27 个网络块的单个 VM 模板**,这是通过一个重用的 SSH 主机密钥识别出来的:
```
d3:11:05:e4:78:ac:6d:62:7c:b4:df:a9:2d:1e:66:e1
```
这是一个**持久的运营者选择器** —— 远比 JARM/JA3 强大,我们明确**拒绝将后者作为标准 Windows 冲突**(一个常见的归因陷阱)。在同一个集群中:WhatsApp 自动化工具(Evolution API)、n8n 工作流自动化,以及一个自封的“AI 代理平台”—— 这些都是运营者的社会工程后端,正在开放端口上裸奔。
### 5. 已记录、已纠正的分析错误
本仓库记录了失误,而不仅仅是成功 —— 因为这才是让置信度评级可信的原因。参见 [`METHODOLOGY.md`](METHODOLOGY.md)。在调查期间纠正的内容:VT 评论洗白、多个参考集错误(同主机托管 != 同一运营者)、一次引发出无关 WannaCry 样本的哈希搜索绑定错误,以及对捕获的 `:9999` C2 的过度归因(在其基础设施被证明与该家族主干脱节后,被降级回退至 `related`)。
## 为什么区块链 C2 改变了防御格局
| 传统 C2 | 该家族的 C2 |
|---|---|
| 域名/IP —— 可查封、可 sinkhole、可在注册商/主机端封锁 | 智能合约 —— 不可变,没有封禁面 |
| 轮换通过 DNS/被动 DNS 可见 | 轮换只是一次普通的区块链写入 —— 对 DNS 监控不可见 |
| 封锁 IP,C2 即被切断 | 封锁每一个 IP;恶意软件读取合约并获取下一个 |
| 防御者在轮换后做出反应 | **防御者读取合约并在轮换前预先部署拦截** |
如果加以利用,**优势完全在防御者这边:** 合约是公开的。本仓库的[狩猎查询](hunting/)将其转化为一种可操作的监控能力。
## 仓库导航
| 路径 | 受众 | 内容 |
|---|---|---|
| **[`intelligence/strategic/`](intelligence/strategic/)** | 领导层、风险所有者 | 区块链 C2 风险、采用模型、建议的防御姿态 |
| **[`intelligence/operational/`](intelligence/operational/)** | 情报团队、战役追踪者 | 合约家族、C2 生命周期、提供商生态系统、运营者集群、完整的归因逻辑 |
| **[`intelligence/tactical/`](intelligence/tactical/)** | IR、检测工程师 | Kill chain、`:9999` 协议 RE、[ATT&CK 映射](intelligence/tactical/attack-navigator.md) |
| **[`detection/`](detection/)** | SOC 工程师 | [YARA](detection/yara/)、[Sigma](detection/sigma/)、[Suricata](detection/suricata/)、[Zeek](detection/zeek/) —— 按信号稳定性优先级排序 |
| **[`hunting/`](hunting/)** | 威胁猎手 | 链上(Dune/RPC/Etherscan)、DNS、网络(Splunk/Elastic/KQL)、端点(EDR) |
| **[`iocs/`](iocs/)** | 所有人 | [合约](iocs/contracts.csv)、[网络](iocs/network_iocs.csv)、[样本](iocs/samples.csv)、[持久选择器](iocs/selectors.md) —— 每一行都标有置信度和分类标签 |
| **[`METHODOLOGY.md`](METHODOLOGY.md)** | 审核者 | 搜集姿态、分析纪律、发现并纠正的错误 |
## 防御者快速入门
1. **首先部署持久检测**(它们能在 IP/域名轮换中存活):
- YARA `EtherHiding_Resolver_Topic0` —— 二进制文件中的 topic0 哈希。
- Suricata `sid:9000001-9000004` —— `:9999` 挑战-响应握手和 beacon。
- `ip-api /line/?fields=147489` 指纹 beacon(Sigma + Suricata)。
2. **建立链上监控** —— 按计划运行[全 topic 扫描](hunting/);写入 topic0 哈希的新合约是该家族潜在的新成员。
3. **定期刷新时间点 IOC**([`iocs/network_iocs.csv`](iocs/network_iocs.csv)) —— IP 会轮换;行为规则则不会。
4. **不要封锁 `ip-api.com`。** 它是一个被用作指纹预言机的合法服务。检测*非浏览器进程产生的模式*;切勿封锁目的地。
## 置信度与处理
每一项声明都带有明确的 ICD-203 置信度评级。情报源标签(Silent Push、VirusTotal 社区标签)被视为**佐证,绝不能作为主要证据**。链上写入即为真相。国家级界限 —— **可能,但未经证实** —— 是审慎设定的,在衍生报告中应予以保留。归因用语反映了分析置信度,而非已裁决的事实。
**未实现的目标,明确指出:** 从未获取 ws:// 分支的植入物(在所有公开沙箱语料库中缺失 —— 与高度受限的工具一致),且未完成国家级归因。这些差距已被记录,而不是被掩盖。
标签:Metaprompt