掌桥专利:专业的专利平台
掌桥专利
首页

基于CANARY安全保护的检测方法、终端及存储介质

文献发布时间:2023-06-19 09:27:35


基于CANARY安全保护的检测方法、终端及存储介质

技术领域

本发明涉及计算机安全技术领域,尤其涉及一种基于CANARY安全保护的检测方法、终端及存储介质。

背景技术

缓冲区溢出就是超长的数据向小缓冲区复制,导致数据超出了小缓冲区,导致缓冲区其他的数据遭到破坏,这就是缓冲区溢出,而栈溢出是缓冲区溢出的一种,栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。

栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode(shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名,shellcode常常使用机器语言编写,可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机器码,让电脑可以执行攻击者的任意指令)能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入cookie(储存在用户本地终端上的数据)信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。在Linux中将cookie信息称为CANARY。

如果程序没有开启CANARY安全保护的话,每次函数推出之前,栈CANARY无法被覆盖,那么就无法避免黑客攻击。

因此,现有技术还有待于改进和发展。

发明内容

本发明的主要目的在于提供一种基于CANARY安全保护的检测方法、终端及存储介质,旨在解决现有技术中未开启CANARY安全保护时无法避免黑客攻击的问题。

为实现上述目的,本发明提供一种基于CANARY安全保护的检测方法,所述基于CANARY安全保护的检测方法包括如下步骤:

获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;

判断所述ELF符号表信息中是否存在预设符号,如是则表示所述程序已开启CANARY安全保护。

所述的基于CANARY安全保护的检测方法,其中,所述判断所述ELF符号表信息中是否存在预设符号,之后还包括:

如果判断出所述ELF符号表信息中不存在所述预设符号,则表示所述程序未开启CANARY安全保护。

所述的基于CANARY安全保护的检测方法,其中,所述基于CANARY安全保护的检测方法还包括:

如果所述程序未开启CANARY安全保护,则提示用户开启CANARY安全保护。

所述的基于CANARY安全保护的检测方法,其中,所述第一命令为readelf–s。

所述的基于CANARY安全保护的检测方法,其中,所述预设符号为:__stack_chk_fail符号。

此外,为实现上述目的,本发明还提供一种终端,其中,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于CANARY安全保护的检测程序,所述基于CANARY安全保护的检测程序被所述处理器执行时实现如上所述的基于CANARY安全保护的检测方法的步骤。

此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有基于CANARY安全保护的检测程序,所述基于CANARY安全保护的检测程序被处理器执行时实现如上所述的基于CANARY安全保护的检测方法的步骤。

本发明通过获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;判断所述ELF符号表信息中是否存在预设符号,如是则表示所述程序已开启CANARY安全保护。本发明通过判断程序是否开启CANARY安全保护,在程序未开启CANARY安全保护时提醒用户开启CANARY安全保护,如果程序开启了CANARY安全保护的话,每次函数推出之前,都会检测栈CANARY是否被覆盖,如果被覆盖了说明程序受到攻击,可以直接退出程序,避免程序被黑客攻击。

附图说明

图1是本发明基于CANARY安全保护的检测方法的较佳实施例的流程图;

图2为本发明终端的较佳实施例的运行环境示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明较佳实施例所述的基于CANARY安全保护的检测方法,如图1所示,所述基于CANARY安全保护的检测方法包括以下步骤:

步骤S10、获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息。

本发明中,在Linux中将cookie信息称为CANARY,Cookie是一个保存在客户机中的简单的文本文件,这个文件与特定的Web文档关联在一起,保存了该客户机访问这个Web文档时的信息,当客户机再次访问这个Web文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性,因此它可以帮助我们实现记录用户个人信息的功能,而这一切都不必使用复杂的CGI等程序。

举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。如果使用浏览器访问Web,会看到所有保存在硬盘上的Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的Web站点的信息。在这里的每个Cookie文件都是一个简单而又普通的文本文件。透过文件名,就可以看到是哪个Web站点在机器上放置了Cookie(当然站点信息在文件里也有保存)。

攻击者可以通过木马等恶意程序,或使用跨站脚本攻击等手段偷窃存放在用户硬盘或内存中的Cookie。借助网络攻击手段,包括在不安全的局域网中被动地监听网络通信;通过攻击网络用户的路由器,或通过搭建恶意的无线路由器等手法,控制路由基础设施,将网络流量重定向到攻击者控制的主机;发动DNSPharming(域欺骗)攻击,通过DNS缓存中毒、DNS应答欺骗、或修改用户端的本地域名解析文件等方法攻击DNS系统,导致用户对合法网站的访问请求被重定向到恶意网站等等,同样可能窃取Cookie。对于捕获到的认证Cookie,攻击者往往会猜测其中的访问令牌,试图获取会话ID、用户名与口令、用户角色、时间戳等敏感信息;或者直接重放该Cookie,假冒受害者的身份发动攻击。

在计算机科学中,ELF文件是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。

具体地,ELF文件由4部分组成,分别是ELF头(ELF header,即文件头)、程序头表(Program header table)、节(Section)和节头表(Section header table)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未必如同所示这样安排,只有ELF头的位置是固定的,其余各部分的位置、大小等信息由ELF头中的各项值来决定。

在获取程序的ELF文件后,通过分析ELF文件的第一命令(所述第一命令为readelf–s)查看所述ELF文件的ELF符号表信息。

其中,readelf命令是Linux下的分析ELF文件的命令,readelf用来显示ELF格式目标文件的信息.可通过参数选项来控制显示哪些特定信息,这个命令在分析ELF文件格式时非常有用。

步骤S20、判断所述ELF符号表信息中是否存在预设符号,如是则表示所述程序已开启CANARY安全保护。

其中,所述预设符号为:__stack_chk_fail符号;程序在启动CANARY安全保护之后,如果发现CANARY被修改的话,程序就会执行__stack_chk_fail函数来打印argv[0]指针所指向的字符串,正常情况下,这个指针指向程序名。

在获取所述ELF符号表信息后,判断所述ELF符号表信息中是否存在__stack_chk_fail符号,如果存在__stack_chk_fail符号则表示所述程序已开启CANARY安全保护。

进一步地,如果判断出所述ELF符号表信息中不存在所述预设符号,则表示所述程序未开启CANARY安全保护。如果所述程序未开启CANARY安全保护,则提示用户开启CANARY安全保护,提前预防程序被黑客攻击。

也就是说,本发明中,只有程序开启了CANARY安全保护时,每次函数推出之前,都会检测栈CANARY是否被覆盖,如果被覆盖了,说明受到攻击了,可以直接退出程序,CANARY安全保护大大提高了程序的安全性。

进一步地,如图2所示,基于上述基于CANARY安全保护的检测方法,本发明还相应提供了一种终端,所述终端包括处理器10、存储器20及显示器30。图2仅示出了终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器20在一些实施例中可以是所述终端的内部存储单元,例如终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述终端的应用软件及各类数据,例如所述安装终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有基于CANARY安全保护的检测程序40,该基于CANARY安全保护的检测程序40可被处理器10所执行,从而实现本申请中基于CANARY安全保护的检测方法。

所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述基于CANARY安全保护的检测方法等。

所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述终端的信息以及用于显示可视化的用户界面。所述终端的部件10-30通过系统总线相互通信。

在一实施例中,当处理器10执行所述存储器20中基于CANARY安全保护的检测程序40时实现以下步骤:

获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;

判断所述ELF符号表信息中是否存在预设符号,如是则表示所述程序已开启CANARY安全保护。

其中,所述判断所述ELF符号表信息中是否存在预设符号,之后还包括:

如果判断出所述ELF符号表信息中不存在所述预设符号,则表示所述程序未开启CANARY安全保护。

其中,所述基于CANARY安全保护的检测方法还包括:

如果所述程序未开启CANARY安全保护,则提示用户开启CANARY安全保护。

其中,所述第一命令为readelf–s。

其中,所述预设符号为:__stack_chk_fail符号。

本发明还提供一种存储介质,其中,所述存储介质存储有基于CANARY安全保护的检测程序,所述基于CANARY安全保护的检测程序被处理器执行时实现如上所述的基于CANARY安全保护的检测方法的步骤。

综上所述,本发明提供一种基于CANARY安全保护的检测方法、终端及存储介质,所述方法包括:获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的ELF符号表信息;判断所述ELF符号表信息中是否存在预设符号,如是则表示所述程序已开启CANARY安全保护。本发明通过判断程序是否开启CANARY安全保护,在程序未开启CANARY安全保护时提醒用户开启CANARY安全保护,如果程序开启了CANARY安全保护的话,每次函数推出之前,都会检测栈CANARY是否被覆盖,如果被覆盖了说明程序受到攻击,可以直接退出程序,避免程序被黑客攻击。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

相关技术
  • 基于CANARY安全保护的检测方法、终端及存储介质
  • 一种基于PIE安全保护的检测方法、终端及存储介质
技术分类

06120112177333