yankywilson/shinysp1d3r-intel
GitHub: yankywilson/shinysp1d3r-intel
针对 ShinySp1d3r 勒索软件家族的逆向工程分析与防御检测内容集合,包含技术发现、IOC 指标和可直接部署的 YARA/Sigma/KQL 检测规则。
Stars: 0 | Forks: 0
# ShinySp1d3r — Scattered Spider / SLSH(可能)
逆向工程、基础设施分析以及防御性检测内容,针对
ShinySp1d3r 勒索软件家族以及相关的恶意 ScreenConnect / MeshCentral 操作者
资产。
**根据评估,ShinySp1d3r 勒索软件极可能由与 Scattered Spider 结盟的
Scattered LAPSUS$ Hunters 集群运营(置信度低;归因基于公开报告,
并非由本仓库的底层数据独立证实)。**
评估用语遵循 ICD-203 标准标准。可能性和置信度在全文中分开
说明——此处的每一项评估都包含这两者。
**报告日期:2026 年 7 月 15 日。确认活跃基础设施时间为 2026 年 7 月 14 日,且具有时效性。**
## 结论要点
ShinySp1d3r 是一个 **RaaS(勒索软件即服务)构建系统**,而不是一个独立的工具。共有 17 个
配置字段,每一个都可以在构建时设置,从模板源
文件编译而成。开发者交付功能;附属成员配置活动。这是
由初步分析确立的,无论其由谁操作,这一点都成立。
**在分析之时,该家族尚未有公开确认的受害者。** 此处的样本是
从 VirusTotal 恢复的开发中构建版本。这就是本仓库的意义所在:
二进制文件在*现在*(即首次部署之前)是完全可读的——这是在
勒索软件家族生命周期中,防御者能够领先于它的唯一时期。
此处发布了两部分初步分析。**它们并没有通过初步
证据连接起来。** 两者都从相同的第三方报告继承了攻击者身份。这个接合点
被公开说明,而不是被掩盖,因为读者在决定对该归因给予多大权重时,需要知道是什么支撑了它。
## 活跃基础设施通知
**通过行为 PCAP 确认,`80.76.49.99` 于 2026 年 7 月 14 日处于活跃状态**——一个第三方的
样本向 `:8040` 发送了信标请求并收到了 `200 OK`。它在
`services-server0-web.com` 上提供了一个 ScreenConnect Host 面板,注册于 2026 年 6 月 28 日。
[`tactical/iocs.md`](tactical/iocs.md) 中的每个原子指标都带有日期戳。
**原子指标具有时效性。** 在 2026 年 7 月 14 日存活的 IP、域名或证书在您阅读本文时,可能
已经失效、被重新注册或被重新分配给无关方。
指标按持久性分层。**请追踪持久层。**
**不要对 AS399486 (VIRTUO) 应用 ASN 级别的封禁。** 本仓库包含证据表明
该 ASN 至少托管了两个不相关的恶意 ScreenConnect 操作者。
**ScreenConnect 和 MeshCentral 是合法的商业远程管理工具**,每天被
合法的 MSP 和 IT 部门使用。这里没有任何内容表明并非如此。检测
内容针对的是*恶意部署*。每个 Sigma 规则都附带了一个标记为 `<-- REPLACE` 的 `filter_legit` 块,在部署之前,您必须使用自己授权的 RMM 资产填充该块,否则您将因为您自己的管理员而触发警报。
## 按来源划分的发现
分为三类。**新发现** — 此处确立,未见于公开报告。**独立验证** — 此处确立,*并且*由供应商发布;一致性即为佐证。
**来自供应商** — 在其他地方发布,*但*此处未确立;记录此项是为了避免本仓库
被误读为全貌。
**覆盖范围注意事项:** 公开报告检查是在九个供应商
来源(BleepingComputer/Coveware、Unit 42、Gurucul、MOXFIVE、Vali Cyber、EclecticIQ、
Cynet、gbhackers、DailySecurityReview)中进行的两次搜索。**此处的“未发现”意味着通过该检查未发现。**
这并不意味着没有人发布过。如果供应商的完整报告未公开,此
检查将无法看到它。
### 新发现 — 此处确立
| 发现 | 详情 |
|---|---|
| **Go 1.24.5** | 精确版本。公开报告仅称“基于 Go”。 |
| **`HCWin/` 命名空间,11 个模块** | 来自符号表的完整包映射。无公开痕迹——不在 GitHub 上,也不在任何报告中。 |
| **伪造的 Authenticode 叠加层** | 精心制作的截断 PKCS#7,内部无证书。 |
| **互斥锁算法** | `GetComputerNameW()` 的 DJB2 变体滚动哈希 mod 62,`USERNAME` 作为回退。一个构建中为 `Google\`+7,另一个构建中为 `Global\`+8。 |
| **扩展名递归** | `index[i] = (index[i-1]*17 + i + 13) % 62`。每次构建正好有 62 个有效项。已验证:种子 1 → `1Vks5fYe`。 |
| **`R3ADME_[8chars].txt`** | 确切的勒索信文件名。后缀是这 62 个字符之一。此构建为:`R3ADME_1Vks5fYe.txt`。 |
| **`main_generated.go`** | 模板/生成的源代码架构——RaaS 构建系统,位于符号表中。 |
| **SPDR / ENDS 容器格式** | 完整布局,包含两种模式和逐字段说明。 |
| **配置结构体 `0x00852440`** | 17 个字段,附带地址和默认值。RaaS 的证据。 |
| **RSA 模数 + `0x00252BF2`** | 完整的 512 字符密钥,原始偏移量,单一交叉引用。**以 ASCII 十六进制文本存储,而非原始字节。** |
| **ChaCha20 *无认证*** | `NewUnauthenticatedCipher`。**没有 Poly1305。没有完整性标签。** 公开报告称“ChaCha20”——准确但不具体。 |
| **RSA-**OAEP**** | 唯一的 KEM。公开报告称“RSA-2048”——准确但不具体。 |
| **ML-KEM-768 休眠** | 作为 FIPS 标准库编译进去。从 `main` 或 `HCWin/` 没有任何调用者。**受害者文件没有受到抗量子保护。** |
| **31 个终止目标** | 计数常量 `DAT_008506e8 = 0x1f`。第 31 个是 `sql`——3 个字节,子字符串匹配,涵盖整个 SQL Server 技术栈。 |
| **阈值 5 MiB / 100 MiB** | `main.decideEncryptionMode`。**模式由配置驱动,而非由大小驱动。** |
| **壁纸 XOR 密钥** | `SwitchToThread` 的运行时地址,从 IAT 中读取。**无法静态解密**——每次加载时 ASLR 都会改变它。 |
| **三层权限检查** | Token 提升 → SID 枚举 → 硬编码的 `S-1-5-32-544`。**拥有 `BUILTIN\Administrators` 权限即可。** |
| **通过交叉引用证明无 C2** | 只有 `HCWin/shares.isSMBPortOpen` 和 `HCWin/propagation.(*Propagator).scanSubnet` 调用了 `net.(*Dialer).DialContext`。**没有 `HCWin/` 调用者触发 `net/http.(*Client).Do`。** |
| **硬编码默认域策略** | `{31B2F340-016D-11D2-945F-00C04FB984F9}`。这不是一个任意的 GPO——而是应用于每个加入域的机器的策略。 |
| **操作者 Tox ID** | `BD1B683FD3E6CB094341317A4C09923B7AE3E7903A6CDB90E5631EC7DC1452636FF35D9F5AF2` |
| **基于构建的 Case ID** | `83ECCB7D825B7EB3590CD1AE349325E6`——用于跨事件的受害者关联。 |
| **资产** | `80.76.49.99` 和 `80.76.49.91`——**均处于活跃状态**。`services-server0-web.com`。MeshCentral `MeshCentralRoot-c9a7aa` 附带经过加密验证的 SPKI。**MeshCentral 集群与 ScreenConnect 资产之间在证书层面上的连接。** 五个 ScreenConnect 构建 GUID。 |
| **工具寄存器** | **哪些查询会撒谎,以及该资产暴露的每个指纹的测量基准率。** 没有人发布过这些。 |
| **五个分析陷阱** | 此二进制文件中看似处于活动状态但实际上并未启用的结构。见下文。 |
| **规则 9 · 规则 10** | 阳性对照,以及 null 在每个引擎和每个时间窗口中表现的事实——并附有实例。 |
### 独立验证 — 此处发现,且已发布
| 发现 | 供应商 |
|---|---|
| ChaCha20 流密码 + RSA-2048 密钥交换 | BleepingComputer / Coveware · Unit 42 · Cynet · gbhackers |
| Hook `EtwEventWrite` 以致盲事件查看器 | Coveware via BleepingComputer · gbhackers |
| 删除卷影副本 | 多方 |
| **使用 `wipe-[random].tmp` 覆盖空闲空间** | **gbhackers。** 我们的 `wipe-%016x.tmp` 是同一个工件——**并非新发现。** |
| 通过句柄迭代终止持有目标文件句柄的进程 | Coveware via BleepingComputer |
| 基于 Go | Cynet |
| 每个加密文件都会获得一个唯一的扩展名 | BleepingComputer · Unit 42 |
| 内存缓冲区覆盖 / 反取证 | BleepingComputer |
| 可配置的加密模式;环境自适应行为 | DailySecurityReview · MOXFIVE |
| 模块化框架,RaaS,开发中,无确认的受害者 | MOXFIVE |
| **嵌入的 URL 作为未来 Tor 泄露网站的占位符** | **Gurucul。** 证实了我们在勒索信 `.onion` 字段中的 `-` 占位符。 |
| 攻击者声称扩展名使用了“专有的数学公式” | BleepingComputer · Unit 42 |
### 来自供应商 — 此处未确立
**本仓库不涵盖这些内容。记录它们是为了避免被误读为全貌。**
| 发现 | 供应商 | 重要性所在 |
|---|---|---|
| **带有运行时配置的 CLI 构建已完成** | **ShinyHunters,直接提供给 BleepingComputer** | **直接影响我们自己的发现。** 我们的样本从构建时的结构体获取配置,并且不包含任何 `os.Args` 处理。这*对该样本*成立。据称存在 CLI 变体,但我们从未见过。 |
| **Linux 和 ESXi 变体即将完成** | ShinyHunters → BleepingComputer · MOXFIVE · EclecticIQ | 我们只持有 Windows 版本。 |
| **针对 ESXi:虚拟机枚举、禁用快照、VMDK 加密** | Vali Cyber · EclecticIQ · COE Security | 我们的样本中没有涉及 ESXi 的内容。 |
| **纯汇编编写的“闪电版本”**,LockBit-Green 风格 | ShinyHunters → BleepingComputer | 完全不属于本次分析范围的第二个 Windows 加密器。 |
| **带有数据存储选择和限制功能的附属控制面板** | Vali Cyber | 我们从配置结构体推断出了 RaaS 面板。但我们从未见过它。 |
| **被追踪为“Bling Libra”** | Gurucul · Unit 42 | 命名问题。 |
| **SLSH 威胁要对纽约市和纽约州部署 ShinySp1d3r(2025 年 11 月 21 日)** | Unit 42 | 意图信号。 |
| **截至 2026 年 7 月,该组织的收入主要来自 OAuth/SSO 凭据窃取,而非此 RaaS** | Vali Cyber | 限制了当今应给予该勒索软件家族多大的运营权重。 |
### 冲突 — 未解决
| 声明 | 来源 | 我们的数据 |
|---|---|---|
| 扩展名是 `.Sp1d3r` | BeforeCrypt | 从 62 个成员的集合中随机提取的 8 个 base62 字符,已在针对 94 个文件的引爆测试中验证。同一页面将该家族的时间定为 2021 年 5 月,这与其他任何来源都不一致。**请谨慎对待;已记录,未采纳。** |
## 战略
### 商业模式在二进制文件中
| 默认**开启** | 默认**关闭** |
|---|---|
| 本地加密 · 终止服务 · ETW 规避 · 自我销毁 · 删除事件日志 · 壁纸 · 互斥锁 | 传播 · 凭据 · 所有的五种横向移动方法 · 空闲空间擦除 |
默认的构建版本只对它落地的主机进行加密,除此之外什么也不做。附属成员
会开启传播功能,并将凭据作为构建时的覆盖层提供。**可能性:几乎肯定。置信度:高。**
**反直觉的检测后果:** 一个针对传播工件或
针对部分加密工件调优的规则,*假设是由附属成员配置了它们*。在默认
配置下,这些规则什么也看不到。总是会触发的行为是
影响行为——这也是最后触发的一批行为。
### 领先优势在哪里
加密器属于影响阶段。当它运行时,入侵其实已经结束了。恶意的 ScreenConnect 和 MeshCentral 资产属于访问阶段,在数周前即可被观察到。
**包中保真度最高的规则:Infrastructure Sigma 004**——一台主机上的
双 RMM 共存现象。在很短的时间窗口内安装了两个独立的
远程管理代理,且都不匹配您的授权资产。基准率低,信号强,时间早。
### 接合点
勒索软件分析和基础设施分析各自都非常可靠。两者
都从相同的外部来源继承了攻击者身份。**这里的样本没有一个来自
该资产;该资产的任何指标也没有出现在任何样本中。**
通过交叉引用证明,加密器是无 C2 的。**无 C2 的加密器无法通过自身的流量链接到
基础设施**——这是目标本身的属性,而不是收集
失败。由于在任何地方都没有确认的受害者,不存在一个能让这两部分
被同时观察到的环境。**这个接合点可能是根本无法关闭的,而不仅仅是
目前未关闭。**
完整论述:[`strategic/seam-analysis.md`](strategic/seam-analysis.md)。
### 五个分析陷阱
此二进制文件包含五个看似处于活动状态但实际上并未启用的结构:
| # | 陷阱 |
|---|---|
| **1** | 链接了 `chacha20poly1305`。但没有任何对象调用它。AES-CBC 和 AES-CTR 同样如此。 |
| **2** | `RSASSA-PKCS-v1.5` 在二进制文件中——**它属于伪造的 Authenticode 叠加层**,而不是加密路径。这是一个诱饵工件,其元数据看起来就像是恶意软件加密功能的文档说明。 |
| **3** | ML-KEM-768 已编译进去但处于休眠状态。它唯一的调用者在其自身包内部。 |
| **4** | SPDR 头部的“常量”9 个字节实际上是**四个大端序字段**。它们看起来像常量,是因为每个样本都是使用 256 字节密钥的全模式。 |
| **5** | 终止列表计数常量显示为 31。字符串提取恢复了 29 个。它丢弃的那个 3 字节条目——`sql`——是列表中影响最大的目标。 |
**对于任何基于符号转储进行分析的分析师来说,这五个陷阱中的三个都会让其掉入陷阱。** 它们是
Go 二进制文件构建方式的属性,而不是该家族特有的。
[`strategic/analytical-traps.md`](strategic/analytical-traps.md) 是这里最具复用价值的内容。
## 作战 — 资产
| | |
|---|---|
| **`80.76.49.99`** | ScreenConnect Host 面板,端口 8040。**通过行为 PCAP 确认于 2026 年 7 月 14 日处于活跃状态**。 |
| **`80.76.49.91`** | **同样处于活跃状态**——在 2026 年 7 月 14 日 17:04 UTC 观察到 RDP `:3389`。之前承载过 `:443` Tactical RMM 和 `:4433` MeshCentral。 |
| 域名 | `services-server0-web.com`,注册于 **2026 年 6 月 28 日**,NameSilo / dnsowl |
| 主机 | Windows Server 2022 10.0.20348,主机名 `WIN-PJ1A9CGR8O4` |
| 构建 | 原生 ScreenConnect 25.2.4.9229,DarkTeal 主题,**无自定义品牌标识**,无 SNI 门控 |
| 第二个 RMM | 位于 `mesh.upohelp.top` 的 MeshCentral,自签名 `MeshCentralRoot-c9a7aa`,从 `.91:4433` 提供服务 |
| MeshCentral SPKI | `865e2ba7e935e28a646dd8bd19400cad24ea3423f06936ed633b9721d22f41fa`——**从原始模数派生,自检通过** |
| 暴露面 | CVE-2020-0796 未打补丁(CVSS 10,EPSS 0.9981,CISA KEV)。**仅作为情报记录。未进行利用。** |
| 检测 | **VirusTotal 0 / 91** |
**有两台主机处于活跃状态,而不是一台。** `.99` 提供 ScreenConnect 面板。**`80.76.49.91` 是一个
存在超过 12 个月的操作者主机——在 2026 年 7 月 14 日 17:04 UTC 观察到 RDP**——它按顺序承载过
`:443` 上的 Tactical RMM,`:4433` 上的 MeshCentral,以及 `:8041` 上的 ScreenConnect 中继。它
之前被记录为一月份的一个为期三周的脚注。那是错误的。
**该资产是通过证书连接的,而不是通过 ASN。** `.91:4433` 提供了
`mesh.upohelp.top` MeshCentral 叶子证书——该域名在其证书的 Subject、DNS SAN 和 URI 扩展中被
命名。SPKI 是从原始模数派生并
针对证书自身的 Subject Key Identifier 进行了验证。**这是工具身份的同一性,而不是地址的
相邻性。** 完整推导过程:[`operational/estate-map.md`](operational/estate-map.md)。
**双 RMM 是其技术特征——但有一个注意事项。** 这两种工具都是合法的。有两个
未经授权的工具在同一台主机上,是不正常的。⚠️ **一个活跃的假设认为,这里的 MeshCentral
实例是 Tactical RMM 的内嵌组件,而不是一个独立的第二个
平台——这将使两者成为顺序运行,而不是同时运行。该假设在
所有可用工具上均未经测试,此处不作断言。**
### 排除的内容及其发布原因
十六个线索已正式关闭——一个承载着 32,849 个域名的普通域名服务器,一个
**研究员的 Sinkhole**(如果有的话,会让防御者封锁一名研究员),我们自己的分析师
测试凭据被误读为操作者活动,源头的托管标签错误。
[`operational/exclusion-register.md`](operational/exclusion-register.md)。
**规则 8 — 共享基础设施不代表共享身份。** AS399486 还在
`194.59.30.202` 上托管着 `sptcadmin.com`:这是一个独立的、不相关的恶意 ScreenConnect 操作者,具有
不同的构建 GUID、不同的端口、不同的网段。两个恶意的 RMM 操作者,一个
ASN,没有任何关系。**这就是为什么本仓库中没有 ASN 封禁的原因。**
**规则 2 — Null(空值)也是发现。** 跨 VIRTUO 的 GUID 同级扫描返回了
唯一已知的主机。这是作为一个带有指定工具的 null 发布的,而不是被忽略。
**工具规则。** 中继节点在结构上缺少正向 DNS。针对中继的被动 DNS 返回 null 是
*构造上*决定的,每次都是如此,无论该中继是否存在。针对 `.91` 和
`.161` 的每一个 null 在查询运行之前就已经确定了。**对于中继节点,正确的工具
是对 `:8041` 进行端口扫描的数据。**
## 战术
| 持久性 — 追踪这些 | 易变性 — 标注日期为 2026 年 7 月 14 日 | 🪤 基准率 — **不要追踪** |
|---|---|---|
| RSA 模数(跨活动,涵盖两个构建) · `HCWin/` 模块路径 · MeshCentral SPKI `865e2ba7…` · MeshCentral 叶子证书序列号 · RDP 证书 SHA256(克隆测试) · 双 RMM 行为 | IP · 域名 · 面板 URL · RDP 主机名 · 证书 | **JARM `2ad2ad16…` — 测量有 20,016 次命中** · **JA3S `15af977c…` — 225,691,497 次命中** · 原生 Favicon · `Microsoft-HTTPAPI/2.0` · ASN 成员资格 |
[`tactical/iocs.md`](tactical/iocs.md) · [`hunting/pivots.md`](hunting/pivots.md)
## 逆向工程
跨越一个 RaaS 模板的两个附属构建版本共有 63 项发现。
| | 加壳 | 脱壳 |
|---|---|---|
| SHA256 | `3bf53cddf7eb98d9cb94f9aa9f36c211a464e2c1b278f091d6026003050281de` | `670a269d935f1586d4f0e5bed685d15a38e6fa790f763e6ed5c9fdd72dce3cf2` |
| MD5 | `60f0d614ee1cfcfd237f6705a33765c3` | `2b3875b6b7913a5a61e2acccb4fb8ca9` |
| 互斥锁前缀 | `Google\` + 7 | `Global\` + 8 |
**互斥锁前缀不同。RSA 模数和勒索信模板则不然。** 基于某一个构建的互斥锁设定的规则
不会在另一个上触发;基于密钥或模块路径的规则则会在这两者上
触发。
### 执行链
| 阶段 | 行为 |
|---|---|
| **1 — 初始化** | 通过哈希解析 API。**未加载网络 DLL**——没有 ws2_32,winhttp,wininet。Hook 了 ETW **(系统范围内,在所有正在运行的进程中)**。`HookShield` 启动一个循环,如果 EDR 恢复了 Hook,它会重新应用它们。 |
| **2 — 检查** | 域成员资格→如果不存在则跳过 AD。权限→如果不满足则跳过 GPO。**这些是分支,而不是关卡。** |
| **3 — 准备** | 删除卷影副本,使用双重方法。终止 31 个进程。清除事件日志。终止文件锁定句柄。 |
| **4 — 本地加密** | `LocalEncrypt` 默认为 **true**。模式由配置驱动。 |
| **5 — 影响** | 每个目录留下勒索信。壁纸来自由运行时 IAT 地址进行异或加密的十六进制 Blob。*如果启用*,则进行空闲空间擦除。 |
| **6 — 传播** | `Propagate` 默认为 **false**。WMI · SCM · GPO · shares · PsExec。GPO 针对**默认域策略**。 |
| **7 — 自毁** | 默认为 **True**。三种方法:`DELETE_ON_CLOSE`,WMI,计划重启。 |
**阶段 1-3 都在触碰第一个文件之前完成。那就是最佳窗口期。**
### 密码学
| | |
|---|---|
| 文件加密算法 | **ChaCha20,无认证。** 没有 Poly1305,没有标签,不对输出进行完整性检查。 |
| 会话密钥 | 32 字节 `crypto/rand`,**逐文件生成** |
| Nonce | 12 字节,逐文件生成 |
| 密钥封装 | **RSA-OAEP**,2048 位。活动密钥涵盖两个构建。 |
| 部分模式 | **不是第二种加密算法**——是 ChaCha20 密钥流定位。`SetCounter(offset/64)`,烧除前缀,加密数据块。 |
| 偏移量映射 | `SHA256(path ‖ \x00×8 ‖ session key)`。没有密钥无法重现。 |
| 内存 | 密钥和 Nonce 通过 `mlock` 防止被交换,在 `encryptFile` 退出时清零 |
**密钥管理是胜任。这里没有任何可以利用的密码学弱点。**
### 配置 — RaaS 的证据
`0x00852440` 处有十七个字段。`EnableETW` · `Debug` · `DeleteEventLogs` ·
`ChangeWallpaper` · `SingleInstance` · `LocalEncrypt` · `KillServices` · `Propagate` ·
`FreeSpaceCleaner` · `SelfDestruct` · `EncryptionMode` · `Credentials` · `UseWMI` · `UseSCM`
· `UseGPO` · `UseNetShares` · `UsePSExec`。
**凭据是位于 `0x00852460` 处的构建时配置字符串**,通过 `LogonUserW` 消费,
是可选的且附加的。二进制文件本身说明了这一点:
`[Propagation] No credentials provided, using current user context`。
**有两个槽位未映射:`0x00852445`,`0x00852447`。** ❌
### 容器
```
0x000 4 "SPDR"
0x004 2 flags uint16 BE 1 = full, 2 = partial
0x006 2 uint16 BE
0x008 1 uint8
0x009 4 RSA-key-len uint32 BE observed 256
0x00D var RSA-OAEP wrapped ChaCha20 session key
+ 12 nonce
+ 1 uint8
+ 36 [PARTIAL ONLY] uint32 + SHA256
+ 4 path-len uint32 BE
+ var original path — CLEARTEXT
+ 8 original file size uint64
+ 4 "ENDS"
+ ... ciphertext
```
**详情:** [`reverse-engineering/`](reverse-engineering/) — 执行链 · 配置结构体
· 加密链 · SPDR 格式 · RSA 密钥 · HCWin 模块 · 终止列表 · 所有 63 项发现的
原文。
## 对于防御者
| 格式 | 数量 | 路径 | 状态 |
|---|---|---|---|
| **YARA** | **9** | [`detection/yara/shinysp1d3r.yar`](detection/yara/shinysp1d3r.yar) | ✅ 可编译 |
| **Sigma** | **36** | [`detection/sigma/`](detection/sigma/) — 10 基础设施 · 13 勒索软件 · 13 行为 | ✅ 可解析,无 ID 冲突 |
| **Suricata** | **7** | [`detection/network/`](detection/network/) | 🟡 未测试 |
| **KQL** | **18** | [`detection/kql/hunting.kql`](detection/kql/hunting.kql) | 🟡 未测试 |
| **Zeek** | — | [`detection/network/`](detection/network/) | 🟡 未测试 |
**所有检测内容均为 🟡 未经实时遥测测试。** 其底层的发现是
✅ 已验证。YARA 可以编译,Sigma 可以解析——但两者都没有针对真实的
资产运行过。**在部署之前进行验证。**
### 部署顺序
| | 规则 | 原因 |
|---|---|---|
| **1** | **Infrastructure Sigma 004** — 双 RMM 共存 | 最高保真度,最早期的信号,基准率低 |
| **2** | YARA `ShinySp1d3r_v3_ModuleArchitecture` | 能够在重新编译后存活——攻击者必须重命名所有 11 个模块才能规避 |
| **3** | YARA `ShinySp1d3r_v3_RSAKey_Anchored` | 40 个 ASCII 字符固定在原始偏移量 `0x00252BF2` 处。近零误报。 |
| **4** | Ransomware Sigma 001–013 | 影响阶段。构造上属于警报发生较晚。 |
| **5** | Infrastructure Sigma 009 | 仅用于追踪队列——只有在附属成员配置了凭据时才会触发 |
### 会反咬你一口的三件事
**1 — RSA 密钥是 ASCII 十六进制文本,而不是原始字节。** 从解码模数构建的
特征码什么也匹配不到。这里的每个锚点都是一个字符串。保持这样。
**2 — 不要硬编码 SPDR 魔数之后的 9 个字节。** 它们编码了模式和密钥长度。
硬编码它们只会匹配全模式,并且**会漏掉所有 100 MiB 以上的文件**——
也就是数据库和磁盘映像。这里的规则对模式字节使用了通配符;针对
合成容器的回归测试证实,原始形式漏掉了 4 个案例中的 3 个。
**3 — 在部署任何 Sigma 规则之前填充 `filter_legit`。** 它在每一项中都标记为
`<-- REPLACE`。
## 事件响应
[`playbooks/ir-triage.md`](playbooks/ir-triage.md)
**如果加密正在进行:首先捕获内存。** 会话密钥被 `mlock` 锁定并在
`encryptFile` 返回时清零。*在*加密期间进行的捕获包含它们。之后则没有。**那个窗口一旦关闭就不会再打开。**
**不要重启**——计划重启删除是三种自我销毁方法之一。
**不要终止进程**——`SelfDestruct` 默认开启;您可能会代它完成清理
工作。在网络层进行隔离。
**精确地界定恢复范围——一概而论说“什么都无法恢复”是错误的,并且会造成数据丢失。**
| | |
|---|---|
| 全模式内容 | **无法恢复。** 没有操作者的私钥则没有路径。 |
| **部分模式内容(≥100 MiB)** | **大部分完好**——仅选定的范围被加密。**检查头部字节 `0x005`:`01` 表示全模式,`02` 表示部分模式。一个 500 GB 的 VMDK 如果处于部分模式,并不意味着损失了 500 GB。** |
| 原始文件名 | 在每个容器中均为明文,适用于两种模式 |
| 空闲空间 | `FreeSpaceCleaner` 默认**关闭**——没有 `wipe-*.tmp` 工件意味着未分配空间是完好的 |
**关联:** Case ID `83ECCB7D825B7EB3590CD1AE349325E6` 是基于构建的。**两名呈现相同 Case ID 的受害者
遭遇了同一个附属成员构建的攻击**——这是一种
在没有任何其他共享信息的情况下,能够跨事件发挥作用的工具。
**绊线:** 勒索信中的 `.onion` 字段带有一个占位符——`-`。**该字段
在样本中一旦被填充,就意味着该家族已经从开发阶段进入了部署阶段。**
监控它。
## 置信度寄存器
| 命题 | 可能性 | 置信度 |
|---|---|---|
| RaaS 构建系统,而非独立工具 | **几乎肯定** | **高** |
| 设计上无 C2 | **几乎肯定** | **高** |
| 一个模板的两个附属构建 | **几乎肯定** | **高** |
| 扩展名生成是随机的;该公式已验证 | **几乎肯定** | **高** |
| 受害者文件未受到抗量子保护 | **几乎肯定** | **高** |
| `80.76.49.99` 活跃于 2026 年 7 月 14 日 | **已确认** | **高** |
| AS399486 托管了多个不相关的恶意 RMM 操作者 | **已确认** | **高** |
| `sptcadmin.com` 是一个独立的、不相关的操作者 | **几乎肯定** | **高** |
| 由 SLSH 集团运营 | **可能** | **低** |
| 该资产由该集团中的某个攻击者运营 | **可能** | **低** |
| 这两半部分属于同一个行动 | **可能** | **低** |
| 该资产专门交付 ShinySp1d3r | **大约一半一半的几率** | **低** |
**所有高置信度的内容都是二进制文件或资产的属性,无论归因如何都成立。
所有带有攻击者标签的内容都是低置信度,原因只有一个:接合点。**
完整寄存器:[`strategic/attribution-icd203.md`](strategic/attribution-icd203.md)。
### 关于自我归因
勒索信中包含 `BY SH1NYSP1D3R (ShinyHunters)`。**那是攻击者关于
自身的声明,而不是身份证明。** 黑客组织会进行 False Flag(假旗)行动;勒索信中的字符串不费吹灰之力。它被记录为
检测锚点,而不是作为佐证。
## 仓库映射
| 路径 | 内容 |
|---|---|
| [`FINDINGS.md`](FINDINGS.md) | 完整记录——63 项发现以及补充材料,附带来源和取代链 |
| [`strategic/`](strategic/) | 分析陷阱 · 接合点分析 · ICD-203 寄存器 · 攻击者模型 |
| [`operational/`](operational/) | 资产映射 · 排除寄存器 · 方法学规则 |
| [`tactical/`](tactical/) | 指标,按持久性分层 |
| [`reverse-engineering/`](reverse-engineering/) | 执行链 · 配置结构体 · 加密链 · SPDR 格式 · RSA 密钥 · HCWin 模块 · 终止列表 · 发现原文 |
| [`detection/`](detection/) | YARA · Sigma · KQL · Suricata · Zeek |
| [`hunting/`](hunting/) | VirusTotal · Censys · Shodan · crt.sh 枢纽点 |
| [`playbooks/`](playbooks/) | 事件响应分诊 |
## 来源
| 标签 | 含义 |
|---|---|
| ✅ 已验证 | 直接从原始数据读取——反编译器、反汇编器、字符串提取、数据包捕获、扫描记录 |
| 🟡 未测试 | 基于已验证的发现编写,从未针对实时遥测运行 |
| ❌ 缺口 | 已知缺失。**已声明,未填补。** |
**这里没有任何内容是凭记忆或从来源摘要中重构出来的。** 如果某个值
无法从原始数据中恢复,则被标记为 ❌ 并留空。被取代的发现
保留了其原始文本,并在线说明了取代证据——一个移除了前序景象的取代
链是无法审计的。
**Null 结果也是发现。** 如果扫描一无所获,记录会说明运行了
多少次搜索以及针对哪个工具——而不是说该事物不存在。
### 已知的缺失
| 缺失 | 状态 |
|---|---|
| ScreenConnect 中继公钥 | ❌ 从未在原始数据中记录过。不可恢复。 |
| 加入域的环境中的门控后动态行为 | ❌ **从未测试。** 修补和引爆程序已规划,未执行。 |
| 配置结构体槽位 `0x00852445`,`0x00852447` | ❌ 未映射 |
| Linux / ESXi / CLI / “闪电”变体 | ❌ **未持有。** 由供应商报告。参见上文*来自供应商*。 |
| 附属成员控制面板 | ❌ 未持有。从配置结构体中推断出;从未观察到。 |
## 范围排除
在本次调查中出现的两个线索被**刻意忽略了**:
- 一个网络钓鱼活动,其受害者数据包含真实个人的姓名。已完全
排除。这里不会出现它的任何部分。
- 一个在类似名称下操作 Stealer/RAT 面板的单独攻击者。不是这个攻击者,也不是
这个家族。属于命名冲突。
**两者都不属于缺失。两者都是决定。**
## 使用说明
出于防御目的发布。检测内容按“原样”提供,未经
实时遥测测试——请在部署之前在您的环境中进行验证。
在本仓库与供应商报告出现分歧的地方,两种观点都会被陈述。如果
供应商掌握了本仓库未掌握的内容,则会记录在上文而不是被忽略。
标签:IP 地址批量处理, KQL, Sigma规则, YARA, 云资产可视化, 云资产清单, 勒索软件, 威胁情报, 开发者工具, 日志审计, 目标导入, 逆向工程