1. 项目概述当勒索病毒披上“老乡”的外衣最近在分析一个名为“中国人不骗中国人_locked”的勒索病毒样本时我内心是有点五味杂陈的。这个病毒的名字起得极具迷惑性它试图利用一种“老乡见老乡”的情感共鸣来降低受害者的警惕性但其内核却是实打实的恶意勒索软件。后缀“_locked”清晰地表明了它的家族归属——Locked勒索病毒家族。这个家族近年来非常活跃攻击手法也在不断迭代。我之所以花时间深入分析这个样本是因为它不仅仅是一个技术威胁更是一种社会工程学与恶意代码结合的典型案例对于安全从业者和普通用户理解当前威胁态势都很有价值。简单来说这个病毒会加密你电脑上的重要文件比如文档、图片、数据库、压缩包等然后在每个被加密的文件夹里留下一个名为“中国人不骗中国人_locked.txt”的勒索信要求你支付比特币赎金来换取解密工具。它瞄准的可能是那些对网络安全有一定了解但又不那么深入的中小企业或个人用户利用“自己人”的幌子进行心理欺诈。通过拆解这个样本我们不仅能看清它的技术实现更能理解攻击者的思路从而更好地进行防御。接下来我会从技术原理、行为分析、逆向细节到防御建议完整地走一遍这个病毒的分析流程。2. 病毒整体行为与传播入口分析2.1 初始感染与伪装手段拿到这个样本第一感觉是它的文件名和图标都经过了精心伪装。原始样本可能被命名为“发票.exe”、“对账单.pdf.exe”或者“重要资料.rar.exe”等并配以相应的文档或压缩包图标利用用户对常见文件类型的信任来诱导点击。这是勒索病毒最经典也是最有效的初始传播方式之一通常通过钓鱼邮件、恶意网站下载或即时通讯工具传播。执行后病毒本体通常会立即在内存中解密或释放出真正的恶意载荷。为了躲避杀毒软件的静态扫描核心的加密模块往往经过混淆、加密或打包。这个“中国人不骗中国人”样本就使用了多层壳或运行时解密技术。在动态分析时我观察到它在运行初期会进行大量的反调试和虚拟机检测操作比如检查进程列表是否存在调试器进程如OllyDbg、x64dbg、Wireshark、检测系统内存和CPU特征是否与常见虚拟机环境相符。如果发现可疑迹象病毒可能会改变行为路径比如停止加密或执行无害操作给分析增加难度。注意在实际分析环境中建议使用经过精心配置的、隐藏了典型虚拟机特征的沙箱或物理隔离机并配合使用一些反反调试技巧才能看到病毒完整的执行流程。2.2 持久化与权限维持为了确保在系统重启后仍能存活病毒会尝试多种持久化机制。我分析的这个样本主要采用了以下两种常见方法创建计划任务病毒会以高权限通常通过UAC绕过或利用漏洞提权后创建一个Windows计划任务。任务名可能看起来无害比如“SystemUpdate”或“WindowsDefenderScan”但触发条件设置为用户登录时或系统空闲时执行的命令则是病毒本体或它的一个副本。通过schtasks /create命令配合特定参数实现。注册表自启动项这是更传统但依然有效的方法。病毒会在当前用户或本地机器的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的优点。生成密钥对病毒在受害机器上运行时会利用系统加密API如Windows的CryptGenKey或自行实现的算法生成一对RSA公钥和私钥。有时公钥是硬编码在病毒体内的而私钥则只存在于攻击者的服务器上。创建文件加密密钥对于每一个要加密的文件或一批文件病毒会生成一个随机的AES密钥称为“文件密钥”或“会话密钥”。AES加密速度快适合加密大文件。加密文件内容使用上一步生成的随机AES密钥以AES-256-CBC等模式加密文件的原内容。加密后文件头部或尾部会被写入特定的魔数Magic Bytes或标记以便病毒识别哪些文件已被自己加密。加密文件密钥随机生成的AES密钥本身需要用一种只有攻击者才能解密的方式保护起来。这里就用到了RSA公钥。病毒使用内置的RSA公钥加密这个AES密钥然后将加密后的结果我们称之为“加密的文件密钥”写入被加密文件的末尾或者存储在一个单独的配置文件中。销毁原始密钥内存中的原始AES密钥和RSA私钥如果生成了的话会被安全地擦除。至此受害者文件的内容被AES密钥加密而AES密钥又被RSA公钥加密。要解密文件必须先用RSA私钥解出AES密钥再用AES密钥解密文件内容。而RSA私钥只在攻击者手中。这种设计意味着在没有私钥的情况下通过暴力破解AES-256或RSA-2048/4096加密在计算上是不可行的从而保证了勒索的“有效性”。3.3 文件处理与后缀修改加密完成后病毒会修改原文件名。最常见的方式是在原文件名后追加一个特定的后缀。这个样本使用的后缀是“._locked”所以report.docx会变成report.docx._locked。有些变种可能会改成report.docx.locked、report.docx.[id-xxx].locked等格式。这个后缀主要起标识作用告诉用户和病毒本身这个文件已被处理。这里有一个非常重要的实操心得病毒在加密过程中可能会因为文件被其他进程占用比如正在被Word编辑的文档而遇到“文件被锁定”的错误错误代码类似EBUSY或ERROR_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的调用可以快速定位核心功能。我搜索了以下APIFindFirstFileW/FindNextFileW用于文件遍历。CreateFileW打开文件。ReadFile/WriteFile读写文件内容。CryptAcquireContextW,CryptGenKey,CryptEncrypt使用Windows CryptoAPI进行加密。WinHttpOpen,WinHttpConnect,WinHttpSendRequest用于网络通信。在调试器中在CryptEncrypt调用处下断点可以观察到传入的算法标识。这个样本显示使用的是CALG_AES_256和CALG_RSA_KEYX证实了其采用AESRSA混合加密的猜测。进一步跟踪可以看到它生成一个随机的AES密钥然后用一个硬编码的RSA公钥通常以模数N和指数E的形式存储去加密它。4.3 反分析技巧对抗这个样本包含了一些基础的反分析技巧代码混淆部分函数使用了无用的跳转指令JMP和花指令干扰反汇编器的线性分析。API动态解析不直接导入Kernel32.dll的API而是通过LoadLibrary和GetProcAddress在运行时动态获取函数地址增加静态分析的难度。时间延迟在主逻辑开始前插入无意义的循环或调用Sleep函数以拖慢自动化沙箱的分析速度。应对这些技巧需要耐心。动态调试时可以跳过初始的延迟循环对于动态解析的API可以在GetProcAddress调用后查看返回的函数地址从而确定它要调用什么。5. 防御、检测与应急处置方案5.1 事前预防构建安全基线预防永远比补救成本更低。对于企业和个人用户以下措施至关重要定期备份与隔离执行严格的3-2-1备份策略。即至少保留3份数据副本使用2种不同的存储介质如硬盘云存储其中1份备份异地保存。最关键的是备份必须与生产系统网络隔离例如使用离线硬盘或启用版本控制且不可变性的云存储防止备份也被加密。最小权限原则日常办公不使用管理员账户。为应用程序和服务配置所需的最小权限可以极大限制勒索病毒的横向移动和破坏范围。补丁管理及时更新操作系统、办公软件、浏览器、插件如Flash, Java以及所有服务器应用如Web框架、数据库的安全补丁。很多勒索病毒利用的是已知但未修复的漏洞。邮件与网络过滤部署企业级邮件安全网关过滤带有可疑附件如.exe, .js, .vbs等可执行文件或链接的邮件。在网络边界部署IPS/IDS拦截已知的恶意域名和IP。终端防护安装并保持端点防护软件更新。启用应用程序白名单或行为监控功能对试图大量加密文件的异常行为进行告警和阻断。安全意识培训教育员工识别钓鱼邮件不点击不明链接不打开来源不明的附件尤其是警惕文件名和图标不符的文件如看似PDF的.exe文件。5.2 事中检测异常行为监控即使预防措施到位也需要有检测手段。可以关注以下异常迹象CPU/磁盘活动异常勒索病毒加密文件时CPU和磁盘尤其是写入活动会异常高涨。监控系统资源使用情况。大量文件被修改安全软件或文件完整性监控工具会告警大量文件在短时间内被修改且后缀名被统一添加。可疑进程出现不认识的、高CPU或磁盘IO的进程。使用Process Explorer等工具查看进程的详细信息和命令行参数。网络连接出现向陌生IP或域名尤其是Tor出口节点发起连接。5.3 事后响应感染后的处置流程一旦确认感染必须冷静、有序地应对立即隔离物理断开受感染机器的网络拔掉网线/禁用网卡防止感染扩散到网络共享或其它设备。识别病毒家族查看勒索信内容和文件后缀尝试在“No More Ransom”等网站查询该勒索病毒家族是否有免费的解密工具发布。安全公司有时在获得密钥后会发布解密器。不要支付赎金支付赎金不仅助长犯罪而且不能保证能拿回数据。攻击者可能不守信用或者提供的解密工具无法正常工作。尝试恢复从干净备份恢复这是最理想、最彻底的方式。利用卷影副本某些勒索病毒会删除Windows的卷影副本Volume Shadow Copy但可以尝试使用ShadowExplorer等工具查看是否还有残留的快照。文件恢复软件在文件被加密后立即停止对磁盘的一切写入操作使用数据恢复软件尝试恢复被加密覆盖前的原始文件成功率取决于磁盘写入情况。取证与加固保留被加密的文件和勒索信样本用于后续分析和报案。在确认系统已彻底清除病毒建议重装系统后从备份恢复数据并全面审查和加固安全措施修补导致入侵的漏洞。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. 向内部网络大量扫描SMB445端口或RDP3389端口服务。3. 首次出现对外连接C2服务器的行为。文件服务器上的审计日志如果开启也能显示哪个用户账户最先开始大规模修改文件。分析“中国人不骗中国人_locked”这个样本让我再次深刻体会到网络安全攻防的本质是人与人的对抗。技术手段在不断升级而社会工程学更是直击人性弱点。作为防御方我们不仅要筑牢技术的防火墙更要提升全员的安全意识。对于安全研究人员而言持续地分析、解构这些恶意样本理解攻击者的战术、技术和流程是我们优化检测规则、开发更有效防护工具的基础。这个病毒的名字是个讽刺但在安全的世界里唯有保持警惕、持续学习才能避免成为下一个受害者。在日常运维中不妨定期做一次“灾难恢复演练”模拟核心服务器被加密后的恢复流程这能暴露出备份策略和应急响应计划中的真实短板比任何理论都管用。