彭先觉,胡 勇
(四川大学电子信息学院,四川 成都 610064)
利用软件在线升级的攻击*
彭先觉,胡 勇
(四川大学电子信息学院,四川 成都 610064)
随着国家软件产业的高速发展,各种不同功能的软件走进人们的生活,极大地方便了人们的生活。为了软件尽快上线,占领用户市场,软件开发中普遍采用“敏捷开发模式”进行软件开发。通过这种模式开发的软件发布后,软件功能要在使用中不断完善、扩充,并需要频繁升级。而互联网和移动互联网的高速发展催生了在线软件升级这种便捷的升级方式。针对这种现状,提出了一种利用软件在线升级的网络攻击方法,并针对这种攻击提出了具体的防御措施。
攻击方法;软件升级;防御措施
软件“敏捷开发”模式被越来越多的软件开发团队采用。敏捷开发是一种以人为核心、迭代、增量的开发过程[1]。这种软件开发模式能够适应需求的快速变化,在开发中通过循环迭代的流程,帮助开发者提高效率、降低成本,并尽可能地贴近市场需求[2]。采用这种开发模式开发的软件一个很明显的特征是软件上线快,并且升级频繁。另外,互联网和移动互联网的发展为软件在线升级提供了便捷的渠道。以百度软件为例,百度去年累计进行大的升级48次,平均每月4次,基本上保持每周一次的频率。
软件升级的目的是为了支持用户需求的变更以及环境的变化,以此使用户获得更好的体验[3]。软件升级是软件生命周期中非常重要的环节。它是软件逐步完善的过程,通过对软件进行功能的添加、删除、替换、扩充,使软件能够根据市场的需求做出及时的调整。
软件实现升级主要完成以下几步:
(1)升级程序自启动:启动后连接到特定的网站,发起版本请求;
(2)服务器回复相关的版本响应信息;
(3)应用程序解析版本响应信息,向服务器请求更新;
(4)获取服务器端新版本程序的文件目录;
(5)文件下载:下载新版程序文件到指定的临时目录;
(6)文件校验:对已下载的文件进行校验,判断其匹配性和完整性;
(7)备份和替换程序:压缩旧版程序到备份目录,并拷贝已下载文件到相应的位置;
(8)升级客户端程序:清除下载记录,更新客户端版本信息,完成升级工作[4]。
图1 软件更新流程图
图1所示流程是大部分软件采用的升级方式,从整个过程来看,软件升级模块采用明文方式进行通信,软件版本判断的方法过于简单,下载的更新文件校验不足,这些缺陷或漏洞对软件的安全使用构成了严重威胁。
基于软件更新的攻击流程攻击主要完成以下步骤,其攻击流程如图2所示。
(1)触发旧版软件更新;
(2)截获其旧版软件更新请求相关的服务器响应数据;
(3)解析服务器响应数据,修改并进行重放攻击;
(4)诱导最新版软件继续提示更新,使其请求更新数据包;
(5)替换软件更新数据包为其捆绑了其他软件的伪造数据包;
(6)客户端校验、安装;
(7)捆绑软件运行。
图2 利用在线升级的攻击流程图
3.1 触发正常更新
安装某团购网旧版软件,触发其正常更新,如图3所示。
图3 更新提示界面
如图3所示,该软件的最新版本为v5.3.0,并且通过弹窗提示用户升级版本。
3.2 捕获通信流量
配置流量捕获工具的参数,捕获通信流量,打开TCP流,结果如图4所示。
图4 升级信息的通信流量
3.3 解析请求响应数据包
服务器响应消息主体通过gzip压缩编码,解码还原后如图5所示。
图5 响应消息主体还原结果
通过进一步分析,服务器的响应数据中包含升级软件包的链接地址、软件版本、数据包大小及MD5校验值等信息,关键信息在图5中标记。通过多次本地测试,软件的版本由“version”字段确定,通过篡改“version”字段,可以实现虚假的软件版本升级提醒。
3.4 伪造升级数据包
在成功触发软件升级提醒后,伪造软件更新数据包。采用捆绑恶意软件的原软件作为伪造更新数据,用户下载伪造更新包升级软件后,既可以保留软件功能,又能实现捆绑软件的运行,具有很强的隐蔽性。本次采用的伪造升级数据包为参数为filesize:5248368 byte,MD5:10c3ed8557fdee975b1823d1ad37698。
对比伪造数据包的参数,相应修改服务器响应数据包中的参数,本文中修改的字段为”version”:”20.0.0”,”filesize”:5248368,”md5sum”: “10c3ed8557fdee975b1823d1ad37698”,从而触发最新版本软件进行更新提示。如图6所示。
图6 触发的升级提示
3.5 升级更新
用户点击升级后,伪造升级数据包成功下载,并且成功替换掉原来的文件实现安装,其中捆绑软件静默运行,如图7所示。
图7 升级安装提示
在线升级攻击成功源于:一是服务器反馈的更新信息过于简单,且很多都是明文或编码传输,并没有采用加密的方式防篡改,攻击者很容易还原其中的相关信息,并伪造响应包。二是对接收到的软件升级数据包没有校验或者校验过于简单,攻击者通过“中间人”来截获软件升级的通信数据,很容易进行重放攻击。针对这种攻击的特点,其防御措施如下。
(1)对版本请求信息采用加密处理,可以采用传输层或应用层的加密方式,防止被截获解析;
(2)软件判定是否升级应采用多种方式校验,避免采用单一的方式校验判定;
(3)对于安装升级的数据包通过数字签名进行校验,防止数据包被替换;
(4)在安装升级包时通过动态联网获取更新信息的完整性校验;
(5)对于软件升级,可以采用程序补丁方式进行升级[6],以减小升级时被捆绑的危险;
(6)防止恶意软件捆绑,对于PC端软件可以采用加壳的方式增大代码被逆向的难度,Android平台下可以采用模拟器检测,代码混淆方式,NDK保护等方式增大代码被逆向的难度[7]。
在线升级是所有软件都具备的功能,而大部分的软件并没有针对这种攻击做有效防御,因而这种攻击适用的范围很广。另外基于在线升级的攻击方法使攻击者完全占据了一个主动的位置,可以实现定点和定向的攻击,并且在整个攻击过程中,用户完全无感。欺骗软件升级后可以运行恶意捆绑软件,与其他进行软件恶意捆绑,然后上传网络平台供用户下载而感染的方法相比,该攻击方法可以绕过平台对软件的检测。基于软件升级的攻击方法是多种攻击手段的综合利用,如中间人攻击,流量劫持,软件逆向等,因而单一的防御方法不能有效对抗这种攻击。较之平常的攻击手段,其成功率更高,更隐蔽,因而具有很高的危害性。
[1] 邹波.基于敏捷开发模式下的软件测试的改进和应用[D].成都:电子科技大学,2010. ZOU Bo.Improvement and Application of Software Testing based on Agile Development Mode[D].Chengdu:UESTC,2010.
[2] 金杰.移动互联网创新应用敏捷开发探讨及实践[J].计算机光盘软件与应用,2013(14):277-277. JIN Jie.Explore and Practice of Mobile Internet Application Agile Developement[J].Computer CD Software and Application,2013(14):227-279.
[3] 任声骏.基于软件描述的软件升级及其安全问题的研究[D].西安:电子科技大学.2006. REN Sheng-jun.Research On Software Description-based Software Update and Its Security Issues[D].Xian:Xian University.2006.
[4] 侯景新.程序自动更新系统的研究与应用[D].哈尔滨中国建筑科学研究院,2010. HOU Jin-xin.Research and Application of Automatic Update System[D]. Haerbin Academy of Building Research,2010.
[5] Chris Sanders. Wireshark数据包分析实战[M].北京:人民邮电出版社.2012:55-66. Chris Sanders.Practical Packet Analysis[M].Beijing: Addison Wesley Publishing.2012:55-56.
[6] 郝文江.安装系统软件安全补丁-保证系统安全性[J].通信技术,2007(5):57-59. HAO Wen-jiang.Installing System Software Safety Patch-Promises a System Safety[J].Communications Technolog,2007(5):57-59.
[7] 丰生强.Android软件安全与逆向分析[M].北京:人民邮电出版社.2012:78-89. FENG Sheng-qiang.Android Software Security and Reverse Analysis[M].Beijing:Addison Wesley Publishing.2012:78-89.
Attack via Software Online Upgrading
PENG Xian-jue, HU Yong
(School of Electronic Information, Sichuan University, Chengdu Sichuan 61000, China)
With the rapid development of state software industry, various softwares with different functions inevitably involve people′s life, thus bring great convenience to people’s daily lives. To make software online and occupy the market as soon as possible, Agile Development Model is generally used in software development. After the release of software developed via the above model, software functions should be modified and extended constantly,and in addition, frequently updated. However, a convenient upgrading method, i.e., online software upgrading is emerged owing to the fast development of internet and mobile internet. In light of this, a network attacking method based on software online upgrading is presented, specific defensive measures also given in this paper.
attack method; software upgrading; defensive measures
10.3969/j.issn.1002-0802.2015.10.017
2015-05-21;
2015-08-19 Received date:2015-05-21;Revised date:2015-08-19
TP393
A
1002-0802(2015)10-1183-04
彭先觉(1989—),男,硕士,主要研究方向为网络通信、android逆向;
胡 勇(1973—),男,副教授,主要研究方向为信息安全。