具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
图1示出了依据实施例一的一种目标应用的安全检测方法的流程图。如图1所示,该方法包括以下步骤:
步骤S110:当检测到与目标应用相对应的启动指令时,根据启动指令确定与目标应用相对应的应用运行环境。
本发明的执行主体可以为多种,例如,既可以是安装在目标应用所在的移动终端内部的安全软件客户端,也可以是能够与目标应用所在的移动终端进行通信的安全测试终端或安全测试服务器。
其中,目标应用为待检测的应用,该应用为iOS应用,应用运行环境包括:iOS系统版本和/或iPhone设备机型。
具体地,在本步骤中,接收到目标应用发送的启动指令,启动指令中包含的环境字段中包含目标应用目前所在的运行环境,对启动指令进行解析,提取启动指令中的环境字段,从启动指令中的环境字段中获取目标应用目前所在的运行环境。例如,目标应用A在iPhone设备B的iOS系统C中启动,具体实施时,接收到启动指令,并对启动指令进行解析,解析后的启动指令中的环境字段中包含iPhone设备机型和iOS系统类别的关键字,直接读取iPhone设备机型和iOS系统类别的关键字以及关键字名录下的iPhone设备机型和iOS系统类别信息。
步骤S120:获取目标应用在应用运行环境中启动后显示的程序启动页面。
目标应用在目前所在的运行环境中启动后,在预设时间后显示程序启动页面。具体地,在本步骤中,获取到目标应用在应用运行环境中启动预设时间后显示的程序启动页面。例如,目标应用A在iPhone设备B的iOS系统C中启动,预设时间为10秒,目标应用A启动预设时间10秒后显示程序启动页面D,具体实施时,获取到目标应用在应用运行环境中启动预设时间10秒后显示的程序启动页面D。
步骤S130:查询预设的与目标应用相对应的应用运行环境相关联的环境启动页面。
具体地,在本步骤中,获取目标应用在应用运行环境中启动后显示的程序启动页面,并从后台数据库中调取启动环境匹配表,从启动环境匹配表中查询与该目标应用相对应的应用运行环境的环境启动页面。其中,启动环境匹配表具体包括:目标应用、应用运行环境、环境启动页面三者的映射关系。例如,具体实施时,根据启动环境匹配表查询到目标应用A在iPhone设备B的iOS系统C运行环境下的环境启动页面为环境启动页面E。
步骤S140:判断程序启动页面与环境启动页面是否匹配,根据判断结果确定目标应用在预设运行环境中是否安全。
具体地,在本步骤中,获取到目标应用在应用运行环境中启动后显示的程序启动页面,并从启动环境匹配表中查询到与目标应用相对应的应用运行环境相关联的环境启动页面。将程序启动页面与环境启动页面进行比对,以确定出程序启动页面与环境启动页面两者之间的差别。若程序启动页面与环境启动页面两者之间不存在差别,即二者匹配,则目标应用在运行环境中安全;若程序启动页面与环境启动页面两者之间存在差别,即二者不匹配,则目标应用在运行环境中不安全。
本实施例中当检测到与目标应用相对应的启动指令时,根据启动指令确定与目标应用相对应的应用运行环境,;获取目标应用在应用运行环境中启动后显示的程序启动页面;查询预设的与目标应用相对应的应用运行环境相关联的环境启动页面;判断程序启动页面与环境启动页面是否匹配,根据判断结果确定目标应用在预设运行环境中是否安全。由此可见,该方式从目标应用的运行环境的角度对目标应用进行安全检测,通过获取目标应用在应用运行环境中的程序启动页面,并将程序启动页面与预设的环境启动页面比较,判断目标应用在应用运行环境下是否正常启动,以此实现针对目标应用运行环境的安全检测。
实施例二
图2示出了依据实施例二的一种目标应用的安全检测方法的流程图。
本实施例从目标应用的运行环境角度对目标应用进行安全检测。由于iOS应用可运行在各种不同iOS系统和不同iPhone设备上,但iOS应用的iOS系统版本和不同iPhone设备机型迭代更新很快,需要保证iOS应用在各种运行环境下均可运行正常。
如图2所示,该方法包括以下步骤:
步骤S210:当检测到与目标应用相对应的启动指令时,根据启动指令确定与目标应用相对应的应用运行环境。
本发明的执行主体可以为多种,例如,既可以是安装在目标应用所在的移动终端内部的安全软件客户端,也可以是能够与目标应用所在的移动终端进行通信的安全测试终端或安全测试服务器。
其中,目标应用为待检测的应用,该应用为iOS应用,应用运行环境包括:iOS系统版本和/或iPhone设备机型。
具体地,在本步骤中,接收到目标应用发送的启动指令,启动指令中包含的环境字段中包含目标应用目前所在的运行环境,对启动指令进行解析,提取启动指令中的环境字段,根据启动指令中包含的环境字段确定与目标应用相对应的应用运行环境。例如,目标应用A在iPhone设备B的iOS系统C中启动,具体实施时,接收到启动指令,并对启动指令进行解析,解析后的启动指令中的环境字段中包含iPhone设备和iOS系统类别的关键字,直接读取iPhone设备和iOS系统类别的关键字以及关键字名录下的iPhone设备和iOS系统类别信息。
可选地,在本步骤中,接收到目标应用发送的启动指令,并对启动指令进行解析。根据解析后的启动指令的指令格式和/或指令所对应的指令规则,确定与目标应用相对应的应用运行环境。例如,解析后的启动指令的指令格式的结构包括第一部分和第二部分,第一部分表示应用运行环境中的iPhone设备机型,第二部分表示应用运行环境中的iOS系统版本。iPhone设备机型用不同的设备标识码表示,iOS系统版本用不同的版本标识码表示。对启动指令解析,从解析指令中获取第一部分和第二部分的标识码,并根据指令规则确定标识码所对应的iPhone设备机型和iOS系统版本类别。其中,指令规则具体包括:iPhone设备机型与设备标识码的映射关系,iOS系统版本与版本标识码的映射关系。
步骤S220:获取目标应用在应用运行环境中启动后显示的程序启动页面。
目标应用在目前所在的运行环境中启动后,在预设时间后显示程序启动页面。具体地,在本步骤中,获取到目标应用在应用运行环境中启动预设时间后显示的程序启动页面。
步骤S230:查询预设的与目标应用相对应的应用运行环境相关联的环境启动页面。
具体地,在本步骤中,获取目标应用在应用运行环境中启动后显示的程序启动页面,并从后台数据库中调取启动环境匹配表,从启动环境匹配表中查询与该目标应用相对应的应用运行环境的环境启动页面。其中,启动环境匹配表具体包括:目标应用、应用运行环境、环境启动页面三者的映射关系。
步骤S240:判断程序启动页面与环境启动页面是否匹配,根据判断结果确定目标应用在预设运行环境中是否安全。
具体地,在本步骤中,获取到目标应用发送的目标应用在应用运行环境中启动后显示的程序启动页面,并从启动环境匹配表中查询到与目标应用相对应的应用运行环境相关联的环境启动页面。将程序启动页面与环境启动页面进行比对,以确定出程序启动页面与环境启动页面两者之间的差别。若程序启动页面与环境启动页面两者之间不存在差别,即二者匹配,则目标应用在运行环境中安全;若程序启动页面与环境启动页面两者之间存在差别,即二者不匹配,则目标应用在运行环境中不安全。
步骤S250:获取目标应用在应用运行环境中运行预设功能后显示的程序功能页面;查询预设的与目标应用相对应的应用运行环境相关联的环境功能页面;判断程序功能页面与环境功能页面是否匹配,根据判断结果确定目标应用在预设运行环境中是否安全。
其中,环境功能页面具体包括:分别针对各种类型的应用运行环境,获取目标应用在该种类型的应用运行环境中运行预设功能且运行结果为成功时所对应的运行界面,将获取到的运行界面作为与该种类型的应用运行环境相关联的环境功能页面存储到预设的功能环境匹配表中,其中功能环境匹配表具体包括:目标应用、应用运行环境、预设功能、环境功能页面四者映射关系以及各个环境功能页面所对应的预设功能的优先级。
具体地,在本步骤中,根据预设的环境匹配表中存储的各个环境功能页面所对应的预设功能的优先级,分别获取目标应用在应用运行环境中运行各种类型的预设功能后显示的程序功能页面,从功能环境匹配表中获取与目标应用、应用运行环境和预设功能相关联的环境功能页面,将程序功能页面与环境功能页面进行比对,以确定程序功能页面与环境功能页面两者之间是否存在差别。若程序功能页面与环境功能页面两者之间不存在差别,即二者匹配,则目标应用在运行环境中预设功能运行安全;若程序功能页面与环境功能页面两者之间存在差别,即二者不匹配,则目标应用在运行环境中预设功能运行不安全。
可选地,为了确保重要的预设功能优先进行运行环境安全性检测,预先确定目标应用在各种类型的应用运行环境中所对应的功能,预设功能的数量为多个,各个预设功能之间存在优先级。各个预设功能之间的优先级存储在功能环境匹配表中。例如,具体实施时,按功能环境匹配表中预设功能的优先级由高到低排序,各个预设功能的顺序为预设功能1、预设功能2、预设功能3。目标应用在应用运行环境中运行预设功能1,获取预设功能1的程序功能页面与环境功能页面,将取预设功能1的程序功能页面与环境功能页面进行叠加比对。依次对预设功能2和预设功能3执行上述操作。
另外,为了提高检测效率,在本发明其他的实施例中,各个预设功能的运行环境安全性检测也可以通过多个并行执行的线程同时执行上述各个预设功能的运行环境安全性检测过程,本发明对各个预设功能的运行环境安全性检测过程的具体执行顺序不做限定。
本实施例中接收到目标应用发送的启动指令,根据启动指令确定与目标应用相对应的应用运行环境;获取目标应用发送的目标应用在应用运行环境中启动后显示的程序启动页面,根据启动环境匹配表查询预设的与目标应用相对应的应用运行环境相关联的环境启动页面,判断程序启动页面与环境启动页面是否匹配,根据判断结果确定目标应用在运行环境中是否安全。获取目标应用在应用运行环境中运行预设功能后显示的程序功能页面;查询预设的与目标应用相对应的应用运行环境相关联的环境功能页面;判断程序功能页面与环境功能页面是否匹配,根据判断结果确定目标应用在预设运行环境中是否安全。由此可见,该方式能够获取目标应用在应用运行环境中的程序启动页面,并将程序启动页面与预设的环境启动页面比较,判断目标应用在应用运行环境下是否正常启动,同时考虑到了目标应用在预设运行环境中各个预设功能是否安全运行,按照各个预设功能的优先级,依次比对预设功能的程序功能页面与环境功能页面,判断目标应用的各个预设功能在应用运行环境下是否正常运行,以此对目标应用进行运行环境安全检测。
通过上述的各个步骤,获取目标应用在应用运行环境中的程序启动页面,并将程序启动页面与预设的环境启动页面比较,判断目标应用在应用运行环境下是否正常启动,以此实现针对目标应用运行环境的安全检测。为了便于理解,下面以一个具体示例为例详细介绍本实施例中的上述方法的具体实现方式:
步骤一:Mac电脑设备集成ideviceinstaller(设备安装)工具,让Mac电脑设备远程连接iPhone手机设备,能够使Mac电脑设备对iPhone手机设备进行管理。
具体的,Mac电脑设备集成ideviceinstaller工具,实现远程连接iPhone手机设备,对iPhone手机设备上的iOS应用进行管理和操作。在Mac电脑设备的终端输入“ideviceinstaller–i xxx.ipa”命令并运行,其中,“xxx.ipa”是目标应用的IPA(苹果程序应用文件)文件名。
步骤二:被远程连接的iPhone手机设备集成frida环境,使其调用iPhone内部的应用的程序。
具体的,在Mac电脑设备的终端输入“python xxx.py bundleId”命令并运行,其中,“xxx”是目标应用的名称。被远程连接的iPhone手机设备自动启动。
步骤三:将启动后的应用首页和应用正常打开时的首页两者对比,若首页相同则说明应用在该运行环境下启动正常;若应用闪退或者无法加载,则应用在该运行环境下启动不正常。
步骤四:利用ideviceinstaller工具对已经安装的应用进行卸载。
具体的,在Mac电脑设备的终端输入“ideviceinstaller–U bundleId”命令并运行,其中,“xxx”是目标应用的名称。被远程连接的iPhone手机设备自动卸载。
综上所述,本实施例中iPhone手机设备端的目标应用可以实现自动安装、启动和卸载,无需人工手动安装、启动和卸载,摆脱了传统的安全检测方式,实现了自动安全检测,能够更加快捷地实现各种运行环境下的安全性检测,大大极高了安全检测效率,满足日益增长的iOS安全检测需求。
实施例三
图3示出了依据实施例三的一种目标应用的安全检测方法的流程图。
本实施例从目标应用的防逆向角度对目标应用进行安全检测。目前,针对应用的源代码进行调试、拦截应用运行进程、注入动态库的现象严重,对应用进行防逆向功能检测,可以评估应用防逆向功能的强弱,及早发现应用防逆向功能存在的缺陷。
如图3所示,该方法包括以下步骤:
步骤S310:向目标应用发送与预设的防逆向功能相对应的防逆向测试指令。
本发明的执行主体可以为多种,例如,既可以是安装在目标应用所在的移动终端内部的安全软件客户端,也可以是能够与目标应用所在的移动终端进行通信的安全测试终端或安全测试服务器。
其中,目标应用为待检测的应用,该应用为iOS应用。具体地,在本步骤中,从后台数据库中获取预设的逆向测试指令表,根据预设的逆向测试指令表中存储的各个防逆向功能以及与各个防逆向功能相对应的各个防逆向测试指令的种类和/或各个防逆向测试指令之间的优先级,向目标应用发送逆向测试指令表中存储的各个防逆向测试指令。其中,防逆向功能具体包括:反调试功能、反钩子功能、反注入功能,逆向测试指令表具体包括:防逆向功能与防逆向测试指令的映射关系以及防逆向功能之间的优先级和防逆向测试指令之间的优先级。例如,具体实施时,逆向测试指令表中存储的防逆向功能按防逆向功能优先级由高到低排序依次为反调试功能、反钩子功能、反注入功能。根据防逆向功能的优先级获取反调试防逆向功能以及与反调试防逆向功能相对应的反调试防逆向测试指令,并将反调试防逆向测试指令发送给目标应用。当然,针对逆向测试指令表中存储的防逆向功能设置优先级的操作为可选的操作,具体实施时,逆向测试指令表中存储的防逆向功能也可以不设置优先级,即:各个功能之间为对等的,相应地,反调试功能、反钩子功能、反注入功能同时并行实施。
具体实施时,为了确保重要的防逆向功能相对应的防逆向测试指令优先发送,针对多个不同类型的防逆向功能相对应的防逆向测试指令发送过程可以按照各个类型的优先级顺序依次执行。例如,具体实施时,向目标应用发送与反调试防逆向功能相对应的反调试防逆向测试指令后,根据预设的防逆向功能的优先级获取反钩子防逆向功能以及与反钩子防逆向功能相对应的反钩子防逆向测试指令,并将反钩子防逆向测试指令发送给目标应用。
另外,为了提高检测效率,在本发明其他的实施例中,各个防逆向功能检测也可以通过多个并行执行的线程同时执行上述各个防逆向功能检测过程,本发明对各个防逆向功能检测过程的具体执行顺序不做限定。
进一步地,为了实现与目标应用的通信,通过与安装目标应用的第一终端设备无线连接的第二终端设备,向目标应用发送与预设的防逆向功能相对应的防逆向测试指令;其中,第一终端设备与第二终端设备处于相同的无线网络。具体实施时,Mac电脑设备和iPhone手机设备连上同一个无线,使其处在同一网段,Mac电脑设备使用ssh(远程连接工具)自动登录iPhone手机设备,实现Mac电脑设备对iPhone手机设备的无线连接,Mac电脑设备向iPhone手机设备上的目标应用发送与预设的防逆向功能相对应的防逆向测试指令。
步骤S320:获取目标应用针对防逆向测试指令返回的测试响应结果。
具体地,在本步骤中,获取到各个防逆向测试指令对应的测试响应结果,并将测试响应结果存储在后台数据库中的测试响应集合中。其中,测试响应结果具体包括:目标应用所在的设备对各个防逆向测试指令对应的操作做出测试响应。测试响应集合可以通过列表、文件、数据包、测试响应集合等各种方式实现。例如,具体实施时,目标应用接收到反调试防逆向测试指令、反钩子防逆向测试指令、反注入防逆向测试指令,目标应用根据反调试防逆向测试指令、反钩子防逆向测试指令、反注入防逆向测试指令的优先级,优先执行反调试防逆向测试指令对应的反调试操作,在目标应用所在设备的终端命令行运行“debugserver*:12349–a应用进程号”命令,目标应用所在设备对反调试操作做出测试响应。
按照防逆向测试指令的优先级,目标应用执行反钩子防逆向测试指令对应的反钩子操作,在目标应用所在设备的终端命令行运行“cycript–p应用进程号”命令。目标应用所在设备对反钩子操作实现测试响应。
按照防逆向测试指令的优先级,目标应用执行反注入防逆向测试指令对应的反注入操作,在目标应用所在设备的终端视图下运行“optool install–c load–p“应用动态库”-t应用二进制文件”命令。目标应用所在设备对反注入操作实现测试响应。
另外,为了提高检测效率,在本发明其他的实施例中,各个防逆向功能检测也可以通过多个并行执行的线程同时执行上述各个防逆向功能检测过程,本发明对各个防逆向功能检测过程的具体执行顺序不做限定。
进一步地,为了提高防逆向功能检测的效率,将一个防逆向功能相对应的防逆向测试指令防逆向测试指令按关键字段分成多个。一个防逆向功能相对应的防逆向测试指令的数量为多个,一个防逆向功能相对应的多个防逆向测试指令之间预先设置优先级。例如,反调试防逆向功能相对应的防逆向测试指令按关键字段分成反调试防逆向测试指令1、反调试防逆向测试指令2、反调试防逆向测试指令3。按照预先设置的优先级由高到低将反调试防逆向测试指令排列为反调试防逆向测试指令1、反调试防逆向测试指令2、反调试防逆向测试指令3。具体实施时,目标应用所在设备依次执行反调试防逆向测试指令1、反调试防逆向测试指令2、反调试防逆向测试指令3对应的命令。
步骤S330:查询预先配置的与防逆向测试指令相对应的至少两种预期响应结果。
具体地,在本步骤中,分别针对防逆向测试设置的预期响应结果预先存储在后台数据库中,查询预先配置的与防逆向测试指令相对应的至少两种预期响应结果。其中,当预设的防逆向功能为反调试功能时,预先配置的与防逆向测试指令相对应的至少两种预期响应结果包括:用于指示目标应用具备反调试功能的反调试类预期响应结果,以及用于指示目标应用不具备反调试功能的非反调试类预期响应结果。其中,反调试类预期响应结果中包含预设的反调试目标字段。例如,预设的反调试目标字段为Segmentation fault:11。具体实施时,执行反调试防逆向测试指令对应的反调试操作,在目标应用所在设备的终端命令行运行“debugserver*:12349–a应用进程号”命令,若返回信息中出现Segmentationfault:11,则说明目标应用具有反调试的防逆向功能;若返回信息中未出现Segmentationfault:11,则说明目标应用不具有反调试的防逆向功能。
当预设的防逆向功能为反钩子功能时,预先配置的与防逆向测试指令相对应的至少两种预期响应结果包括:用于指示目标应用具备反钩子功能的反钩子类预期响应结果,以及用于指示目标应用不具备反钩子功能的非反钩子类预期响应结果。其中,反钩子类预期响应结果中包含预设的反钩子目标字段。例如,预设的反调试目标字段为error。具体实施时,执行反钩子防逆向测试指令对应的反钩子操作,在目标应用所在设备的终端命令行运行“cycript–p应用进程号”命令,若返回信息中出现error,则说明目标应用具有反钩子的防逆向功能;若返回信息中未出现error,则说明目标应用不具有反钩子的防逆向功能。
当预设的防逆向功能为反注入功能时,预先配置的与防逆向测试指令相对应的至少两种预期响应结果包括:用于指示目标应用具备反注入功能的反注入类预期响应结果,以及用于指示目标应用不具备反注入功能的非反注入类预期响应结果。其中,反注入类预期响应结果包括:闪退类型的响应结果。例如,具体实施时,运行“optool install–c load–p“应用动态库”-t应用二进制文件”命令,再将目标应用压缩后进行安装,若出现闪退类型的响应结果,则说明目标应用具有反注入的防逆向功能;若未出现闪退类型的响应结果,则说明目标应用不具有反注入的防逆向功能。
步骤S340:将测试响应结果与至少两种预期响应结果进行匹配。
具体地,在本步骤中,获取到各个防逆向测试指令对应的测试响应结果,将测试响应结果与至少两种预期响应结果进行匹配。例如,具体实施时,反调试防逆向功能测试对应的预期响应结果具体包括用于指示目标应用具备反调试功能的反调试类预期响应结果,以及用于指示目标应用不具备反调试功能的非反调试类预期响应结果。将测试响应结果与用于指示目标应用具备反调试功能的反调试类预期响应结果,以及用于指示目标应用不具备反调试功能的非反调试类预期响应结果匹配。若反调试防逆向测试响应结果为指示目标应用具备反调试功能的反调试类预期响应结果,则目标应用具有反调试的防逆向功能;若反调试防逆向测试响应结果为指示目标应用不具备反调试功能的反调试类预期响应结果,则目标应用不具有反调试的防逆向功能。
步骤S350:根据匹配结果确定目标应用的防逆向功能等级。
具体地,在本步骤中,将测试响应结果与至少两种预期响应结果进行匹配,根据匹配结果确定目标应用防逆向功能等级。例如,具体实施时,按照三种防逆向功能测试响应结果的匹配情况判断目标应用的防逆向功能情况。
具体地,在本步骤中,设置防逆向功能评分,根据防逆向功能评分,确定目标应用的防逆向功能等级。其中,分别针对不同防逆向功能设置不同的防逆向功能评分,防逆向功能评分是用于评价目标应用是否具有防逆向功能,具体实施时,若目标应用具有反调试防逆向功能,则反调试防逆向功能评分为1,若目标应用不具有反调试防逆向功能,则反调试防逆向功能评分为0。若目标应用具有反钩子防逆向功能,则反钩子防逆向功能评分为1,若目标应用不具有反钩子防逆向功能,则反钩子防逆向功能评分为0。若目标应用具有反注入防逆向功能,则反注入防逆向功能评分为1,若目标应用不具有反注入防逆向功能,则反注入防逆向功能评分为0。目标应用的防逆向功能评分总和为反调试防逆向功能评分、反钩子防逆向功能评分、反注入防逆向功能评分三者之和。
根据防逆向功能评分总和判定目标应用的防逆向功能等级,若防逆向功能评分总和为0,则目标应用的防逆向功能等级为低;若防逆向功能评分总和为1,则目标应用的防逆向功能等级为中低;若防逆向功能评分总和为2,则目标应用的防逆向功能等级为中高;若防逆向功能评分总和为3,则目标应用的防逆向功能等级为高。
本实施例向目标应用发送与预设的防逆向功能相对应的防逆向测试指令;获取目标应用针对防逆向测试指令返回的测试响应结果;查询预先配置的与防逆向测试指令相对应的至少两种预期响应结果;将测试响应结果与至少两种预期响应结果进行匹配,根据匹配结果确定目标应用是否具有防逆向功能。该方式通过预设的防逆向测试响应结果,从反调试、反钩子、反注入三个方面综合评价目标应用的防逆向功能,测试过程中充分考虑了各个防逆向功能的实现过程。
通过上述的各个步骤,利用预设的预期响应结果,将防逆向测试响应结果与预期响应结果匹配,以此评价目标应用的防逆向功能的强弱,评估目标应用的防逆向安全性检测。为了便于理解,下面以一个具体示例为例详细介绍本发明中的上述方法的具体实现方式:
步骤一:Mac电脑设备通过ssh(远程连接工具)连接iPhone手机设备后,实现Mac电脑设备对iPhone手机设备的无线连接。
具体的,在Mac电脑设备终端输入“ssh root@x.x.x.x”命令并运行,其中“x.x.x.x”是iPhone手机设备的网络地址。
步骤二:执行判断反调试的命令,返回结果和预期结果进行比对,检测应用是否具有调试的能力。
步骤三:执行判断反钩子的命令,返回结果和预期结果进行比对,检测应用是否具反钩子的能力。
步骤四:在Mac终端视图下,执行判断应用是否反注入的命令,返回结果和预期结果进行比对,检测应用是否具有反注入的能力。
步骤五:根据三种防逆向测试结果,综合判定应用的防逆向功能等级。
综上所述,本实施例中通过Mac电脑设备远程操控iPhone手机设备,实现了应用的防逆向功能自动检测,摆脱了传统的安全检测方式,大大极高了安全检测效率,满足日益增长的iOS安全检测需求。
实施例四
图4示出了依据实施例四的一种iOS应用的安全检测方法的流程图。
本实施例从目标应用的数据安全角度对目标应用进行安全检测。目前,针对应用的程序代码和程序字符的篡改现象严重,对目标应用进行数据保护安全检测,可以及早发现目标应用数据保护功能存在的缺陷。
如图4所示,该方法包括以下步骤:
步骤S410:针对获取到的目标应用的二进制文件进行反编译。
本发明的执行主体可以为多种,例如,既可以是安装在目标应用所在的移动终端内部的安全软件客户端,也可以是能够与目标应用所在的移动终端进行通信的安全测试终端或安全测试服务器。
其中,目标应用为待检测的应用,该应用为iOS应用,目标应用的二进制文件具体包括:利用解压工具,解压目标应用的IPA包,获取到目标应用的二进制文件。
具体地,在本步骤中,利用反编译工具,对获取到的目标应用的二进制文件进行反编译。其中,反编译工具具体包括:第一反编译工具和第二反编译工具。具体实施时,通过第一反编译工具对获取到的目标应用的二进制文件进行反编译,得到第一反向编译代码;和/或,通过第二反编译工具对获取到的目标应用的二进制文件进行反编译,得到第二反向编译代码。第一反编译工具和第二反编译工具可以同时使用,也可以选择其一使用。例如,第一反编译工具为MachOView反编译工具;第二反编译工具为Hopper Disassembler反编译工具。
步骤S420:获取反编译后得到的与目标应用相对应的反向编译代码。
具体的,在本步骤中,不同类型的反向编译代码预先设置了优先级,按照反向编译代码的优先级获取反向编译代码。例如,第一反向编译代码优于第二反向编译代码,其中,第一反向编译代码为MachOView反向编译代码,第二反向编译代码为Hopper Disassembler反向编译代码。具体实施时,优先获取MachOView反向编译代码。
步骤S430:提取反向编译代码中包含的与预设目标区域相对应的目标代码。
其中,反向编译代码具体包括:第一反向编译代码和第二反向编译代码;第一反向编译代码中包含的与预设目标区域相对应的目标代码包括:动态库信息和/或头文件信息;第二反向编译代码中包含的与预设目标区域相对应的目标代码包括:预设函数和/或预设字符。其中,第一反向编译代码为MachOView反向编译代码,第二反向编译代码为HopperDisassembler反向编译代码。
具体实施时,针对第一反向编译代码设置动态库信息和/或头文件信息,从后台数据库中获取第一反向编译代码和动态库信息和/或头文件信息,将动态库信息和/或头文件信息与第一反向编译代码比对,提取反向编译代码中包含动态库信息和/或头文件信息的目标代码,并将包含动态库信息和/或头文件信息的目标代码存储在后台数据库中。例如,第一反向编译代码为MachOView反向编译代码。MachOView反编译工具解析目标应用的结构,可见目标应用二进制文件内的动态库信息和头文件信息。针对MachOView反向编译代码设置动态库信息和/或头文件信息,从后台数据库中获取MachOView反向编译代码和动态库信息和/或头文件信息,将动态库信息和/或头文件信息与MachOView反向编译代码比对,提取反向编译代码中包含动态库信息和/或头文件信息的目标代码,并将包含动态库信息和/或头文件信息的目标代码存储在后台数据库中。
针对第二反向编译代码设置预设函数和/或预设字符,从后台数据库中获取第二反向编译代码和预设函数和/或预设字符,将预设函数和/或预设字符与第二反向编译代码比对,提取反向编译代码中包含预设函数和/或预设字符的目标代码,并将包含预设函数和/或预设字符的目标代码存储在后台数据库中。例如,第二反向编译代码为HopperDisassembler反向编译代码。Hopper Disassembler反编译工具可见目标应用二进制文件内的函数和字符以及方法内的逻辑代码。针对Hopper Disassembler反向编译代码设置预设函数和/或预设字符。具体实施时,从后台数据库中获取与Hopper Disassembler反编译工具相对应的反向编译代码和预设函数和/或预设字符,将预设函数和/或预设字符与反向编译代码比对,提取反向编译代码中包含预设函数和/或预设字符的目标代码,并将包含预设函数和/或预设字符的目标代码存储在后台数据库中。
可选地,在本步骤中,不同类型的反向编译代码预先设置了优先级,按照反向编译代码的优先级获取反向编译代码的目标代码。
进一步地,为了选取包括逻辑运算符的目标代码,最大程度利用反编译工具,获取反向编译代码中包含的各个方法函数,从各个方法函数中提取包含逻辑运算符的方法函数作为目标函数,将目标函数对应的代码确定为与预设目标区域相对应的目标代码。
步骤S440:判断目标代码中是否包含与预设的混淆标识符相匹配的内容。
其中,预设的混淆标识符具体包括:对应于第一反向编译代码的第一标识符以及对应于第二反向编译代码的第二标识符。
具体地,在本步骤中,将第一反向编译代码与预设的混淆标识符匹配,判断第一反向编译代码中包含的与预设目标区域相对应的目标代码中是否包含与预设的混淆标识符相匹配的内容,得到第一判断结果;将第二反向编译代码与预设的混淆标识符匹配,判断第二反向编译代码中包含的与预设目标区域相对应的目标代码中是否包含与预设的混淆标识符相匹配的内容,得到第二判断结果。其中,第一反向编译代码为MachOView反向编译代码,第二反向编译代码为Hopper Disassembler反向编译代码。例如,具体实施时,将目标应用的二进制文件放入MachOView反编译工具中,查看Objc CFStrings字符表,将ObjcCFStrings字符表对应的反编译代码与预设的混淆标识符相匹配,若Objc CFStrings字符表的反编译代码显示为标识符则表示目标应用的程序字符被混淆,若Objc CFStrings字符表的反编译代码正常显示目标应用的字符串则表示目标应用的程序字符未被混淆。和/或具体实施时,将目标应用的二进制文件放入Hopper Disassembler v4反编译工具中,随机选择一个方法函数,将方法函数对应的反编译代码与预设的混淆标识符(例如乱码)相匹配,若方法函数的反编译代码中出现乱码则表示目标应用的程序代码已被混淆,若方法函数的反编译代码中未出现乱码则表示目标应用的程序代码未被混淆。
步骤S450:根据对比结果确定目标应用的安全性等级。
具体地,在本步骤中,根据第一判断结果和第二判断结果的重要性预先设置第一判断结果和第二判断结果的权重,根据第一判断结果和第二判断结果以及第一判断结果和第二判断结果的权重计算目标应用的安全评分,根据目标应用的安全评分确定目标应用的安全性等级。例如,具体实施时,若第一判断结果为第一反向编译代码中包含预设的混淆标识符,则将第一判断结果记为0,若第一判断结果为第一反向编译代码中不包含预设的混淆标识符,则将第一判断结果记为1;若第二判断结果为第二反向编译代码中包含预设的混淆标识符,则将第二判断结果记为0,若第二判断结果为第二反向编译代码中不包含预设的混淆标识符,则将第二判断结果记为1。具体到本例中,分别为第一判断结果和第二判断结果分配权重,第一判断结果的权重为0.5,第二判断结果的权重为0.5,第一判断结果为0,第二判断结果为1,则目标应用的安全评分为0*0.5+1*0.5=0.5。
根据目标应用的安全评分确定目标应用是否安全,具体的,将目标应用的安全性等级划分为四个等级,若目标应用的安全评分为0,则目标应用的安全性等级为低;
若目标应用的安全评分为0~0.5(不包含0和0.5),则目标应用的安全性等级为中低;若目标应用的安全评分为0.5~1(不包含1),则目标应用的安全性等级为中高;若目标应用的安全评分为1,则目标应用的安全性等级为高。具体到本例中,目标应用的安全评分0.5,目标应用的安全性等级为中高。
本实施例中针对获取到的目标应用的二进制文件进行反编译;获取反编译后得到的与目标应用相对应的反向编译代码;提取反向编译代码中包含的与预设目标区域相对应的目标代码;判断目标代码中是否包含与预设的混淆标识符相匹配的内容,根据判断结果确定目标应用是否安全。由此可见,该方式从目标应用的程序代码和程序字符两方面考虑,利用针对目标应用的程序代码的第一反编译工具Hopper Disassembler反编译工具和针对目标应用的程序字符的第二反编译工具MachOView反编译工具反编译得到两种类型的反向编译代码,从两种不同类型的反向编译代码中提取针对性的目标代码。将HopperDisassembler反编译工具反编译得到的反向编译代码中提取的目标代码与预设函数和/或预设字符的预设混淆标识符对比,得到第一判断结果;将MachOView反编译工具反编译得到的反向编译代码中提取的目标代码与动态库信息和/或头文件信息的预设混淆标识符对比,得到第二判断结果。根据第一判断结果和第二判断结果以及第一判断结果和第二判断结果的权重计算目标应用的安全评分,根据目标应用的安全评分确定目标应用的安全性等级,以此实现目标应用数据安全保护程度检测。
上述的实施例二至实施例四分别从不同的角度实现了iOS应用的安全检测,具体实施时,上述三个实施例既可以单独使用,也可以结合使用。其中,当实施例二至实施例四组合在一起使用时,可以综合每个实施例得出的安全评分,确定iOS应用的综合评分,以便根据综合评分确定iOS应用是否安全。例如,可以针对每个实施例的安全评分设置不同的权重,并针对三个实施例所对应的安全评分进行加权,以确定iOS应用的综合评分。另外,还可以根据三个实施例的检测结果,向对应的测试终端发送提示消息,以提示iOS应用的安全检测结果以及需要改进的方式等相关信息,从而便于开发人员对iOS应用进行改进以提升安全性。
实施例五
图5示出了依据实施例五的一种iOS应用的安全检测装置的结构图,所述装置包括:
应用运行环境确定模块51,当检测到与目标应用相对应的启动指令时,根据启动指令确定与目标应用相对应的应用运行环境;其中,目标应用为iOS应用;
程序启动页面获取模块52,获取目标应用在应用运行环境中启动后显示的程序启动页面;
环境启动页面查询模块53,查询预设的与目标应用相对应的应用运行环境相关联的环境启动页面;
启动页面匹配模块54,判断程序启动页面与环境启动页面是否匹配,根据判断结果确定目标应用在预设运行环境中是否安全。
可选的,应用运行环境确定模块51适于:
根据启动指令的指令格式和/或指令所对应的指令规则,确定与目标应用相对应的应用运行环境;和/或,
根据启动指令中包含的环境字段确定与目标应用相对应的应用运行环境。
可选的,装置进一步包括:功能页面匹配模块55,功能页面匹配模块55适于:
获取目标应用在应用运行环境中运行预设功能后显示的程序功能页面;
查询预设的与目标应用相对应的应用运行环境相关联的环境功能页面;
判断程序功能页面与环境功能页面是否匹配,根据判断结果确定目标应用在预设运行环境中是否安全。
可选的,装置进一步包括:预设功能确定模块50,预设功能确定模块50适于:
分别确定目标应用在各种类型的应用运行环境中所对应的预设功能;
分别针对各种类型的应用运行环境,获取目标应用在该种类型的应用运行环境中运行预设功能且运行结果为成功时所对应的运行界面;将获取到的运行界面作为与该种类型的应用运行环境相关联的环境功能页面存储到预设的功能环境匹配表中。
可选的,预设功能确定模块50进一步适于:当目标应用在各种类型的应用运行环境中所对应的预设功能的功能类型为多个时,进一步针对多种类型的预设功能设置对应的优先级;
则预设的功能环境匹配表中进一步存储有各个环境功能页面所对应的预设功能的优先级;
且获取目标应用在应用运行环境中运行预设功能后显示的程序功能页面具体包括:根据预设的功能环境匹配表中存储的各个环境功能页面所对应的预设功能的优先级,分别获取目标应用在应用运行环境中运行各种类型的预设功能后显示的程序功能页面。
可选的,应用运行环境包括:iOS系统版本和/或iPhone设备机型。
可选的,目标应用在应用运行环境中启动后显示的程序启动页面包括:目标应用在应用运行环境中启动后预设时间后显示的页面。
依据本发明的再一方面,提供了一种iOS应用的安全检测系统,包括上述安全检测装置。
本申请实施例提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的一种基于iOS应用的安全检测方法。
图6示出了根据本发明实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图6所示,该电子设备可以包括:处理器(processor)602、通信接口(Communications Interface)604、存储器(memory)606、以及通信总线608。
其中:
处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。
通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器602,用于执行程序610,具体可以执行上述基于多级网络节点的故障定位方法实施例中的相关步骤。
具体地,程序610可以包括程序代码,该程序代码包括计算机操作指令。
处理器602可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器606,用于存放程序610。存储器606可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序610具体可以用于使得处理器602执行上述方法实施例中的各项操作。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。