一种iOS应用安全分析方法及装置制造方法及图纸

技术编号:22219717 阅读:41 留言:0更新日期:2019-09-30 01:37
本发明专利技术公开了一种iOS应用安全分析方法及装置,其中,所述iOS应用安全分析方法包括:S1):对iOS应用进行预处理以获得Mach‑O二进制,将所述Mach‑O二进制作为符号执行模块的输入;S2):对所述Mach‑O二进制进行关键代码定位并从所述关键代码所在的状态开始符号执行;S3):对所述符号执行期间的运行时信息进行分析并记录路径约束;S4):根据预定义规则对获得的路径进行安全分析,以得出安全分析报告。

An iOS Application Security Analysis Method and Device

【技术实现步骤摘要】
一种iOS应用安全分析方法及装置
本专利技术涉及一种对iOS应用二进制进行安全性检测的领域,属于信息安全中的软件安全领域,特别是指iOS应用安全分析方法及装置。
技术介绍
对iOS应用的安全性分析根据分析手段可以分为动态分析和静态分析。有经验的测试人员通常在拿到应用后从目标功能点切入,使用已有的测试框架进行针对性的测试。动态测试框架以调试、fuzz、注入为主,二进制自动化静态分析则大多落在字符检查以及二进制的保护措施上,例如对二进制的标识位、硬编码字符串、符号表、动态链接库、头文件信息进行安全检测。安全人员通常先对二进制进行信息提取,随后借助类IDA反编译工具识别关键代码,再使用动态测试框架进一步分析。以下分别对上述步骤进行解释说明。1.1静态分析1.1.1.二进制文件安全性检测对二进制文件的检查主要包括:共享库获取,保护检查,字符串获取,硬编码检查,段信息检查。1)共享库获取。测试人员可以使用otool工具获得当前二进制动态链接的库文件,通过应用所使用的库可以推测应用的功能,为动态测试提供切入点。2)保护检查。保护检查主要针对应用的若干安全特征进行查看。查看cryptid的值来判定应用的可执行文件是否被加密;检查PIE标识位来判定应用是否使用了内存地址随机化;检查应用是否使用了ARC,ARC的目的是代替用户来进行更为安全合理的内存管理;栈金丝雀保护是已知的放置在缓冲器和控制数据之间的一个随机值,当缓冲器溢出时,最先被破坏通常是金丝雀值,因此当金丝雀的数据的验证失败的时候,就表示出现了缓冲区溢出,从而触发保护机制,并使程序停止运行,此处通过检查___stack_chk_标识位来检查是否使用该机制。3)硬编码字符。在硬编码检查中,遍历二进制文件的所有字符串,查看是否有邮件地址,IP地址,号码,以及URL被硬编码。1.1.2.导入库分析在iOS上,不管是动态链接库、守护进程,还是AppStore中应用软件,或多或少都会用到iOS系统提供的库。分析人员可以通过解析Mach-O文件,从中提取出库路径,名字等信息,例如利用otool工具的-L命令可方便的从Mach-O文件中提取出导入库信息。一旦从可执行文件中提取出Apple官方公开库的名字,我们就可以从Apple开发者官网上査找并收集该库的作用和功能。在掌握了这些库提供的功能和作用之后逆向分析人员就可以初步得出程序可能要实现的功能或者系统服务。这将有助于掌握软件背景,及快速定位逆向关键代码位置,为后续漏洞分析提供思路及线索。除导入库信息之外,还可以进一步分析应用具体使用的还存储有导入函数表及引用的库函数信息,这些信息包括库函数的虚拟地址及名字。通过导入库分析人员只能粗略得到软件的功能信息,而通过导入函数分析就能细粒度的得到软件的大致功能。利用IDA工具,可很方便的在IDA的Imports窗口中查看一个程序的导入函数情况。一个应用程序的导入函数数目从几个到几百个不等,这取决于应用软件的功能和大小。面对如此多的导入函数,在进行静态分析时,如何从中提取出有用信息,是一个亟待解决的问题。为此提出了通过分类整理方法来分析导入函数的分析方案。该方案按照导入函数的功能来对导入函数进行分类,从而从整体上把握程序的大致功能。下面列出几种常见的分类方法:1)文件操作文件操作主要有文件的打开,读写,创建等操作。能执行这些功能的常见函数有:fopen、open、fwrite、fread、fseek等。这些函数的综合运用就能实现操作文件的功能。所以—旦在导入函数中发现这些函数就可以把它归为一类。2)网络通信网络通信主要是实现应用程序的通信操作。在iOS平台下实现网络通信功能主要是通过CFnetwork框架提供的库函数来实现的,常用的函数有CFHostCreateWithName、CFHostGetAddressing、CFHostSetClient、CFHostScheduleWithRunloop等。另外也可通过使用更底层的函数例如像:socket、bind、listen、send、recv等函数来实现网络通信。所以可以将导入函数中的这类函数归为网络通信类函数。3)系统状态在iOS系统下可通过UIKit框架的UIDevice类提供的方法获取设备的名字、系统名字、系统版本等信息。利用SystemConfiguration框架提供的库函数可以测试与目标主机的联通性。所以在导入函数中发现这类函数可以将其归为一类。1.1.3.Objective-C头文件信息提取虽然使用otool工具能够分析查看到类名、方法类型、成员变量等信息,但是不便于阅读理解。为此可以利用class-dump-z、商业版的IDApro或者使用IDA插件objc-helper-plugin-ida对Mach-O文件进行自动解析,从而还原出和源码几乎一样的头文件结构和类定义信息。对于由Objectiva-C编写的应用程序,分析还原出来的头文件是静态分析中相当重要的一步。因为目前在iOS平台下还没有比较成熟的商业化的混淆工具,所大多数情况下从目标软件中提取出来的头文件,可以直接从其名字就可料大致推测出其方法的作用和功能。1.1.4.硬编码字符串分析硬编码字符串是指程序员在编写代码时,直接嵌入到代码中的一种字符串。这种字符串会由编译器在生成可执行文件时,直接嵌入可执行文件当中。硬编码字符串中包含了大量的信息,通过分析这些字符串往往都能给逆向分析人员制定动态分析方案提供很多思路。iOS程序中常见的硬编码字符串有:输入错误提示信息、登陆失败及成功提示信息、文件名、文件路径、域名、IP地址、密文字符串等。分析人员可以借助于IDA工具的Strings窗口来对一个iOS程序中的硬编码字符串加分析。1.1.5.基于汇编的静态分析测试人员可以将Mach-O可执行文件反编译后查看其汇编代码,在上述静态分析技巧所得结果的基础之上,例如基于导入的符号、导入的函数、头文件信息、硬编码字符串等定位到关键代码,对关键代码所处的上下文进行语义分析,以确定一个合适的分析入口用于动态分析。1.2.动态分析通常情况下,测试人员通过上述静态分析来确定关键函数,利用动态调试工具在该点设置断点并单步追踪程序,调试时记录每个输入和代码路径,并基于运行时数据对程序的逻辑进行分析。1.3.现有方法的不足1)使用IDA等反汇编工具对二进制反汇编后获得汇编指令后,需要由测试人员进行阅读整理才能获得其语义。随着二进制逻辑复杂度提升,该方法的效率过低。2)动态测试时无法确保断点的触发。虽然测试人员在关键代码处下断点,却无法得知应用需要以怎样的方式运行才会到达该断点处。为解决现用技术问题的上述缺陷,有必要提出一种iOS应用安全分析方法。
技术实现思路
有鉴于此,本专利技术的目的在于提出一种iOS应用安全分析方法及装置。基于上述目的本专利技术提供的iOS应用安全分析方法,其中,所述iOS应用安全分析方法包括:S1):对iOS应用进行预处理以获得Mach-O二进制,将所述Mach-O二进制作为符号执行模块的输入;S2):对所述Mach-O二进制进行关键代码定位并从所述关键代码所在的状态开始符号执行;S3):对所述符号执行期间的运行时信息进行分析并记录路径约束;S4):根据预定义规则对获得的本文档来自技高网
...

【技术保护点】
1.一种iOS应用安全分析方法,其特征在于,所述iOS应用安全分析方法包括:S1):对iOS应用进行预处理以获得Mach‑O二进制,将所述Mach‑O二进制作为符号执行模块的输入;S2):对所述Mach‑O二进制进行关键代码定位并从所述关键代码所在的状态开始符号执行;S3):对所述符号执行期间的运行时信息进行分析并记录路径约束;S4):根据预定义规则对获得的路径进行安全分析,以得出安全分析报告。

【技术特征摘要】
1.一种iOS应用安全分析方法,其特征在于,所述iOS应用安全分析方法包括:S1):对iOS应用进行预处理以获得Mach-O二进制,将所述Mach-O二进制作为符号执行模块的输入;S2):对所述Mach-O二进制进行关键代码定位并从所述关键代码所在的状态开始符号执行;S3):对所述符号执行期间的运行时信息进行分析并记录路径约束;S4):根据预定义规则对获得的路径进行安全分析,以得出安全分析报告。2.根据权利要求1所述的iOS应用安全分析方法,其特征在于,步骤S1)包括:S11):从所述iOS应用中提取出Mach-O格式的可执行文件;S12):解析所述Mach-O格式的可执行文件的动态链接的库/框架与符号;S13):根据预定义规则、Mach-O格式的可执行文件以及所述符号得到所述路径生成模块的输入。3.根据权利要求2所述的iOS应用安全分析方法,其特征在于,在步骤S11中,还包括对所述Mach-O格式的可执行文件进行脱壳处理。4.根据权利要求2所述的iOS应用安全分析方法,其特征在于,在步骤S2)中,当一段代码包括预定义规则中的符号时,判定该段代码为关键代码;当一段代码不包含预定义规则中的符号时,判定该段代码不是关键代码。5.根据权利要求1所述的iOS应用安全分析方法,其特征在于,在步骤S3)中,符号执行到一次方法调用时,通过解析该调用发生时的程序状态确定调用所属路...

【专利技术属性】
技术研发人员:徐国爱张淼郭景怡田思
申请(专利权)人:北京邮电大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1