CN106650452B - 一种Android系统内置应用漏洞挖掘方法 - Google Patents

一种Android系统内置应用漏洞挖掘方法 Download PDF

Info

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
Application number
CN201611263238.9A
Other languages
English (en)
Other versions
CN106650452A (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.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
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 Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN201611263238.9A priority Critical patent/CN106650452B/zh
Publication of CN106650452A publication Critical patent/CN106650452A/zh
Application granted granted Critical
Publication of CN106650452B publication Critical patent/CN106650452B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic 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系统内置应用漏洞挖掘方法
技术领域
本发明属于信息技术领域,具体涉及一种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,分析应用组件的生命周期函数和事件回调函数;根据类调用图模拟应用中函数调用的情况,得到控制流图。
CN201611263238.9A 2016-12-30 2016-12-30 一种Android系统内置应用漏洞挖掘方法 Active CN106650452B (zh)

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)

* Cited by examiner, † Cited by third party
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 国网浙江省电力有限公司 一种信息终端漏洞挖掘方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
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