CN112231697A - 第三方sdk行为的检测方法、装置、介质及电子设备 - Google Patents

第三方sdk行为的检测方法、装置、介质及电子设备 Download PDF

Info

Publication number
CN112231697A
CN112231697A CN202011223482.9A CN202011223482A CN112231697A CN 112231697 A CN112231697 A CN 112231697A CN 202011223482 A CN202011223482 A CN 202011223482A CN 112231697 A CN112231697 A CN 112231697A
Authority
CN
China
Prior art keywords
code block
target
sdk
behavior
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.)
Pending
Application number
CN202011223482.9A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202011223482.9A priority Critical patent/CN112231697A/zh
Publication of CN112231697A publication Critical patent/CN112231697A/zh
Pending legal-status Critical Current

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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种第三方SDK行为的检测方法、装置、介质及电子设备,涉及计算机技术及软件领域。在该方法中,通过获取包含目标第三方SDK的待检测应用程序,并在模拟器行为蜜罐中运行所述待检测应用程序,然后根据设定的目标行为的行为特征,从所述待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息,从而根据获取的调用栈信息,确定产生目标行为时被调用的代码块,若所述被调用的代码块属于所述目标第三方SDK的代码块,确定所述目标行为由所述目标第三方SDK产生。该方式可以监控特定的第三方SDK的行为,减少潜在风险,提升APP使用过程的安全性。

Description

第三方SDK行为的检测方法、装置、介质及电子设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种第三方SDK行为的检测方法、装置、介质及电子设备。
背景技术
目前,第三方SDK(Software Development Kit,软件开发工具包)的使用非常普遍,一个正式上架的APP一般都会集成20个左右的第三方SDK。第三方SDK在被广泛使用的同时,其相关的安全问题也日益受到关注,不安全的网络通信将导致用户隐私泄露。
在第三方SDK行为检测上,缺乏有效的应对手段。用户,包括APP开发者对集成的第三方SDK缺乏确切的了解,从而留下安全隐患。
如何提供一种第三方SDK行为的检测方法,以实现监控特定的第三方SDK的行为,提升APP使用过程的安全性,是一个需要解决的热点问题。
发明内容
本申请实施例提供了一种第三方SDK行为的检测方法、装置、介质及电子设备,实现监控特定的第三方SDK的行为,提升APP使用过程的安全性。
为达到上述目的,本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种第三方SDK行为的检测方法,包括:
获取包含目标第三方软件开发工具包SDK的待检测应用程序,并在模拟器行为蜜罐中运行所述待检测应用程序;
根据设定的目标行为的行为特征,从所述待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息;
根据获取的调用栈信息,确定产生目标行为时被调用的代码块;
若所述被调用的代码块属于所述目标第三方SDK的代码块,确定所述目标行为由所述目标第三方SDK产生。
第二方面,本申请实施例提供一种第三方SDK行为的检测装置,包括:
模拟运行单元,用于获取包含目标第三方软件开发工具包SDK的待检测应用程序,并在模拟器行为蜜罐中运行所述待检测应用程序;
行为检测单元,用于根据设定的目标行为的行为特征,从所述待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息;根据获取的调用栈信息,确定产生目标行为时被调用的代码块;若所述被调用的代码块属于所述目标第三方SDK的代码块,确定所述目标行为由所述目标第三方SDK产生。
在一种可选的实施例中,所述模拟运行单元具体用于:对于每个候选应用程序,对所述候选应用程序的程序包文件进行反编译,得到所述候选应用程序的代码包;
对所述候选应用程序的代码包进行代码分割,得到所述候选应用程序包含的代码块。
在一种可选的实施例中,所述行为检测单元具体用于:
从所述调用栈信息中,获取调用链;所述调用链包括多个调用点的函数信息;
从所述调用链中,去除与***函数相关联的调用点的函数信息;
根据所述调用链中剩余的调用点的函数信息,确定产生目标行为时被调用的代码块。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现第一方面任一项所述的方法。
第四方面,本申请实施例还提供一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器实现第一方面任一项所述的方法。
本申请实施例的第三方SDK行为的检测方法、装置、介质及电子设备,通过获取包含目标第三方SDK的待检测应用程序,并在模拟器行为蜜罐中运行所述待检测应用程序,然后根据设定的目标行为的行为特征,从所述待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息,从而根据获取的调用栈信息,确定产生目标行为时被调用的代码块,若所述被调用的代码块属于所述目标第三方SDK的代码块,确定所述目标行为由所述目标第三方SDK产生。由于本申请实施例中采用模拟器行为蜜罐对包含目标第三方SDK的待检测应用程序进行模拟运行,监控产生的目标行为,再通过对调用栈信息进行回溯分析,确定归属于第三方SDK的目标行为,该方式可以监控特定的第三方SDK的行为,减少潜在风险,提升APP使用过程的安全性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种模拟器行为蜜罐的框架结构示意图;
图2为本申请实施例提供的一种第三方SDK行为的检测方法的流程示意图;
图3为本申请实施例提供的调用栈信息的示意图;
图4为本申请实施例提供的一种获取待检测应用程序的流程示意图;
图5为本申请实施例提供的一种代码分割过程的流程示意图;
图6为本申请实施例提供的一种确定产生目标行为时被调用的代码块的流程示意图;
图7为本申请实施例提供的一种***框架示意图;
图8为本申请实施例提供的一种第三方SDK行为的检测装置的结构示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
需要说明的是,本申请的文件中涉及的术语“包括”和“具有”以及它们的变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
以下对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)SDK:辅助开发APP(Application,移动应用软件)的相关文档、范例和工具的集合。在安卓平台上,APP开发者为了提高开发效率、降低成本,可以将某项功能交给第三方来开发,第三方服务提供商将服务封装为工具包(即SDK)供APP开发者使用,目前,常见的SDK类型包括第三方登录分享类、支付类、推送类、广告类和数据统计分析类。
(2)APK(Android application package,安卓应用程序包):Android操作***使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android***所能识别的文件才可以被运行,而这种能被Android***识别并运行的文件格式便是“APK”。一个APK文件内包含被编译的代码文件(.dex文件),文件资源(resources),原生资源文件(assets),证书(certificates),和清单文件(manifest file)。本申请的实施例中,均以候选应用程序的程序包文件是APK文件为例进行说明。
(3)调用栈回溯:对安卓应用产生敏感行为的API函数进行hook,在这些关键函数被调用时,获取并记录其在java虚拟机的调用栈信息,然后通过对调用栈信息进行回溯,找到这些关键函数的调用点。
(4)API(Application Programming Interface,应用程序接口):一些预先定义的函数。操作***除了协调应用程序的执行、内存分配、***资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮助应用程序达到开启视窗、描绘图形、使用周边设备的目的。应用程序接口为:“‘电脑操作***(Operating system)’或‘程序库’提供给应用程序调用使用的代码”。其主要目的是让应用程序开发人员得以调用一组例程功能,而无须考虑其底层的源代码为何、或理解其内部工作机制的细节。API本身是抽象的,它仅定义了一个接口,而不涉及应用程序在实际实现过程中的具体操作。
(5)Hook:也称为钩子函数,是操作***消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理操作***消息或特定事件。钩子可以监视***或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。钩子实际上是一个处理消息的程序段,通过***调用,把该程序段挂入***。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。一个Hook都有一个与之相关联的指针列表,称之为钩子链表,由***来维护。这个列表的指针指向指定的,应用程序定义的,被Hook子程调用的回调函数,也就是该钩子的各个处理子程。当与指定的Hook类型关联的消息发生时,***就把这个消息传递到Hook子程。一些Hook子程可以只监视消息,或者修改消息,或者停止消息的前进,避免这些消息传递到下一个Hook子程或者目的窗口。
(6)行为蜜罐:蜜罐技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对其实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解所面对的安全威胁,并通过技术和管理手段来增强实际***的安全防护能力。本申请的实施例中,可以根据蜜罐技术设置模拟器行为蜜罐,用于对集成有特定第三方SDK的应用程序进行模拟执行。
下文中所用的词语“示例性”的意思为“用作例子、实施例或说明性”。作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
文中的术语“第一”、“第二”仅用于描述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
随着移动互联网的发展和智能移动终端的大范围使用,智能手机的安全问题成为移动互联网行业以及移动互联网用户最为关切的问题。在移动互联网的快速发展中,随着开发者数量和规模的逐步的扩大,衍生出了许多用于向开发者提供各种服务的SDK工具和中间件,例如有提供广告推广服务的SDK中间件,有提供消息和数据推送的SDK中间件,也有提供应用推广和分发的SDK中间件等等。这些SDK中间件通过开发接口开放的形式,向开发者提供了各种常用的功能,极大的方便了开发者。目前,Android平台下的第三方SDK的使用非常普遍,一个正式上架的APP一般都会集成20个左右的第三方SDK。第三方SDK在被广泛使用的同时,其相关的安全问题也日益受到关注,不安全的网络通信将导致用户隐私泄露,例如第三方SDK可能自身存在安全漏洞,私自手机用户隐私数据,以及部分恶意SDK利用APP执行恶意操作等。其中部分第三方SDK还存在热更新功能,能再运行期间从云端动态下发代码进行执行,这种情况导致用户,包括APP开发者对集成的第三方SDK具体执行的行为不能有确切的了解,从而留下安全隐患。
在第三方SDK行为检测上,现有方案主要是基于静态代码分析的方式,缺乏有效的应对手段,如何提供一种第三方SDK行为的检测方法,以实现监控特定的第三方SDK的行为,提升APP使用过程的安全性,是一个迫切需要解决的问题。
本申请实施例中,通过获取包含目标第三方SDK的待检测应用程序,并在模拟器行为蜜罐中运行待检测应用程序,根据设定的目标行为的行为特征,从待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息,再根据获取的调用栈信息,确定产生目标行为时被调用的代码块,若被调用的代码块属于目标第三方SDK的代码块,确定目标行为由目标第三方SDK产生。由于本申请实施例中采用模拟器行为蜜罐对包含目标第三方SDK的待检测应用程序进行模拟运行,监控产生的目标行为,再通过对调用栈信息进行回溯分析,确定归属于第三方SDK的目标行为,该方式可以监控特定的第三方SDK的行为,减少潜在风险,提升APP使用过程的安全性。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。本申请的实施例中,待检测应用程序为Android平台下的APP;目标行为是APP运行时产生的需要监控的敏感行为。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在下述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。下述方法在实际的处理过程中或者装置执行时,可按照实施例或者附图所示的方法顺序执行或者并行执行。
图1示出了本申请实施例提供的一种模拟器行为蜜罐的框架结构示意图。如图1所示,模拟器蜜罐主要包含以下几个部分:
1、Hook模块,用来对应用指定的函数进行hook,获取其相关的参数、执行结果等;
2、自动化触发模块,用来自动运行APP应用,并尽可能的触发APP的行为;
3、敏感行为监控点模块,用来设定需要监控的敏感行为,如网络访问、子包加载、命令执行、elf文件访问等;
4、LOG记录模块,用来对敏感行为的执行信息以及敏感行为发生时的调用栈信息进行LOG输出。LOG记录模块可以细分为行为LOG和调用栈LOG两个子模块。
本申请实施例中通过根据蜜罐技术设置的图1所示的模拟器行为蜜罐,对集成有目标第三方SDK的应用程序进行模拟执行,以捕获应用程序的行为信息,从而可以监控应用程序产生的敏感行为。
图2示出了本申请实施例提供的一种第三方SDK行为的检测方法的流程图。如图2所示,该方法包括以下步骤:
步骤S201,获取包含目标第三方SDK的待检测应用程序。
其中,目标第三方SDK可以是预先指定的期望检测的第三方SDK。目标第三方SDK的数量和待检测应用程序的数量均可以是一个,也均可以是多个。本申请实施例中,以目标第三方SDK的数量和待检测应用程序的数量均是一个为例进行说明。示例性地,待检测应用程序可以是Android平台下的应用程序APPi,目标第三方SDK可以是应用程序APPi的程序包文件APKi包含的第三方软件开发工具包SDKj。本申请实施例提供的第三方SDK行为的检测方法,首先获取包含目标第三方软件开发工具包SDKj的待检测应用程序APPi
步骤S202,在模拟器行为蜜罐中运行待检测应用程序。
具体地,在图1示出的模拟器行为蜜罐中运行待检测应用程序APPi。模拟器行为蜜罐的Hook模块设置了对待检测应用程序APPi指定的函数进行hook,获取其相关的参数、执行结果等。模拟器行为蜜罐的自动化触发模块,可以自动运行待检测应用程序APPi,并尽可能的触发APPi的行为。模拟器行为蜜罐的敏感行为监控点模块,设定需要监控的目标行为的行为特征,如网络访问、子包加载、命令执行、elf文件访问等。模拟器行为蜜罐的LOG记录模块,对目标行为的执行信息,以及目标行为发生时的调用栈信息进行LOG输出,其中,目标行为是根据设定的目标行为的行为特征确定的敏感行为;例如,获取用户的私密信息、链接不合法网站等行为。在一些实施例中,目标行为是敏感行为中的一部分。在另外一些实施例中,目标行为是敏感行为的全部。本申请的实施例均以目标行为是敏感行为的全部为例进行说明。
步骤S203,根据设定的目标行为的行为特征,从待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息。
其中,设定的目标行为的行为特征是模拟器行为蜜罐中设置的用于选取需要监控的目标行为的行为特征。设定的目标行为的行为特征可以是针对待检测应用程序所设置的,用于数据获取的行为特征。设定的目标行为的行为特征包括但不限于网络访问、子包加载、命令执行、elf文件访问等。
具体地,根据设定的目标行为的行为特征,从待检测应用程序APPi的运行日志中,获取目标行为发生时的调用栈信息。调用栈信息包含目标行为发生时的调用链。
示例性地,获取目标行为发生时的调用栈信息可以是获取一个如图3所示的一条调用链。
步骤S204,根据获取的调用栈信息,确定产生目标行为时被调用的代码块。
具体地,对于获取的调用栈信息,去除调用链中相关的***函数,获取到调用链的实际的调用点的函数信息。根据调用链的实际的调用点的函数信息确定产生目标行为时被调用的代码块。
示例性地,对于图3所示的调用链,从前往后搜索,去除掉调用链中与***相关的一些调用,比如该条调用链上的java.net、com.android.okhttp相关的调用,获取到调用链的实际的调用点的函数信息为com.tencent.msdk.dns.core.a.a.a.b(HttpDnsImpl.java:53)。在一些实施例中,可以根据该调用链的实际的调用点的函数信息的类名的前缀,去确定目标行为发生时被调用的代码块。
步骤S205,若被调用的代码块属于目标第三方SDK的代码块,确定目标行为由目标第三方SDK产生。
示例性地,若目标第三方SDK是com.tencent.msdk,对于图3所示的调用链,若判断其被调用的代码块属于com.tencent.msdk的代码块,确定目标行为由目标第三方SDK产生。
上述的第三方SDK行为的检测方法,通过获取包含目标第三方SDK的待检测应用程序,并在模拟器行为蜜罐中运行待检测应用程序,然后根据设定的目标行为的行为特征,从待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息,从而可以根据获取的调用栈信息,确定产生目标行为时被调用的代码块。若被调用的代码块属于目标第三方SDK的代码块,确定目标行为由目标第三方SDK产生。由于本申请实施例中采用模拟器行为蜜罐对包含目标第三方SDK的待检测应用程序进行模拟运行,监控产生的目标行为,再通过对调用栈信息进行回溯分析,确定归属于第三方SDK的目标行为,该方式可以监控特定的第三方SDK的行为,减少潜在风险,提升APP使用过程的安全性。
在本申请的实施例中,获取包含目标第三方SDK的待检测应用程序,可以通过代码分割和第三方SDK识别来获取。下面对通过代码分割和第三方SDK识别来获取包含目标第三方SDK的待检测应用程序做进一步的说明。如图4所示,获取包含目标第三方SDK的待检测应用程序,具体包括如下步骤:
步骤S401,对候选应用程序的程序包文件进行代码分割,得到候选应用程序包含的各个代码块。
在一些实施例中,对于候选应用程序可以逐个选取进行本实施例中步骤S401的代码分割,对于每个选取的候选应用程序,直到识别完选取的候选应用程序中的各个代码块的标注信息中是否包含目标SDK标注信息,然后再选取下一个候选应用程序。
具体地,首先,获取一个候选应用程序。然后对获取的候选应用程序的程序包文件进行代码分割,得到候选应用程序包含的各个代码块。
在一些实施例中,候选应用程序可以是多个安卓应用程序APP,候选应用程序的程序包文件可以是安卓应用程序包APK文件。具体地,通过dex反编译候选应用程序的程序包文件,例如反编译的对象为APK1、APK2、…、APKn,获取反编译后的smali代码包。然后根据指定的切割规则对反编译后的代码包进行切割,获得各个APK文件包含的代码块,例如代码块1、代码块2、…、代码块m。可选地,指定的切割规则可以是反编译后的smali代码包的存储路径。
步骤S402,根据每个代码块与第三方SDK之间的归属关系,为每个代码块设置SDK标注信息,SDK标注信息用于标识代码块所属的第三方SDK。
对获得的代码块提取代码块基本信息,如代码块的路径名,opcode simhash值,类数量,方法数量,调用的API集合、代码块代码组织的树结构等。
在一些实施例中,通过比对分析代码块的代码可以识别出每个代码块属于哪个第三方SDK并进行人工标记,从而得到代码块与第三方SDK之间的归属关系。然后根据得到代码块与第三方SDK之间的归属关系,可以建立代码块与第三方SDK之间的归属关系的代码块数据样本集,代码块数据样本集中包含代码块的标签,标签可以是为每个代码块设置的SDK标注信息,SDK标注信息用于标识代码块所属的第三方SDK。
在另外一些实施例中,还可以结合人工标记的建立的代码块数据样本集,通过对候选应用程序的程序包文件进行代码分割所得到的新的代码块,通过对代码块进行聚类分析的方式,识别代码块与第三方SDK之间的归属关系。然后将根据聚类分析得到的归属关系添加到代码块数据样本集中进行存储。具体地,聚类分析可以是先根据代码块基本信息中的部分信息,例如,根据代码块的代码块基本信息中的路径名和opcode simhash生成一个Key值,使得每个带块有一个唯一的Key值。对于代码块数据样本集中的每个代码块也生成代码块对应的Key值。对于每个代码块根据Key值进行聚类分析,以得到代码块与第三方SDK之间的归属关系。
代码块数据样本集也可以视为一个标签***,该标签***还可以包含代码块的其他信息,例如代码块的功能、类型等。根据代码块数据样本集,可以确定安卓应用程序APP包含哪些第三方SDK。
步骤S403,判断候选应用程序中的各个代码块的标注信息中是否包含目标SDK标注信息。若是,执行步骤S404;若否,返回执行步骤S401。
步骤S404,将候选应用程序确定为待检测应用程序。
当候选应用程序中的各个代码块的标注信息中包含目标SDK标注信息时,将候选应用程序确定为待检测应用程序。
具体的,若一个具体的候选应用程序中的某个代码块的标注信息包含目标SDK标注信息,可以确定该候选应用程序中的各个代码块的标注信息中包含有目标SDK标注信息,将该候选应用程序确定为待检测应用程序。据此可以确定候选应用程序中的待检测应用程序,待检测应用程序可以是一个,也可以是多个,本申请对此不作具体限定。
上述的第三方SDK行为的检测方法,通过对候选应用程序的程序包文件进行代码分割,得到候选应用程序包含的各个代码块;根据每个代码块与第三方SDK之间的归属关系,为每个代码块设置SDK标注信息,SDK标注信息用于标识代码块所属的第三方SDK;当候选应用程序中的各个代码块的标注信息中包含目标SDK标注信息时,将候选应用程序确定为待检测应用程序。由于本申请实施例中采用代码块切割和第三方SDK识别,将第三方SDK行为的检测的粒度细化到了第三方SDK,该方法可以监控特定的第三方SDK的行为,减少潜在风险,提升APP使用过程的安全性。在第三方SDK使用日趋频繁且安全问题频发的情况下,这种监控方式,有助于我们更清晰的分析到有恶意行为的APP中,具体的恶意或者敏感行为的发起者究竟是APP开发者本身还是其集成的第三方SDK,确定责任的划分。
在另外一些实施例中,通过代码分割和第三方SDK识别来获取包含目标第三方SDK的待检测应用程序时,还可以逐个选取候选应用程序,进行图4中步骤S401的代码分割,直到全部的候选应用程序都完成代码分割之后,再对所有的候选应用程序依次执行图4中步骤S401之后的其他流程步骤。
在一些可选的实施例中,被调用的代码块属于目标第三方SDK的代码块,可以通过如下方法确定:
当被调用的代码块的SDK标注信息与目标第三方SDK的代码块的SDK标注信息一致时,确定被调用的代码块属于目标第三方SDK的代码块。
在一些实施例中,代码块数据样本集中包含目标第三方SDK和目标第三方SDK所属的代码块的对应关系,以及目标第三方SDK所属的代码块的标注信息。
具体地,将被调用的代码块的SDK标注信息与目标第三方SDK的代码块的SDK标注信息作比对,若两者一致,可以确定被调用的代码块属于目标第三方SDK的代码块。
示例性地,结合代码块数据样本集,可以确定被调用的代码块的SDK标注信息与目标第三方SDK的代码块的SDK标注信息是否一致。当被调用的代码块的SDK标注信息与目标第三方SDK的代码块的SDK标注信息一致时,确定被调用的代码块属于目标第三方SDK的代码块。
上述的第三方SDK行为的检测方法,通过判断被调用的代码块的SDK标注信息与目标第三方SDK的代码块的SDK标注信息是否一致,从而确定被调用的代码块属于目标第三方SDK的代码块。由于该方法采用被调用的代码块的SDK标注信息与目标第三方SDK的代码块的SDK标注信息作比对的方式,计算量小,可以提高第三方SDK的行为监控的效率,从而有效地减少潜在风险,提升APP使用过程的安全性。
图5示出了本申请的实施例提供的一种代码分割过程的流程示意图。在一些可选的实施例中,对候选应用程序的程序包文件进行代码分割,得到候选应用程序包含的各个代码块时,可以对程序包文件进行反编译。如图5所示,该得到代码块的过程具体可以包括如下步骤:
步骤S501,对于每个候选应用程序,对候选应用程序的程序包文件进行反编译,得到候选应用程序的代码包。
示例性地,候选应用程序可以是多个安卓应用程序APP,例如为APP1、APP2、…、APPn;候选应用程序的程序包文件可以是安卓应用程序包APK文件,例如APK1、APK2、…、APKn。其中,APP1、APP2、…、APPn与APK1、APK2、…、APKn是按次序一一对应的关系。举例而言,可以是候选应用程序APPt,t∈(1,n)的程序包文件APKt,t∈(1,n),进行反编译,从而得到候选应用程序APPt的代码包。
在一些实施例中,通过dex反编译的方式实现程序包文件的反编译。
例如,通过dex反编译候选应用程序APPt的程序包文件APKt,得到候选应用程序APPt的smali代码包。
步骤S502,对候选应用程序的代码包进行代码分割,得到候选应用程序包含的代码块。
示例性地,可以对候选应用程序的代码包按照指定的切割规则进行代码分割,例如可以根据smali代码包的存储路径对smali代码包进行代码分割,从而得到候选应用程序包含的代码块。
在一些可选的实施例中,确定产生目标行为时被调用的代码块时,可以先根据获取的调用栈信息获取调用链,再通过对调用链进行处理分析,确定产生目标行为时被调用的代码块。如图6所示,该过程具体可以包括如下步骤:
步骤S601,从调用栈信息中,获取调用链。
其中,调用链包括多个调用点的函数信息。
具体地,本申请的实施例中是通过模拟器行为蜜罐,对待检测应用程序APPi进行模拟执行。模拟器行为蜜罐根据设定的目标行为的行为特征,以LOG日志的形式输出敏感行为的执行信息以及敏感行为发生时的调用栈信息。在一些实施例中,通过解析模拟器行为蜜罐输出的LOG日志,得到调用栈信息。调用栈信息包含目标行为发生时的调用链。每条调用链对应着一次敏感行为,调用链与敏感行为是一一对应的关系。图3示出了本申请实施例的一条调用链。由图3可见,调用链包括多个调用点的函数信息。后续通过对调用栈信息进行回溯,从调用栈信息中,获取调用链。获取的调用链用于调用栈回溯的分析过程。
步骤S602,从调用链中,去除与***函数相关联的调用点的函数信息。
示例性地,对于图3所示的调用链,通过从前往后搜索,去除掉调用链中与***相关的一些调用,比如去掉该条调用链上的java.net、com.android.okhttp相关的调用,获取到调用链中剩余的调用点的函数信息为com.tencent.msdk.dns.core.a.a.a.b(HttpDnsImpl.java:53),该信息为调用链的实际的调用点的函数信息。
步骤S603,根据调用链中剩余的调用点的函数信息,确定产生目标行为时被调用的代码块。
具体地,可以根据该调用链的实际的调用点的函数信息的类名的前缀,去判断目标行为发生时调用的代码块。例如,函数信息为com.tencent.msdk.dns.core.a.a.a.b(HttpDnsImpl.java:53)时,获取类名的前缀信息为com.tencent.msdk.dns.core.a.a.a,结合代码块数据样本集中代码块基本信息的记录,可以判断产生该调用链对应的目标行为时被调用的代码块。
上述的第三方SDK行为的检测方法,通过调用栈回溯的方式,判断产生该调用链对应的目标行为时被调用的代码块。由于该方法采用调用栈回溯的方式,能精确的定位到产生敏感行为的代码块,从而可以精确地确定产生敏感行为的第三方SDK,可以有效地减少潜在风险,提升APP使用过程的安全性。
图7为本申请实施例提供的一种第三方SDK行为的检测方法的***框架示意图。在一种实施例中,如图7所示,该***主要包含代码切割和第三方SDK识别和动态行为监控分析两个模块。其中,代码切割和第三方SDK识别模块,主要是通过对APP进行逆向分析,采用代码块切割的方式对APP的APK文件的代码进行分析,识别出其中包含有哪些第三方SDK,以及这些SDK都含有哪些代码块;动态行为监控分析模块,用于通过对包含有特定第三方SDK的APP进行蜜罐模拟执行,捕获其产生的敏感行为信息,并对这些敏感行为产生的调用栈信息进行分析,并通过代码匹配,判断这些敏感行为的发起者是否属于需要监控的第三方SDK。
上述实施例中的***,通过采用代码切割,将APP应用的APK文件的代码切割成独立的代码块,然后使用人工标记或聚类分析的手段来识别其中的第三方SDK;针对含有特定第三方SDK的APP,再采用动态蜜罐进行模拟运行,监控其产生的敏感行为,再通过对调用栈信息进行回溯分析,确定归属于第三方SDK的动态行为,从而达到对特定第三方SDK进行动态行为监控的目的。
基于同一发明构思,本申请实施例中还提供了一种第三方SDK行为的检测装置,该第三方SDK行为的检测装置可以布设在服务器中。由于该装置是本申请实施例提供的第三方SDK行为的检测方法对应的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见上述方法的实施,重复之处不再赘述。
图8示出了本申请实施例提供的一种第三方SDK行为的检测装置的结构框图,如图8所示,该第三方SDK行为的检测装置包括:模拟运行单元801和行为检测单元802;其中,
模拟运行单元801,用于获取包含目标第三方SDK的待检测应用程序,并在模拟器行为蜜罐中运行待检测应用程序;
行为检测单元802,用于根据设定的目标行为的行为特征,从待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息;根据获取的调用栈信息,确定产生目标行为时被调用的代码块;若被调用的代码块属于目标第三方SDK的代码块,确定目标行为由目标第三方SDK产生。
在一种可选的实施例中,模拟运行单元801,具体用于:
对候选应用程序的程序包文件进行代码分割,得到候选应用程序包含的各个代码块;根据每个代码块与第三方SDK之间的归属关系,为每个代码块设置SDK标注信息,SDK标注信息用于标识代码块所属的第三方SDK;当候选应用程序中的各个代码块的标注信息中包含目标SDK标注信息时,将候选应用程序确定为待检测应用程序。
在一种可选的实施例中,行为检测单元802,具体用于:
当被调用的代码块的SDK标注信息与目标第三方SDK的代码块的SDK标注信息一致时,确定被调用的代码块属于目标第三方SDK的代码块。
在一种可选的实施例中,模拟运行单元801,具体用于:
对于每个候选应用程序,对候选应用程序的程序包文件进行反编译,得到候选应用程序的代码包;
对候选应用程序的代码包进行代码分割,得到候选应用程序包含的代码块。
在一种可选的实施例中,行为检测单元802,具体用于:
从调用栈信息中,获取调用链;调用链包括多个调用点的函数信息;
从调用链中,去除与***函数相关联的调用点的函数信息;
根据调用链中剩余的调用点的函数信息,确定产生目标行为时被调用的代码块。
基于同一发明构思,本申请实施例中还提供了一种电子设备。在一种实施例中,该电子设备可以是服务器。在该实施例中,电子设备的结构可以如图9所示,包括存储器901,通讯模块903以及一个或多个处理器902。
存储器901,用于存储处理器902执行的计算机程序。存储器901可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器901可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器901也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器901是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器901可以是上述存储器的组合。
处理器902,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器902,用于调用存储器901中存储的计算机程序时实现上述第三方SDK行为的检测方法。
通讯模块903用于与终端设备或其他服务器进行通信。
本申请实施例中不限定上述存储器901、通讯模块903和处理器902之间的具体连接介质。本申请实施例在图9中以存储器901和处理器902之间通过总线904连接,总线904在图9中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线904可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器901中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的第三方SDK行为的检测方法。处理器902用于执行上述的第三方SDK行为的检测方法。
本申请的实施例还提供了一种计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请任一实施例所记载的第三方SDK行为的检测方法。
在一些可能的实施方式中,本申请提供的第三方SDK行为的检测方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的第三方SDK行为的检测方法的步骤,例如,计算机设备可以执行如图2所示的步骤S201~S205的第三方SDK行为的检测方法的流程。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种第三方SDK行为的检测方法,其特征在于,包括:
获取包含目标第三方软件开发工具包SDK的待检测应用程序,并在模拟器行为蜜罐中运行所述待检测应用程序;
根据设定的目标行为的行为特征,从所述待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息;
根据获取的调用栈信息,确定产生目标行为时被调用的代码块;
若所述被调用的代码块属于所述目标第三方SDK的代码块,确定所述目标行为由所述目标第三方SDK产生。
2.根据权利要求1所述的方法,其特征在于,所述获取包含目标第三方软件开发工具包SDK的待检测应用程序,包括:
对候选应用程序的程序包文件进行代码分割,得到候选应用程序包含的各个代码块;
根据每个代码块与第三方SDK之间的归属关系,为每个代码块设置SDK标注信息,所述SDK标注信息用于标识代码块所属的第三方SDK;
当候选应用程序中的各个代码块的标注信息中包含目标SDK标注信息时,将所述候选应用程序确定为所述待检测应用程序。
3.根据权利要求2所述的方法,其特征在于,所述被调用的代码块属于所述目标第三方SDK的代码块,具体包括:
当被调用的代码块的SDK标注信息与所述目标第三方SDK的代码块的SDK标注信息一致时,确定所述被调用的代码块属于所述目标第三方SDK的代码块。
4.根据权利要求2所述的方法,其特征在于,所述对候选应用程序的程序包文件进行代码分割,得到候选应用程序包含的各个代码块,包括:
对于每个候选应用程序,对所述候选应用程序的程序包文件进行反编译,得到所述候选应用程序的代码包;
对所述候选应用程序的代码包进行代码分割,得到所述候选应用程序包含的代码块。
5.根据权利要求1~4任一项所述的方法,其特征在于,根据获取的调用栈信息,确定产生目标行为时被调用的代码块,包括:
从所述调用栈信息中,获取调用链;所述调用链包括多个调用点的函数信息;
从所述调用链中,去除与***函数相关联的调用点的函数信息;
根据所述调用链中剩余的调用点的函数信息,确定产生目标行为时被调用的代码块。
6.一种第三方SDK行为的检测装置,其特征在于,包括:
模拟运行单元,用于获取包含目标第三方软件开发工具包SDK的待检测应用程序,并在模拟器行为蜜罐中运行所述待检测应用程序;
行为检测单元,用于根据设定的目标行为的行为特征,从所述待检测应用程序的运行日志中,获取目标行为发生时的调用栈信息;根据获取的调用栈信息,确定产生目标行为时被调用的代码块;若所述被调用的代码块属于所述目标第三方SDK的代码块,确定所述目标行为由所述目标第三方SDK产生。
7.根据权利要求6所述的装置,其特征在于,所述模拟运行单元,具体用于:
对候选应用程序的程序包文件进行代码分割,得到候选应用程序包含的各个代码块;
根据每个代码块与第三方SDK之间的归属关系,为每个代码块设置SDK标注信息,所述SDK标注信息用于标识代码块所属的第三方SDK;
当候选应用程序中的各个代码块的标注信息中包含目标SDK标注信息时,将所述候选应用程序确定为所述待检测应用程序。
8.根据权利要求6所述的装置,其特征在于,所述行为检测单元,具体用于:
当被调用的代码块的SDK标注信息与所述目标第三方SDK的代码块的SDK标注信息一致时,确定所述被调用的代码块属于所述目标第三方SDK的代码块。
9.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,其特征在于:所述计算机程序被处理器执行时,实现权利要求1~5中任一项所述的方法。
10.一种电子设备,其特征在于,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,实现权利要求1~5中任一项所述的方法。
CN202011223482.9A 2020-11-05 2020-11-05 第三方sdk行为的检测方法、装置、介质及电子设备 Pending CN112231697A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011223482.9A CN112231697A (zh) 2020-11-05 2020-11-05 第三方sdk行为的检测方法、装置、介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011223482.9A CN112231697A (zh) 2020-11-05 2020-11-05 第三方sdk行为的检测方法、装置、介质及电子设备

Publications (1)

Publication Number Publication Date
CN112231697A true CN112231697A (zh) 2021-01-15

Family

ID=74122729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011223482.9A Pending CN112231697A (zh) 2020-11-05 2020-11-05 第三方sdk行为的检测方法、装置、介质及电子设备

Country Status (1)

Country Link
CN (1) CN112231697A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114861180A (zh) * 2022-05-25 2022-08-05 广东粤密技术服务有限公司 应用程序的安全性检测方法和装置
CN116881962A (zh) * 2023-07-12 2023-10-13 上海隽钰网络工程有限公司 一种安全监控***、方法、装置和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104992081A (zh) * 2015-06-24 2015-10-21 华中科技大学 一种Android应用程序第三方代码的安全增强方法
CN108769071A (zh) * 2018-07-02 2018-11-06 腾讯科技(深圳)有限公司 攻击信息处理方法、装置和物联网蜜罐***
CN110737887A (zh) * 2019-10-22 2020-01-31 厦门美图之家科技有限公司 恶意代码检测方法、装置、电子设备及存储介质
CN111124486A (zh) * 2019-12-05 2020-05-08 任子行网络技术股份有限公司 发现安卓应用引用第三方工具的方法、***及存储介质
CN111753330A (zh) * 2020-06-18 2020-10-09 百度在线网络技术(北京)有限公司 数据泄露主体的确定方法、装置、设备和可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104992081A (zh) * 2015-06-24 2015-10-21 华中科技大学 一种Android应用程序第三方代码的安全增强方法
CN108769071A (zh) * 2018-07-02 2018-11-06 腾讯科技(深圳)有限公司 攻击信息处理方法、装置和物联网蜜罐***
CN110737887A (zh) * 2019-10-22 2020-01-31 厦门美图之家科技有限公司 恶意代码检测方法、装置、电子设备及存储介质
CN111124486A (zh) * 2019-12-05 2020-05-08 任子行网络技术股份有限公司 发现安卓应用引用第三方工具的方法、***及存储介质
CN111753330A (zh) * 2020-06-18 2020-10-09 百度在线网络技术(北京)有限公司 数据泄露主体的确定方法、装置、设备和可读存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114861180A (zh) * 2022-05-25 2022-08-05 广东粤密技术服务有限公司 应用程序的安全性检测方法和装置
CN114861180B (zh) * 2022-05-25 2023-09-08 广东粤密技术服务有限公司 应用程序的安全性检测方法和装置
CN116881962A (zh) * 2023-07-12 2023-10-13 上海隽钰网络工程有限公司 一种安全监控***、方法、装置和存储介质
CN116881962B (zh) * 2023-07-12 2024-05-10 上海隽钰网络工程有限公司 一种安全监控***、方法、装置和存储介质

Similar Documents

Publication Publication Date Title
US11019114B2 (en) Method and system for application security evaluation
CN108133139B (zh) 一种基于多运行环境行为比对的安卓恶意应用检测***
CN109145603A (zh) 一种基于信息流的Android隐私泄露行为检测方法和技术
CN112685737A (zh) 一种app的检测方法、装置、设备及存储介质
Hu et al. Migdroid: Detecting app-repackaging android malware via method invocation graph
US20190394221A1 (en) Detecting repackaged applications based on file format fingerprints
CN108664793B (zh) 一种检测漏洞的方法和装置
CN113489713B (zh) 网络攻击的检测方法、装置、设备及存储介质
JP6711000B2 (ja) 情報処理装置、ウィルス検出方法及びプログラム
US11157618B2 (en) Context-based analysis of applications
CN104809397A (zh) 一种基于动态监控的Android恶意软件的检测方法及***
CN112084497A (zh) 嵌入式Linux***恶意程序检测方法及装置
CN110442502B (zh) 一种埋点的方法、装置、设备及存储介质
US20190180032A1 (en) Classification apparatus, classification method, and classification program
CN103746992A (zh) 基于逆向的入侵检测***及其方法
CN112231697A (zh) 第三方sdk行为的检测方法、装置、介质及电子设备
Faruki et al. Droidanalyst: Synergic app framework for static and dynamic app analysis
KR101256468B1 (ko) 악성 파일 진단 장치 및 방법
US10970392B2 (en) Grouping application components for classification and malware detection
CN108898014A (zh) 一种病毒查杀方法、服务器及电子设备
KR20160090566A (ko) 유효마켓 데이터를 이용한 apk 악성코드 검사 장치 및 방법
JP5613000B2 (ja) アプリケーション特性解析装置およびプログラム
Afridi et al. Android application behavioral analysis through intent monitoring
WO2021243555A1 (zh) 一种快应用检测方法、装置、设备及存储介质
CN110224975B (zh) Apt信息的确定方法及装置、存储介质、电子装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40037837

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination