Xred 蠕虫行为分析及修复工具开发
病毒行为总览
该样本为早期编写的恶意软件,使用 Delphi 7 编写。后续汇编分析显示其对 Windows XP 及更高版本系统进行了兼容处理。被感染机器的 C:\ProgramData\ 目录下会生成 Synaptics 目录,其中包含原始恶意样本。病毒生成的文件图标不固定,通常会更新为最近一次运行被感染 exe 文件的图标。大部分由病毒生成的文件均被设置为隐藏文件和系统文件。
在用户未开启'显示隐藏文件和系统文件'选项的情况下,这些文件不可见。被感染机器的 Desktop、Documents、Downloads 目录下的 32 位 EXE 文件和 xlsx 文件会被掉包,导致文件分享给他人时造成大范围感染。
病毒包含多个功能模块,部分与网络连接相关的 IOC(入侵指标)已失效。主要模块包括蠕虫感染、邮件发送、键盘记录、远控及自启动等。
蠕虫模块分析
目录枚举机制
通过调用 Windows API SHGetSpecialFolderLocation 和 SHGetPathFromIDListA 获取目标感染目录。病毒会获取桌面、下载和文档的路径,并递归遍历子目录进行感染。这种机制确保了感染范围覆盖用户常用的数据交互区域。
EXE 文件感染分析
对于 EXE 文件,病毒通过 LoadLibrary 加载到当前进程。由于病毒本身是 32 位程序,仅感染 32 位的 EXE 文件。感染逻辑基于 PE 资源节中的特定标识:
- 版本检查:读取资源节
EXEVSNX中的数据作为版本号,支持版本更新。 - 打包原文件:将原文件内容打包到病毒文件的资源节
EXERESX中。 - 替换执行:病毒文件的图标被替换为原文件的图标,最后用病毒文件替换原文件。
当用户运行被掉包的 EXE 文件时,病毒会释放资源节 EXERESX 中的原文件到临时路径(以 .*cache* 开头),设置系统文件和隐藏属性,然后执行原文件。此过程对用户无感知。代码中还包含重复感染检测逻辑,判断 .*cache* 开头的文件是否也包含 EXERESX 资源节,体现了作者对边界情况的考虑。
XLSX 文件感染分析
感染 xlsx 文件是通过 COM 组件完成的,因此只有安装了 Excel 的机器才会被正确感染。大致的感染流程如下:
- 宏代码注入:病毒资源的
XLSM节包含了恶意宏代码的 xlsm 文件。 - COM 自动化:利用动态调试跳过中间大量调用的 COM 组件函数,实际是将原 xlsx 中的数据拷贝到包含宏代码的 xlsm 文件中。
- 文件替换:替换原 xlsx 文件,后缀变为 xlsm,并在目录下生成一个
~$chac1隐藏文件,其内容为病毒文件本身。
被感染的 xlsx 文件内容和原来一样,但后缀改变且包含加密的 VBProject。文件夹下存在 ~$chac1 文件是重要的感染特征。
其它模块分析
以下模块部分功能已失效或未深入分析:
- 邮件发送:使用 Delphi 封装库,SMTP 服务器为 smtp.gmail.com,账号密码已失效。目的邮箱地址曾配置为特定列表。
- 键盘记录:设置消息钩子,dll 文件在资源节
KBHKS中。动态调试过程中消息钩子未正常设置,原因待确认。 - 远控模块:功能较少,包含反弹 shell、屏幕截图、文件上下载等功能。
- 自启动项:直接操作注册表,使用 Delphi 封装的
Register库,实现简单。


