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, 云资产可视化, 云资产清单, 勒索软件, 威胁情报, 开发者工具, 日志审计, 目标导入, 逆向工程