CN114077728B - 基于静态检测的Android应用生物认证安全性方法 - Google Patents
基于静态检测的Android应用生物认证安全性方法 Download PDFInfo
- Publication number
- CN114077728B CN114077728B CN202010805666.XA CN202010805666A CN114077728B CN 114077728 B CN114077728 B CN 114077728B CN 202010805666 A CN202010805666 A CN 202010805666A CN 114077728 B CN114077728 B CN 114077728B
- Authority
- CN
- China
- Prior art keywords
- application
- android
- analysis
- authentication interface
- biological authentication
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/32—User authentication using biometric data, e.g. fingerprints, iris scans or voiceprints
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
- Storage Device Security (AREA)
Abstract
一种基于静态检测的Android应用生物认证安全性方法,从待测的应用安装包中提取静态资源文件并收集得到应用基本信息;通过逆向工程,使用Soot分析工具与Soot‑infoflow‑android Android静态分析工具反编译应用安装包内的DEX文件,获得Jimple中间语言,并加载至全局内存空间;通过静态分析技术对应用程序生物认证接口使用情况进行生物认证接口安全性分析与第三方依赖库识别分析,以排除生物认证接口误用、生物认证接口与密码学对象配套使用误用,并通过异步回调得到应用自身生物认证接口实现安全性和/或其使用的生物认证依赖库的生物认证接口使用安全性。本发明能够自动化识别App中是否存在Android生物认证可被绕过的安全风险,并支持高效且批量分析Android App或其使用的第三方生物认证依赖库误用Android生物认证接口造成的安全漏洞。
Description
技术领域
本发明涉及的是一种信息安全领域的技术,具体是一种基于静态检测的Android应用生物认证安全性方法。
背景技术
现有Android应用开始使用系统提供的生物认证接口来给用户提供方便快捷的生物认证取代传统的密码认证。但生物认证接口的误用可能会导致高权限攻击者轻松绕过生物认证,从而实现无需密码与合法的生物信息也能完成应用的生物认证。同样,第三方开发的开源生物认证依赖库或内部开发的生物认证依赖库可能存在Android生物认证接口误用的情况,并且相较于前者影响更为广泛,安全威胁更大。
发明内容
本发明针对现有技术存在的上述不足,提出一种基于静态检测的Android应用生物认证安全性方法,能够自动化识别App中是否存在Android生物认证可被绕过的安全风险,并支持高效且批量分析Android App或其使用的第三方生物认证依赖库误用Android生物认证接口造成的安全漏洞。
本发明是通过以下技术方案实现的:
本发明涉及一种基于静态检测的Android应用生物认证安全性方法,包括:
步骤1)从待测的应用安装包中提取静态资源文件并收集得到应用基本信息,具体为:将应用安装包作为ZIP加载至内存,并使用文件指针从内存中读取应用安装包中部分静态资源文件的动态链接库,例如AndroidManifest.xml与Android Native等,并通过字符串搜索匹配得到应用基本信息。
所述的应用基本信息包括:应用安装包样本散列值、应用权限申请清单以及应用代码保护方案,通过应用基本信息可以预判应用是否申请生物认证权限,并针对可能存在的代码保护方案进行预判,加快后续分析速度同时避免误报产生。
步骤2)通过逆向工程,使用Soot分析工具与Soot-infoflow-android Android静态分析工具反编译应用安装包内的DEX文件,获得Jimple中间语言,并加载至全局内存空间;
优选地,在反编译时采用黑名单配置避免Android SDK附带的与应用程序无关的类被同时反编译带来的性能损失。
步骤3)通过静态分析技术对应用程序生物认证接口使用情况进行生物认证接口安全性分析与第三方依赖库识别分析,以排除生物认证接口误用、生物认证接口与密码学对象配套使用误用,并通过异步回调得到应用自身生物认证接口实现安全性和/或其使用的生物认证依赖库的生物认证接口使用安全性。
所述的生物认证接口安全性分析,具体包括:
①从步骤2得到的全局内存空间获得反编译后的应用中间代码,对应用中存在的所有类进行枚举,并使用Android生物认证接口类签名与枚举的类的父类类名进行字符串匹配,初步过滤出应用中存在的继承了Android系统生物认证接口的类。
②通过递归搜索,检查初步筛选出的类重写的onAuthenticationSucceed回调方法中是否调用了回调参数结果对象中的getCryptoObject方法,从而判断应用程序调用生物认证接口是否安全。
优选地,在递归搜索中,使用类签名黑名单避免方法互相调用可能导致的潜在递归栈溢出风险。
③在步骤①得到的初步过滤结果中进行进一步过滤:
i)当在重写的回调方法中没有调用回调参数结果对象中的getCryptoObject方法,则认定该应用存在应用接口误用安全问题。
ii)当调用了getCryptoObject方法,则通过递归搜索,将Android提供的密码学方法签名与调用getCryptoObject方法后调用的特定密码学方法(Cipher与HMac对象的doFinal方法和Signature对象的update方法)的签名进行字符串比对,进一步确定应用是否正确使用了密码学对象的相关方法与Android生物认证接口配套保证生物认证结果正确性。
所述的第三方依赖库识别分析,具体包括:
①从步骤2得到的全局内存空间获得反编译后的应用中间代码;
②对应用存在的所有类进行枚举,并使用Android生物认证接口类签名与枚举的类的父类类名进行字符串匹配,初步过滤出应用中存在的继承了Android系统生物认证接口的类;
③将过滤得到的类进行进一步分析:
a)将过滤得到的类签名与收集到的已知第三方依赖库中的关键类的签名进行比对,确定该类是否为已知第三方依赖库。
b)当不是已知的第三方依赖库,将过滤得到的类签名与该应用的包名进行比对,确定该类是否与应用的包在同一包中,从而确认该类是否存在于第三方依赖库或者其他厂商内部开发库中。
c)识别得到结果后,使用第二条生物认证接口安全性分析进一步确定该依赖库是否存在生物认证系统接口误用情况。
所述的异步回调,通过创建多个线程并行运行达到异步代码分析,并将分析结果处理函数作为回调函数传入,在分析线程完成时调用该函数完成分析结果处理。
本发明涉及一种实现上述方法的系统,包括:基本信息分析模块、应用生物认证接口安全性分析模块与第三方生物认证依赖库安全性分析模块,其中:基本信息分析模块将应用安装包反编译加载至全局内存空间,应用生物认证接口安全性分析模块与第三方生物认证依赖库安全性分析模块分配到多个并行中线程读取全局内存空间中进行安全性分析,并通过异步回调分析结果处理函数传递分析结果继而整理为应用生物认证安全性分析报告。
技术效果
本发明整体解决了现有技术无法快速分析应用所使用的Android系统生物认证接口或(与)其使用的生物认证依赖库的安全性问题。
与现有技术相比,本发明针对具有Android生物认证的程序进行安全性分析,分析性能高效,分析结果准确。
附图说明
图1为本发明流程示意图;
图2为生物认证接口安全分析检测流程示意图;
图3为第三方依赖库安全检测流程示意图。
具体实施方式
如图1所示,为本实施例涉及一种基于静态检测的Android应用生物认证安全性方法,采用多线程并行检测与异步处理的方法,将生物认证接口安全性分析与第三方生物认证依赖库识别和安全性分析并行运行并通过Java开发并实现,仅需本地编译并打包至jar格式即可在任意平台使用。在具体实现时,通过配设各个常用平台(Windows、Linux和macOS)的批量检查脚本,便于批量地对大量应用程序进行分析和检查,最后生成的分析结果以数据库形式存储,便于使用各种分析工具对批量检测系统报告进行进一步分析。
本实施例具体包括以下步骤:
步骤1)对待测的应用安装包中存在的静态资源文件进行分析,收集得到应用基本信息,具体为:将应用安装包以ZIP格式读入内存,以文件指针的形式读取并解析应用清单文件从而获取应用权限申请,检查应用是否声明使用USE_FINGERPRINT或USE_BIOMETRIC权限从而预判应用是否使用Android生物认证接口,避免分析未使用生物认证接口的应用;枚举Android Native动态链接库,并与事先收集到的第三方代码保护方案样本进行比对,判断应用是否使用第三方已知代码保护方案,避免分析使用已知代码保护方案的应用产生的结果不准确。
步骤2)通过逆向工程,使用Soot分析工具与Soot-infoflow-android Android静态分析工具反编译应用安装包内的DEX文件,获得Jimple中间语言,并加载至全局内存空间,具体为:调用Soot的Option类,设置应用安装包文件位置与Android SDK位置,设置支持多DEX反编译与保留虚类引用等反编译选项,添加反编译排除类黑名单并执行反编译操作,获得的Jimple中间语言将被加载至Soot的Scene类中的全局内存空间。
步骤3)生物认证接口安全性分析与第三方生物认证依赖库识别和安全性分析,通过异步回调获取分析结果,具体为:主进程以应用生物认证接口安全性分析与第三方生物认证依赖库识别和安全性分析为目标创建多个并行线程,并将结果分析函数作为回调函数传入目标线程中。应用生物认证接口安全性分析线程获取全局反编译对象,并在匹配特定生物认证接口类签名过滤得到目标类后,递归分析特定方法中是否执行相应密码学操作,在分析结束后执行回调将结果传递给回调函数处理;第三方生物认证依赖库识别和安全性分析线程获取全局反编译对象,并通过预先收集第三方生物认证依赖库关键类签名进行匹配,在无匹配结果时采用应用生物认证接口安全性分析相同的方法对其进行分析,在分析结束后执行回调将结果传递给回调函数处理。
本实施例对于单个50MB左右的大型Android App安装包,平均能在10秒左右完成全部分析;对于Android App市场数量规模的批量分析,可以在4天内扫描整个Android App市场超过100万个App。
经过具体实际实验,在CPU为AMD 3700X,内存频率为3200MHz的具体环境设置下,以最大堆空间限制为10GiB,最大栈空间限制为5MiB,并行线程数限制为16个的参数运行上述方法,能够得到的实验数据是:单个应用分析可以达到平均0.2秒/MB,批量分析可以达到平均0.07秒/MB。
与现有技术相比,本方法递归分析实现简单,多分析流程异步并行执行提高分析性能。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
Claims (6)
1.一种基于静态检测的Android应用生物认证安全性方法,其特征在于,包括:
步骤1)从待测的应用安装包中提取静态资源文件并收集得到应用基本信息;
步骤2)通过逆向工程,使用Soot分析工具与Soot-infoflow-android Android静态分析工具反编译应用安装包内的DEX文件,获得Jimple中间语言,并加载至全局内存空间;
步骤3)通过静态分析技术对应用程序生物认证接口使用情况进行生物认证接口安全性分析与第三方依赖库识别分析,以排除生物认证接口误用、生物认证接口与密码学对象配套使用误用,并通过异步回调得到应用自身生物认证接口实现安全性和/或其使用的生物认证依赖库的生物认证接口使用安全性;
所述的生物认证接口安全性分析,具体包括:
①从步骤2得到的全局内存空间获得反编译后的应用中间代码,对应用中存在的所有类进行枚举,并使用Android生物认证接口类签名与枚举的类的父类类名进行字符串匹配,初步过滤出应用中存在的继承了Android系统生物认证接口的类;
②通过递归搜索,检查初步筛选出的类重写的onAuthenticationSucceed回调方法中是否调用了回调参数结果对象中的getCryptoObject方法,从而判断应用程序调用生物认证接口是否安全;
③在步骤①得到的初步过滤结果中进行进一步过滤:
i)当在重写的回调方法中没有调用回调参数结果对象中的getCryptoObject方法,则认定该应用存在应用接口误用安全问题;
ii)当调用了getCryptoObject方法,则通过递归搜索,将Android提供的密码学方法签名与调用getCryptoObject方法后调用的特定密码学方法的签名进行字符串比对,进一步确定应用是否正确使用了密码学对象的相关方法与Android生物认证接口配套保证生物认证结果正确性;
所述的第三方依赖库识别分析,具体包括:
①从步骤2得到的全局内存空间获得反编译后的应用中间代码;
②对应用存在的所有类进行枚举,并使用Android生物认证接口类签名与枚举的类的父类类名进行字符串匹配,初步过滤出应用中存在的继承了Android系统生物认证接口的类;
③将过滤得到的类进行进一步分析:
a)将过滤得到的类签名与收集到的已知第三方依赖库中的关键类的签名进行比对,确定该类是否为已知第三方依赖库;
b)当不是已知的第三方依赖库,将过滤得到的类签名与该应用的包名进行比对,确定该类是否与应用的包在同一包中,从而确认该类是否存在于第三方依赖库或者其他厂商内部开发库中;
c)识别得到结果后,使用第二条生物认证接口安全性分析进一步确定该依赖库是否存在生物认证系统接口误用情况。
2.根据权利要求1所述的基于静态检测的Android应用生物认证安全性方法,其特征是,所述的步骤1具体为:将应用安装包作为ZIP加载至内存,并使用文件指针从内存中读取应用安装包中部分静态资源文件的动态链接库并通过字符串搜索匹配得到应用基本信息。
3.根据权利要求1所述的基于静态检测的Android应用生物认证安全性方法,其特征是,在反编译时采用黑名单配置避免Android SDK附带的与应用程序无关的类被同时反编译带来的性能损失。
4.根据权利要求1所述的基于静态检测的Android应用生物认证安全性方法,其特征是,在递归搜索中,使用类签名黑名单避免方法互相调用可能导致的潜在递归栈溢出风险。
5.根据权利要求1所述的基于静态检测的Android应用生物认证安全性方法,其特征是,所述的异步回调,通过创建多个线程并行运行达到异步代码分析,并将分析结果处理函数作为回调函数传入,在分析线程完成时调用该函数完成分析结果处理。
6.一种实现权利要求1-5中任一所述基于静态检测的Android应用生物认证安全性方法的系统,其特征在于,包括:基本信息分析模块、应用生物认证接口安全性分析模块与第三方生物认证依赖库安全性分析模块,其中:基本信息分析模块将应用安装包反编译加载至全局内存空间,应用生物认证接口安全性分析模块与第三方生物认证依赖库安全性分析模块分配到多个并行中线程读取全局内存空间中进行安全性分析,并通过异步回调分析结果处理函数传递分析结果继而整理为应用生物认证安全性分析报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010805666.XA CN114077728B (zh) | 2020-08-12 | 2020-08-12 | 基于静态检测的Android应用生物认证安全性方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010805666.XA CN114077728B (zh) | 2020-08-12 | 2020-08-12 | 基于静态检测的Android应用生物认证安全性方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114077728A CN114077728A (zh) | 2022-02-22 |
CN114077728B true CN114077728B (zh) | 2023-05-02 |
Family
ID=80280343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010805666.XA Active CN114077728B (zh) | 2020-08-12 | 2020-08-12 | 基于静态检测的Android应用生物认证安全性方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114077728B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368741A (zh) * | 2016-05-13 | 2017-11-21 | 南京理工大学 | 一种基于静态分析的Android应用JavaScript安全漏洞检测方法 |
CN111414308A (zh) * | 2020-03-26 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 应用程序包的处理方法和应用程序的运行方法、装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103180862B (zh) * | 2010-08-25 | 2016-03-02 | 前景公司 | 用于服务器耦合的恶意软件防止的系统和方法 |
CN104484607A (zh) * | 2014-12-16 | 2015-04-01 | 上海交通大学 | Android应用程序安全性测试的通用方法及系统 |
CN105184118B (zh) * | 2015-08-31 | 2018-02-23 | 西北大学 | 一种基于代码碎片化的Android应用程序加壳保护方法及装置 |
CN109388826B (zh) * | 2017-08-09 | 2023-09-12 | 默升科技集团有限公司 | 使能2.5d器件级静态时序分析的管芯接口 |
CN107832619B (zh) * | 2017-10-10 | 2020-12-15 | 电子科技大学 | Android平台下应用程序漏洞自动化挖掘系统及方法 |
-
2020
- 2020-08-12 CN CN202010805666.XA patent/CN114077728B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368741A (zh) * | 2016-05-13 | 2017-11-21 | 南京理工大学 | 一种基于静态分析的Android应用JavaScript安全漏洞检测方法 |
CN111414308A (zh) * | 2020-03-26 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 应用程序包的处理方法和应用程序的运行方法、装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114077728A (zh) | 2022-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795734B (zh) | 一种恶意移动应用检测方法 | |
US10581879B1 (en) | Enhanced malware detection for generated objects | |
CN106203113B (zh) | 安卓应用文件的隐私泄露监控方法 | |
CN109101815B (zh) | 一种恶意软件检测方法及相关设备 | |
Massarelli et al. | Android malware family classification based on resource consumption over time | |
US8875298B2 (en) | Method for scalable analysis of android applications for security vulnerability | |
US20200193031A1 (en) | System and Method for an Automated Analysis of Operating System Samples, Crashes and Vulnerability Reproduction | |
US20200012793A1 (en) | System and Method for An Automated Analysis of Operating System Samples | |
RU2427890C2 (ru) | Система и способ сравнения файлов на основе шаблонов функциональности | |
CN112084497A (zh) | 嵌入式Linux系统恶意程序检测方法及装置 | |
CN108763951B (zh) | 一种数据的保护方法及装置 | |
KR101972825B1 (ko) | 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램 | |
US20240121261A1 (en) | Automated Security Analysis of Software Libraries | |
TW201220118A (en) | A method and a system for automatically analyzing and classifying a malicious program | |
US10237285B2 (en) | Method and apparatus for detecting macro viruses | |
Zhang et al. | Ripple: Reflection analysis for android apps in incomplete information environments | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 | |
CN113935041A (zh) | 面向实时操作系统设备的漏洞检测系统及方法 | |
CN111291377A (zh) | 一种应用漏洞的检测方法及系统 | |
CN114077728B (zh) | 基于静态检测的Android应用生物认证安全性方法 | |
CN112632538A (zh) | 一种基于混合特征的安卓恶意软件检测方法及系统 | |
CN110691090B (zh) | 网站检测方法、装置、设备及存储介质 | |
CN110781081A (zh) | 一种移动应用回调强制触发方法、系统及存储介质 | |
RU168346U1 (ru) | Устройство выявления уязвимостей | |
CN114925369A (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 |