Locked勒索病毒技术剖析:从混合加密到防御实战
2026/7/7 6:23:48 网站建设 项目流程

1. 项目概述:当勒索病毒披上“老乡”的外衣

最近在分析一个名为“中国人不骗中国人?_locked”的勒索病毒样本时,我内心是有点五味杂陈的。这个病毒的名字起得极具迷惑性,它试图利用一种“老乡见老乡”的情感共鸣来降低受害者的警惕性,但其内核却是实打实的恶意勒索软件。后缀“_locked”清晰地表明了它的家族归属——Locked勒索病毒家族。这个家族近年来非常活跃,攻击手法也在不断迭代。我之所以花时间深入分析这个样本,是因为它不仅仅是一个技术威胁,更是一种社会工程学与恶意代码结合的典型案例,对于安全从业者和普通用户理解当前威胁态势都很有价值。

简单来说,这个病毒会加密你电脑上的重要文件,比如文档、图片、数据库、压缩包等,然后在每个被加密的文件夹里留下一个名为“中国人不骗中国人?_locked.txt”的勒索信,要求你支付比特币赎金来换取解密工具。它瞄准的可能是那些对网络安全有一定了解但又不那么深入的中小企业或个人用户,利用“自己人”的幌子进行心理欺诈。通过拆解这个样本,我们不仅能看清它的技术实现,更能理解攻击者的思路,从而更好地进行防御。接下来,我会从技术原理、行为分析、逆向细节到防御建议,完整地走一遍这个病毒的分析流程。

2. 病毒整体行为与传播入口分析

2.1 初始感染与伪装手段

拿到这个样本,第一感觉是它的文件名和图标都经过了精心伪装。原始样本可能被命名为“发票.exe”、“对账单.pdf.exe”或者“重要资料.rar.exe”等,并配以相应的文档或压缩包图标,利用用户对常见文件类型的信任来诱导点击。这是勒索病毒最经典也是最有效的初始传播方式之一,通常通过钓鱼邮件、恶意网站下载或即时通讯工具传播。

执行后,病毒本体通常会立即在内存中解密或释放出真正的恶意载荷。为了躲避杀毒软件的静态扫描,核心的加密模块往往经过混淆、加密或打包。这个“中国人不骗中国人”样本就使用了多层壳或运行时解密技术。在动态分析时,我观察到它在运行初期会进行大量的反调试和虚拟机检测操作,比如检查进程列表是否存在调试器进程(如OllyDbg、x64dbg、Wireshark)、检测系统内存和CPU特征是否与常见虚拟机环境相符。如果发现可疑迹象,病毒可能会改变行为路径,比如停止加密或执行无害操作,给分析增加难度。

注意:在实际分析环境中,建议使用经过精心配置的、隐藏了典型虚拟机特征的沙箱或物理隔离机,并配合使用一些反反调试技巧,才能看到病毒完整的执行流程。

2.2 持久化与权限维持

为了确保在系统重启后仍能存活,病毒会尝试多种持久化机制。我分析的这个样本主要采用了以下两种常见方法:

  1. 创建计划任务:病毒会以高权限(通常通过UAC绕过或利用漏洞提权后)创建一个Windows计划任务。任务名可能看起来无害,比如“SystemUpdate”或“WindowsDefenderScan”,但触发条件设置为用户登录时或系统空闲时,执行的命令则是病毒本体或它的一个副本。通过schtasks /create命令配合特定参数实现。
  2. 注册表自启动项:这是更传统但依然有效的方法。病毒会在当前用户或本地机器的Run键下添加一个条目,例如HKCU\Software\Microsoft\Windows\CurrentVersion\Run,指向病毒文件的路径。更隐蔽的做法是注册为系统服务或利用“映像劫持”(Image File Execution Options)等技术。

此外,病毒会尝试关闭或干扰安全软件。它可能遍历进程列表,寻找知名杀毒软件和安全工具的进程名(如360sd.exe,wsctrl.exe(火绒),MsMpEng.exe(Windows Defender)等),然后尝试用taskkill /f /im命令强制结束它们。在一些更激进的版本中,甚至可能尝试利用驱动漏洞来禁用安全软件的防护功能。

2.3 网络通信与勒索信投递

加密文件是主要目的,但在此之前或同时,病毒通常会尝试与命令与控制服务器通信。分析网络流量可以发现,它可能会发送一些基本信息到服务器,如机器名、用户名、感染时间、操作系统版本等,有时也用于获取加密密钥或最新的配置信息。通信协议可能是HTTP/HTTPS,也可能使用更隐蔽的DNS隧道或利用公有云服务(如GitHub Gist、Pastebin)作为中继。

完成加密后,病毒会在每个包含加密文件的目录以及桌面、我的文档等醒目位置创建勒索信。这个样本的勒索信文件名为“中国人不骗中国人?_locked.txt”,内容通常是中英文双语,核心信息包括:

  • 告知文件已被加密:列出被加密的文件类型或直接说明所有重要文件已被锁定。
  • 提供“唯一”解密ID:一串哈希值,用于在支付赎金后“验证”你的身份。
  • 支付指示:要求支付一定数量的比特币(BTC)到指定的钱包地址,并威胁逾期不付会涨价或永久删除密钥。
  • 联系方式:提供一个或几个Tor匿名网站链接,有时也提供Tox或电子邮件作为备选联系渠道。“中国人不骗中国人”这句话就出现在这里,作为一种心理攻势,暗示攻击者是“自己人”,增加可信度(实为欺诈)。
  • 警告:禁止尝试自行解密、使用第三方解密工具或重命名文件,否则可能导致文件永久损坏。

3. 核心加密机制深度解析

3.1 文件遍历与目标筛选

加密模块启动后,第一件事是确定加密范围。病毒不会加密所有文件,那样效率太低且容易导致系统崩溃从而被立刻发现。它会遍历所有本地驱动器(C:, D:, E:...)、网络映射驱动器,甚至可能尝试访问可移动存储设备(U盘、移动硬盘)。

在遍历过程中,它会根据一套“目标列表”和“排除列表”进行筛选:

  • 目标文件扩展名:通常包括办公文档(.doc, .docx, .xls, .xlsx, .ppt, .pptx)、数据库文件(.mdb, .sql, .db)、源代码(.java, .cpp, .py, .cs)、设计文件(.psd, .ai, .cdr)、压缩包(.rar, .zip, .7z)、虚拟机磁盘文件(.vmdk, .vhd)以及图片、视频、PDF等个人和企业核心数据。我分析的样本列表里包含了数十种扩展名。
  • 排除目录和文件:为了避免系统无法启动,病毒通常会排除Windows系统目录(C:\Windows\,C:\Program Files\,C:\Program Files (x86)\)、杀毒软件目录以及一些关键的系统文件。有时也会排除它自己的可执行文件路径和勒索信文件。

3.2 混合加密算法的应用

这是勒索病毒的技术核心。现代勒索病毒普遍采用“混合加密”体制,结合了非对称加密(如RSA)和对称加密(如AES)的优点。

  1. 生成密钥对:病毒在受害机器上运行时,会利用系统加密API(如Windows的CryptGenKey)或自行实现的算法,生成一对RSA公钥和私钥。有时公钥是硬编码在病毒体内的,而私钥则只存在于攻击者的服务器上。
  2. 创建文件加密密钥:对于每一个要加密的文件(或一批文件),病毒会生成一个随机的AES密钥(称为“文件密钥”或“会话密钥”)。AES加密速度快,适合加密大文件。
  3. 加密文件内容:使用上一步生成的随机AES密钥,以AES-256-CBC等模式加密文件的原内容。加密后,文件头部或尾部会被写入特定的魔数(Magic Bytes)或标记,以便病毒识别哪些文件已被自己加密。
  4. 加密文件密钥:随机生成的AES密钥本身需要用一种只有攻击者才能解密的方式保护起来。这里就用到了RSA公钥。病毒使用内置的RSA公钥加密这个AES密钥,然后将加密后的结果(我们称之为“加密的文件密钥”)写入被加密文件的末尾,或者存储在一个单独的配置文件中。
  5. 销毁原始密钥:内存中的原始AES密钥和RSA私钥(如果生成了的话)会被安全地擦除。至此,受害者文件的内容被AES密钥加密,而AES密钥又被RSA公钥加密。要解密文件,必须先用RSA私钥解出AES密钥,再用AES密钥解密文件内容。而RSA私钥只在攻击者手中。

这种设计意味着,在没有私钥的情况下,通过暴力破解AES-256或RSA-2048/4096加密在计算上是不可行的,从而保证了勒索的“有效性”。

3.3 文件处理与后缀修改

加密完成后,病毒会修改原文件名。最常见的方式是在原文件名后追加一个特定的后缀。这个样本使用的后缀是“._locked”,所以report.docx会变成report.docx._locked。有些变种可能会改成report.docx.lockedreport.docx.[id-xxx].locked等格式。这个后缀主要起标识作用,告诉用户和病毒本身这个文件已被处理。

这里有一个非常重要的实操心得:病毒在加密过程中,可能会因为文件被其他进程占用(比如正在被Word编辑的文档)而遇到“文件被锁定”的错误(错误代码类似EBUSYERROR_SHARING_VIOLATION)。我观察到这个样本的处理逻辑是:

  • 首先尝试以独占读写模式打开文件。
  • 如果失败,它会尝试多次重试(例如循环5次,每次间隔100毫秒)。
  • 如果仍然失败,它可能会跳过这个文件,继续处理下一个,并在日志中记录失败。但它也可能采取更激进的手段,比如尝试结束占用文件的进程(taskkill),然后再进行加密。这解释了为什么有时在感染过程中,用户正在使用的程序会突然关闭。

4. 逆向工程与关键代码片段剖析

静态和动态分析结合,是理解病毒全貌的关键。我使用IDA Pro进行静态反汇编,并用x64dbg进行动态调试。

4.1 字符串解密与配置提取

病毒作者不会将敏感字符串(如C2服务器地址、加密算法参数、勒索信内容)明文存储在二进制文件中。在这个样本中,我发现了多处经过异或(XOR)或Base64编码的字符串。通过动态调试,在内存中定位到解密函数后,可以编写简单的Python脚本还原这些配置。

例如,在内存中捕获到一段解密例程,它循环对一段密文数据与一个固定密钥(如0xAA)进行XOR操作。还原后,我得到了诸如hxxp://malicious-domain[.]com/report(已脱敏)的C2地址,以及用于生成勒索信中“唯一ID”的种子字符串。

4.2 加密函数定位与算法识别

通过交叉引用(Cross-Reference)查找对关键API的调用,可以快速定位核心功能。我搜索了以下API:

  • FindFirstFileW/FindNextFileW:用于文件遍历。
  • CreateFileW:打开文件。
  • ReadFile/WriteFile:读写文件内容。
  • CryptAcquireContextW,CryptGenKey,CryptEncrypt:使用Windows CryptoAPI进行加密。
  • WinHttpOpen,WinHttpConnect,WinHttpSendRequest:用于网络通信。

在调试器中,在CryptEncrypt调用处下断点,可以观察到传入的算法标识。这个样本显示使用的是CALG_AES_256CALG_RSA_KEYX,证实了其采用AES+RSA混合加密的猜测。进一步跟踪,可以看到它生成一个随机的AES密钥,然后用一个硬编码的RSA公钥(通常以模数N和指数E的形式存储)去加密它。

4.3 反分析技巧对抗

这个样本包含了一些基础的反分析技巧:

  • 代码混淆:部分函数使用了无用的跳转指令(JMP)和花指令,干扰反汇编器的线性分析。
  • API动态解析:不直接导入Kernel32.dll的API,而是通过LoadLibraryGetProcAddress在运行时动态获取函数地址,增加静态分析的难度。
  • 时间延迟:在主逻辑开始前,插入无意义的循环或调用Sleep函数,以拖慢自动化沙箱的分析速度。

应对这些技巧,需要耐心。动态调试时,可以跳过初始的延迟循环;对于动态解析的API,可以在GetProcAddress调用后查看返回的函数地址,从而确定它要调用什么。

5. 防御、检测与应急处置方案

5.1 事前预防:构建安全基线

预防永远比补救成本更低。对于企业和个人用户,以下措施至关重要:

  1. 定期备份与隔离:执行严格的3-2-1备份策略。即至少保留3份数据副本,使用2种不同的存储介质(如硬盘+云存储),其中1份备份异地保存。最关键的是,备份必须与生产系统网络隔离,例如使用离线硬盘或启用版本控制且不可变性的云存储,防止备份也被加密。
  2. 最小权限原则:日常办公不使用管理员账户。为应用程序和服务配置所需的最小权限,可以极大限制勒索病毒的横向移动和破坏范围。
  3. 补丁管理:及时更新操作系统、办公软件、浏览器、插件(如Flash, Java)以及所有服务器应用(如Web框架、数据库)的安全补丁。很多勒索病毒利用的是已知但未修复的漏洞。
  4. 邮件与网络过滤:部署企业级邮件安全网关,过滤带有可疑附件(如.exe, .js, .vbs等可执行文件)或链接的邮件。在网络边界部署IPS/IDS,拦截已知的恶意域名和IP。
  5. 终端防护:安装并保持端点防护软件更新。启用应用程序白名单或行为监控功能,对试图大量加密文件的异常行为进行告警和阻断。
  6. 安全意识培训:教育员工识别钓鱼邮件,不点击不明链接,不打开来源不明的附件,尤其是警惕文件名和图标不符的文件(如看似PDF的.exe文件)。

5.2 事中检测:异常行为监控

即使预防措施到位,也需要有检测手段。可以关注以下异常迹象:

  • CPU/磁盘活动异常:勒索病毒加密文件时,CPU和磁盘(尤其是写入)活动会异常高涨。监控系统资源使用情况。
  • 大量文件被修改:安全软件或文件完整性监控工具会告警大量文件在短时间内被修改,且后缀名被统一添加。
  • 可疑进程:出现不认识的、高CPU或磁盘IO的进程。使用Process Explorer等工具查看进程的详细信息和命令行参数。
  • 网络连接:出现向陌生IP或域名(尤其是Tor出口节点)发起连接。

5.3 事后响应:感染后的处置流程

一旦确认感染,必须冷静、有序地应对:

  1. 立即隔离:物理断开受感染机器的网络(拔掉网线/禁用网卡),防止感染扩散到网络共享或其它设备。
  2. 识别病毒家族:查看勒索信内容和文件后缀,尝试在“No More Ransom”等网站查询该勒索病毒家族是否有免费的解密工具发布。安全公司有时在获得密钥后会发布解密器。
  3. 不要支付赎金:支付赎金不仅助长犯罪,而且不能保证能拿回数据。攻击者可能不守信用,或者提供的解密工具无法正常工作。
  4. 尝试恢复
    • 从干净备份恢复:这是最理想、最彻底的方式。
    • 利用卷影副本:某些勒索病毒会删除Windows的卷影副本(Volume Shadow Copy),但可以尝试使用ShadowExplorer等工具查看是否还有残留的快照。
    • 文件恢复软件:在文件被加密后,立即停止对磁盘的一切写入操作,使用数据恢复软件尝试恢复被加密覆盖前的原始文件(成功率取决于磁盘写入情况)。
  5. 取证与加固:保留被加密的文件和勒索信样本,用于后续分析和报案。在确认系统已彻底清除病毒(建议重装系统)后,从备份恢复数据,并全面审查和加固安全措施,修补导致入侵的漏洞。

6. 常见问题与排查技巧实录

在分析这类病毒和协助处理应急事件时,我遇到过不少典型问题,这里记录一下:

Q1:中了勒索病毒,文件后缀被改成._locked,还能恢复吗?A1:这完全取决于具体的病毒变种和加密实现。首先去“No More Ransom”网站,使用其提供的“Crypto Sheriff”工具上传一个被加密的文件和勒索信,它会告诉你是否有可用的免费解密工具。对于某些早期版本或使用了弱加密算法的勒索病毒,安全社区可能已经破解。但对于像这个样本一样使用强加密且私钥未泄露的,在没有备份的情况下,技术恢复的可能性极低。

Q2:为什么杀毒软件没防住?A2:原因可能有多方面:病毒使用了新的混淆或加壳技术,暂时逃过了静态特征码查杀;它利用了一个未知的(0-day)或刚公布但未修复的漏洞;攻击者通过鱼叉式钓鱼邮件,诱骗具有足够权限的用户手动放行了恶意程序;或者终端防护软件的行为监控规则被绕过。这强调了多层防御和“人”这个因素的重要性。

Q3:支付赎金是唯一的选择吗?A3:绝对不是首选,且强烈不建议。支付赎金存在多重风险:1. 支付后可能收不到解密工具;2. 解密工具可能无法完全解密或损坏文件;3. 你会被标记为“愿意付款”的目标,未来更可能再次被攻击;4. 资助了犯罪活动。只有在数据价值极高、毫无备份、且确认该勒索病毒家族有较可靠的“交易历史”时,才可将其作为万不得已的最后选项,并且最好在专业谈判人员协助下进行。

Q4:如何判断一个文件是否真的被加密了,而不是简单的重命名?A4:有几个方法:1.看文件大小:被加密的文件大小通常会增加(因为附加了加密后的密钥等信息)。2.看文件头:用十六进制编辑器打开文件,查看文件头部是否被替换成了奇怪的字节序列(加密后的数据看起来是随机的)。3.尝试打开:用对应的应用程序(如Word)打开,会提示文件损坏或格式错误,而不是“找不到文件”。

Q5:在企业环境中,如何快速定位第一台被感染的机器?A5:查看网络设备(交换机、防火墙)日志或终端检测响应(EDR)平台的告警,寻找最早出现以下行为的机器:1. 对大量文件进行快速的、连续的写操作。2. 向内部网络大量扫描SMB(445端口)或RDP(3389端口)服务。3. 首次出现对外连接C2服务器的行为。文件服务器上的审计日志(如果开启)也能显示哪个用户账户最先开始大规模修改文件。

分析“中国人不骗中国人?_locked”这个样本,让我再次深刻体会到,网络安全攻防的本质是人与人的对抗。技术手段在不断升级,而社会工程学更是直击人性弱点。作为防御方,我们不仅要筑牢技术的防火墙,更要提升全员的安全意识。对于安全研究人员而言,持续地分析、解构这些恶意样本,理解攻击者的战术、技术和流程,是我们优化检测规则、开发更有效防护工具的基础。这个病毒的名字是个讽刺,但在安全的世界里,唯有保持警惕、持续学习,才能避免成为下一个受害者。在日常运维中,不妨定期做一次“灾难恢复演练”,模拟核心服务器被加密后的恢复流程,这能暴露出备份策略和应急响应计划中的真实短板,比任何理论都管用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询