基于IOS平台动态监控的方法及系统与流程

文档序号:14796944发布日期:2018-06-29 19:31阅读:392来源:国知局

本发明涉及计算机安全技术领域,更具体地涉及基于IOS平台动态监控的方法及系统。



背景技术:

随着IOS平台使用的普及,在基于获取了超级用户权限的IOS平台上的恶意代码逐步增多,由此凸显出了基于获取了超级用户权限的IOS平台上恶意代码分析的重要性。现有的在IOS平台上的监控都是基于应用自身的行为监控,比如视频、音频、地理位置等行为均是在具体的应用上进行监控,这种设计与实现是在应用级别监控实现,并未上升的系统级别的监控,更无法对其他应用的行为进行监控。

目前常用的IOS恶意代码分析方法主要是静态分析法。静态分析法通过静态扫描ipa文件来初步分析程序指令和结构来确定功能,它的缺点是仅仅从代码层面检测,无法在样本实际运行的时候分析恶意行为。



技术实现要素:

为了解决上述技术问题,提供了根据本发明的基于IOS平台动态监控的方法及系统。

根据本发明的第一方面,提供了基于IOS平台动态监控的方法,包括:基于插件工具在特定二进制文件中插入动态链接库,分别对系统级和应用级应用函数采取函数替换;通过逆向工程对所述应用函数加载机制进行分析,并依据配置文件进行监控;获取外部输入的监控样本,自动化运行所述监控样本并输出监控日志;记录所述监控样本、监控日志,所述监控日志以数据库进行存储。

在一些实施例中,包括:设置动态监控的配置文件,所述配置文件包括监控作用范围、具体监控行为。

在一些实施例中,包括:以定制化系统级应用将所述监控日志以应用或进程为分类展示出来。

在一些实施例中,所述自动化运行包括:对所述监控样本进行包括有关破解、重签名、自动化工具调用、自动化运行过程中截屏的处理。

在一些实施例中,所述监控日志包括日志文件、网络通讯数据文件、自动化运行过程中的截屏文件。

根据本发明的第二方面,提供基于IOS平台动态监控的系统,包括:替换模块,用于基于插件工具在特定二进制文件中插入动态链接库,分别对系统级和应用级应用函数采取函数替换;监控模块,用于通过逆向工程对所述应用函数加载机制进行分析,依据配置文件进行监控;样本调度模块,用于获取外部输入的监控样本,自动化运行所述监控样本并输出监控日志;记录模块,用于记录所述监控样本、监控日志,所述监控日志以数据库进行存储。

在一些实施例中,包括:配置模块,用于监控模块配置管理,所述配置信息包括监控作用范围配置、行为监控点配置。

在一些实施例中,包括:交互模块,用于以定制化系统级应用将所述监控日志以应用或进程为分类展示出来。

在一些实施例中,所述样本调度模块还包括:对所述监控样本进行包括有关破解、重签名、自动化工具调用、自动化运行过程中截屏的处理。

在一些实施例中,所述监控日志包括日志文件、网络通讯数据文件、自动化运行过程中的截屏文件。

通过使用本发明的方法和系统,在获取了超级用户权限的IOS的平台上,基于theos工具对动态监控样本行为进行动态监控,并将监控日志加以分析,从而弥补了静态分析法的不足,在保护IOS系统不受侵犯、保护系统和应用个人隐私不被泄露等安全问题上起到了重要作用。同时通过监控对系统和应用行为进行大量的数据采集并输出相应的日志,随着数据量的增大,这些数据对于分析主流市场上应用行为、应用种类、应用开发等方面的走向具有重要的参考分析价值。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例的基于IOS平台动态监控的方法的流程图;

图2为根据本发明实施例的基于IOS平台动态监控的方法的自动化运行流程图;

图3为根据本发明实施例的基于IOS平台动态监控的系统的框架图。

具体实施方式

下面参照附图对本发明的优选实施例进行详细说明,在描述过程中省略了对于本发明来说是不必要的细节和功能,以防止对本发明的理解造成混淆。虽然附图中显示了示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本发明的范围完整的传达给本领域的技术人员。

本发明基于获取了超级用户权限的IOS系统,实现该系统以及系统上所有应用特定行为的自动化监控。这些特定行为具体是指IOS系统上的OC函数、C函数等的调用,其中不乏私有API。然后将这些特定行为的监控结果输出日志,供以分析判断。最后将整个工程实现自动化,以达到监控的目的。

图1示出了根据本发明实施例的基于IOS平台动态监控的方法的流程图。如图1所示,方法包括如下步骤:

S110,设置动态监控的配置文件,所述配置文件包括监控作用范围、具体监控行为。

使用工具theos产生的API的hook,并不是针对每一个app和每一个系统进程的,它是有作用范围的。这个作用范围需要根据不同的监控情况去添加它的范围,通过一个plist文件来添加和删除作用范围的,通过添加进程的bundleID、app的bundleID来作用的。

S120,基于插件工具在特定二进制文件中插入动态链接库,分别对系统级和应用级应用函数采取函数替换。

函数替换是一种hook的形式,在函数体执行前替换掉原函数体的内容,并换上自定义的内容。theos提供了支持原函数覆盖、原函数返回值获取的接口,使得这一替换不会影响系统原函数。

在获取了超级用户权限的IOS系统上,在系统级别的监控工具无法绕过cydia substrate的函数hook手段。本方法是基于Cydia Substrate平台上的theos,将监控的动态链接库插入二进制文件的Link Commands中,分别对系统级应用和应用级应用的OC函数、C函数等关键函数进行替换。这个手段的根本则是利用了IOS系统上二进制文件Mach-O的漏洞:文件编译信息(函数偏移地址、动态链接库实际加载行为)被写在二进制文件里。从而使得通过插入动态链接库dylib到二进制文件Mach-O的Load Commands(即是动态链接库实际加载的地方)里成为可能,使得theos工具生成的dylib能够顺利的被系统加载并生效,让系统级应用和应用级应用的函数hook成为可能。

S130,通过逆向工程对所述应用函数加载机制进行分析,并依据配置文件进行监控。

在获取了超级用户权限的IOS系统上,使用工具theos主要对IOS系统上的OC函数、C函数,依据配置文件中的监控作用范围、具体监控行为进行监控,如锁屏状态、锁屏解锁操作、短信来电监听、app安装卸载监听、获取IOS系统安装列表等。

这里所提逆向工程可以有多种实现方法,其中包括:分析通过信息交换所得的观察、反汇编或反编译等。

S140,获取外部输入的监控样本,自动化运行所述监控样本并输出监控日志。

基于python语言程序,对监控样本进行包括有关破解、重签名、自动化工具调用、自动化运行过程中截屏的处理,运行监控样本并监控其相关行为,输出的监控日志。

将整个监控、日志生成、样本自动化运行过程的异常情况的记录与处理流程化、系统化,形成一套规范的处理模式。具体监控过程描述如下:

theos工具的监控过程依赖于获取了超级用户权限的IOS系统上的cydiaSubstrate。cydiaSubstrate提供了一个MobileHooker的组件,这个组件提供了MSHookMessageEx和MSHookFunction两个函数针对不同语言的inline hook功能。其中MSHookMessageEx负责用来hook objective-c函数,MSHookFunction负责用来hook c/c++函数。

MSHookMessageEx对于objective-c函数的采用的是method swizzle的方法,主要是objective-c的runtime机制,可以在objective-c方法调用时动态采用class_replaceMethod等runtime函数替换其实现。MSHookFunction对于C函数是在函数的开头修改了汇编指令,让其跳转到自己定义的函数去执行,在执行完成后又再返回执行原指令。

cydiaSubstrate工具将上述两种inline hook操作封装成dylib动态链接库,在IOS应用启动的时候动态插入其Mach-O文件的动态链接库部分,使应用能够在运行的过程中加载这个dylib,从而实现两种方式的inline hook。

应用函数有窃取系统或其他应用隐私资料、破坏或监控系统功能、未经用户允许上传或下载数据、静默使用系统功能等行为时,动态监控会及时监控并记录这一行为的发生时间、发生进程、发生线程、发生行为、截获参数、发生应用信息等信息。

S150,记录监控样本、监控日志,所述监控日志以数据库进行存储。

用来记录动态监控产生的监控样本,同时记录hook系统API后产生的监控日志。监控日志包括log日志文件、网络通讯数据的pcap文件、自动化运行过程中的截屏文件等,监控日志以轻量级数据库sqlite方式进行存储。

其中,log日志文件制定了标准字段信息、模块、子模块等定义信息。标准字段信息即每条日志必须要带上的字段信息;模块、子模块是对众多监控API的所属功能的一种划分,这样的定义便于进一步对监控API进行扩展。

S160,以定制化系统级应用将所述监控日志以应用或进程为分类展示出来。

根据日志文件制定的定义信息,以theos定制化系统级APP应用将日志以应用(或进程)为分类展示出来。

图2为根据本发明实施例的基于IOS平台动态监控的方法的自动化运行流程图,如图2所示,包括如下步骤:

S210,对监控样本对应的ipa包进行下载。

S220,判断该ipa包是不是appstore包,即判断样本包是否加密过,如果是,则对该ipa包进行全部安装,如果不是则执行步骤S250。

S230,基于python语言程序,对ipa包进行破解程序。

破解程序过程:IOS系统上的应用样本是ipa格式,它的来源分为appstore和第三方平台。来自appstore下的样本是加密过的,这是apple出于保护应用隐私的一种方式,其加密方式不被所知,而加密过的样本是无法对其做任何处理的,也无法进行自动化运行系统后续的操作。来自第三方平台的应用则没有被加密过。破解程序工具的原理是:在IOS系统上,随着系统启动样本应用,系统本身势必要对appstore来源的样本进行解密,否则样本无法正常运行,这样就可以从内存中将样本dump下来,这样dump下来的样本则是解密过的。

S240,导出破解完成的未加密的数据包。

S250,对导出来的未加密数据包中数据进行全部重签名操作。

重签名过程:未加密的样本,或者是来自第三方平台上的样本,其样本本身的证书并不一定是apple的开发者证书。如若不是apple的开发者证书,在启用后续的自动化工具(基于xcode的instrument)的时候是不会成功的。重签名的过程,则是将有效的开发者证书去替换样本本身中的证书,并将这些证书签名过的文件重新一一再签名。

S260,将重签名后的数据包投入appcrawler-appium中处理,自动化遍历样本。

自动化工具的调用过程:apple的源生编译工具Xcode中带了instrument这个工具。Instrument是Xcode开发app过程中对app的性能进行调试的一款工具,在这些诸多调试的功能中有一种自动化遍历的功能:即启动并遍历该app的每一个界面。在这一过程中,Instrument工具会通过截屏并保留截屏文件来记录遍历每一个界面的过程。Appcrawler-appium将这一工具进行包装,实现了在PC端调用command line来遍历IOS应用。然而Instrument工具本身遍历IOS应用的条件必须要求应用本身是使用的开发者证书,否则工具无法启动成功,故而将加密样本经过砸壳、重签名处理,将未加密样本直接进行重签名处理,经过处理后的样本所使用的证书是开发者证书,以满足Instrument启动要求。

图3为根据本发明实施例的基于IOS平台动态监控的系统的框架图。如图3所述,系统可以包括:替换模块310、监控模块320、样本调度模块330、记录模块340。

替换模块310,用于基于插件工具在特定二进制文件中插入动态链接库,分别对系统级和应用级应用函数采取函数替换。

在获取了超级用户权限的IOS系统上,在系统级别的监控工具无法绕过cydia substrate的函数hook手段。本方法是基于Cydia Substrate平台上的theos,将监控的动态链接库插入二进制文件的Link Commands中,分别对系统级应用和应用级应用的OC函数、C函数等关键函数进行替换。这个手段的根本则是利用了IOS系统上二进制文件Mach-O的漏洞:文件编译信息(函数偏移地址、动态链接库实际加载行为)被写在二进制文件里。从而使得通过插入动态链接库dylib到二进制文件Mach-O的Load Commands(即是动态链接库实际加载的地方)里成为可能,使得theos工具生成的dylib能够顺利的被系统加载并生效,让系统级应用和应用级应用的函数hook成为可能。

监控模块320,用于通过逆向工程对所述应用函数加载机制进行分析,依据配置文件进行监控。

在获取了超级用户权限的IOS系统上,使用工具theos主要对IOS系统上的OC函数、C函数,依据配置文件中的监控作用范围、具体监控行为进行监控。比如:应用函数有窃取系统或其他应用隐私资料、破坏或监控系统功能、未经用户允许上传或下载数据、静默使用系统功能等行为时,动态监控会及时监控并记录这一行为的发生时间、发生进程、发生线程、发生行为、截获参数、发生应用信息等信息。

监控模块320是记录模块340的依赖,没有对API的监控就无法产生相应的行为日志;它是样本调度模块330的前提,没有对行为进行一个监控,产生的自动化流程则意义不大。

样本调度模块330,用于获取外部输入的监控样本,自动化运行所述监控样本并输出监控日志。

基于python语言程序,样本调度模块330对监控样本进行包括有关破解、重签名、自动化工具调用、自动化运行过程中截屏的处理,运行监控样本并监控其相关行为,输出运行日志进行分析。

将整个监控、日志生成、样本自动化运行过程的异常情况的记录与处理流程化、系统化,形成一套规范的处理模式。

记录模块340,用于记录监控样本、监控日志,所述监控日志以数据库进行存储。

记录模块340是用来动态监控产生的监控样本,同时记录hook系统API后产生监控日志。监控日志包括log日志文件、网络通讯数据的pcap文件、自动化运行过程中的截屏文件等,监控日志以轻量级数据库sqlite方式进行存储。

其中,log日志文件制定了标准字段信息、模块、子模块等定义信息。标准字段信息即每条日志必须要带上的字段信息;模块、子模块是对众多监控API的所属功能的一种划分,这样的定义便于进一步对监控API进行扩展。

一些实施例中,系统还包括:

配置模块350,用于监控模块配置管理,所述配置信息包括监控作用范围配置、行为监控点配置。

使用工具theos产生的API的hook,并不是针对每一个app和每一个系统进程,它是有作用范围的。这个作用范围需要根据不同的监控情况去添加它的范围,通过一个plist文件来添加和删除作用范围的,通过添加进程的bundleID、app的bundleID来作用的。

一些实施例中,系统还包括:

交互模块360,用于以定制化系统级应用将所述监控日志以应用或进程为分类展示出来。

根据日志文件制定的定义信息,交互模块360可以以theos定制化系统级APP应用将日志以应用(或进程)为分类展示出来。用户可以通过app实时查看监控过程中日志的详细情况。根据交互模块360中制定的定义信息,能十分清晰的看到系统以及app对API的调用情况。

进一步的,交互模块360还可以通过IOS上setting bundle的这种机制,更改配置模块350中的plist内容,从而达到更改监控的作用范围。交互模块360为用户手动更改监控范围提供了一种接口。通过使用本发明的方法和系统,实现该系统以及系统上所有应用特定行为的自动化监控。利用了IOS系统上二进制文件Mach-O的漏洞加以实现,然而关于Mach-O文件的漏洞,苹果公司却是无法避免的。因为这种漏洞乃是基于IOS动态运行时的机制所产生的,这种运行时机制将实际运行的过程推迟到运行时,而不是传统的汇编时。所以对于IOS系统而言,它的二进制文件里必须要说明在运行时每个函数相对于它的类的偏移地址,也就是相对地址、运行过程中要动态链接的系统库等信息。因而随着IOS系统的迭代,这种漏洞都不会被弥补,故而,在获取了超级用户权限的IOS系统上,本发明将始终有效,不会随着IOS系统的改变而改变。不同的地方是,随着IOS系统版本的迭代,系统API的名称和加载过程可能会发生变化,这就使得要根据API的变化做出相应的监控变化。然而,其监控实质并没有产生任何的变化,任何与IOS版本相关的监控变化都与本发明重合。

至此已经结合优选实施例对本发明进行了描述。应该理解,本领域技术人员在不脱离本发明的精神和范围的情况下,可以进行各种其它的改变、替换和添加。因此,本发明的范围不局限于上述特定实施例,而应由所附权利要求所限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1