CN106919844B - 一种Android***应用程序漏洞检测方法 - Google Patents

一种Android***应用程序漏洞检测方法 Download PDF

Info

Publication number
CN106919844B
CN106919844B CN201710078479.4A CN201710078479A CN106919844B CN 106919844 B CN106919844 B CN 106919844B CN 201710078479 A CN201710078479 A CN 201710078479A CN 106919844 B CN106919844 B CN 106919844B
Authority
CN
China
Prior art keywords
apk
loophole
packet
apk packet
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710078479.4A
Other languages
English (en)
Other versions
CN106919844A (zh
Inventor
翁健
张悦
魏林锋
侯琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinan University
Original Assignee
Jinan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jinan University filed Critical Jinan University
Priority to CN201710078479.4A priority Critical patent/CN106919844B/zh
Publication of CN106919844A publication Critical patent/CN106919844A/zh
Application granted granted Critical
Publication of CN106919844B publication Critical patent/CN106919844B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种Android***应用程序漏洞检测方法,可用于渗透测试和APK安全性测试。本发明方法首先分析待检测的APK包,确定其可能存在的漏洞种类;然后寻找APK包的早期版本,并按照发布时间顺序排序;循环遍历早期版本的APK包,对其进行APK可用性测试;对于存在网络连接的APK包,逐一进行网络抓包嗅探分析测试,寻找漏洞;对于不存在网络连接的APK包,进行解包逆向工程操作,分析是否存在漏洞;利用找到的漏洞进行攻击,试探攻击是否成功,如果成功,则确定为漏洞。

Description

一种Android***应用程序漏洞检测方法
技术领域
本发明属于网络空间安全技术领域,尤其涉及一种Android***应用程序漏洞检测方法。
背景技术
近年来,智能移动端发展迅速,Android操作***以其开源、界面美观、用户体验好等诸多优势在智能移动端操作***林立涌现的局势下,迅速占据了最大的市场份额。Android的安装程序APK也由于其开发者入门门槛较低,支持第三方开发等原因,备受开发者的青睐。在一个APK开发到应用的过程中,正常情况要经历很多个版本,从一开始的内测版本到公测版本,再到后来的商用版本。每一次的更新都是对自身的一次提升,早期版本的APK由于技术所限,开发人员的经验不足,尤其是在开发过程中涉及到网络与信息安全问题的处理不当,很可能导致早期版本存在很多逻辑设计上或安全应用上的漏洞或者缺陷。
对于最新版的APK应用程序,要想通过逆向工程手段进行分析是十分困难的,因为其代码一般采取了相应的保护措施。但是这一点在早期版本中并不明显。事实上,如果攻击者能对早期的APK包展开攻击,恢复出源代码,或者通过分析协议,拿到一些企业仍在使用的RestfulAPI接口,那么攻击者的能力就会变得非常强,很可能拿到一些有价值的信息,甚至直接对企业服务器展开攻击。
前述逆向工程,顾名思义,就是通过现有的产品,采用一些技术手段对其进行逆向推演,最后还原出产品本来的***架构、模块组成等。对于一个Android应用程序来说,我们可以通过最原始的APK包,利用一些工具还原出APK的逻辑代码、架构、函数调用树、界面源码等。常见的工具有APKTool和dex2jar,这也是我们主要使用的工具。另外,有专门针对于Android逆向工程的Linux操作***,集成了很多可以进行反编译的工具。
传统的APK漏洞检测方法,侧重于在最新的版本中进行漏洞检测,这样只能发现当前版本客户端应用的漏洞,而无法发现存在于服务器端、但未在新版本中使用的漏洞。这是传统的检测方法的一个盲点。
此外,传统的APK漏洞检测方法,仅对一个版本的APK进行漏洞检测,忽略了版本与版本之间的联系,因而检测结果具有局限性,无法对APK的安全性进行全面综合的评测。
发明内容
本发明的目的在于提供一种Android***应用程序漏洞检测方法,能有效检测出应用程序的漏洞,辅助于服务器渗透测试或者渗透测试工程师对第三方APK软件的安全性评估等。
本发明Android***应用程序漏洞检测方法,包括以下步骤:
步骤一、分析待检测的APK包,确定其可能存在的漏洞种类;
步骤二、寻找APK包的早期版本,并按照发布时间顺序从早到晚排序各版本;
步骤三、从最早发布的APK包进行APK可用性的测试,即测试APK包能否正常使用;如果不能正常使用,按照发布时间顺序继续选择下一个APK包进行测试,以此类推,直至找到一个可用的APK包为止,找到后进入步骤四;
步骤四、对于不存在网络连接的APK包,直接进入步骤五,对于存在网络连接的APK包,对APK包进行网络抓包嗅探分析测试,寻找漏洞;测试完毕后,对剩下的可用早期版本APK包逐一进行网络抓包嗅探分析测试,寻找漏洞,并记录找到的每一个漏洞;
步骤五、对APK包进行解包逆向工程操作,分析其是否存在漏洞;对剩下的可用早期版本APK进行逆向工程测试,记录找到的每一个漏洞;
步骤六、利用找到的漏洞进行攻击,试探攻击是否成功,如果成功,则确定为漏洞。
从以上技术方案可知,本发明通过分析测试待检测的APK包,确定其可能存在的漏洞种类;然后寻找APK包的早期版本,按照从旧到新排序各版本;循环遍历早期版本的APK包,对其进行APK可用性测试,对于存在网络连接的APK包,对APK进行抓包分析操作,记录APK产生的各种参数。对于不存在网络连接的APK,或是抓包分析完毕的APK,进行解包逆向工程操作,结合网络流分析其是否存在漏洞,最后,利用找到的漏洞进行攻击,试探攻击的是否成功。
与现有技术相比,本发明具有如下优点和有益效果:对APK包的众多版本,从旧版本到新版本逐一进行漏洞测试,即采用全局版本的方式进行漏洞检测。一方面,可利用以前版本的漏洞来推断新版本的漏洞,使得在检测过程中,更有目的性;另外一方面,全局版本的漏洞检测方式,可以更全面的检测漏洞,从而对APK的安全性有一个更为综合的评测结果。
附图说明
图1是本发明实施例提供的一种Android***应用程序漏洞检测方法的流程图。
具体实施方式
下面结合实施例和说明书附图对本发明作进一步详细的描述,但本发明的具体实施方式不限于此。
实施例
本发明Android***应用程序漏洞检测方法先确定准备检测的APK应用程序与其可能存在的漏洞种类;然后,寻找APK包的早期版本,将早期版本按照一定顺序逐一展开一系列的渗透测试;最后,对APK包进行抓包嗅探测试与逆向工程分析;最后,利用早期版本发现的漏洞,攻击现有版本的APK应用。如图1,各步骤具体如下:
步骤一、分析待检测的APK包,确定其可能存在的漏洞种类。可能存在的漏洞种类包括以下情形:
1、泄露沿用的核心算法。最突出的就是在游戏中,很多算法一旦确定后都不会变更的。如2048、像素鸟、植物大战僵尸、水果忍者等游戏。如果早期的源代码被破解,现在的游戏便很容易被盗版。
2、泄露沿用的UI设计。在现有的很多Android***应用程序中,可能存在部分界面和早期的类似甚至完全相同。
3、通信机制和内部协议。如百度云3.0版本的Andriod***客户端,仍然可以访问百度云现有的服务器。
4、客户端与服务器协商的保密参数,该参数可用作APK登录的认证凭证。
5、泄露企业的编程风格。不同的企业在代码开发管理规范上都有不同的管理要求。有的是可以公开的,而有的编程风格或者所透露的代码管理规范是企业不允许公开的。
6、弱安全机制操作接口。通过早期版本暴露出来的操作接口,直接攻击安全机制较差的服务器。
7、攻击者通过Android***平台,揣摩其他平台的代码与算法。很可能他们用的算法是一样的,至少结构是一样的。
8、篡改源代码。绕过客户端内嵌的检验机制或者植入病毒,如有的客户端存在访问次数和期限的限制,如果拿到之前容易反编译的客户端版本,我们就可以利用其重新篡改源代码转入后台。
步骤二、寻找该APK包的早期版本,并按照发布时间顺序从早到晚排序各版本。寻找早期版本可以通过如下方式:
1、第三方平台:很多第三方平台,如安卓市场、手机乐园等,都提供了一个APK对应历史版本的下载链接。
2、官方发布:官方会有自己的网站、微博账号、贴吧等,通过这些渠道发布自己最新的APK版本。通过其多个版本的发布情况,我们可以获取到早期的APK版本。
3、搜索引擎。通过百度或者谷歌搜索引擎进行搜索,搜索的关键字包括:
1)APK名称+“历史版本”,如淘宝历史版本;
2)APK名称+模糊版本号,如淘宝1.0,百度云2.0,优酷2.2;
3)APK名称+具体版本号,具体版本号一般建立于模糊版本号的基础上,假如当搜索了淘宝1.0,搜索引擎反馈回来的是所有与1.0有关的版本信息,如淘宝1.0.5今日发布,淘宝3.1.0重要更新。鉴于此,可以细化版本号,完成精确搜索下载。
步骤三、从最早发布的APK包进行APK可用性的测试,即测试该APK包是否可以正常使用;如果不可以正常使用,按照发布时间顺序继续选择下一个APK包进行测试,以此类推,直至找到一个可用的APK包为止,找到后进入步骤四。
确定一个应用程序的发布时间,可以通过解压APK包的方法,获取其“classes.dex”等文件的生成时间,该时间可以认为是APK的发布时间,这用编程语言是非常容易实现的。
可用性测试可结合步骤四。如果一个APK已经不可以使用,那么后续对其进行的所有操作都是徒劳的。所以,能否正常使用是APK检测操作的第一步,也是最为基本的一步。
步骤四、对于不存在网络连接的APK包,直接进入步骤五,对于存在网络连接的APK包,对APK包进行网络抓包嗅探分析测试,寻找漏洞;测试完毕后,对剩下的可用早期版本APK包逐一进行网络抓包嗅探分析测试,寻找漏洞,并记录找到的每一个漏洞。
网络抓包嗅探,指的是通过抓取正常网络的通信数据,进行数据嗅探,对抓取到的数据包进行拆包和解包,试图理解包内数据的每个字段代表的具体含义,并试图利用数据包模拟客户端与服务器进行交互。
寻找漏洞,主要是要借助客户端和服务器之间的数据流,查找和操作相关的参数,对数据流进行分析,以快速锁定目标(即漏洞)。前述参数一般包括变量名和对应的值,通常由运算符“=”连接,非常容易被识别。具体来说,对漏洞判断有价值的参数可分为以下三种:
(1)操作行为参数:表明了操作行为的键值对。此时,变量名可能是一个缩写,如“op”、“method”等。它对应的值可能看起来像一些字符串,包含目前将要进行的行为,如“del”、“delete”。
(2)操作客体参数:表明了操作客体的键值对,变量名代表“要删除名称”,这些变量名可能形如“name”、“file”等。对应的值是具体的文件名等。
(3)认证参数:表明了用户身份信息或会话密钥等键值对。一般情况,用户名的变量形如“u”、“username”等等。密码变量名则形如“password”、“pwd”等。认证参数的变量名则形如“secret”、“sig”等。提交的值并不总是明文,如果值是密文,加密密钥必然内嵌在客户端源代码中,记录下来等待步骤五的进一步操作。
步骤五、对该APK包进行解包逆向工程操作,分析其是否存在漏洞。对剩下的可用早期版本APK进行逆向工程测试,记录找到的每一个漏洞。
因为步骤四中得到的认证参数,往往不一定是明文,不能直接用于认证或者攻击行为,所以,一般的做法是将APK包进行逆向工程操作,解析出内部的认证参数算法或者固化在应用程序内部的秘密认证。利用链接网络的版本,我们可以破译通信机制和内部协议、客户端与服务器协商的保密参数、弱安全机制等方面的漏洞。
对于不连接网络的版本,我们可以利用解析出的源代码,推测应用程序沿用的核心算法、沿用的UI设计、企业的编程风格、跨操作***平台的攻击漏洞和篡改源码权限绕过等,为企业Android***应用程序发展在这些方面的漏洞敲响警钟。
步骤六、利用找到的漏洞进行攻击,试探攻击是否成功,如果成功,则确定为漏洞。攻击的方法可以为:
1)阅读源代码,破译核心算法。
2)阅读源代码,破译UI设计。
3)阅读源代码,解析企业编程风格。
4)阅读源代码,寻找跨平台攻击点。
5)阅读源代码,进行权限绕过。
6)包装网络流,对操作行为参数、操作客体参数等进行数据重新封装,利用TCPReplay、Fiddler等工具进行重放攻击和中间人攻击等。
7)阅读源代码,了解认证机制和包装网络流,对指定用户名与密码进行穷举。
8)阅读源代码,了解弱安全机制接口和包装网络流,直接对弱安全机制接口进行漏洞攻击。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种Android***应用程序漏洞检测方法,其特征在于,包括以下步骤:
步骤一、分析待检测的APK包,确定其可能存在的漏洞种类;
步骤二、寻找APK包的早期版本,并按照发布时间顺序从早到晚排序各版本;通过解压APK包获取其classes.dex文件的生成时间作为APK包的发布时间;
步骤三、从最早发布的APK包进行APK可用性的测试,即测试APK包能否正常使用;如果不能正常使用,按照发布时间顺序继续选择下一个APK包进行测试,以此类推,直至找到一个可用的APK包为止,找到后进入步骤四;
步骤四、对于不存在网络连接的APK包,直接进入步骤五,对于存在网络连接的APK包,对APK包进行网络抓包嗅探分析测试,寻找漏洞;测试完毕后,对剩下的可用早期版本APK包逐一进行网络抓包嗅探分析测试,寻找漏洞,并记录找到的每一个漏洞;
寻找漏洞的方法为:借助客户端和服务器之间的数据流,查找和操作相关的参数,对数据流进行分析,以锁定漏洞;
步骤五、对APK包进行解包逆向工程操作,分析其是否存在漏洞;对剩下的可用早期版本APK进行逆向工程测试,记录找到的每一个漏洞;
步骤六、利用找到的漏洞进行攻击,试探攻击是否成功,如果成功,则确定为漏洞。
2.如权利要求1所述的Android***应用程序漏洞检测方法,其特征在于,步骤一所述可能存在的漏洞种类包括:泄露沿用的核心算法;泄露沿用的UI设计;通信机制和内部协议;客户端与服务器协商的保密参数;泄露企业的编程风格;弱安全机制操作接口;早期版本暴露出来的操作接口;篡改源代码。
3.如权利要求1所述的Android***应用程序漏洞检测方法,其特征在于,步骤二所述寻找APK包早期版本的方式包括:第三方平台、官方发布或者搜索引擎。
4.如权利要求1所述的Android***应用程序漏洞检测方法,其特征在于,所述发布时间的确定方式为:通过解压APK包获取其“classes.dex”文件的生成时间作为APK包的发布时间。
5.如权利要求1所述的Android***应用程序漏洞检测方法,其特征在于,所述相关的参数包括:
(1)操作行为参数,所述操作行为参数表明了操作行为的键值对;
(2)操作客体参数,所述操作客体参数表明了操作客体的键值对;
(3)认证参数,所述认证参数表明了用户身份信息或会话密钥键值对。
6.如权利要求1所述的Android***应用程序漏洞检测方法,其特征在于,步骤六所述攻击的方法包括:
a、阅读源代码,破译核心算法、破译UI设计、解析企业编程风格、寻找跨平台攻击点或进行权限绕过;
b、包装网络流,对操作行为参数、操作客体参数进行数据重新封装,利用TCPReplay、Fiddler工具进行重放攻击和中间人攻击;
c、阅读源代码,了解认证机制和包装网络流,对指定用户名与密码进行穷举;
d、阅读源代码,了解弱安全机制接口和包装网络流,直接对弱安全机制接口进行漏洞攻击。
CN201710078479.4A 2017-02-14 2017-02-14 一种Android***应用程序漏洞检测方法 Active CN106919844B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710078479.4A CN106919844B (zh) 2017-02-14 2017-02-14 一种Android***应用程序漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710078479.4A CN106919844B (zh) 2017-02-14 2017-02-14 一种Android***应用程序漏洞检测方法

Publications (2)

Publication Number Publication Date
CN106919844A CN106919844A (zh) 2017-07-04
CN106919844B true CN106919844B (zh) 2019-08-02

Family

ID=59453606

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710078479.4A Active CN106919844B (zh) 2017-02-14 2017-02-14 一种Android***应用程序漏洞检测方法

Country Status (1)

Country Link
CN (1) CN106919844B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109858252B (zh) * 2017-11-30 2023-04-25 中标软件有限公司 自制***的漏洞分析修复方法
CN108173832A (zh) * 2017-12-25 2018-06-15 四川长虹电器股份有限公司 基于端云联测的家庭物联网应用***渗透测试方法
CN109981715B (zh) * 2017-12-28 2021-11-16 中移动信息技术有限公司 一种会话管理的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103227992A (zh) * 2013-04-01 2013-07-31 南京理工大学常熟研究院有限公司 基于Android终端的漏洞扫描***
CN104537309A (zh) * 2015-01-23 2015-04-22 北京奇虎科技有限公司 应用程序漏洞检测方法、装置及服务器
US9245125B2 (en) * 2014-02-27 2016-01-26 Nec Laboratories America, Inc. Duleak: a scalable app engine for high-impact privacy leaks
CN105653943A (zh) * 2015-12-24 2016-06-08 北京奇虎科技有限公司 Android应用的日志审计方法及***
CN105989251A (zh) * 2015-02-12 2016-10-05 卓望数码技术(深圳)有限公司 一种盗版安卓应用甄别方法及盗版安卓应用甄别***

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397301B2 (en) * 2009-11-18 2013-03-12 Lookout, Inc. System and method for identifying and assessing vulnerabilities on a mobile communication device
US9495542B2 (en) * 2013-02-28 2016-11-15 Trustees Of Boston University Software inspection system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103227992A (zh) * 2013-04-01 2013-07-31 南京理工大学常熟研究院有限公司 基于Android终端的漏洞扫描***
US9245125B2 (en) * 2014-02-27 2016-01-26 Nec Laboratories America, Inc. Duleak: a scalable app engine for high-impact privacy leaks
CN104537309A (zh) * 2015-01-23 2015-04-22 北京奇虎科技有限公司 应用程序漏洞检测方法、装置及服务器
CN105989251A (zh) * 2015-02-12 2016-10-05 卓望数码技术(深圳)有限公司 一种盗版安卓应用甄别方法及盗版安卓应用甄别***
CN105653943A (zh) * 2015-12-24 2016-06-08 北京奇虎科技有限公司 Android应用的日志审计方法及***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"安卓平台下恶意软件的检测";张焕;《中国优秀硕士学位论文全文数据库 信息科技辑》;20141015(第10期);第I138-69页 *

Also Published As

Publication number Publication date
CN106919844A (zh) 2017-07-04

Similar Documents

Publication Publication Date Title
US11489855B2 (en) System and method of adding tags for use in detecting computer attacks
CN102546576B (zh) 一种网页挂马检测和防护方法、***及相应代码提取方法
US9479526B1 (en) Dynamic comparative analysis method and apparatus for detecting and preventing code injection and other network attacks
RU2568295C2 (ru) Система и способ временной защиты операционной системы программно-аппаратных устройств от приложений, содержащих уязвимости
US8726387B2 (en) Detecting a trojan horse
JP5396051B2 (ja) 承認済みファイルと信頼されたドメインのデータベースを作成及び更新する方法及びシステム
TW201642135A (zh) 文件檢測方法、裝置及系統
EP2179532A1 (en) System and method for authentication, data transfer, and protection against phishing
WO2018076697A1 (zh) 僵尸特征的检测方法和装置
CN106919844B (zh) 一种Android***应用程序漏洞检测方法
Luoshi et al. A3: automatic analysis of android malware
RU2661533C1 (ru) Система и способ обнаружения признаков компьютерной атаки
Chen et al. Mass discovery of android traffic imprints through instantiated partial execution
CN111182060A (zh) 报文的检测方法及装置
CN105205398B (zh) 一种基于apk加壳软件动态行为的查壳方法
KR101487476B1 (ko) 악성도메인을 검출하기 위한 방법 및 장치
Le Jamtel Swimming in the Monero pools
TWI671655B (zh) 用於程式安全保護的系統和方法
Guo et al. An empirical study of malicious code in pypi ecosystem
Shahriar et al. Detection of repackaged android malware
Niu et al. Clone analysis and detection in android applications
Mulders Network based ransomware detection on the samba protocol
Wrench et al. A sandbox-based approach to the deobfuscation and dissection of php-based malware
Hightower et al. Classifying Android Applications Via System Stats
US20220245249A1 (en) Specific file detection baked into machine learning pipelines

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant