yankywilson/tsundere-blockchain-c2

GitHub: yankywilson/tsundere-blockchain-c2

针对利用以太坊智能合约隐藏 C2 的恶意软件家族,提供被动链上枚举、完整协议逆向工程及开箱即用的 SOC 检测包和威胁狩猎查询的综合性防御情报仓库。

Stars: 0 | Forks: 0

# ANCHOR — EtherHiding / Tsundere Resolver 家族 ### 基于区块链的 C2 恶意软件家族的被动链上枚举与完整协议逆向工程 [![posture](https://img.shields.io/badge/collection-passive%20%2F%20air--gapped-blue)]() [![estimative](https://img.shields.io/badge/language-ICD--203-informational)]() [![family](https://img.shields.io/badge/family-Tsundere%20%2F%20EtherRAT%20%2F%20CastleRAT-red)]() [![nation--state](https://img.shields.io/badge/nation--state-Iran%20nexus%20(likely)-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