吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14691|回复: 125

[PC样本分析] <WatchPuppy>AutoCAD病毒可执行恶意代码漏洞分析及补丁(附代码、补丁)

  [复制链接]
Onlystone 发表于 2018-3-28 12:09
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
本帖最后由 Onlystone 于 2018-4-4 13:07 编辑

有没有大佬教我下怎么把内容折叠一下?有些东西想折叠起来,要不文章看着太长
软件定名为 WatchPuppy 之后插件我还会持续在这里更新,软件本身大家可随意转载。
各位安全大佬可能很少关注CAD这种边缘软件,故而此类分析较少,本文本想做论文发稿,实在没时间也没路,等过段时间再说了,先发在论坛里面请各位提些意见吧,前半段还是照搬以前写的废话了,后面是正文

本文意在彻底解决cad病毒对建筑行业的威胁,故而下面放出编译好的dll,所有人可以在不修改的前提下,加入自己的工具箱、软件集,防止各种改名卖软件的,恕不完全开源。也放出了安装程序,给伸手党们准备的,昨天在版务区询问附件的相关要求,还没得到答复,先放出来吧,若管理员有要求请与我联系,我再整改。

0x01 概述
    近年来,出现一类使用AutoCAD运行漏洞的恶意程序在建筑、房地产等相关行业中蔓延,此类恶意软件多为lisp语言编写的Lsp脚本,或编译过的Vlx、Fas程序。早期该类病毒仅表现为“伴随型”病毒,跟随cad图纸文件(后缀为*.dwg,以下称dwg文件)启动,多为减缓用户开启文档速度或恶作剧。此后,发展出了中等破坏度的“蠕虫型”,跟随图纸启动后,大量向硬盘写入无用信息直至占满硬盘,严重妨碍用户工作。今日,已有木马病毒瞄向该漏洞,通过该漏洞直接感染计算机,通过修改注册表达到隐藏目的,用于窃取用户信息、图纸等目的。
    故而,CAD病毒已经引发了各安全软件公司的重视。金山、360等公司相继推出针对CAD病毒的专杀工具,经测试微软MSE也可识别大部分CAD病毒的特征码,但此行收效甚微,未能抑制其发展。

0x02 分析
    简述该漏洞较为简单,可在开启图纸时执行本地代码。AutoCAD打开dwg文件时,dwg文件所在目录将成为软件的“支持文件搜索路径”。软件会在该目录下搜索可用的SHX文件、线形文件等图纸所需的支持文件,但同时也会搜索lsp、fas和vlx的CAD脚本程序,并执行其中代码。
    攻击者从此处入手,将恶意代码保存为CAD可执行脚本的文件名,放置在DWG文件路径下,开启图纸时即会使软件执行代码。由于AutoCAD软件本身的可执行程序acad.exe拥有系统管理员权限,恶意代码可控制系统安全路径及注册表等敏感目录,达到对系统的破坏或对用户信息的窃取。


―――――――――――――我是分割线―――――――――――――――――

0xA1 正文
好了,上面是拿之前写的论文扳过来的,废话一堆,下面说正题。


这个漏洞很简单,也很多人都知道,就是把Lsp脚本,或者编译后的lsp、arx改名成cad能识别的名字,跟图纸放在一起,cad开图的时候就会执行。就这么简单。
举个栗子,我们写一段病毒脚本,保存为acaddoc.lsp,跟图纸“一层平面图.dwg”放在一起,不管我们以何种方式开启这个dwg文件,均会执行acaddoc中的lsp语言脚本。
这是一个看似简单的例子,而实际之中有些变数,如果说早期的cad病毒还算耿直,现在就不一样了,首先说能被执行的文件不仅仅只有acaddoc.lsp一个,仅仅是这个用的比较多。
其次一点,攻击者往往会加点盐,在cmd中使用attrib命令(参数+a +s +h+r),为文件添加“系统”属性,如下图:
1.png
注意这个系统属性,文件若被加上系统属性,在windows中设置显示隐藏文件也是看不到的,需要同时勾选“隐藏受保护的操作系统文件”才能看到(这个可能地球人都知道,只是提一句,cad病毒可以为自己设置系统属性)从目前遇到的cad病毒判断,会破坏注册表中的
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN]
以及[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL]
等注册表项,以使得系统无法现实隐藏文件(即使勾选也无法显示隐藏文件)。所以导致用户无法察觉的情况下,运行了带有病毒的dwg文件。导致cad中毒的情况。

0xA2 思路
该漏洞类似于win98时代的desktop.ini配合folder.htt的方式执行脚本(以下简称D+F,比autorun.inf恶劣的多,而且完全没有实用价值),微软对D+F的做法就是完全取消该功能,使得desktop.ini不允许绑定Folder.htt,并且取消所有shell的功能。Autodesk(下称自动桌)也采用相同做法,最新版的CAD中已经修复了这个shell漏洞(下文会提到)。


那么本文意义何在?问题就在于,没有人用最新版的CAD,现在主流的CAD是2012其次是2014,甚至还有用户在用2007和2008等古老版本,才使得cad病毒频繁发作。


这里说个题外话,为什么用户都喜欢用老版本cad?不是因为好用,而是cad用户都依赖自己用的cad插件。Cad二次开发依赖arx版本和.net版本,导致老版本插件移植到新cad需要改动,甚至较大改动,所以各厂商基本不支持新版本cad。用户自然也不会为新版cad买单,毕竟自动桌心黑的很。


以下简单谈下我的思路,由于脚本类的病毒很容易改动,稍微改动就会影响到特征码,所以杀毒软件对现在的acd病毒查杀率不到50%,我们应该放开从cad病毒的出发角度,换一种角度看待这个问题,直接封堵cad的这个漏洞,抑制cad病毒传播。


故而,下文不会反编译病毒文件,也不会涉及到病毒本身,我们只会从cad的执行程序acad.exe下手。

0xA3 分析acad.exe


思路:无需反编,直接查明到底会执行多少的脚本文件名。


采用软件:Procmon(进程监视器)
举例cad版本:AutoCAD 2012 官方简体中文版(恐怕市场占有率超过70%)


为了过滤掉不重要的信息,我们先开启cad,选择文件――》打开,然后找到D盘中预先存放好的D:\test\Drawing1.dwg文件,选中这个文件不要打开。
2.png
此时启动Procmon进行记录。
3.png
选择Filter(过滤器)添加条目:
Process Name  is  acad.exe        -》过滤cad的进程
Path   contains  d:\test            -》检查这个路径下到底发生了什么
4.png
点击OK之后,拉到最下方
5.png
这里很简单的可以看出,黄色箭头是加载完成Drawing1.dwg后,cad持续搜索了这么多文件,状态都是NAME NOT FOUND(因为根本没有病毒)。以下,在dwg文件下创建一个空文本文件,重命名为acad.lsp,保存,我们再加点盐,cmd中执行:
D:
Cd  test
Attrib +a +s+ r+ h acad.lsp
赋予系统、隐藏、只读、存档的属性,让他在界面中消失
6.png
现在是普通隐藏状态。执行cad命令后如下图(未开启系统显示)
7.png
执行后acad.lsp消失。(两个文件夹是给大家对比隐藏和非隐藏的颜色)
8.png
属性中隐藏是灰色的,不能动,说明是系统属性隐藏文件。 重复以上方法,监控acad.exe。
9.png
Acad.lsp被加载执行。同样原理列表中的其他文件也会遇到这个问题。若此时该文件中存在恶意代码,会被执行。且CAD会请求管理员权限,该执行代码也将具有管理员权限,对系统造成破坏。

0xA4 FIXit
思路:采用cad二开的方式,监控CAD的事件,在开图时候执行我们自己的代码,在扫描路径之前,消灭所有可执行代码。

IDE:Visual Studio2015
语言:Viusal Baisc.net(各位忍忍吧,我C#写不顺手,同样道理用托管C和C#也能写)


我们新建一个VB类库(拿本记一下,我们要注入到cad里面,不能创建exe程序,必须是dll类库),引用cad路径下的acdbmgd.dll和acmgd.dll(如果是cad14还需要引用accoremgd.dll),.net Frame版本与CAD同步(2012对应4.0)。
10.png
我们既然是被动的加载,需要创建构造
Public Class Initialize
   Implements IExtensionApplication
   Dim docc As DocumentCollection = Application.DocumentManager
   OverrIDAble Sub Initialize()
      Implements IExtensionApplication.Initialize
      '加载Dll的时候执行,注册命令可以用<CommandMethod("")>这里不多说了   
   End Sub
End Class
[size=12.6667px]
通过cad api加入回调函数监视cad的事件

AddHandler docc.DocumentBecameCurrent, AddressOf DocumentCreateStarted

关联子程序DocumentCreateStarted,在类中声明子程序。Docc详见上文的声明。

Sub DocumentCreateStarted(ByVal sender As Object,ByVal e As DocumentCollectionEventArgs)
End Sub

这里画下重点,为什么是[size=12.6667px]DocumentBecameCurrent这个事件?CAD中有诸多事件与打开相关,经过一系列的测试,执行脚本的漏洞正好是发生在[size=12.6667px]DocumentBecameCurrent之后。以下省略100万字测试方法。

请注意此处的 ByVal e As DocumentCollectionEventArgs 使用e.Document.Name即可获得正在开启的dwg文件路径,在此先人一步,扫描这个路径:
这里简单的写一句:
   Dim addr As String= e.Document.Name
   Dim i_addr As Int16 =InStrRev(addr, "\")
   Dim V_add As String= Microsoft.VisualBasic.Left(addr, i_addr) & "acad.lsp"
注释:这里简单的字符串处理,其他语言可能不一样,各位自行查阅MSDN吧。

这里如果获取到acad.lsp,则将其改名。 我们将写好的程序生成DLL,在cad中使用Netload加载这个demo,使用上文方法继续监视。
得到如下结果(为了方便演示,我将过滤器调整为d:\test\acad.lsp)。


11.png
修改过滤器之后,明显能看到过程,红色箭头的时候,acad.lsp已经被改名,绿色箭头部分是cad搜索acad.lsp提示失败,脚本未被运行。

0xA5 强制cad加载我们的dll
实际上这里无需大费周折,cad已经留好了相应方法,打开注册表编辑器(regedit,请注意区分x64和x86),
在[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R18.0\ACAD-8001:804\Applications]中添加项
添加三个注册表键值
LOADCTRLS      REG_DWORD   2
LOADER            REG_SZ            dll文件路径
MANAGED        REG_DWORD    1
DESCRIPTION   REG_SZ          可以胡来
在开启cad的时候即加载我们的dll。收工!



打包前的dll,供研究.rar (370.93 KB, 下载次数: 23)

免费评分

参与人数 64威望 +2 吾爱币 +75 热心值 +65 收起 理由
Wushiyi4 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
shuishou505 + 1 + 1 我很赞同!
ly871108 + 1 + 1 谢谢@Thanks!
tanlini + 1 + 1 CAD时不时要用用,以前搞设计用得多,现在用得少,情怀还在,支持起来。
hihand2000 + 1 + 1 我很赞同!
重置001 + 1 谢谢@Thanks!
holes + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
galuo + 1 + 1 我很赞同!
yanghuiqq168 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
tianyouniu + 1 我很赞同!
siuhoapdou + 1 + 1 谢谢@Thanks!
firelee691 + 1 + 1 我很赞同!楼主真大牛也
lijiayin110 + 1 + 1 谢谢@Thanks!
粉藍弟 + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
sensMe + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zesery + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
大毛孩 + 1 + 1 热心回复!
wupengtao741 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
lijoicq + 1 + 1 用心讨论,共获提升!
swiftwow + 1 + 1 谢谢@Thanks!
men2014 + 1 + 1 谢谢@Thanks!
逍遥一仙 + 3 + 1 热心回复!
Ivens + 1 + 1 我很赞同!
lovejoan + 1 + 1 谢谢@Thanks!
AKERS + 1 + 1 热心回复!
cjj4689795 + 1 + 1 谢谢@Thanks!
ahmeijian + 1 + 1 谢谢@Thanks!
myqqq + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
y6694886 + 1 + 1 有没有2007版的
ylylz + 1 + 1 谢谢@Thanks!
muya1987 + 1 + 1 谢谢@Thanks!
zuicai + 1 + 1 谢谢@Thanks!
tt521 + 1 + 1 我很赞同!
snccwt + 1 + 1 热心回复!
wywa2011 + 1 + 1 热心回复!
在路上的人 + 1 + 1 谢谢@Thanks!
Tim-52Pojie + 1 + 1 用心讨论,共获提升!
芬达丶 + 1 + 1 用心讨论,共获提升!
a5606495 + 1 + 1 谢谢@Thanks!
pk8900 + 1 + 1 用心讨论,共获提升!
feiyu2005 + 1 + 1 谢谢@Thanks!
bbvbvbbv + 1 + 1 谢谢@Thanks!
审判者压缩 + 1 + 1 热心回复!
asd8848 + 1 + 1 谢谢@Thanks!
xinkui + 1 + 1 谢谢@Thanks!
poisonbcat + 1 + 1 谢谢@Thanks!
herolxm + 1 + 1 谢谢@Thanks!
挖地球达人 + 2 + 2 谢谢@Thanks!
bpzm1987 + 1 + 1 用心讨论,共获提升!
VII’s + 1 + 1 膜拜大神
╰Tang + 1 + 1 只剩下优秀
花心乞丐 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Traveling + 1 + 1 用心讨论,共获提升!
Hmily + 2 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
竹杖芒鞋轻胜马 + 1 + 1 我很赞同!
xiaoxing + 1 + 1 谢谢@Thanks!
lzy327955 + 1 + 1 谢谢@Thanks!
gfjykldd + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xtwwx110 + 1 + 1 谢谢@Thanks!
610100 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
killua + 1 + 1 谢谢@Thanks!
paguco + 1 + 1 我很赞同!
zzz52pj + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Onlystone 发表于 2018-3-28 22:20
bbvbvbbv 发表于 2018-3-28 22:09
不知道楼主什么时候能出2017的呢

马上能出,主要2017不会中毒,有这套东西能隔离病毒,没有像老版本那样起到实质性作用
 楼主| Onlystone 发表于 2018-3-29 15:14
本帖最后由 Onlystone 于 2018-5-14 11:04 编辑

1.1版本现已加入
修改内容:
本来就是写个demo,没想到大家这么支持,那么进一步完善了程序

感谢论坛支持,软件中添加了52pojie的网址,和网站标题,为了大家研究方便,没混淆。

现在全面支持2015、2016、2017、2018的64位版本(2016之后cad本身不会中毒,但本软件能将病毒隔离,防止传染其他人)

2008版本推出无望,建议各位更新cad(或者,你可以多找几个人来建议我出。为啥?因为我写一个版本我就要装一个版本的cad。。。而且要改代码)

卸载按钮之前报告路径写错了。已修改

修复了之前CAD2010不能安装的问题。

完善了病毒库。

软件请去1L下载1.2版本。
zzz52pj 发表于 2018-3-28 12:17
虽然作为一个小白,对大佬的讲解看得不怎么明白
但是是一个深受CAD病毒摧残的设计狗啊!!!
CAD病毒让我和同事返工过N次!!!

请问大佬CAD还会生成acad.fas这个格式是什么情况啊

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Onlystone + 1 + 1 对不起哥们,acad.fas我漏写了,已经补上了,详见1.2版本

查看全部评分

 楼主| Onlystone 发表于 2018-3-28 12:21
zzz52pj 发表于 2018-3-28 12:17
虽然作为一个小白,对大佬的讲解看得不怎么明白
但是是一个深受CAD病毒摧残的设计狗啊!!!
CAD病毒让我 ...

仔细看我的文章,我的截图里面有,acad.fas是fas文件,编译后的lsp脚本,也会自动运行,有些病毒会选择这个格式,因为比lsp脚本更隐蔽,我放出的插件可以解决这个病毒
 楼主| Onlystone 发表于 2018-3-28 12:23
小白们只需要点击下载我的附件,然后点安装就行了,可能过多的解释不如直接一个安装按钮来得快。我放出的这个demo不会访问网络,各位放心使用。管理员要有要求比如挂上论坛名什么的可以发我,我改,跟打疫苗一样,安装量大了,才能净化cad环境
yjf306 发表于 2018-3-28 12:24
这个很好,谢谢楼主提供。
zzz52pj 发表于 2018-3-28 12:27
Onlystone 发表于 2018-3-28 12:21
仔细看我的文章,我的截图里面有,acad.fas是fas文件,编译后的lsp脚本,也会自动运行,有些病毒会选择这 ...

不好意思哈
回复的时候突然想起.fas这个格式。就忽略前面楼主提到的
简直是深恶痛绝这个cad病毒啊。
万分感谢楼主!!!
MaxMadcc 发表于 2018-3-28 12:53
在沙盒启动cad(沙盒设置读取写入权限),这样就能再加一层保护
 楼主| Onlystone 发表于 2018-3-28 12:59
MaxMadcc 发表于 2018-3-28 12:53
在沙盒启动cad(沙盒设置读取写入权限),这样就能再加一层保护

可能和你想的不太一样,,cad自带lsp的解释器,所有恶意代码都是cad自身执行的,并不是外界注入的,病毒的目的是借用cad自带的解释器来实现攻击windows 的目的。

若用沙盒隔离cad,问题也多多,cad是需要靠插件来维持工作的,隔绝之后,正常插件运行会出现症状。cad病毒只不过是有恶意代码的cad插件。
今夕何兮 发表于 2018-3-28 13:06
谢谢分享
jackie1 发表于 2018-3-28 13:43
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 提醒:禁止复制他人回复等『恶意灌水』行为,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2019-4-23 04:35

Powered by Discuz!

© 2001-2017 Comsenz Inc.

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