CN106650452B - 一种Android系统内置应用漏洞挖掘方法 - Google Patents
一种Android系统内置应用漏洞挖掘方法 Download PDFInfo
- Publication number
- CN106650452B CN106650452B CN201611263238.9A CN201611263238A CN106650452B CN 106650452 B CN106650452 B CN 106650452B CN 201611263238 A CN201611263238 A CN 201611263238A CN 106650452 B CN106650452 B CN 106650452B
- Authority
- CN
- China
- Prior art keywords
- file
- vulnerability
- function
- vulnerabilities
- ida
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明属于信息技术领域,具体涉及一种Android系统内置应用漏洞挖掘方法。详细分析每一类的漏洞的代码,为每一类的漏洞整理出该类漏洞规则,并根据每类漏洞的威胁度附以不同的权值;将APK文件进行反编译,再对相应的可执行文件进行反汇编,对反汇编代码进行切片;将汇集后的代码生成特征数据;引入IDA工具,对.so文件进行分析;漏洞匹配。结合.so文件分析结果,最终得到静态权值报告;在开始动态检测前,获取指定APK文件静态报告,监测应用程序API函数的调用;通过集成Drozer动态分析框架,在命令行中输入各种测试命令,进行攻击面的确定并针对可攻击的地方进行测试。本方法实现快速发现所开发的APK的安全性,对维护Android系统稳定和业务安全具有重要的意义。
Description
技术领域
本发明属于信息技术领域,具体涉及一种Android系统内置应用漏洞挖掘方法。实现快速发现所开发的APK的安全性,对维护Android系统稳定和业务安全具有重要的意义。
背景技术
安卓目前已经在全世界的手机操作系统的市场上,占有统治地位。安卓系统在智能手机的安装率约为87%,而且还在继续增长。安卓在不断疯涨的过程中面临着一个严峻的问题——安全性,这个问题有可能会成为阻碍安卓发展的首要因素。国内外多个安全组织及个人从事漏洞研究。两个比较权威漏洞发布机构是CVE(Common Vulnerabilities andExposures)和CERT(Computer Emergency Response Team)。此外国外eEye、LSD等组织也对最新的漏洞进行及时跟踪分析,并给出相应的漏洞解决方案。绿盟科技、启明星辰等单位是国内安全研究组织的代表。近几年,IEEE S&P、CCS、Usenix Security、NDSS、ESORICS等10个顶级安全会议的发表论文情况来看,超过百篇与Android安全相关,而在Android漏洞挖掘中强调了对海量APP的检测,对扩展性和精确要求较高,所以APP漏洞挖掘是Android漏洞挖掘的一个重要部分。APP(应用程序,Application的缩写)一般指手机软件,APK文件是Android系统上应用软件的主要表现形式。Android应用程序包含文件(ApplicationPackage File)是一种Android操作系统上的应用程序安装文件格式。APK文件本质为ZIP格式,但后缀被修改为APK,通过使用UnZip解压,可以获得META-INF文件夹、res文件夹、AndroidManifest.xml文件、classes.dex文件、resources.arsc文件、lib文件夹等。Android系统内置应用程序的安全性在一定程度上决定了Android系统安全和系统业务的安全。
发明内容
本发明公开了一种Android系统内置应用漏洞挖掘方法,使用了动态分析和静态分析混淆的漏洞挖掘技术,包括:
一种Android系统内置应用漏洞挖掘方法,其特征在于:
S1,建立一个Android漏洞库;将漏洞分为以下8类:拒绝服务漏洞,跨站脚本攻击漏洞,输入验证漏洞,缓冲区溢出漏洞,敏感信息泄露漏洞,组件/权限暴露漏洞,SQL注入漏洞,其他;详细分析每一类的漏洞的特点,为每一类的漏洞整理出该类漏洞规则,并根据每类漏洞的威胁度附以不同的权值;
S2,将目标APK文件进行反编译,得到包括Manifest文件、资源文件和代码文件的文件;将反编译后的Manifest文件和资源文件进行解析,获取应用的权限申请、组件声明和类函数调用等信息;再对相应的可执行文件进行反汇编,对反汇编代码进行切片并进行汇集;
S3,将汇集后的反汇编代码通过语法词法分析、危险API分析、控制流、数据流分析,得到目标APK文件的行为特性,生成特征数据;对反编译后得到的smali代码进行词法分析和语法分析,获取危险函数调用信息;
S4,引入IDA工具对.so文件静态分析;通过一段python代码,实现从指定APP中提取所有的.so文件;将提取的.so文件导入IDA,反汇编.so文件得到二进制代码,通过二进制代码中静态分析的地址和.so文件在内存中的基址来定位目标函数;将二进制代码转换为C语言代码,利用IDA的功能模块Graph View查看目标APK的设计流程;
S5,漏洞匹配;针对不同种类的Android漏洞,通过编码构建相应的漏洞检测器,对静态分析得到的特征数据进行匹配检测,判断应用是否存在相应的漏洞;
S6,将S5中得到的漏洞类别以及对应的权值和S4中.so文件分析结果,对目标APK进行整体风险评估,生成静态分析报告;
S7,在开始动态检测前,获取指定APK文件静态报告中的威胁,监测应用程序API函数的调用;
S8,引入IDA对.so文件动态分析;使用IDA工具打开.so文件,找到指定的native层函数;结合S4中APK的设计流程和IDA中的快捷键,得到函数的执行流程;调试.so文件,将DA目录中的android_server拷贝到设备的指定目录下,修改android_server的运行权限,用Root身份运行android_server;使用adb forward进行端口转发,让远程调试端IDA可以连接到被调试端;使用IDA连接上转发的端口,查看设备的所有进程,找到需要调试的进程;再次打开.so文件,找到需要调试的函数的相对地址,然后在调试页面使用Ctrl+S找到.so文件的基地址,相加之后得到绝对地址,使用G键,跳转到函数的地址处,下好断点后运行;触发native层的函数,利用单步调试,查看寄存器中的值;
S9,过集成Drozer动态分析框架,在命令行中输入各种测试命令,确定攻击面;针对可攻击的地方,运用渗透手段进行测试;
S10,结合静态检测和动态检测结果,生成检测报告。
进一步,步骤S3及S4之间还能存在以下步骤:
S31,生成目标APK调用可视化文件,具体到目标APK中类方法调用关系,将表示其调用关系的类调用图采用YiFan Hu算法进行可视化美化;并在第三方软件Gephi中Filters选项设置相应的Class_name,对实现可视化图形进行筛选;在DataLabortatory对Nodes节点筛选包含指定类和方法调用;最终以gexf格式存储;
S32,分析应用组件的生命周期函数和事件回调函数;根据类调用图模拟应用中函数调用的情况,得到控制流图。
本发明综合静态检测和动态检测结果,生成检测报告。报告中按照威胁级进行排列,有助于测试人员优先处理威胁程度高的漏洞。
附图说明
图1为基于对APK文件反编译进行静态漏洞挖掘过程;
图2为基于Drozer框架的动态漏洞挖掘过程;
图3为整体方法框架;
具体实施方式
基于对APK文件反编译进行漏洞挖掘
S1,建立一个Android漏洞库;分析每一类的漏洞的特点,为每一类的漏洞整理出该类漏洞规则,并根据每类漏洞的威胁度附以不同的权值;
S2,将目标APK文件进行反编译,得到包括Manifest文件、资源文件和代码文件的文件;将反编译后的Manifest文件和资源文件进行解析,获取应用的权限申请、组件声明和类函数调用等信息;再对相应的可执行文件进行反汇编,对反汇编代码进行切片并进行汇集;
S3,将汇集后的反汇编代码通过语法词法分析、危险API分析、控制流、数据流分析,得到目标APK文件的行为特性,生成特征数据;对反编译后得到的smali代码进行词法分析和语法分析,获取危险函数调用信息;
S31,生成目标APK调用可视化文件,具体到目标APK中类方法调用关系,将表示其调用关系的类调用图采用YiFan Hu算法进行可视化美化。并在第三方软件Gephi中Filters选项设置相应的Class_name,对实现可视化图形进行筛选;在DataLabortatory对Nodes节点筛选包含指定类和方法调用;最终以gexf格式存储。
S32,分析应用组件的生命周期函数和事件回调函数。根据类调用图模拟应用中函数调用的情况,得到控制流图。
S4,引入IDA工具对.so文件静态分析。通过一段python代码,实现从指定APP中提取所有的.so文件;将提取的.so文件导入IDA,反汇编.so文件得到二进制代码,通过二进制代码中静态分析的地址和.so文件在内存中的基址来定位目标函数;将二进制代码转换为C语言代码,利用IDA的功能模块Graph View查看目标APK的设计流程;
S5,漏洞匹配。针对不同种类的Android漏洞,通过编码构建相应的漏洞检测器,对S3步骤的特征数据(例如:散列值、函数流程以及相关配置文件属性值)与S1中的漏洞规则匹配,判断目标APK文件存在的漏洞。将判断的漏洞类别结果与S1中不同类别漏洞威胁度结合,得到最终漏洞权值;
S6,将S5中得到的漏洞类别以及对应的权值和S4中.so文件分析结果,对目标APK进行整体风险评估,生成静态分析报告。
APK动态检测
S7,在开始动态检测前,获取指定APK文件静态报告中的威胁,监测应用程序API函数的调用;
S8,引入IDA对.so文件动态分析。使用IDA工具打开.so文件,找到指定的native层函数;结合S4中APK的设计流程和IDA中的快捷键,得到函数的执行流程;调试.so文件,将DA目录中的android_server拷贝到设备的指定目录下,修改android_server的运行权限,用Root身份运行android_server;使用adb forward进行端口转发,让远程调试端IDA可以连接到被调试端;使用IDA连接上转发的端口,查看设备的所有进程,找到需要调试的进程;再次打开.so文件,找到需要调试的函数的相对地址,然后在调试页面使用Ctrl+S找到.so文件的基地址,相加之后得到绝对地址,使用G键,跳转到函数的地址处,下好断点后运行;触发native层的函数,利用单步调试,查看寄存器中的值。
S9,过集成Drozer动态分析框架,在命令行中输入各种测试命令,确定攻击面。针对可攻击的地方,运用渗透手段进行测试。
S10,静态检测和动态检测结果,生成检测报告。报告中按照威胁级进行排列,有助于测试人员优先处理威胁程度高的漏洞。
Claims (2)
1.一种Android系统内置应用漏洞挖掘方法,其特征在于:
S1,建立一个Android漏洞库;将漏洞分为以下8类:拒绝服务漏洞,跨站脚本攻击漏洞,输入验证漏洞,缓冲区溢出漏洞,敏感信息泄露漏洞,组件/权限暴露漏洞,SQL注入漏洞,其他;详细分析每一类的漏洞的特点,为每一类的漏洞整理出该类漏洞规则,并根据每类漏洞的威胁度附以不同的权值;
S2,将目标APK文件进行反编译,得到包括Manifest文件、资源文件和代码文件的文件;将反编译后的Manifest文件和资源文件进行解析,获取应用的权限申请、组件声明和类函数调用等信息;再对相应的可执行文件进行反汇编,对反汇编代码进行切片并进行汇集;
S3,将汇集后的反汇编代码通过语法词法分析、危险API分析、控制流、数据流分析,得到目标APK文件的行为特性,生成特征数据;对反编译后得到的smali代码进行词法分析和语法分析,获取危险函数调用信息;
S4,引入IDA工具对.so文件静态分析;通过一段python代码,实现从指定APP中提取所有的.so文件;将提取的.so文件导入IDA,反汇编.so文件得到二进制代码,通过二进制代码中静态分析的地址和.so文件在内存中的基址来定位目标函数;将二进制代码转换为C语言代码,利用IDA的功能模块Graph View查看目标APK的设计流程;
S5,漏洞匹配;针对不同种类的Android漏洞,通过编码构建相应的漏洞检测器,对静态分析得到的特征数据进行匹配检测,判断应用是否存在相应的漏洞;
S6,将S5中得到的漏洞类别以及对应的权值和S4中.so文件分析结果,对目标APK进行整体风险评估,生成静态分析报告;
S7,在开始动态检测前,获取指定APK文件静态报告中的威胁,监测应用程序API函数的调用;
S8,引入IDA对.so文件动态分析;使用IDA工具打开.so文件,找到指定的native层函数;结合S4中APK的设计流程和IDA中的快捷键,得到函数的执行流程;调试.so文件,将DA目录中的android_server拷贝到设备的指定目录下,修改android_server的运行权限,用Root身份运行android_server;使用adb forward进行端口转发,让远程调试端IDA可以连接到被调试端;使用IDA连接上转发的端口,查看设备的所有进程,找到需要调试的进程;再次打开.so文件,找到需要调试的函数的相对地址,然后在调试页面使用Ctrl+S找到.so文件的基地址,相加之后得到绝对地址,使用G键,跳转到函数的地址处,下好断点后运行;触发native层的函数,利用单步调试,查看寄存器中的值;
S9,过集成Drozer动态分析框架,在命令行中输入各种测试命令,确定攻击面;针对可攻击的地方,运用渗透手段进行测试;
S10,结合静态检测和动态检测结果,生成检测报告。
2.如权利要求1所述一种Android系统内置应用漏洞挖掘方法,其特征在于,
步骤S3及S4之间还能存在以下步骤:
S31,生成目标APK调用可视化文件,具体到目标APK中类方法调用关系,将表示其调用关系的类调用图采用YiFan Hu算法进行可视化美化;并在第三方软件Gephi中Filters选项设置相应的Class_name,对实现可视化图形进行筛选;在DataLabortatory对Nodes节点筛选包含指定类和方法调用;最终以gexf格式存储;
S32,分析应用组件的生命周期函数和事件回调函数;根据类调用图模拟应用中函数调用的情况,得到控制流图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611263238.9A CN106650452B (zh) | 2016-12-30 | 2016-12-30 | 一种Android系统内置应用漏洞挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611263238.9A CN106650452B (zh) | 2016-12-30 | 2016-12-30 | 一种Android系统内置应用漏洞挖掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106650452A CN106650452A (zh) | 2017-05-10 |
CN106650452B true CN106650452B (zh) | 2020-01-24 |
Family
ID=58838707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611263238.9A Active CN106650452B (zh) | 2016-12-30 | 2016-12-30 | 一种Android系统内置应用漏洞挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106650452B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108932429B (zh) * | 2017-05-27 | 2023-02-03 | 腾讯科技(深圳)有限公司 | 应用程序的分析方法、终端及存储介质 |
CN107832619B (zh) * | 2017-10-10 | 2020-12-15 | 电子科技大学 | Android平台下应用程序漏洞自动化挖掘系统及方法 |
CN108090348A (zh) * | 2017-12-14 | 2018-05-29 | 四川长虹电器股份有限公司 | 基于沙盒的Android恶意软件检测方法 |
US11017094B2 (en) * | 2018-01-03 | 2021-05-25 | Beijing Jingdong Shangke Information Technology Co., Ltd. | System and method for java deserialization vulnerability detection |
CN108595952A (zh) * | 2018-03-30 | 2018-09-28 | 全球能源互联网研究院有限公司 | 一种电力移动应用软件漏洞的检测方法及系统 |
CN108959071B (zh) * | 2018-06-14 | 2021-09-24 | 湖南鼎源蓝剑信息科技有限公司 | 一种基于RASP的PHP变形webshell的检测方法及系统 |
CN110737891A (zh) * | 2018-07-19 | 2020-01-31 | 北京京东金融科技控股有限公司 | 一种主机入侵检测方法和装置 |
CN108989350B (zh) * | 2018-08-31 | 2021-03-19 | 北京梆梆安全科技有限公司 | 一种检测拒绝服务漏洞的方法、装置及设备 |
CN108881323B (zh) * | 2018-09-18 | 2020-08-21 | 中国人民解放军战略支援部队信息工程大学 | 基于群智理论的威胁检测系统及方法 |
CN111045679B (zh) * | 2019-01-09 | 2024-02-23 | 国家计算机网络与信息安全管理中心 | 一种sql注入的检测和防御方法、装置及存储介质 |
CN110378107B (zh) * | 2019-07-25 | 2024-05-10 | 腾讯科技(深圳)有限公司 | 一种安装包检测的方法及相关装置 |
CN112860224B (zh) * | 2019-11-28 | 2023-12-12 | 北京达佳互联信息技术有限公司 | 一种函数执行环境构建方法、装置、电子设备及存储介质 |
CN111488579B (zh) * | 2020-03-25 | 2023-06-02 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置、电子设备和计算机可读存储介质 |
CN111563257B (zh) * | 2020-04-15 | 2023-07-21 | 成都欧珀通信科技有限公司 | 数据检测方法及装置、计算机可读介质及终端设备 |
CN112100072B (zh) * | 2020-09-16 | 2024-04-19 | 广州虎牙科技有限公司 | 应用程序代码的静态检测方法、装置、设备及介质 |
CN113779589B (zh) * | 2021-09-14 | 2024-07-09 | 西安电子科技大学 | 一种安卓智能手机应用误配置检测方法 |
CN113946505A (zh) * | 2021-09-30 | 2022-01-18 | 深圳市智微智能科技股份有限公司 | 一种基于Android系统的I2C可视化操作工具及实现方法 |
CN114817916A (zh) * | 2022-03-30 | 2022-07-29 | 西安电子科技大学 | 一种安卓应用中自定义权限的误用问题检测系统和方法 |
CN116185520B (zh) * | 2022-12-08 | 2024-06-11 | 华中科技大学 | 一种安卓调用图构建方法、系统、设备及介质 |
CN117574393B (zh) * | 2024-01-16 | 2024-03-29 | 国网浙江省电力有限公司 | 一种信息终端漏洞挖掘方法、装置、设备及存储介质 |
-
2016
- 2016-12-30 CN CN201611263238.9A patent/CN106650452B/zh active Active
Non-Patent Citations (1)
Title |
---|
基于特征匹配的Android应用漏洞与框架;董国伟等;《清华大学学报(自然科学版)》;20160531;第56卷(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN106650452A (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106650452B (zh) | 一种Android系统内置应用漏洞挖掘方法 | |
Corina et al. | Difuze: Interface aware fuzzing for kernel drivers | |
Yang et al. | Leakminer: Detect information leakage on android with static taint analysis | |
CN102810143B (zh) | 基于Android平台手机应用程序的安全检测系统及方法 | |
CN104077531B (zh) | 基于开放漏洞评估语言的系统漏洞评估方法、装置和系统 | |
Mercaldo et al. | Download malware? no, thanks: how formal methods can block update attacks | |
CN104537309A (zh) | 应用程序漏洞检测方法、装置及服务器 | |
CN103996007A (zh) | Android应用权限泄露漏洞的测试方法及系统 | |
Senanayake et al. | Android source code vulnerability detection: a systematic literature review | |
Nirumand et al. | VAnDroid: a framework for vulnerability analysis of Android applications using a model‐driven reverse engineering technique | |
KR101972825B1 (ko) | 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램 | |
Yang et al. | Detection of malicious behavior in android apps through API calls and permission uses analysis | |
CN110941832A (zh) | 一种嵌入式物联网设备固件漏洞挖掘方法、装置及设备 | |
CN104537308A (zh) | 提供应用安全审计功能的系统及方法 | |
CN114021142A (zh) | 一种安卓应用程序漏洞检测方法 | |
CN109522235B (zh) | 一种针对安卓动态加载的隐私泄露检测的方法 | |
CN114386032A (zh) | 电力物联网设备的固件检测系统及方法 | |
Li et al. | Large-scale third-party library detection in android markets | |
Huang et al. | Code coverage measurement for Android dynamic analysis tools | |
Tuan et al. | Enhancing the accuracy of static analysis for detecting sensitive data leakage in Android by using dynamic analysis | |
Zhang et al. | A defense framework against malware and vulnerability exploits | |
Fang et al. | A static technique for detecting input validation vulnerabilities in Android apps | |
Wang et al. | Droidchain: A novel malware detection method for android based on behavior chain | |
KR20160090566A (ko) | 유효마켓 데이터를 이용한 apk 악성코드 검사 장치 및 방법 | |
CN102750220B (zh) | 一种软件源代码安全缺陷分析的方法和装置 |
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 |