首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用 WorkBuddy 给一台装了 4 个版本 CAD 的工作站做安全体检:清掉 U 盘蠕虫,还揪出一个"删了又冒出来"的 41 字节文件

用 WorkBuddy 给一台装了 4 个版本 CAD 的工作站做安全体检:清掉 U 盘蠕虫,还揪出一个"删了又冒出来"的 41 字节文件

原创
作者头像
用户12771683
发布2026-09-18 16:24:24
发布2026-09-18 16:24:24
520
举报

这是一次真实排查的记录。全程用 WorkBuddy 在这台 Windows 工作站上完成,所有结论都来自本机实测(文件时间戳、系统事件日志、SHA256),没有推测当成事实。

一、起因:四个盘根目录躺着可疑程序

这是一台工程设计工作站:Windows 系统,装着 4 个版本的 AutoCAD、天正建筑、CASS、Revit,硬盘分成 C / D / E / F 四个本地分区,平时频繁插 U 盘互相拷图纸。

例行检查时,在四个盘的根目录发现了这些:

  • 13 个随机命名(如 euypvm.exexoje.pif)的可执行文件
  • 每个都恰好 99,044 字节,属性为"只读 + 隐藏 + 系统"
  • 无数字签名,二进制里带 [LordPE] 字样(一种可执行文件修改工具的标记)
  • 3 个大小写混淆写法的 autorun.inf(例如写成 shElL\OpEn\comMand,用来规避关键字检测)
  • 3 个 41 字节的隐藏文件 $gliid

按文件的时间戳倒推,感染时间线是:从 2026-03-12 起,前后至少 6 轮,最近一次是 9 月 15 日

这里有一个经验:U 盘蠕虫特别喜欢往盘根目录放东西,因为 autorun.inf 只有在根目录才生效。所以"每个盘的根目录"是排查这类病毒的第一现场。而它们用"隐藏 + 系统"属性,是为了在默认设置下的资源管理器里不可见。

二、清理:先让杀软做主,再手动收尾

先跑了一遍火绒全盘扫描:报出 163 个风险项,全部自动处理完毕。扫描完成后逐条复查:

  • 13 个恶意 exe/pif → 全部清除
  • 3 个 autorun.inf全部清除
  • 3 个 $gliid仍在(杀软不认为它是病毒,因为它只是纯数据)

顺带验证了另一件事:全盘搜索 99,044 字节的同类文件,零残留

这里有个关键判断:杀软能清掉"会执行的东西",但清不掉"数据文件"。后者需要人工确认后清理。

三、手动清理那 3 个 41 字节文件

先备份(万一要留凭证),再删除。删的时候踩了一个坑(后面会讲)。

删除时做了三件事:

  1. 逐条列出待删文件的完整路径、字节数、时间戳,给用户确认
  2. 分批删除,每批 10 个,每批删完立刻复查
  3. 最后做整体验收(Test-Path 确认目录不存在)

四、诡异的事:它又回来了,而且是四个盘

第二天复查,C、D、E、F 四个盘根目录又各出现了一个 $gliid —— 包括前一次根本没有的 C 盘。

而且:

  • 四个文件的创建时间只差 3 毫秒.884 / .884 / .886 / .887),说明是一个程序挨着四个盘各写了一遍
  • 内容与前一批逐字节完全相同(SHA256 四盘一致)
  • 属性依然是"隐藏 + 系统"

这就有点意思了。于是开始取证。

五、取证:怎么定位"是谁写的"

1. 先固定时间点

用系统事件日志还原现场:

结果:

时间

事件

11:42:43

重启(用户操作)

11:43:27

开机完成(Event ID 6005)

11:43:29

四个盘被写入 $gliid

11:51:45

关机

开机后 2 秒就被写入 —— 这个时间点极其关键:那时桌面还没出来,只有内核驱动和最早批的服务在运行。

辅助确认开机时刻:

2. 排除外部脚本

查 PowerShell 的操作日志,看那一瞬间有没有脚本在跑:

结果:那一刻没有任何记录(最早的记录在 11:43:37,晚了 8 秒)。→ 排除脚本工具。

3. 扫一遍常见藏身点

位置

排查命令

结果

组策略启动脚本

看 C:\Windows\System32\GroupPolicy\*\Scripts

WMI 永久订阅

Get-CimInstance -Namespace root\subscription -ClassName __EventFilter

只有系统自带 1 条

映像劫持 IFEO

查 Image File Execution Options 下的 Debugger 值

Winlogon / AppInit

查 Shell / Userinit / AppInit_DLLs

全部正常

计划任务

Get-ScheduledTask | Get-ScheduledTaskInfo 按 LastRunTime 过滤

该时段全是系统任务

4. 锁定"能在这个时间点干活的东西"

既然写入发生在开机后 2 秒,能在这个时间点写盘的只有开机最早阶段加载的驱动

列出来的驱动绝大多数是微软自带的,非微软的只有寥寥几个(显卡 / 芯片组 / NVMe / 安全软件)。其中安全软件的"设备监控"驱动嫌疑最大,但没有直接证据,所以这一条只能标"待定",不能下定论。

六、做实验:删掉它,重启,看它回不回来

猜测有很多,实验只有一个。设计如下:

  1. 存档:删除前记录四个文件的 SHA256(用于事后比对)
  2. 删除:删掉四个文件
  3. 重启:重启电脑
  4. 复查:开机后立刻检查四个盘

结果:一个都没回来。

这个结论很有价值 —— 它说明:

  • 不是"每次开机都会自己长出来"的东西
  • 不是"你删了它就自动补一个"的性质
  • 换句话说,背后没有持续运行、会自动重生的机制

所以风险评级可以下调为"低":文件本身是纯数据无代码,删掉后不复发,常见藏身点全干净。

七、两个必须记住的 Windows 坑

坑 1:PowerShell 的执行结果"看不见"

在部分环境下,通过工具调用 PowerShell 时 stdout 会被吞掉,屏幕上什么都没有。

解法:把结果写进文件,再读文件。

StringBuilder 攒完一次性落盘,比每一步都 -Append 更稳(中途写失败不会丢全部日志)。

坑 2:Remove-Item 删不掉"隐藏 + 系统"属性的文件

删除时遇到这个报错:

原因是这台机器上的删除操作被一个"安全删除"机制接管、转成了"送回收站",而回收站不接受带隐藏+系统属性的文件,于是整个脚本被打断。

解法:改用 .NET 直接删(先清只读属性):

另一个小坑:路径里含 $ 时,PowerShell 双引号会把它当变量。一律用单引号或 -LiteralPath

八、把检查变成日常

偶发的安全事件,最怕的就是"不知道什么时候又冒出来"。所以最后做了一件事:把检查变成每天自动跑一次的定时任务——

  • 每天固定时间检查四个盘根目录有没有 $gliid、随机名 exe/pifautorun.inf
  • 发现 $gliid 就记录路径、创建时间(精确到毫秒)、SHA256,并与历史指纹比对
  • 发现恶意程序则醒目告警并等人确认,不自动删除

这样下次它一露头,就能立刻拿到"当时的现场",从而定位是谁写的。

九、经验小结

  1. U 盘蠕虫看"根目录"autorun.inf + 随机名程序 + 隐藏属性,是经典三件套。
  2. 杀毒软件清"会跑的",数据文件得人工清:清不掉的不一定是漏网,可能只是杀软不认为它是威胁。
  3. 时间戳是最有力的线索:一个"创建时间只在开机后 2 秒"的文件,直接把嫌疑范围缩到"开机最早阶段加载的驱动"。
  4. 有猜测就做实验:删掉 + 重启 + 复查,一个实验就能推翻或证实一堆假设。
  5. 不确定就写"待定":排查报告里最忌讳把没证据的推断说成结论。
  6. 验证要留底:删除前存档 SHA256,删完分批复查,事后可追溯。

本文由 WorkBuddy 协助完成排查与记录。文中路径与文件名

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、起因:四个盘根目录躺着可疑程序
  • 二、清理:先让杀软做主,再手动收尾
  • 三、手动清理那 3 个 41 字节文件
  • 四、诡异的事:它又回来了,而且是四个盘
  • 五、取证:怎么定位"是谁写的"
    • 1. 先固定时间点
    • 2. 排除外部脚本
    • 3. 扫一遍常见藏身点
    • 4. 锁定"能在这个时间点干活的东西"
  • 六、做实验:删掉它,重启,看它回不回来
  • 七、两个必须记住的 Windows 坑
    • 坑 1:PowerShell 的执行结果"看不见"
    • 坑 2:Remove-Item 删不掉"隐藏 + 系统"属性的文件
  • 八、把检查变成日常
  • 九、经验小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档