摘要
一台机器上杀毒软件(火绒安全)报出645 个风险项、全部处理完毕,结果重启 CAD 打开一张图纸,acad.fas又回来了。
这不是杀毒软件不行,而是我们对 AutoCAD 病毒的认知停在了"删掉 acad.fas"这一层。本文基于一次真实处置复盘,讲清楚三件事:
- 它凭什么能复活(自动加载机制)
- 为什么杀软杀了 645 个还是没用(三个盲区,其中一个是致命的)
- 怎样一次性清干净并长期免疫(含验证方法)
全文手动操作,不需要任何专杀工具。
一、先说结论
如果你只想看结论,记住这四句话:
| 结论 | 说明 |
|---|---|
.fas是产物,不是源头 | 删它没用,母体是.lsp加载器 |
| 杀毒软件看不到图纸内部 | 本次 645 条风险里,没有一条是.dwg |
| AutoCAD 配置层完全在杀软视野之外 | 启动组、支持路径、SECURELOAD,必须人工查 |
| 一个只读文件就能长期免疫 | 只读的acaddoc.lsp+SECURELOAD=1 |
二、现象:一个典型的"治不好"病例
处置对象的症状很典型:
- CAD 打开任何图纸,图纸目录下就冒出
acad.fas; - 手工删除后,再开一张图,又出现;
- 杀毒软件全盘扫描 6 小时,报出 645 个风险项,处理结果显示"已处理 645 / 645";
- 然后——还是复发。
涉及文件统计:
| 文件名 | 数量 | 角色 |
|---|---|---|
acad.fas | 489 | 编译后的病毒主体(删除后会被重新释放) |
acad.vlx | 50 | 同类编译体,常躲在系统目录 |
acaddoc.lsp | 28 | 开图自动加载器,真正的母体 |
acaddoc.fas | 6 | 蠕虫自我复制体 |
按盘符分布:C 盘 29 处(持久化母体)、D 盘 126 处、E 盘 490 处(传播载体)。
看到这个分布你就能明白:C 盘那 29 处是"根",D/E 盘那 616 处是"果实"。只摘果实不拔根,当然一茬接一茬。
三、原理:它凭什么能复活
3.1 AutoCAD 的自动加载机制
AutoCAD 在启动时和每次打开图纸时,会自动在"支持文件搜索路径"里查找并执行一批固定名称的脚本:
acad.lsp 启动时加载 acaddoc.lsp 每次打开图纸时加载 acadapp.lsp 老版本兼容项 acad.mnl 菜单配套 LISP这是 Autodesk 为方便二次开发提供的正常能力。病毒做的事,就是把自己的代码写进这些文件。
于是形成闭环:
打开图纸 ↓ CAD 自动执行搜索路径里的 acaddoc.lsp ↓ 加载器调用 acad.fas(编译后的病毒体) ↓ 病毒向图纸目录、支持路径、系统目录重新释放 acad.fas ↓ (你删了 .fas,但加载器还在) ↓ 下次开图,重新执行 —— 闭环成立3.2.fas与.lsp的关系
.fas是.lsp编译后的二进制形态(Fast-load AutoLISP)。它的两个特点决定了这个病毒难缠:
- 反编译困难,杀软大多靠特征码识别,变种一出就漏;
- 运行不依赖 CAD 版本,2006 到 2024 通吃。
所以正确的顺序是:先杀.lsp加载器,再清.fas产物。顺序反了就是白干。
四、为什么杀软杀了 645 个还是没用
这是本文最想讲的部分。复盘那次扫描,杀软的处理结果里藏着三个盲区。
盲区一:59 项"删除无法写入的文件"根本没删掉
查杀日志里有 59 条的处理结果是"删除无法写入的文件"——翻译过来就是:没删动。
集中在:
C:\Windows\system32\C:\Windows\SysWOW64\- 各盘符的
$RECYCLE.BIN(回收站)
系统目录被占用、回收站有保护机制,杀软删不掉就记为"已处理",但文件还在。这就是最硬的复发根因。
教训:看到"已处理 N/N"别高兴太早,要去看每一条的处理结果是什么。删除成功、清除代码、删除失败,是三件完全不同的事。
盲区二:DWG 图纸内部——最致命的一个
645 条风险里,没有一条是.dwg。
这说明杀毒软件压根没有检测图纸内部注入的恶意代码。而 AutoCAD 病毒最主要的传播方式,就是把加载代码嵌进 DWG 文件本身。
所以"打开一张新图又中招"的真相是:那张图自己带着病毒。你以为是新图,其实它是传染源。
这一层杀软帮不了你,必须单独处理(见第六阶段)。
盲区三:AutoCAD 配置层
杀毒软件管文件系统,不管应用程序配置。以下位置完全不在杀软视野内(可以用专杀工具如360cad专杀再手动检查):
| 位置 | 检查内容 |
|---|---|
| 支持文件搜索路径 | 是否被塞入陌生目录 |
| 启动组(Startup Suite) | 是否残留.fas/.vlx自动加载项 |
ApplicationPlugins目录 | 自动加载插件包 |
SECURELOAD系统变量 | 是否为 0(等于不设防) |
| 受信任位置 | 是否被添加过可疑路径 |
附带一提:历史归档是重灾区
这台机器上,E:\和D:\的历史归档目录里躺着 250 多个病毒副本——因为它长年从 U 盘拷图纸,每个图纸文件夹都跟着带一份acad.fas。
U 盘和外部图纸,是这类病毒在国内工程行业泛滥的根本原因。你的机器治好了,下次插一个带毒 U 盘,全部重来。
五、完整处置流程(八个阶段)
以下全部为手动操作,按阶段顺序执行。前三阶段必须在断网状态下做。
阶段 1:隔离与断链
- 关闭所有 AutoCAD 进程(任务管理器确认无
acad.exe残留) - 拔掉网线 / 禁用网卡,断开网络映射盘
- 拔出所有 U 盘和移动硬盘
- 先更新杀毒软件病毒库——本次复盘中,病毒库滞后了 3 周,这是漏杀的重要原因
阶段 2:取证留痕
- 导出本次查杀日志,保存为文本文件
- 记录:机器名、CAD 版本、已安装的二次开发插件(如理正、南方 CASS 等)
- 截图留存以下界面(后续要对照):
- 支持文件搜索路径
- 启动组内容
SECURELOAD当前值
阶段 3:清除母体(最关键)
按顺序检查并删除以下位置的可疑文件。注意:资源管理器要先"查看 → 勾选隐藏的项目",否则AppData看不到——这是本次处置中最容易漏的一步。
检查点位清单:
| 序号 | 位置 |
|---|---|
| 1 | C:\Windows\system32\ |
| 2 | C:\Windows\SysWOW64\ |
| 3 | C:\Program Files\Autodesk\AutoCAD 20xx\Support\ |
| 4 | C:\Program Files (x86)\AutoCAD 20xx\(含Fonts\子目录) |
| 5 | C:\Users\<用户名>\AppData\Roaming\Autodesk\AutoCAD 20xx\Rxx.x\chs\Support\ |
| 6 | C:\Users\<用户名>\AppData\Roaming\Autodesk\ApplicationPlugins\ |
| 7 | 二次开发插件目录(理正GICAD、南方CASS等) |
| 8 | 桌面根目录 |
要找的文件名(别只找acad.fas,这些"非主流"名字才是漏网之鱼):
acad.fas acad.vlx acaddoc.lsp acaddoc.fas acad.lsp acadapp.lsp acad.mnl ai_utils.lsp acad.vlx_bak acad.fas.bak.bak特别留意
.bak后缀的备份副本,很多清理教程压根不提这两个,结果清完又长出来。
删不掉怎么办?系统目录里的文件可能提示"需要权限"或"文件正在使用":
- 方法 A:重启进入安全模式再删
- 方法 B:用 PE 启动盘启动后删除
- 方法 C:用文件粉碎工具强制删除
阶段 4:清除产物
- 清空每一个盘符的回收站(注意:回收站是按盘符独立的,D 盘清了不等于 E 盘清了)。本次复盘中回收站里躺着 25 个活病毒
- 清理历史归档目录中的病毒副本
- 删除所有
.bak备份副本 - 处理第三方来源的软件安装包——本次有 39 项启发式告警位于某个非官方渠道获取的软件目录,已单独处置
关于这一类告警多说一句:非官方渠道获取的软件,被报
HEUR:类启发式告警属于常态,误报率不低;但被植入后门同样是高频真实事件。无论如何,不要为了继续使用它而把整个目录加入杀软白名单——白名单会连带放过真病毒,等于把门禁拆了。
阶段 5:配置层加固
5.1 检查支持文件搜索路径
CAD 命令行执行OPTIONS→ "文件"选项卡 → "支持文件搜索路径",逐条检查,删除不认识的目录。
5.2 检查启动组
命令行执行APPLOAD→ 点击"启动组"下的"内容",删除所有.fas/.vlx条目。
5.3 建立只读免疫占位(核心技巧)
在各个支持路径下放一个只读的acaddoc.lsp,内容只有一行:
(prompt "\nLoader OK.\n")然后设为只读:
attrib +r "C:\Program Files\Autodesk\AutoCAD 20xx\Support\acaddoc.lsp"原理:病毒的加载器想写入acaddoc.lsp时,会因为文件只读而写入失败。一个空文件,长期免疫。
5.4 开启 SECURELOAD
命令行执行:
SECURELOAD将值设为1(推荐)或2。设为 1 后,CAD 只加载受信任路径下的程序,其他位置会弹窗询问。
阶段 6:图纸净化
这是杀软帮不了、必须自己做的一步。三种方案,按彻底程度排序:
| 方案 | 操作 | 适用场景 |
|---|---|---|
| A. 专杀工具 | 用 CAD 病毒专杀扫描图纸目录 | 图纸量大,优先 |
| B. 自带命令 | 用已清干净的 CAD 打开图纸,执行AUDIT修复 +PURGE清理 | 图纸量少 |
| C. 整体迁移 | 新建空白图,把内容整体复制过去,另存为新文件 | 重要图纸,最彻底 |
阶段 7:验证
不要清完就以为结束了,必须做复发测试。
- 更新病毒库后再全盘扫一次,确认本次"删除失败"项为 0
- 全盘搜索上述文件名,确认结果为 0
- 连开 10 张曾经感染过的图纸,再搜一次,仍然为 0
只有第 3 步也通过,才算真的清干净。
可选的快速搜索命令(只读,不删除任何东西):
$names = 'acad.fas','acad.vlx','acaddoc.lsp','acaddoc.fas', 'acad.lsp','acadapp.lsp','acad.mnl','ai_utils.lsp' foreach ($d in 'C:\','D:\','E:\') { foreach ($n in $names) { Get-ChildItem -Path $d -Filter $n -Recurse -Force -ErrorAction SilentlyContinue | Select-Object FullName, Length, LastWriteTime } }阶段 8:防复发
- 外来图纸和 U 盘,先查杀再打开——这是本次复盘最重要的结论(火绒自带功能)
- 历史归档目录建议离线冷存储,不再用 CAD 直接打开
- 拷过图纸的 U 盘本身大概率带毒,需单独查杀
六、复发时的排查顺序
如果按上述流程处理完仍然复发,按以下优先级定位:
| 优先级 | 排查对象 | 常见原因 |
|---|---|---|
| 1 | C:\Windows\system32等系统目录 | 上次没删动 |
| 2 | 各盘符回收站 | 只清了系统盘,其他盘没清 |
| 3 | 历史归档 / U 盘 | 又从带毒介质打开了图纸 |
| 4 | 图纸内部 | 图纸本身带毒,未净化 |
| 5 | 其他终端 | 局域网内交叉感染 |
| 6 | 只读占位丢失 | acaddoc.lsp被覆盖或删除 |
七、几个容易被忽略的细节
复盘时踩到的坑,列出来省得再踩一遍:
AppData默认隐藏。不勾选"隐藏的项目",三个 CAD 版本的用户配置目录你根本看不见,清理必然漏。Fonts目录也会藏。病毒会往C:\Program Files\AutoCAD 20xx\Fonts\里放acaddoc.fas,很少有人想到去字体目录查毒。- 二次开发插件各有独立支持路径。装了理正、南方 CASS 等插件的机器,每个插件目录都要单独查——本次 4 个 CAD 版本 + 2 个插件,共 6 套支持路径,漏一个就前功尽弃。
- 多个 CAD 版本要全部处理。你主要用 2018,但机器上装着的 2006 也能启动病毒。
- 回收站按盘符独立。这是最反直觉的一条。
八、写在最后
这类 AutoCAD 病毒技术上并不高明,它只是利用了三件事:AutoCAD 的自动加载机制、人们对"杀软已处理"的信任、以及 U 盘传图纸的工作习惯。
真正难的不是清除它,而是把所有隐藏的角落都找一遍。这次处置涉及 8 类检查点位、6 套支持路径、12 个文件名——这才是它"治不好"的真相。
如果你也被这个问题困扰,按第五节的八个阶段走一遍,重点别跳过阶段 3(母体)和阶段 6(图纸)。
注:本文数据均来自一次真实处置,涉及路径已做泛化处理,不含任何单位与个人识别信息。