1. 项目概述:直面新版MEDUSA LOCKER的威胁
最近在分析样本时,又撞上了MEDUSA LOCKER勒索病毒的新变种。这个“老熟人”每次更新,总会带来一些新的“惊喜”,无论是加密算法的微调、传播方式的升级,还是勒索策略的演变,都让安全分析工作充满挑战。这次的新版MEDUSA LOCKER,从我们捕获的样本来看,其代码混淆、反分析手段以及加密流程的复杂度,相比以往版本有明显提升,对企业和个人数据安全的威胁等级也随之水涨船高。对于安全从业者、企业IT管理员,甚至是普通用户而言,理解这类勒索病毒的运作机理,不再是可有可无的知识储备,而是构筑有效防御阵线的必修课。
这篇文章,我将以一个一线分析师的视角,带你深入新版MEDUSA LOCKER的“五脏六腑”。我们不会停留在表面的现象描述,而是会拆解其从执行入口到完成加密的全过程,剖析其使用的关键技术点,比如它是如何绕过常规检测、如何高效锁定文件、以及那个令人头疼的勒索信生成逻辑。更重要的是,我会分享在实际动态与静态分析过程中,那些工具书里不会写的“踩坑”经验和排查技巧。无论你是想深入了解勒索病毒技术细节的安全研究员,还是负责企业终端防护的工程师,亦或是希望提升自身安全意识的用户,这篇深度分析都能为你提供直接的、可操作的参考。
2. 病毒整体设计与攻击链拆解
拿到一个可疑样本,第一步永远是先建立对它的整体认知。新版MEDUSA LOCKER在攻击链的设计上,延续了“初始访问-执行-驻留-横向移动-数据加密-勒索”的经典勒索软件生命周期,但在每个环节都做了更具针对性的“优化”。
2.1 初始入侵与载荷投递
新版样本的投递方式更加多样化。我们观察到的主要途径包括:
-
鱼叉式钓鱼邮件
:这是目前最高效的方式之一。攻击者会伪装成合作方、物流通知或财务审计等可信来源,邮件附件通常是带有双重扩展名的文件,例如
Invoice.pdf.exe或Delivery_Note.scr。利用Windows默认隐藏已知文件扩展名的设置,诱骗用户点击。 - 漏洞利用工具包 :攻击者会利用未修补的公共漏洞,特别是那些影响广泛的办公软件或浏览器插件漏洞,在用户访问恶意网站时实现“无文件”投递或直接下载执行。
- 恶意广告与软件捆绑 :在一些不规范的下载站或破解软件中,勒索病毒被作为“赠品”捆绑安装。
注意 :不要以为企业有防火墙就万事大吉。这些投递方式往往针对的是内部人员这个最薄弱的环节。社会工程学攻击的成功率一直居高不下。
2.2 执行流程与模块化设计
样本执行后,其内部逻辑呈现出清晰的模块化特征,这有利于攻击者后期维护和功能迭代。一个典型的执行流如下:
- 解包与自解密 :样本外层通常包裹着一层或多层壳(如UPX、VMProtect的变种),或使用简单的异或、AES自解密代码。其目的是绕过静态特征码检测。我们的样本在内存中解密出核心的.NET程序集(如果是C#编写)或PE文件。
-
环境侦察与反分析
:解密后的主模块会立即进行一系列检查:
-
虚拟机/沙箱检测
:检查系统进程列表(如
vmtoolsd.exe,vmwaretray.exe)、注册表键值、硬件设备特征(如MAC地址前缀)、以及通过WMI查询Win32_ComputerSystem中的Manufacturer和Model字段。 -
调试器检测
:调用
IsDebuggerPresent、CheckRemoteDebuggerPresent等API,或通过NtQueryInformationProcess查询ProcessDebugPort。 - 地域与语言检查 :检查系统默认区域设置,如果发现是俄语、乌克兰语等特定国家地区,可能会自动退出,这是攻击者为了避免触犯所在国家法律的一种常见策略。
-
虚拟机/沙箱检测
:检查系统进程列表(如
-
提权与持久化
:如果当前不是管理员权限,病毒会尝试利用UAC绕过技术(如事件查看器
eventvwr.exe的自动提升漏洞)或已知的本地提权漏洞获取SYSTEM权限。成功后,会通过多种方式建立持久化:- 创建计划任务,设置为系统启动或定期执行。
-
在注册表
Run或RunOnce键下添加自启动项。 - 创建Windows服务。
-
篡改系统工具(如
schtasks.exe,bitsadmin.exe)的映像劫持。
2.3 横向移动与网络传播
在企业内网环境中,MEDUSA LOCKER表现出强烈的横向移动欲望。它不仅仅满足于感染单机。
-
利用SMB协议
:它会尝试使用内置的弱口令字典(如
Administrator/123456,admin/admin)或窃取到的凭据,对同一网段内的其他主机进行SMB连接和身份验证。一旦成功,便通过PsExec或WMI远程执行命令,将自身副本投递过去。 -
窃取与复用凭据
:使用
Mimikatz原理或直接读取LSASS进程内存,转储当前系统内存中缓存的明文密码、NTLM哈希和Kerberos票据。这些凭据是它在内网中横向渗透的“万能钥匙”。 -
利用漏洞扫描
:内部集成或下载轻量级的漏洞扫描模块,针对内网IP段扫描诸如
EternalBlue(MS17-010)、BlueKeep(CVE-2019-0708)等高危漏洞,并尝试利用。
这一阶段是阻止勒索病毒在内网大规模爆发的关键“阻击点”。如果终端检测与响应(EDR)或网络流量分析(NTA)设备能够及时发现异常的SMB连接暴破或横向WMI执行行为,就有机会在加密发生前遏制疫情。
3. 核心加密机制深度解析
这是MEDUSA LOCKER最核心、破坏性最强的部分。新版在加密算法、密钥管理和文件处理策略上都有所调整。
3.1 混合加密体系:RSA + AES
现代勒索病毒几乎都采用非对称与对称加密结合的混合模式,MEDUSA LOCKER也不例外,但它在实现细节上值得深究。
-
本地密钥生成
:病毒运行后,首先在内存中随机生成一个256位的
AES对称密钥,我们称之为“文件加密密钥”。同时,它可能生成一个随机的IV(初始化向量)。这个AES密钥用于实际加密用户文件,因为AES加密速度快,适合处理海量数据。 -
非对称加密保护
:病毒体内硬编码或从C2服务器获取一个
RSA公钥。它使用这个RSA公钥,对刚才生成的AES密钥(和IV)进行加密。加密后的结果我们称为“加密的密钥 blob”。 -
密钥处理流程
:这个“加密的密钥 blob”对于没有对应
RSA私钥的用户来说是无法解密的。病毒通常会把这个blob以某种形式(如Base64编码)写入每个被加密文件的尾部,或者集中写入一个配置文件(如!RECOVERY_INFO.txt)。而内存中的原始AES密钥在完成所有文件加密后会被立即清零销毁。
为什么采用这种模式?
从攻击者角度,这完美解决了安全性与效率的矛盾。
AES
高效加密文件,
RSA
安全保护
AES
密钥。即使你逆向出病毒程序,也只能拿到
RSA
公钥,而解密的私钥牢牢掌握在攻击者手中。除非
RSA
密钥长度过短(如512位)存在被破解的理论可能,否则对于2048位或以上的标准密钥,在可预见的时间内暴力破解是不现实的。
3.2 文件遍历与加密策略
病毒如何决定加密哪些文件?它可不是盲目地全盘扫荡。
-
目标目录与排除列表
:病毒会预先定义两份列表。
-
目标扩展名列表
:这是一个庞大的列表,涵盖文档(
.doc,.docx,.pdf,.xls,.xlsx)、数据库(.mdb,.sql,.dbf)、源代码(.cs,.java,.cpp)、设计文件(.psd,.ai,.cad)、压缩包(.zip,.rar,.7z)甚至虚拟机磁盘文件(.vmdk,.vhd)等数百种后缀。它只加密这些列表内的文件,以追求最大破坏效果。 -
排除目录列表
:为了避免导致系统崩溃而无法支付赎金,病毒会跳过系统关键目录,如
Windows,Program Files,Program Files (x86),Boot等。有时也会排除某些安全软件的安装目录。
-
目标扩展名列表
:这是一个庞大的列表,涵盖文档(
-
多线程加密
:为了加快加密速度,病毒会创建多个线程,每个线程负责一个逻辑磁盘或一个目录树的遍历与加密。它会采用
FindFirstFile/FindNextFile的API递归遍历所有驱动器(从C:到Z:)。 -
加密过程与文件处理
:
- 读取 :以二进制模式打开目标文件。
-
加密
:采用
AES-256-CBC模式,对文件内容进行块加密。对于大文件,可能只加密文件头部一定大小的数据(如前1MB),就能使文件无法正常打开,同时极大提升加密速度。这种“部分加密”策略在新版勒索中很常见。 -
重命名
:加密完成后,文件后缀会被修改。MEDUSA LOCKER常用的后缀包括
.medusa,.locked,.[id]-[勒索邮箱].medusa等格式。这个新后缀是识别感染的重要标志。 - 标记 :在文件末尾追加加密的密钥blob和自定义标记,或者在文件头部写入特定魔数。
3.3 勒索信生成与通信
加密完成后,病毒会在每个目录下生成勒索信,通常命名为
!!!READ_ME!!!.txt
,
_README_.html
或
RECOVERY-FILES.txt
。
勒索信的内容模板化,但包含关键信息:
- 受害者ID :一个唯一的标识符,通常与加密密钥blob中的ID对应。攻击者用此来区分不同的受害者。
-
Tor支付站点链接
:一个
.onion的暗网址址,引导受害者通过Tor浏览器访问支付页面。 -
联系邮箱
:作为备用联系方式,如
medusateam@onionmail.org等。 - 威胁与说明 :告知文件已被加密,声称拥有唯一解密密钥,警告不要自行尝试修复(尤其是使用第三方工具,声称可能导致永久损坏),并设定支付赎金的截止日期,逾期赎金翻倍或数据被删除。
病毒在运行过程中,可能会尝试与C2服务器通信,上报感染成功的信息(如受害者ID、机器名、IP地址等)。通信可能使用HTTP/HTTPS,也可能使用自定义协议,数据往往经过编码或加密。分析网络流量行为是追踪攻击源和了解其基础设施的重要途径。
4. 静态与动态分析实操要点
理论讲完了,我们进入实战环节。如何亲手“解剖”一个MEDUSA LOCKER样本?下面是我常用的分析流程和工具链。
4.1 静态分析:窥其全貌
静态分析是在不运行样本的情况下,通过反汇编、反编译等手段分析其代码和结构。
-
基础信息收集
:
-
工具
:
PEiD,Exeinfo PE,Detect It Easy。 - 操作 :检查样本是否加壳、编译器类型(如Microsoft Visual C/C++, .NET)、入口点、区段信息等。新版MEDUSA LOCKER多为.NET程序或使用强壳的Native程序。
-
工具
:
-
字符串提取
:
-
工具
:
Strings,FLOSS。 -
操作
:提取样本中的所有可读字符串。这是快速获取线索的捷径。你可能会发现:
- 可疑的URL或IP地址(C2服务器)。
-
加密算法相关的常量(如
AES,RSA,CryptoStream)。 - 文件扩展名列表、排除目录列表。
- 勒索信模板内容。
- 调试信息或错误提示(有时开发者会留下)。
-
工具
:
-
反汇编与反编译
:
-
对于.NET样本
:使用
dnSpy或ILSpy。这是.NET逆向的利器,几乎可以完美还原源代码。直接搜索上述字符串,定位到关键函数,如加密函数、文件遍历函数、网络通信函数。 -
对于Native样本
:使用
IDA Pro或Ghidra。如果样本加壳,需要先脱壳。通过字符串交叉引用(Xrefs)找到关键代码位置,分析其函数调用逻辑(如CryptEncrypt,FindFirstFileExW,CreateFileW等API的调用)。
-
对于.NET样本
:使用
实操心得 :静态分析时,重点关注样本导入表(IAT)。大量引入加密API(
Advapi32.dll中的Crypt*系列)、网络API(Wininet.dll,Ws2_32.dll)和文件操作API,是勒索病毒的典型特征。同时,注意寻找硬编码的公钥,它通常以-----BEGIN PUBLIC KEY-----开头的一长串Base64编码字符串形式存在。
4.2 动态分析:观其行径
动态分析是在受控环境中运行样本,观察其行为。 务必在隔离的虚拟机或专用沙箱中进行!
-
环境准备
:
-
使用
VMware或VirtualBox搭建干净的Windows分析环境(如Windows 10)。 -
安装行为监控工具:
Process Monitor,Process Explorer,API Monitor,Wireshark。 - 准备快照:在运行样本前,对虚拟机创建完整快照,方便随时回滚。
-
使用
-
进程与文件行为监控
:
-
运行样本前,先启动
Process Monitor,设置好过滤器(如排除系统进程的噪音)。运行样本后,观察:-
进程树
:样本创建了哪些子进程?(如
cmd.exe,powershell.exe用于执行命令)。 - 文件操作 :它遍历了哪些目录?创建、读取、写入了哪些文件?(重点关注对用户文档目录的写入和重命名操作)。
-
注册表操作
:是否修改了
Run键、服务项或其它配置?
-
进程树
:样本创建了哪些子进程?(如
-
运行样本前,先启动
-
网络行为监控
:
-
启动
Wireshark,捕获所有网络流量。观察样本是否尝试对外发起连接。注意查看DNS查询记录和HTTP/HTTPS请求。对于Tor连接,你可能只能看到到已知Tor中继节点的流量,而无法解密内容。
-
启动
-
内存转储分析
:
-
在样本运行过程中(最好是在其完成加密例程但尚未退出时),使用
Process Explorer的“Create Dump”功能转储其完整内存。 -
使用
Volatility或Rekall等内存取证框架分析转储文件,可能提取出尚未加密的AES密钥、网络通信的明文数据等关键信息。这对于.NET程序尤其有效,因为.NET对象在内存中有清晰的结构。
-
在样本运行过程中(最好是在其完成加密例程但尚未退出时),使用
动态分析的核心是关联性
。将
Process Monitor
中看到的文件重命名操作,与
Wireshark
中看到的对外请求时间点关联起来,可以勾勒出病毒完整的行动时间线。
5. 常见问题排查与防御建议实录
在分析MEDUSA LOCKER以及应对真实感染事件时,会遇到一些典型问题。这里记录下我的排查思路和防御心得。
5.1 分析过程中的常见挑战与解决
| 挑战 | 现象/原因 | 排查思路与解决方案 |
|---|---|---|
| 强壳/混淆 | 静态分析工具无法识别入口点,字符串提取为空或乱码。 |
1.
尝试通用脱壳机
:如
UPX
壳可用官方工具脱。对于商业壳(VMProtect, Themida),脱壳难度极大。
2. 动态脱壳(Dump) :在调试器中运行样本,在其解密自身代码到内存并跳转到OEP(原始入口点)时,暂停执行,将内存中的进程镜像转储(Dump)到文件。使用
Scylla
、
PETools
等工具修复转储文件的导入表。
3. 重点转向动态分析 :如果静态分析受阻,立即转入沙箱动态分析,行为不会说谎。 |
| 反调试/反虚拟机 | 样本在分析环境中静默退出或无任何恶意行为。 |
1.
识别检测点
:在调试器中单步执行,观察在哪个
API
调用(如
CheckRemoteDebuggerPresent
)或条件判断后程序分支走向退出。
2. 手动绕过 :在调试器中修改标志寄存器(ZF)或关键内存值,改变判断逻辑。 3. 使用专用分析系统 :使用如
Remnux
、
Flare-VM
等集成了反反调试、反反虚拟机技巧的分析环境。
|
| 密钥无法提取 |
内存转储中找不到明文的
AES
密钥。
|
1.
转储时机不对
:密钥可能只在加密瞬间存在于内存,加密完成后立即销毁。尝试在加密函数内部设置断点,并在断点触发时转储。
2. .NET样本优势 :对于.NET程序,使用
dnSpy
调试,可以在加密函数中直接查看局部变量,找到密钥对象的实例。
|
| 网络通信隐匿 |
Wireshark
捕获不到任何可疑外连,或全是加密流量。
|
1.
检查协议
:可能使用
DNS隧道
、
ICMP
或自定义端口协议。查看不常见的协议流量。
2. 检查代理设置 :病毒可能会修改系统的代理设置,将所有流量导向一个代理服务器。检查注册表
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
。
3. 使用沙箱网络报告 :上传样本到
Hybrid Analysis
、
Any.run
等在线沙箱,它们通常能提供更详细的网络行为分析。
|
5.2 企业防护与应急响应建议
基于对MEDUSA LOCKER的分析,给企业安全防护一些实在的建议:
-
预防优于补救 :
- 员工培训 :定期进行钓鱼邮件演练和安全意识培训,这是成本最低、效果最显著的防御措施。
-
补丁管理
:建立严格的漏洞扫描和补丁更新流程,尤其是针对
SMB、RDP等高危服务。 -
最小权限原则
:所有用户,包括管理员,日常工作应使用普通权限账户。禁用不必要的网络共享和
WMI服务。 - 应用程序白名单 :在关键服务器上部署应用白名单,只允许运行经过审批的程序。
- 强密码策略 :强制使用复杂密码并定期更换,防止勒索病毒通过弱口令横向移动。
-
部署高级防护 :
- 下一代防病毒 :部署具备行为检测能力的EDR产品,能够识别“大量文件被快速重命名并修改内容”的异常行为,而不仅仅是依赖特征码。
- 网络分段与隔离 :将核心业务服务器、数据库与其他网络区域隔离,限制不必要的网络访问,能有效遏制横向移动。
- 邮件与网关安全 :部署高级邮件安全网关,能够检测和拦截带有恶意附件或链接的钓鱼邮件。
-
备份!备份!备份! :
- 3-2-1原则 :至少保留3份数据副本,使用2种不同介质,其中1份异地离线保存。 确保备份数据与生产网络物理隔离 ,防止备份也被加密。
- 定期恢复演练 :定期测试备份数据的恢复流程,确保在灾难发生时能真正用得上。
-
感染事件应急响应 :
- 立即隔离 :物理拔掉网线或禁用网络适配器,防止感染扩散。
- 识别样本 :采集样本,通过沙箱或分析确定是MEDUSA LOCKER还是其他家族。
- 评估影响 :确定被加密的范围和重要程度。
- 决策 : 绝不建议支付赎金 。支付不仅助长犯罪,且不能保证能拿回数据。应从隔离的备份中恢复数据。
- 根除与重建 :格式化受感染主机,从干净介质重新安装操作系统和应用程序,再从备份恢复数据。全面检查内网其他主机是否被渗透。
分析像MEDUSA LOCKER这样的勒索病毒,是一个不断与攻击者博弈的过程。他们的技术在进化,我们的分析方法和防御策略也必须随之升级。这份分析报告中的技术细节和实操经验,希望能为你点亮一盏灯,在应对下一波威胁时,能多一份从容和把握。记住,在安全领域,最大的风险往往来自于“没想到”和“以为不会发生”。保持警惕,持续学习,扎实做好基础防护,才是应对一切网络威胁的基石。

868

被折叠的 条评论
为什么被折叠?



