Sorry勒索病毒技术分析:从漏洞利用到三重加密的完整攻击链
前言
2026年3月以来,一种名为“Sorry”的新型勒索病毒家族在全球范围内迅速蔓延,我国已发现多起攻击事件,国家计算机病毒应急处理中心于8月10日发布了紧急预警报告。该病毒主要针对暴露在互联网上的Linux Web服务器,尤其是使用cPanel、WHM等托管控制面板的系统。
本文将从技术角度深度剖析Sorry勒索病毒的攻击链、加密算法实现及防御对策,帮助安全从业者理解这一威胁的完整面貌。
一、初始入侵:CVE-2026-41940漏洞利用
Sorry勒索病毒的攻击链路始于对cPanel&WHM身份认证绕过漏洞(CVE-2026-41940)的利用。该漏洞CVSS评分为9.8(高危),影响范围涵盖cPanel&WHM 11.86至11.136多个版本,PoC已公开且在野利用已被确认。
漏洞技术细节
该漏洞源于cPanel登录流程中的会话加载与保存机制存在逻辑缺陷。攻击者通过Basic认证头在密码字段注入CRLF字符,并利用缺少ob(对象)部分的会话cookie避免密码编码,从而将恶意键值对写入原始会话文件。
完整的攻击利用分为四个阶段:
Stage 1:获取预认证会话
攻击者向/login/?login_only=1发送任意用户名/密码请求,服务器会返回一个有效的whostmgrsession cookie,无需任何合法凭证即可获取会话。
Stage 2:CRLF注入泄露令牌
构造特制的Authorization头(Base64编码的CRLF载荷),在Cookie中携带已获取的session base值。注入的payload包含:
user=root
hasroot=1
tfa_verified=1
cp_security_token=/cpsessXXXXXXXXXX
成功后可获取10位数字的WHM安全令牌(cpsess令牌)。
Stage 3:触发会话状态转换
访问/scripts2/listaccts触发do_token_denied流程,将原始会话转换为缓存会话。即使返回HTTP 401,令牌仍对后续API调用有效。
Stage 4:验证并执行
使用获取的令牌调用WHM API(如/json-api/version),即可获得root级别访问权限。攻击者可进一步通过Cron::add_line API创建定时任务实现远程代码执行。
二、载荷投递与执行
获取服务器权限后,攻击者会静默投放并运行“Sorry”勒索病毒主程序。该病毒使用GO语言编写,伪装成常见的sshd进程以规避检测。载荷以MSI安装包形式封装,托管于攻击者控制的阿里云OSS存储桶中,利用合法云存储平台规避基于域名信誉的安全过滤机制。
三、攻击行为链深度分析
3.1 环境探测与信息收集
病毒运行后会生成一个唯一的受害者标识符,包含当前用户名、主机名、CPU数量、操作系统信息、活跃网络接口等信息,回传给攻击者服务器。同时计算基于设备环境特征的host_hash值,供攻击运营侧追踪管理受害主机。
3.2 扫清障碍
病毒会主动终止以下服务:
- 数据库服务:MSSQL、MySQL、Oracle、PostgreSQL等
- 安全防护服务:杀毒软件、EDR等
- 备份服务:防止数据恢复
这一操作的目的是释放被数据库进程持有的文件独占句柄,确保后续加密能够完整覆盖数据库文件。值得注意的是,多个分析报告均指出病毒唯一定向停止了MSSQL相关服务,表明其攻击目标对Windows服务器环境的针对性极强。
3.3 数据窃取(双重勒索)
在加密之前,病毒会批量窃取业务数据、配置文件及各类内部文件。这构成了双重勒索的基础——攻击者不仅加密数据,还以公开泄露数据相要挟,增加受害者支付赎金的压力。
3.4 文件加密算法分析
三层混合加密架构
Sorry勒索病毒采用了高度复杂的多层密钥封装设计,具体实现为RSA+RSA+AES-GCM的算法组合方案。
加密流程如下:
- 文件级AES密钥生成:对每个文件单独生成一个AES-GCM密钥和所需的Nonce/IV值
- 现场RSA密钥对生成:调用RSA算法生成一对公私钥
- 第一层加密:使用现场生成的RSA私钥加密AES-GCM密钥
- 第二层封装:使用病毒内置的主RSA公钥加密现场生成的RSA私钥
- 分块加密:原文件按1MB分块,逐块使用AES-GCM加密
加密文件结构
最终加密完成的文件输出结构如下:
+------------------+
| Magic头部 | 1字节,固定值 0x11
+------------------+
| CHUNK长度值 | 4字节,大端顺序
+------------------+
| RSA封装块 | 前置4字节长度值 + 密文块
+------------------+
| CHUNK_CIPHER区 | 分块加密数据(每块1MB)
+------------------+
| 终止数据 | 4字节,固定 0x00填充
+------------------+
文件头部包含Magic值0x99000008,随后是RSA加密的AES密钥等元数据。分块加密方式使大文件加密更高效,也增加了部分恢复的难度。
规避检测技术
病毒采用基于NTAPI直接调用系统操作的方式,绕过大多数安全软件的常规API调用监控,直接向系统内核发起请求,实现所谓的“盲区加密”。
排除列表
为避免加密系统关键文件导致系统异常,病毒排除了以下路径和文件:
- 排除的目录:
\windows、\git\mingw64、\go\src、\java\jdk、\vmware\drivers等 - 排除的文件:
thumbs.db、netuser.dat、autorun.inf、desktop.ini、pagefile.sys、.ds_store、.sorry、readme.md
3.5 内网横向扩散
完成加密后,病毒会扫描内网SSH端口(22、2222、22222),通过弱密码尝试向其他Linux主机横向传播。这一机制使其具备主动传播能力,可能导致企业内网大面积感染。
四、加密强度与恢复难度
该病毒采用的加密方案在数学上具有极高的破解难度:
- AES-256-CTR/AES-GCM用于文件数据加密,每个文件使用独立密钥
- RSA-2048用于密钥封装
- 分层密钥设计确保即使获取部分密钥也无法解密全部文件
在没有攻击者私钥的情况下,被加密的数据目前没有可靠的恢复方法。网上所谓的“解密工具”大多是骗局,且攻击者提供的通信工具可能包含木马,切勿下载尝试。
五、防御策略建议
5.1 漏洞修复(优先级最高)
立即排查暴露在互联网上的cPanel、WHM、WP Squared服务,将相关软件升级至安全版本:
- cPanel&WHM 11.86.* >= 11.86.0.41
- cPanel&WHM 11.110.* >= 11.110.0.97
- cPanel&WHM 11.126.* >= 11.126.0.54
- WP Squared 11.136.* >= 11.136.1.7
5.2 网络层防护
严禁将服务器管理端口(SSH、数据库等)直接暴露在互联网。确有远程管理需求时,应通过VPN、运维堡垒机或专用管理网络访问,并配置源地址白名单、多因素认证、异常访问告警。
5.3 口令安全管理
避免使用弱口令,避免大量主机使用相同用户名和口令。这是阻断病毒内网横向传播的关键。
5.4 离线备份(最后防线)
建立独立、可靠的数据备份和恢复机制,对网站文件、数据库、业务配置、源代码及重要日志进行定期备份,备份数据应以离线方式妥善保存。在线备份同样可能被病毒加密,离线备份是唯一可靠的恢复手段。
5.5 应急响应
一旦发现异常文件加密或系统日志异常,立即断开受感染设备的网络连接,防止病毒向内网扩散。可尝试内存取证,因Go语言垃圾回收机制,内存中可能残留未加密的密钥材料。
六、总结
Sorry勒索病毒代表了一次技术上的演进:从高危漏洞利用(CVE-2026-41940)到自动化载荷投递,再到三层混合加密和主动内网扩散,形成了完整的工程化攻击链。其GO语言编写、进程伪装、NTAPI直接调用等特征,显著提升了检测难度。
对于大多数企业而言,事前预防的价值远大于事后补救。及时修补漏洞、严格管理端口暴露、强化密码策略、建立离线备份机制,是抵御这类威胁最有效的手段。对于可疑文件,可上传至国家计算机病毒协同分析平台(https://virus.cverc.org.cn)进行安全性检测。
参考来源:国家计算机病毒应急处理中心预警报告、360安全卫士、奇安信安全内参、亚信安全分析报告等