趋势OfficeScan系列产品漏洞分析

ShadowKeeper 2014-08-14 +11 507097人围观 ,发现 24 个不明物体 漏洞系统安全

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

OfficeScan是趋势科技开发的一套专为网路环境的桌上型电脑和行动用户端所提供的即时、全面的防毒解决方案。安全公司Silent Signal一位研究人员年初通过分析OSCE 10.6 sp1,发现可以通过一系列低危漏洞达到远程执行代码的目的,以下为翻译原文

分析安防软件的安全性是我最喜欢的研究领域之一:安防软件原本是为了保护你的系统,但经常可以讽刺的看到,它为攻击者打开一扇敞开的大门。今年早些时候,我偶然发现趋势科技的OfficeScan安全套件(一种可能不多见的主机防护解决方案),仍然在一些有意思的网络内使用。由于这个软件看上去较为复杂(提供了宽广的攻击面),我决定深入研究一下。安装了10.6 sp1试用版本之后,我可以明确的告诉大家,这个软件值得研究:

 - 服务组件(为实际提供主机防护功能的客户端实现集中管理)大多数通过二进制可执行文件方式实现(.EXE 和. DLL文件)

 - 服务端通过HTTP自我更新

 - 客户端在IE浏览器中安装ActiveX插件

可能还存在其他脆弱性。现在我想分享发现的一系列漏洞,组合起来可以实现远程代码执行,这些漏洞是逻辑(和/与之类)加密缺陷,不是标准的内存破坏之类。这样看来,修补甚至探讨他们是否算漏洞都显得无关紧要[i]。经过与厂商的数月讨论之后,依照“HP ODay倡议”的披露政策,我发布了这份报告。

一、信息泄露漏洞

由于客户端在网络中普遍部署,我将研究重点放在了它上面。首先假设在服务端和客户端之间存在必然某种通信机制,便于客户端接收更新和配置参数。我开始监听客户端网络连接,发现了一些有意思的内容,如下所示:

OST /officescan/cgi/isapiClient.dll HTTP/1.1
User-Agent: 11111111111111111111111111111111
Accept: */*
Host: 192.168.124.134:8080
Content-Type: application/x-www-form-urlencoded
Content-Length: 96
Proxy-Connection: Keep-Alive
Cache-Control: no-cache
Pragma: no-cache
Connection: close
RequestID=123&FunctionType=0&UID=11111111-2222-3333-4444-555555555555&RELEASE=10.6&chkDatabase=1

其中字段RequestID数值是相同的,我马上用Burp Intruder载入并修改请求,尝试枚举猜解其他可用的数值。ID 201似乎特别有意思,下面是服务端的应答:

HTTP/1.1 200 OK
Date: Wed, 18 Dec 2013 18:26:44 GMT
Server: Apache
Content-Length: 2296
Connection: close
Content-Type: application/octet-stream

[INI_CRITICAL_SECTION]
Master_DomainName=192.168.124.134
Master_DomainPort=8080
UseProxy=0
Proxy_IP=
Proxy_Port=
Proxy_Login=
Proxy_Pwd=
Intranet_Proxy_Socks=0
Intranet_NoProxyCache=0
HTTP_Expired_Day=30
ServicePack_Version=0
Licensed_UserName=

Uninstall_Pwd=!CRYPT!5231C05389DD886C99EA4646653498C2DB98EFD6EF61BD4907B2BD97E4ACDAED73AEE46B44AACBC450915317269

 Unload_Pwd=!CRYPT!5231C05389DD886C99EA4646653498C2DB98EFD6EF61BD4907B2BD97E4ACDAED73AEE46B44AACBC450915317269

(...)

多次尝试应答相同,与UID字段内容无关。大家可以看到,有两个参数Uninstall_Pwd 和 Unload_Pwd内容是加密的,里面肯定有猫腻。实际上,仅在提供了正确的特定密码后——就是我们看到的加密内容——客户端可以被停止或卸载(客户端为SYSTEM权限服务可以保护程序避免被杀掉或调试)。那我们拿这个加密的内容怎么办?OfficeScan程序安装目录包含了一个pwd.dll的文件,我怀疑这里面可能有关于加密的一些东西,干它!果然有所发现,这个动态连接库里面包含了一个PWDDecrypt()导出函数,但可惜的是,深入搞下去发现这不是我们要找的。。。

那就来点简单暴力的吧,命令行下使用:

find . -name '*.dll' -exec strings -f {} \; |  xargs grep '!CRYPT!'

我发现TmSock.dll才是我们的菜。反汇编这个DLL之后发现一个名为TmDecrypt()的导出函数,这个函数检查它的字符串参数是否以“!CRYPT!”开头,如果不是它就调用pwd.dll的导出函数,如果是它就转向一个内部例程,我称之为hardcoded_pass:

这个名字绝对是名副其实的,这个子例程里面包含两个字符串,看上去像是硬编码密码:

马上使用Google搜索这两个特殊字符串(专业提示:合理利用google,会省掉大量时间避免重复劳动),发现Luigi Auriemma发表过一个帖子,指出这个函数是用于加密上面的配置参数,在这个例子中它返回卸载/停止密码的MD5散列值.MD5是能被有效猜解的,这个设定太烂了,更别提代理密码可被明文获取(译注:可能指“Proxy_Pwd=”后内容是明文的)。

但这个影响有限,我再往下挖。

二、更多发现

经过多次监视客户端-服务端通信,我发现服务端每发生一个配置变更后,服务端都会向客户端的TCP 61832端口发送一个特定的HTTP请求。这是一个简单的GET请求,形式如下:

 > pwdenc A
00
> pwdenc AA
006C
> pwdenc AB
006F
> pwdenc BA
036C
> pwdenc BB
036F
> pwdenc ABC
006F00

很明显,这个加密算法基本上就是个简单的多表替代算法(类似Vigenere 密码),很容易从原来的DLL里还原实现算法过程:循环加密1KB所有可打印字符串后(1024遍‘A’,1024遍‘B’等等。),形成了一个可用来加解密的数据库,以后我可以用这个数据库构建我的exploit,不需要什么原始二进制文件或者大量的反向工程。

回到原来的话题,解密那串十六进制字符串吧:

[jdkNotify] error=-1471291287,clinet=472bc675-3862-4e9d-9890-e3b14d4ddc3e,server=SEQ=80&DELAY=0&USEPROXY=0&PROXY=&PROXYPORT=0&PROXYLOGIN=&PROXYPWD=&SERVER=192.168.124.134&SERVERPORT=8080ccNT_Version=10.6&Pcc95_Version=10.6&EngineNT_Version=9.700.1001&Engine95_Version=&ptchHotfixDate=20131228153813&PTNFILE=1050100&ROLLBACK=1050100&MESSAGE=20&TIME=201312281648170406&DIRECT_UPDATE=1, return -1293342568

 绝大部分字段都跟以前的很相似吧,唯一看上去不太顺眼的就剩下clinet(看清楚了不是client)这个字段了,字段内容就是客户端安装时生成的GUID。从漏洞利用的角度出发这不是个好消息,因为你没法猜出这个数值,但如果我们稍微加强攻击模式就能发现一些可用的东西:

 - 客户端GUID在网络中以明文方式周期性发送

 - 本地攻击者默认可以获得这个值,通过读取OfficeScan配置和日志文件

为了这篇文章先假定我们已经获取了这个GUID,能利用这个通知消息做些什么呢?

很明显,我们可以通过在初始通知消息中设置相应字段内容,将我们自己冒充成服务端或者代理服务器,如果我们在通知中设置更高的版本信息内容,就能触发软件更新进程,就可以成功的将自己的主机伪装成服务器或代理服务器从而实现中间人攻击。

从这点来看,获取控制的最明显途径就是劫持更新进程,从而使客户端下载执行作为更新内容的恶意软件,我弄了个小脚本MitMproxy来执行这个任务:

看来OSCE只接受签名的二进制文件,在通过非可信通道中进行更新时,这是一个好方法(企业环境中处理TLS证书是非常棘手的。。。)。为了解决这个问题,我使用 Didier Stevens的脚本disitool,来寻找在OCSE安装期间未签名的PE文件:

$ find . -iname '*.exe' -exec echo {} \; -exec python ~/tools/disitool.py extract {} /tmp/sig \; 2>&1 | grep Error -B1

  ./7z.exe
  Error: source file not signed
  --
  ./bzip2.exe
  Error: source file not signed
  --
  ./bspatch.exe
  Error: source file not signed
  $ find . -iname '*.dll' -exec echo {} \; -exec python ~/tools/disitool.py extract {} /tmp/sig \; 2>&1 | grep Error -B1
  ./libeay32.dll
  Error: source file not signed
  --
  ./libcurl.dll
  Error: source file not signed
  --
  ./7z.dll
  Error: source file not signed
  (...)

在我尝试弄明白这些文件能否被远程替换之前,Dnet建议我先植入一个使用非趋势公司签名的二进制文件,经过快速测试,我决定使用TotalCommander安装程序,它由一个默认被WinVerifyTrust(微软数字签名认证API)接受的第三方签名。测试很成功,看来OSCE只关心更新程序是否有数字签名而不关心谁签的名。记住:数字签名只能告诉你消息的创建者,没法告诉你创建者的意图。

三、小结

目前发现的几个缺陷:

 - OfficeScan使用弱加密
 - OfficeScan使用硬编码密码
 - OfficeScan不严格验证系统端点(服务端和客户端)
 - OfficeScan不验证可执行程序的签名来自厂商或其他可信第三方

这些缺陷看上去构不成严重威胁,但组合起来就可以在任何客户端上实现远程执行代码:

 - 获取目标客户端GUID

 - 构造一个通知消息,伪造攻击者地址为代理服务器,伪造版本信息指示客户端请求更新

 - 替换更新中的任意一个可执行文件为恶意程序,这个恶意程序需要被微软证书仓库提供的默认CA签名(这个需要几百美刀)

点击这里查看攻击演示视频

当攻击者能从网络中获取客户端GUID或想提升本地权限的时候,这个攻击是非常实用的,结合另一个信息泄漏漏洞,可能提高攻击达到CVSS 10.0的水平。基于其他发现的漏洞可能还有不少,这个软件太大了,看到的只是冰山一角而已。

四、厂商反应及对策

2014年1月3日我告知厂商第一个信息泄漏漏洞,趋势科技很快给出了回应,然后我分享了发现的其他问题和可能攻击方向(详细时间节点见后面)。虽然趋势科技是我个人见过响应最积极的厂商,但看上去他们在处理安全漏洞方面不够老道:经过数月的讨论,他们还是没搞清楚,报告的问题该算漏洞还是“特征”,最新发布的OSCE 11是否解决了这些问题,是否有配置步骤能降低被攻击的风险。没有这些信息,我甚至无法撰写一篇正式的建议,因此大家就看到了这篇博客。

由于我没见到厂商在解决产品安全问题上有令人满意的进展,我决定发表我的研究结果,这样大家都能认识到这些风险,可能会促使厂商实施一些缓解措施,比如:

 - 在服务端和客户端实施防火墙策略,限制合法节点才能访问OfficeScan端口(强烈建议所有集中管理式防病毒软件这样做)

 - 使用高强度停止/卸载密码

 - 限制本地用户对OfficeScan配置文件和日志文件的访问权限

 - 使用安全网络协议(如TLS、IPSec)封装OfficeScan通讯数据

瞄了一眼OSCE 11之后,发现通知消息现在用上数字签名了,上面提的远程获取办法可能失效了(我没有时间进行深入分析),但是由于基础架构和加密组件仍保持不变,本地权限提升应该还可实现。

五、时间表

l  2014-01-03: 发送联系要求给info@trendmicro.com和security@trendmicro.com

l  2014-01-03: 收到厂商回应

l  2014-01-04: 发送漏洞细节给厂商

l  2014-01-07: 厂商回应:问题在调查

l  2014-01-08: 厂商要求提供更多信息

l  2014-01-08: 发送更多信息给厂商

l  2014-01-14: 厂商要求提供更多信息

l  2014-01-15: 提供演示视频给厂商

l  2014-01-28: 厂商承认漏洞

l  2014-01-28: 询问预期修复时间

l  2014-02-03: 厂商回应:年中将发布修复版本

l  2014-02-05: 发送二进制文件植入攻击模式细节

l  2014-02-18: 确认02-05发送的漏洞是否收到并处理

l  2014-02-24: 厂商确认收到并处理02-05发送漏洞

l  2014-02-27: 厂商回应:特别配置可以实施更严格的二进制文件签名检查

l  2014-02-28: 询问修补计划和可能的配置加强信息

l  2014-03-05: 厂商回应部分信息

l  2014-03-05: 询问更多可能对策和修补计划细节说明

l  2014-03-17: 厂商回应部分信息

l  2014-05-05: 通知厂商准备发布漏洞信息,询问修补状态和可能的配置加强信息

l  2014-05-07: 厂商通告OSCE 11发布,修补状态不明

l  2014-06-06: 公开披露

原文:As such, they are not trivial to fix or even decide if they are in fact vulnerabilities.可能笔误多了个not。

原文:http://server:61832/?[hex_string],联系上下文应为笔误。

这些评论亮了

  • 哦,竟然还能上谷歌~~!
    )38( 亮了
  • Eubanks 回复
    以前的安全方案重在保障网络的安全。现在是将重点转移到保护数据本身的时候了。而实现这一目标的最佳方式之一就是采用 Symantec™ Data Loss Prevention。
    )36( 亮了
  • 原文是6月份出来的,分析过程很清晰
    1、Burp Intruder做fuzzing;
    2、IDA做函数分析;
    适合做个教学片出来~期待公开课出品哦~
    PS:原文还有个视频~杀毒软件都不保了,咱们一块裸奔吧!!!
    )31( 亮了
  • trendlab 回复
    趋势科技2014年网络安全威胁预测报告 太尼玛有讽刺意味了
    去年9月,趋势科技与国际网络安全保护联盟(ICSPA)联合发布了《2020系列》安全报告,指出可穿戴电脑等新兴科技将如何改变我们的世界。
    如果你觉得2020的威胁有些过于遥远,近日趋势科技又发布了《2014年信息安全预测报告》
    ,指出新的一年网络安全与目标攻击的边界将日趋模糊,攻击者将不择手段,而且他们可用的工具和漏洞越来越丰富,而执法单位则面临全新的安全领域挑战(例如深网),以及由于棱镜门事件导致的公众对政府的不信任。物联网和工控网安全是另外一个重大议题,对智能电表和工业控制系统以及追踪技术如自动身份识别系统(AIS)的攻击已经引起了公众的注意。以下是趋势科技对2014新安全威胁的八大预测:
    一、移动银行面临中间人攻击(MitM)的威胁加大,基本的两步认证已经不足以确保安全。
    2013年第三季度在线银行的感染记录超过20万条,创下历史新高,2014年还将继续增长。银行业面临的安全威胁不仅限于电脑,越来越多的攻击针对移动银行。与银行相关的手机APP正成为网络犯罪的首要攻击目标,主要手段是伪装成口令发生器的恶意APP。
    移动银行让传统的两步认证变得不再靠谱,因为银行交易和认证这两个环节都在手机上完成,网络犯罪分子已经能够通过PERKEL和ZITMO这样的恶意软件截获认证口令。
    2013年全美智能手机用户有五分之一通过移动设备使用手机银行,2014年这个比例还将攀升,随之而来的是中间人攻击数量的增长。
    谷歌最新发布的Android KitKat操作系统增加了很多安全功能,但是由于Android设备系统的高度碎片化,大量用户无法享受到新的安全功能保护。
    二、网络犯罪分子将更多使用目标攻击方法,例如开源研究和高度定制化的鱼叉式网络钓鱼等。
    三、就目标攻击而言,我们将看到更多点击劫持和灌洞攻击(Watering hole),更多的漏洞选择和攻击手法,以及通过移动设备展开的攻击。
    四、每个月都将发生重大的数据泄露事故。2013年Adobe泄露3800万用户数据、Evernote印象笔记泄露了5000万用户数据,而雅虎日本则泄露了2200万用户账户数据(编者按:这看上去像一次激烈的数据泄露世界竞标赛,2014年“竞争”将更加激烈)
    五、对失去技术支持的软件如Java6何Windows XP的攻击强度将大大增加。
    六、对付深网(Deep Web)大规模网络犯罪对执法机构来说将是个巨大挑战。美国联邦调查局打掉Silk Road网上黑市收效甚微,不到一个月Silk Road就出现了新的“更安全”的版本。犯罪网络将潜得更“深”,匿名和加密手段也将更加高明。
    七、棱镜门唤醒公众的隐私保护意识。棱镜门引发了公众对隐私的保护意识,大量青少年离开Facebook转向消息APP,WeChat(微信)的活动用户暴增了1021%,大多是16-19岁的青少年。而阅后即焚的图片分享应用Snapchat每日发送的图片则高达3.5亿张。
    八、2014年还不会有大规模的物联网威胁,真正的物联网威胁“杀手应用”需要借助增强现实(AR)的普及,例如以头戴显示技术。
    )29( 亮了
  • botman 回复
    国内的安全秩序太乱了
    必须依法治理啊
    在基本的网络安全立法框架之上,网络安全立法还需要解决网络安全管理流程中由于法律手段缺乏、行政手段代替带来的问题。
    工信部电信研究院政策与经济研究所法律部主任李海英指出,在立法缺乏的情况下,往往由行政命令要求企业尤其是国企提供一些相关的配合,但是在未来的市场开放的情况下,市场参与主体增多,国有企业、国有资本可能逐渐退出,在这种情况下,如何把通过行政管理的工作变成法制化的要求非常关键。
    专家指出,要尽快改变中国网络安全的立法局面,通过更高层面立法完善中国的法律,让网络安全的法律法规适应时代的发展。特别是刑法作为打击网络犯罪的有效工具,可以扩大刑法罪名设置,完善网络犯罪的罪名体系,扩大刑法的保护范围,加大对网络安全的保护力度,由结果犯修改为危险犯,加大对帮助犯的打击力度。
    孙佑海说,在实践中发现,现在借助网络进行违法犯罪活动的单位日益增多,相当一部分网络犯罪的主体实际是以单位组织、公司的名义出现,所以,要对从事网络违法犯罪的单位和个人同时给予制裁。
    对网络信息滥用和欺诈行为,专家建议进行源头治理,着重打击购物网站的违法犯罪行为,惩治以违法方式泄露用户信息的行为,建立完善的网上保险制度,降低网络交易风险。
    国务院法制办工交商事法制司副司长马森述指出,网络领域的立法与传统立法有所不同,需处理好新技术和新业务的关系、管理和发展的关系。如互联网金融、打车软件就是由于新技术新应用催生了新的经营方式。
    互联网的每一次技术革新,都会挑战已确立的基本法的原则和规则。孙佑海建议,强化网络知识产权保护的制度,不断明确技术规则、技术创新,把纠纷行为和网络技术区分开,在制裁网络行为同时保护技术发展。
    )29( 亮了
发表评论

已有 24 条评论

取消
Loading...

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php