运行 23 年的 P2P 僵尸网络 Sality 遭协同瓦解:没有中心节点也能被干掉?
原创 威胁情报中心 2026-09-02 16:13 北京

Sality 于 2003 年首次被发现,在互联网上持续活跃了二十多年,称得上是恶意软件界的"活化石"。此次瓦解行动通过 P2P 沉洞隔离了全球超过 15,000 台受感染主机,让幕后的运营者彻底失去了对自己"家业"的控制权。
僵尸网络
运行 23 年的 P2P 僵尸网络 Sality 遭协同瓦解:没有中心节点也能被干掉?
Sality 于 2003 年首次被发现,在互联网上持续活跃了二十多年,称得上是恶意软件界的"活化石"。此次瓦解行动通过 P2P 沉洞(sinkholing)隔离了全球超过 15,000 台受感染主机,让幕后的运营者彻底失去了对自己"家业"的控制权。
· 僵尸网络 · P2P sinkholing · 2026-09-02
2026 年 8 月 31 日,CrowdStrike 联合多国执法机构、Shadowserver 基金会,完成对运行 20 余年的 Sality P2P 僵尸网络协同瓦解行动。本次行动证明长期被认为难以根除的 P2P 无中心僵尸网络,依然可以通过协议层面的技术手段实现大规模隔离。本文梳理 Sality 二十余年演变,拆解 P2P 僵尸网络被瓦解的底层原理,并提供企业可直接使用的检测指标。
01 二十三年的进化史:从文件病毒到"自动化犯罪平台"
Sality 是一款针对 Windows 系统的文件感染型病毒(File Infector),主要感染 .EXE 和 .SCR 可执行文件。它最早现身于 2003 年——那是一个 Windows XP 才刚刚普及的年代。
回顾它的演进路线,大致可以分为几个阶段:
2003 年:初代 Sality 以传统的文件感染方式传播,附带键盘记录、窃取注册表存储的密码和拨号上网配置等功能,窃得的数据通过电子邮件回传给攻击者。
2008 年前后:引入 P2P 算法,早期的 1 号、2 号测试网络很快消亡,但验证了去中心化控制的可行性。
2009—2010 年:3 号网络(V3,2009 年)和 4 号网络(V4,2010 年)相继建立,成为此后十几年间的主力。同一时期,部分变种开始集成 Rootkit 能力。
2017—2018 年起:运营者逐渐放弃传统的垃圾邮件、代理服务等载荷,将重心转向加密货币窃取与挖矿,搭上了"币圈"的快车。
直到被瓦解前,V3 和 V4 两个独立的 P2P 网络仍在同时运作。两者共用同一套代码库、由同一名威胁行为者(CrowdStrike 内部追踪代号为 SALTY SPIDER)运营,但使用互不兼容的协议版本和不同的加密密钥,相当于同一个老板开的两家互不相通的"分公司"。

图 | Sality 全球感染主机地理位置分布(图源:CrowdStrike )

图 | Sality 二十三年演进时间线(2003—2026)(据 CrowdStrike 披露信息及 Symantec、Botconf 2015 等公开技术资料整理自绘)
02 它凭什么活了二十多年?
在众多昙花一现的僵尸网络中,Sality 的长寿并非因为载荷多么先进,而是赢在架构。其韧性来自两个相互叠加的设计。
2.1 没有"司令部"的 P2P 架构
传统僵尸网络依赖集中式的命令与控制(C2)服务器,执法机构只要查封域名、拔掉服务器,整个网络就会瘫痪。Sality 则完全不同:受感染主机之间直接通信,组成一个自我维持的网络,任务指令在节点之间接力传递,不存在单点故障。
更进一步,Sality 网络中分发的所有指令和文件都经过运营者的数字签名验证,这使得外人很难伪造命令来接管网络。技术上看,其 P2P 通信基于自定义的 UDP 协议、采用 RC4 加密,通信端口根据计算机名伪随机生成;其中一部分公网可达的受感染主机充当"超级节点"(Super Peer),构成整个网络的通信骨干。
2.2 自我再生的文件感染传播
Sality 同时是一款多态(Polymorphic)文件感染病毒:它附着在受感染系统的可执行文件上,借助网络共享、可移动存储设备和文件共享持续扩散。这意味着感染会不断"自然再生",运营者不需要钓鱼邮件、不需要漏洞利用工具包,几乎零运营成本就能维持网络规模。
这种"文件感染 + P2P 组网"的组合拳,让 Sality 在二十多年的时间里扛住了无数轮清理行动。

图 | Sality P2P 网络架构与任务分发机制(据 CrowdStrike 披露信息及 Symantec 技术分析整理自绘)
03 闷声发财:低调的变现之道
有趣的是,Sality 自身的技术能力其实非常单一——它唯一的"特长"就是向受感染机器下发额外载荷。但围绕这一能力,运营者构建了多样化的收入管道。历史上通过 Sality 分发的恶意软件家族横跨凭据窃取、垃圾邮件、代理服务、网络攻击和 DDoS 等多个领域。
3.1 剪贴板里的"提款机"
过去八年,Sality 的主力载荷是一个名为 EggJagger 的剪贴板劫持(Clipjacking)工具。它会监控受害者的剪贴板,一旦发现加密货币钱包地址,就悄无声息地替换为运营者控制的地址——当受害者复制比特币或以太坊地址准备转账时,资金便被神不知鬼不觉地转进了攻击者的口袋。
据 CrowdStrike 估算,仅凭这一招,运营者至少窃取了 1,210 万卢布(约合 15 万美元)的加密货币;其从未动用的钱包组合价值在 2025 年 1 月一度达到约 1.47 亿卢布的峰值。对于一套"自己跑起来"的基础设施来说,这笔收入足以支撑一名犯罪者以极低的开销长期运营。需要说明的是,这一估算仅覆盖 EggJagger 载荷家族,其他载荷还贡献着额外的收入。

图 | EggJagger 载荷窃取加密货币的金额变化曲线(图源:CrowdStrike)

图 | EggJagger 剪贴板劫持的资金流转过程(据 CrowdStrike 披露信息整理自绘)
3.2 偶尔"掀桌子":三次耐人寻味的 DDoS
Sality 的运营以牟利为主,但历史上三次值得注意的 DDoS 行动表明,这位运营者并不介意在"个人或政治目的"的驱动下临时武器化手中的僵尸网络:
2016 年 4 月,阿拉伯语金融论坛:一个早期 DDoS 载荷瞄准了报道自然资源贸易公司的阿拉伯语网站 forex2030[.]com,并成功使其瘫痪。动机至今不明,可能是敲诈勒索,也可能是为了压制关于某上市公司的不利信息。
2022 年 2 月,乌克兰论坛:就在俄乌冲突全面爆发的第二天(2 月 25 日),Sality 分发 DDoS 载荷攻击乌克兰网络论坛 kharkovforum[.]com——该论坛上有一个讨论哈尔科夫实时战况的帖子。载荷产生海量 HTTP 流量压垮论坛,显然意在压制对战争的讨论,其动机很可能带有"爱国"色彩。
2023 年 9 月,俄罗斯加密货币交易所:一个 DDoS 载荷瞄准了俄罗斯加密货币交易平台 AvanChange。耐人寻味的是,该载荷在编译完成仅数秒后就被上传到分发设施,更像是一次因个人纠纷(或许是交易或账户问题)引发的冲动报复——运营者很可能正是利用这类交易所将窃取的加密货币兑换成法币。
04 瓦解行动:以子之矛,攻子之盾
此次行动的核心思路,用一句话概括就是:让 Sality 自己的架构反过来埋葬它自己。
4.1 两个无法弥补的"先天缺陷"
CrowdStrike 的研究人员抓住了 Sality 架构中两个致命的结构性弱点:
第一,协议无法打补丁。常规恶意软件可以从 C2 服务器接收代码更新,但 Sality 的传播机制是文件感染——它必须附着在磁盘上的可执行文件来扩散。如果运营者想发布一个修复协议缺陷的新变种,新变种就得与老变种争夺同一批宿主文件,结果不是升级,而是把僵尸网络撕成碎片。换句话说,今天的 Sality 所表现出的协议行为,和二十年前一模一样,协议里的每一个弱点都是永久性的。
第二,网络对成员来者不拒。Sality 的节点无条件信任网络:任何一台公网可达、能正确回应 P2P 握手的机器,都会被接纳为合法节点。没有身份认证,没有密码学标识,没有白名单——唯一的要求是"在线"。这意味着任何人都可以作为正式成员加入网络,与真正的受感染机器毫无区别。
这两个特性叠加在一起就是死局:协议无法加固以抵御攻击,网络也无法将一个"说着同样语言"的主动防御者拒之门外。
4.2 动手:操纵节点列表
行动的实际切入点,是每台 Sality 节点赖以感知网络的核心数据结构——节点列表(Peer List)。
每个 Sality 节点都维护着一份有限的已知超级节点列表,并且每 40 分钟验证一次列表中的节点是否仍然在线:应答的节点积累"信誉值",不应答的节点信誉值下降并最终被清除。瓦解行动正是利用了这套维护机制:
1清除合法节点:在节点验证环节进行协议层面的操纵,使每个节点列表中的合法超级节点条目被逐一作废,逐步将受感染主机与运营者的网络隔离;
2注入沉洞条目:向被清空的节点列表中注入专门搭建的沉洞节点,从而获得对行动进展的可视性,并支撑感染追踪与受害者通知。
行动优先打击超级节点——它们是网络的通信骨干。超级节点一旦被隔离,URL 包(载荷下载指令)和文件包(直接的载荷传输)就都停止了传播。而对于数量庞大、藏在防火墙或 NAT 之后无法直接触达的普通节点,行动方采取了更被动的策略:等这些节点在常规维护周期中主动联系沉洞节点时,再清空其节点列表,使其被永久孤立。
从运营者的视角看,受感染机器就这样一台接一台地"凭空消失"了。
这套手法与 2014 年瓦解 GameOver Zeus、2017 年瓦解 Kelihos 僵尸网络时使用的"节点列表操纵"技术一脉相承,此次针对 Sality 特有的协议行为做了适配。

图 | Sality 瓦解行动全流程:两大结构性缺陷 → 六步实施 → 行动结果(据 CrowdStrike 披露信息整理自绘)
4.3 双管齐下:载荷 URL 同步下架
在 P2P 沉洞行动进行的同时,行动方还与国际执法机构协作,下架了当时正在托管 Sality 载荷的 URL。这些 URL 通过 URL 包分发,指向被入侵的或由运营者维护的 Web 服务器上的文件。切断下载渠道,可以确保仍持有活跃 URL 包的节点在行动过渡期也无法获取新的载荷。
至此,Sality 背后的运营者彻底失去了与受感染机器通信的能力:所有节点被隔离于其控制之外,僵尸网络无法再接收任何新任务。
05 行动之后:防御者该做什么
需要提醒的是,瓦解控制不等于清除感染。此次行动阻断了新载荷抵达受感染机器,但这些机器上已安装的既有恶意软件仍处于活跃状态,仍需清除。
CrowdStrike 建议各组织采取以下措施:
排查网络日志与终端遥测:所有 Sality 感染机器现在都会向行动方运营的沉洞发出信标。检查是否存在发往"灯塔"IP 188.166.101[.]148 的 UDP 流量,任何命中都意味着存在需要处置的 Sality 感染;
监控载荷 URL:对本文技术附录中列出的最后一批 URL 包的任何访问尝试,均表明存在感染;
内存扫描:使用官方提供的 YARA 规则扫描运行中的进程,通过检测僵尸网络硬编码的 RSA 公钥(用于验证载荷签名)来发现活跃感染。
06 结语:没有真正"打不死"的架构
Sality 的倒下传递了一个重要信号:长期以来被视为"反瓦解护盾"的 P2P 架构,并非不可战胜。只要有足够的技术投入、对协议行为的精确理解,以及执法机构与产业伙伴的协同,再顽固的犯罪基础设施也可以被拆除。
这个案例还有一层耐人寻味的启示:让 Sality 屹立二十多年的设计,恰恰也是它无法修复自身缺陷的原因。一个永远停留在 2008 年协议水平的系统,注定要在 2026 年面对积累了二十年研究理解的对手。安全攻防的时间复利,最终站在了防御者一边。
这一案例也印证行业观点:威胁检测只能拿到情报,主动瓦解行动才可以直接削弱攻击者基础设施。
07 技术附录
附录 A:MITRE ATT&CK 技术映射
战术(Tactic) | 技术 ID | 技术名称 | 说明 |
初始访问 / 横向移动 | T1091 | Replication Through Removable Media | 通过感染可移动存储设备上的可执行文件并配合 autorun 机制传播 |
横向移动 | T1080 | Taint Shared Content | 感染网络共享目录中的可执行文件实现扩散 |
执行 | T1204 | User Execution | 受害者执行被感染的宿主程序后触发病毒代码 |
持久化 | T1547.001 | Boot or Logon Autostart Execution | 通过注册表自启动项、启动目录实现持久化 |
防御规避 | T1027 | Obfuscated Files or Information | 多态变形引擎与入口点模糊(EPO)技术,每次感染产生不同代码特征 |
防御规避 | T1055 | Process Injection | 向其他运行中进程(排除系统关键进程)进行远程线程注入 |
防御规避 | T1562.001 | Impair Defenses | 终止安全软件进程、删除/破坏杀毒软件文件、屏蔽安全厂商网站访问、删除 SafeBoot 注册表项以阻止进入安全模式 |
防御规避 | T1014 | Rootkit | 2010 年后的部分变种集成 Rootkit 能力以隐藏自身 |
防御规避 / 发现 / 权限维持 | T1112 | Modify Registry | 修改防火墙策略、安全中心提示、隐藏文件设置等注册表项 |
命令与控制 | T1095 | Non-Application Layer Protocol | 基于自定义 UDP 协议(RC4 加密)的 P2P 通信,端口由计算机名伪随机生成 |
命令与控制 | T1090 | Proxy | 分发代理服务载荷,将受感染主机用作流量中转 |
命令与控制 | T1105 | Ingress Tool Transfer | 通过 URL 包 / 文件包下载并执行额外载荷 |
收集 | T1115 | Clipboard Data | EggJagger 载荷监控剪贴板并替换加密货币钱包地址(Clipjacking) |
收集 | T1056.001 | Input Capture: Keylogging | 早期变种具备键盘记录能力 |
影响 | T1498 | Network Denial of Service | 多次分发 DDoS 载荷实施定向攻击(2016、2022、2023) |
附录 B:失陷指标(IoC)
沉洞"灯塔"IP(检测发往该地址的 UDP 流量):
188.166.101[.]148
瓦解前最后分发的 URL 包(任何访问尝试均表明感染):
Sality V3 URL 包(版本 25202):
http[:]//theunforgiven.p8[.]hu/img/top.gif
http[:]//painelwebradiodigital.awardspace[.]info/v3/readme.pdf
http[:]//sgwebdesigner.free[.]fr/left.gif
http[:]//www.yonelco[.]com/icon.png
http[:]//pozdravizbeograda[.]com/readme.pdf
http[:]//highclass.atspace[.]com/styles.gif
http[:]//situluimihai.3x[.]ro/top.png
Sality V4 URL 包(版本 31010):
http[:]//gatheredovertime[.]com/nb4
http[:]//imagebucket[.]biz/nv4
附录 C:YARA 内存扫描规则
以下规则通过扫描运行进程中的僵尸网络硬编码 RSA 公钥(用于验证载荷签名)来检测活跃的 Sality 感染。
Sality V3:
rule CrowdStrike_Salityv3_01 : p2p sality version3
{
meta:
copyright = "(c) 2026 CrowdStrike Inc."
description = "Sality Version 3"
version = "202608181745"
last_modified = "2026-08-18"
actor = "SALTY SPIDER"
malware_family = "Sality"
strings:
$ = "IPFILTERDRIVER"
$ = {
99 65 40 34 cd ae 9d b3 af f5 82 ad 8c 2e 63 51
e1 34 53 fa 47 54 e4 70 97 4c a5 3d 3c a3 9b 57
29 02 49 89 46 4c f2 76 b1 ad 8e 79 5d b2 41 28
4f 2a a5 9a 13 18 c0 1d ed da e4 52 98 16 7f b3
a9 d7 7a e4 c4 6f 51 f6 38 fe a6 fb ad 8c 64 1d
23 b5 a4 9d 40 20 74 61 be 81 c3 eb 3d 24 01 75
13 07 58 c5 f0 56 09 94 58 e7 6b c3 f3 8c 70 73
4e f5 0b 2d 88 0b 9a bd 18 e4 36 72 26 1a 32 9b
}
condition:
all of them
}
Sality V4:
rule CrowdStrike_Salityv4_01 : p2p sality version4
{
meta:
copyright = "(c) 2026 CrowdStrike Inc."
description = "Sality Version 4"
version = "202608181745"
last_modified = "2026-08-18"
actor = "SALTY SPIDER"
malware_family = "Sality"
strings:
$ = "IPFILTERDRIVER"
$ = {
bb d2 96 8e ed 0b 93 8a 82 e4 e9 bc c3 c5 32 72
4c 08 aa 56 9f 2d 64 0f 1b 86 68 0e 2b 62 e9 c6
35 6d 75 b6 32 2d 4f a8 b8 d9 2a 44 8b f0 7f e0
d9 8e be 66 9d a6 7a 9a 6d e1 45 f1 d3 48 01 0d
39 2e 9d 2a 45 fb 0b fb 1d 96 f3 b7 4f 55 e5 e1
16 5b f7 a1 cc 7c 87 c0 c8 9c ef 4e ce 29 58 e2
99 bd 8a 7a 55 be b4 1c d9 79 52 25 d8 28 86 7b
81 39 98 5f 2c 6f 14 bb a5 6b ce 44 e5 91 93 38
8b 9a c1 74 46 84 e1 26 ec 04 94 96 75 09 e3 b5
88 d6 08 f0 4a b7 84 d3 13 2f 00 cc d5 2a 8c 17
07 09 de 6f b0 d3 d6 2b c6 a6 9d 38 18 8c 74 9d
86 16 d5 48 6e 97 32 db e1 4e f8 04 a6 00 7c 16
2e 70 1c 23 37 dd 5a 52 76 62 70 d4 86 66 6e df
0c e9 a1 68 f9 5e e8 dd 09 0c 02 7d 35 d0 54 e7
00 c0 14 9f ce 4a 9f f3 99 50 1a 0b cd cc ff 05
b9 04 12 e2 11 76 2f ff a4 6e 64 18 e0 d0 7b 3b
}
condition:
all of them
}
08 参考链接
https://crowdstrike.com/en-us/blog/inside-sality-botnet-disruption-operation
https://aroundcyber.wordpress.com/wp-content/uploads/2012/11/sality_peer_to_peer_viral_network.pdf
https://www.botconf.eu/wp-content/uploads/formidable/2/OK-P18-Kleissner-Sality.pdf
https://www.shadowserver.org/what-we-do/network-reporting/drone-botnet-drone-report/