应用程序攻击检测方法及装置转让专利
申请号 : CN201910245649.2
文献号 : CN110135152B
文献日 : 2021-07-02
发明人 : 汪德嘉 , 华保健 , 邵根波 , 钱潇龄 , 孟啸龙 , 郑小敏
申请人 : 江苏通付盾信息安全技术有限公司 , 江苏通付盾科技有限公司
摘要 :
权利要求 :
1.一种应用程序攻击检测方法,其特征在于,包括:从所述应用程序的应用程序安装包中提取二进制文件;
根据所述二进制文件中特定位置对应的信息,生成校验值;
当所述应用程序运行时,获取当前所述应用程序中所述特定位置所对应的信息,并将当前所述应用程序中所述特定位置所对应的信息与所述校验值进行比对;
其中,根据所述二进制文件中特定位置对应的信息,生成校验值进一步包括:获取所述二进制文件中,应用程序运行时能够读取且位置不变的节段的参数信息,根据所述节段的参数信息生成校验值,以便快速地检测出应用程序内存是否被篡改;所述节段的参数信息包括:所述节段的长度值;
以及,从所述二进制文件中的加载命令集合中确定出,应用程序运行时加载命令所对应的参数信息;根据所述应用程序运行时加载命令所对应的参数信息,生成校验值,以便有效地检测应用程序是否存在非法注入攻击;所述应用程序运行时加载命令所对应的参数信息进一步包括:加载命令的顺序
以及,获取所述二进制文件中的链接段中的系统符号节表;对所述系统符号节表进行加密处理,并根据所述系统符号节表加密后的参数信息生成校验值,快速检测出应用程序是否受到系统符号断点的动态调试攻击;所述系统符号节表加密后的参数信息包括:所述系统符号节表的长度值;
其中,针对于不同的特定位置,获得相应的校验值,以供快速地确定出应用程序的受攻击部位。
2.根据权利要求1所述方法,其特征在于,所述节段的参数信息还包括:所述节段相对于文件头的偏移值、和/或所述节段的哈希值。
3.根据权利要求1所述方法,其特征在于,所述应用程序运行时加载命令所对应的参数信息进一步包括:
加载命令对应的动态库的相关信息。
4.根据权利要求1所述方法,其特征在于,所述系统符号节表加密后的参数信息包括:所述系统符号节表相对于文件头的偏移值、和/或所述系统符号节表的哈希值。
5.根据权利要求1‑4中任一项所述方法,其中,在所述生成校验值之后,所述方法还包括:
采用预设加密算法,对所述校验值进行加密处理;
并将加密后的校验值进行存储。
6.根据权利要求5所述方法,其中,所述将当前所述应用程序中所述特定位置所对应的信息与所述校验值进行比对进一步包括:采用所述预设加密算法,对所述当前所述应用程序中所述特定位置所对应的信息进行加密;
根据所述当前所述应用程序中所述特定位置所对应的信息的加密密文,与所述加密后的校验值进行比对。
7.根据权利要求1‑4中任一项所述方法,其中,所述方法还包括:若确定所述应用程序受到攻击,则触发相应的防御措施。
8.根据权利要求7所述方法,其中,所述防御措施包括:应用退出、弹出提示窗口、和/或发送报警信号至预设服务端。
9.一种应用程序攻击检测装置,其特征在于,包括:提取模块,适于从所述应用程序的应用程序安装包中提取二进制文件;
校验值生成模块,适于根据所述二进制文件中特定位置对应的信息,生成校验值;
比对模块,适于当所述应用程序运行时,获取当前所述应用程序中所述特定位置所对应的信息,并将当前所述应用程序中所述特定位置所对应的信息与所述校验值进行比对;
确定模块,适于当确定当前所述应用程序中特定位置所对应的信息与校验值不匹配时,确定所述应用程序受到攻击;
其中,所述校验值生成模块进一步适于:获取所述二进制文件中,应用程序运行时能够读取且位置不变的节段的参数信息,根据所述节段的参数信息生成校验值,以便快速地检测出应用程序内存是否被篡改;所述节段的参数信息包括:所述节段的长度值;
以及,从所述二进制文件中的加载命令集合中确定出,应用程序运行时加载命令所对应的参数信息;根据所述应用程序运行时加载命令所对应的参数信息,生成校验值,以便有效地检测应用程序是否存在非法注入攻击;所述应用程序运行时加载命令所对应的参数信息进一步包括:加载命令的顺序
以及,获取所述二进制文件中的链接段中的系统符号节表;对所述系统符号节表进行加密处理,并根据所述系统符号节表加密后的参数信息生成校验值,快速检测出应用程序是否受到系统符号断点的动态调试攻击;所述系统符号节表加密后的参数信息包括:所述系统符号节表的长度值;
其中,针对于不同的特定位置,获得相应的校验值,以供快速地确定出应用程序的受攻击部位。
10.根据权利要求9所述装置,其中,所述节段的参数信息还包括:所述节段相对于文件头的偏移值、和/或所述节段的哈希值。
11.根据权利要求9所述装置,其中,所述应用程序运行时加载命令所对应的参数信息进一步包括:
加载命令对应的动态库的相关信息。
12.根据权利要求9所述装置,其中,所述系统符号节表加密后的参数信息包括:所述系统符号节表相对于文件头的偏移值、和/或所述系统符号节表的哈希值。
13.根据权利要求9‑12中任一项所述装置,其中,所述装置还包括:加密模块,适于在所述生成校验值之后,采用预设加密算法,对所述校验值进行加密处理;
并将加密后的校验值进行存储。
14.根据权利要求13所述装置,其中,所述比对模块进一步适于:采用所述预设加密算法,对所述当前所述应用程序中所述特定位置所对应的信息进行加密;
根据所述当前所述应用程序中所述特定位置所对应的信息的加密密文,与所述加密后的校验值进行比对。
15.根据权利要求9‑12中任一项所述装置,其中,所述装置还包括:防御模块,适于若确定所述应用程序受到攻击,则触发相应的防御措施。
16.根据权利要求15所述装置,其中,所述防御措施包括:应用退出、弹出提示窗口、和/或发送报警信号至预设服务端。
17.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1‑8中任一项所述的应用程序攻击检测方法对应的操作。
18.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1‑8中任一项所述的应用程序攻击检测方法对应的操作。
说明书 :
应用程序攻击检测方法及装置
技术领域
背景技术
用程序的破解及攻击,从而威胁应用程序的安全。
少存在下述缺陷:现有技术中提供的程序加固方法通常为在程序中添加花指令等代码混淆
方法,然而,该种加固方法常常会引起程序膨胀,浪费系统资源,并且无法准确监测应用程
序受到的攻击;并且,现有的程序加固方法是在编译过程中,由设置于开发者终端中的编译
器来完成,从而无法实现程序加固方法的批量维护,维护成本高。
发明内容
作。
前应用程序中特定位置所对应的信息,并将当前应用程序中特定位置所对应的信息与校验
值进行比对;根据比对结果,确定应用程序是否受到攻击。本方案通过将二进制文件中特定
位置所对应的信息作为校验值,根据该校验值进行应用程序攻击的监测,从而可快速准确
地确定应用程序是否受到攻击,防止应用程序被动态攻击,大幅提升应用程序的逆向难度,
保障应用程序安全,并且不易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,
易于批量维护,维护成本低。
更明显易懂,以下特举本发明的具体实施方式。
附图说明
的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
具体实施方式
所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围
完整的传达给本领域的技术人员。
MachOS系统中。如图1所示,该方法包括:
进行攻击检测,从而本申请可以避免现有技术中因通过开发者终端中的编译器进行程序加
固而带来的无法批量维护及维护成本高的弊端。
解压(例如通过unzip命令进行解压),进而对解压之后的文件进行筛选识别,以获得二进制
文件。例如,在IOS系统中,二进制文件通常为Mach‑O格式,从而可通过格式信息来进行二进
制文件的提取。
令区及段数据区域。而段数据区域又可以包含有数据段、代码段和/或链接段等等。为全方
位的防止应用程序被动态分析,该特定位置可以为:应用程序运行时能够读取且位置不变
的节段,加载命令区,链接段等等。
值;也可以对特定位置的相关参数信息进行处理后,生成校验值。在此,本领域技术人员应
当理解的是,本实施例中每个特定位置对应的信息,可以生成对应的校验值,从而便于后续
快速地确定出应用程序的受攻击部位;也可以对多个特定位置对应的信息进行整合,统一
生成校验值,从而提高对应用程序的攻击检测效率。
的信息,例如,若在程序运行前根据二进制文件中链接段对应的信息,生成校验值,则在应
用程序运行时,获取链接段所对应的信息。
位置所对应的信息与校验值的匹配度大于或等于比对阈值,也确定当前应用程序中特定位
置所对应的信息与校验值相匹配;否则,则确定当前应用程序中特定位置所对应的信息与
校验值不匹配。
的信息,并将当前应用程序中特定位置所对应的信息与校验值进行比对;根据比对结果,确
定应用程序是否受到攻击。本方案通过将二进制文件中特定位置所对应的信息作为校验
值,根据该校验值进行应用程序攻击的监测,从而可快速准确地确定应用程序是否受到攻
击,防止应用程序被动态攻击,大幅提升应用程序的逆向难度,保障应用程序安全,并且不
易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。
进行程序加固而带来的无法批量维护及维护成本高的弊端。
的文件进行筛选识别,以获得二进制文件。例如,在IOS系统中,二进制文件通常为Mach‑O格
式,从而可通过格式信息来进行二进制文件的提取。
令区,链接段等等。在具体的实施过程中,根据二进制文件中特定位置对应的信息生成校验
值可通过以下方式实现:
中的代码段等等。其中,节段的参数信息包括:节段相对于文件头的偏移值、节段的长度值、
和/或节段的哈希值。该节段的哈希值具体可以为该节段整体的哈希值,而非该节段某部分
的哈希值,从而即使该节段中某部分被篡改,也容易引起该节段整体哈希值的变化,从而提
升应用程序攻击检测的覆盖面。通过根据应用程序运行时能够读取且位置不变的节段的参
数信息生成校验值,可保障后续过程中快速地检测出应用程序内存是否被篡改,进而保障
应用程序安全。
校验值。在该种实施方式中,具体对加载命令区进行保护。其中,应用程序运行时加载命令
所对应的参数信息进一步包括:加载命令的顺序、和/或加载命令对应的动态库的相关信息
等等。更进一步地,加载命令对应的动态库的相关信息可以为加载命令对应的动态库的名
称、大小、哈希值和/或数量等等。本实施方式中利用应用程序运行时加载命令所对应的参
数信息生成校验值,可有效地检测应用程序是否存在非法注入攻击,进而保障应用程序安
全。
号节表加密后的参数信息包括:系统符号节表相对于文件头的偏移值、系统符号节表的长
度值、和/或系统符号节表的哈希值。该系统符号节表的哈希值具体为系统符号节表的整体
哈希值。在此实施方式中,利用系统符号节表的相关信息来生成校验值,便于快速检测出应
用程序是否受到系统符号断点的动态调试攻击,进而保障应用程序安全。
的校验值(如获得由加载命令区对应的校验值、链接段对应的校验值等等)。同时,针对于同
一特定位置,其获得的校验值中可能包含有多个校验值参数(如链接段对应的校验值可以
包含有相对于文件头的偏移值参数、系统符号阶段长度值参数和/或系统符号节表的哈希
值参数等等),从而便于后续快速地确定出应用程序的受攻击部位;或者,对多个特定位置
对应的信息进行整合,统一生成校验值,从而提高对应用程序的攻击检测效率。
逆向难度,保证应用程序安全。其中,本实施例对具体的预设加密算法不做限定,例如可采
用某通用的加密算法对生成的校验值整体或者部分进行加密。
进制文件中的某空白或者无用字段,如文件头末尾与代码段开始位置之间的空白区域等。
从而提升加密后的校验值的隐秘性,并避免占用多余存储内存。
建的段表中,从而便于解密秘钥的集中管理。
分离,进一步提升应用程序的逆向难度。
值,进一步提升应用程序的逆向难度。
对。
前应用程序中特定位置所对应的信息,例如,若在程序运行前根据二进制文件中链接段对
应的信息,生成校验值,则在应用程序运行时,获取链接段所对应的信息。
置所对应的信息进行加密的预设加密算法保持一致,从而保障比对过程的正常实施。
若本步骤中所述的加密密文与加密后的校验值的匹配度大于或等于比对阈值,也确定该加
密密文与加密后的校验值相匹配;否则,则该加密密文与加密后的校验值不匹配。
障应用程序安全。并进一步地执行步骤S260。
和/或发送报警信号至预设服务端。
将安全模块编译为动态链接库,并在二进制文件中添加动态链接库的加载命令,并使动态
链接库的加载命令位于链接命令的首位,以保证该命令能够最先执行;或者,修改应用程序
二进制文件中的代码段,以插入编译的安全模块,并使二进制文件中预设程序入口指向编
译的安全模块,并适应性修改因代码段变化而导致的其他段表的变化。
器进行程序加固而带来的无法批量维护及维护成本高的弊端;并且,本实施例中根据应用
程序运行时能够读取且位置不变的节段的参数信息生成校验值,可保障后续过程中快速地
检测出应用程序内存是否被篡改;根据应用程序运行时加载命令所对应的参数信息生成校
验值,可有效地检测应用程序是否存在非法注入攻击;并利用系统符号节表的相关信息来
生成校验值可以进一步地快速检测出应用程序是否受到系统符号断点的动态调试攻击,进
而保障应用程序安全。另外,本实施例在获得校验值之后,进一步对校验值进行加密处理,
从而使得校验值不易被逆向破解,有利于应用程序安全性的进一步提升。此外,本实施例在
确定应用程序受到攻击之后,可快速地采用相应的措施来进行防御,进一步保障应用程序
安全。
34。
的信息,并将当前应用程序中特定位置所对应的信息与校验值进行比对;根据比对结果,确
定应用程序是否受到攻击。本方案通过将二进制文件中特定位置所对应的信息作为校验
值,根据该校验值进行应用程序攻击的监测,从而可快速准确地确定应用程序是否受到攻
击,防止应用程序被动态攻击,大幅提升应用程序的逆向难度,保障应用程序安全,并且不
易引起应用程序的代码膨胀;而且,本方案实施过程简单灵活,易于批量维护,维护成本低。
序攻击检测。
路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可
以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
哈希值。
的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种
编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发
明的最佳实施方式。
和技术,以便不模糊对本说明书的理解。
例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保
护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面
的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,
遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身
都作为本发明的单独实施例。
元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或
子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何
组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任
何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权
利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代
替。
范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一
都可以以任意的组合方式来使用。
微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的应用程序攻击检测装置中
的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方
法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的
实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形
式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形
式提供。
不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未
列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的
元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实
现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项
来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名
称。