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

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

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


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

技术领域

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

背景技术

在计算机领域中,PIE(position-independent executable)意思是地址无关可执行文件(又称为地址无关代码,即PIC,position-independent code),是指可在主存储器中任意位置正确地运行,而不受其绝对地址影响的一种机器码,该技术是一个针对代码段(.text)、数据段(.data)、未初始化全局变量段(.bss)等固定地址的一个防护技术。

PIE广泛使用于共享库,使得同一个库中的代码能够被加载到不同进程的地址空间中。PIC还用于缺少内存管理单元的计算机系统中,使得操作系统能够在单一的地址空间中将不同的运行程序隔离开来。

通常黑客在发现一个软件的漏洞后,会编写对应的利用程序,利用程序会使用进程特定地址空间,该地址空间在任何时候任何机器都是固定不变的,从而使得利用程序可以在任何具有漏洞的电脑上运行。

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

发明内容

本发明的主要目的在于提供一种基于PIE安全保护的检测方法、终端及存储介质,旨在解决现有技术中未开启PIE安全保护时利用程序可以在任何具有漏洞的电脑上运行的问题。

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

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

判断所述文件头信息中的Type选项是否为DYN类型,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段;

判断所述动态段是否存在DEBUG选项,如是则表示所述程序已开启PIE安全保护。

所述的基于PIE安全保护的检测方法,其中,所述判断所述文件头信息中的Type选项是否为DYN类型,之后还包括:

如果判断出所述文件头信息中的Type选项不为DYN类型,则表示所述程序未开启PIE安全保护。

所述的基于PIE安全保护的检测方法,其中,所述判断所述动态段是否存在DEBUG选项,之后还包括:

如果判断出所述动态段不存在DEBUG选项,则表示所述程序未开启PIE安全保护。

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

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

所述的基于PIE安全保护的检测方法,其中,所述ELF文件包括文件头、程序头表、节和节头表。

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

所述的基于PIE安全保护的检测方法,其中,所述第二命令为readelf–d。

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

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

本发明通过获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的文件头信息;判断所述文件头信息中的Type选项是否为DYN类型,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段;判断所述动态段是否存在DEBUG选项,如是则表示所述程序已开启PIE保护。本发明通过判断程序是否开启PIE安全保护,在程序未开启PIE安全保护时提醒用户开启PIE安全保护,如果程序开启了PIE安全保护的话,在每次加载程序时都需要变换加载地址,从而黑客不能使用传统固定地址方法来利用漏洞对程序进行攻击。

附图说明

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

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

具体实施方式

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

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

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

本发明中,地址无关可执行文件(PIE)是指运行和放置地址无关的代码,其实这里PIE是一个相对意思,因为生成代码或多或少都使用了位置无关代码,该实现的基本思想是:把指令中需要修改的部分分离出来,跟数据部分放在一起,这样指令部分就可以保持不变,而数据部分则在每个进程拥有一个副本。地址无关可执行文件能够在不做修改的情况下被复制到内存中的任意位置。这一点不同于重定位代码,因为重定位代码需要经过链接器或加载器的特殊处理才能确定合适的运行时内存地址。地址无关代码需要在源代码级别遵循一套特定的语义,并且需要编译器的支持。那些引用了绝对内存地址的指令(比如绝对跳转指令)必须被替换为PC相对寻址指令。这些间接处理过程可能导致PIC的运行效率下降,但是大多数处理器对PIE都有很好的支持,使得这效率上的这一点点下降基本可以忽略。

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

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

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

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

步骤S20、判断所述文件头信息中的Type选项是否为DYN类型,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段。

其中,文件头信息可以判断ELF文件的类型,例如在ELF Header(文件头)中的file_identification指明该文件类型为ELF的二进制文件。

所述文件头信息包括Type选项,在获取所述文件头信息后,判断所述文件头信息中的Type选项是否为DYN(Shared object file)类型,DYN(Shared object file)表示文件类型。如果判断出所述文件头信息中的Type选项为DYN类型,则通过分析ELF文件的第二命令(所述第二命令为readelf–d)查看所述ELF文件的动态段。

进一步地,如果判断出所述文件头信息中的Type选项不为DYN类型,则表示所述程序未开启PIE安全保护,如果所述程序未开启PIE安全保护,则提示用户开启PIE安全保护。

步骤S30、判断所述动态段是否存在DEBUG选项,如是则表示所述程序已开启PIE安全保护。

其中,当通过分析ELF文件的第二命令查看所述ELF文件的动态段之后,判断所述动态段是否存在DEBUG选项,如是则表示所述程序已开启PIE安全保护。

进一步地,如果判断出所述动态段不存在DEBUG选项,则表示所述程序未开启PIE安全保护,如果所述程序未开启PIE安全保护,则提示用户开启PIE安全保护。

也就是说,本发明中,只有程序开启了PIE安全保护时,在每次加载程序时都需要变换加载地址,从而黑客不能使用传统固定地址方法来利用漏洞对程序进行攻击,例如开启了PIE安全保护后黑客不能使用传统固定地址方法来利用漏洞,即不能通过Ret2libc(是一种对抗linux系统栈保护的攻击方法,大部分linux系统有栈保护机制,简单的说,既然栈中的指令不能执行,可以找到libc中的函数去执行,这样就绕过了数据不可执行的问题了)方法构建ROPgadget(开发工具)进行漏洞利用。

本发明可以查看可执行文件是否存在开启PIE安全选项,如果未启,提示用户需要开启,提前预防程序被黑客攻击。

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

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

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

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

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

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

判断所述文件头信息中的Type选项是否为DYN类型,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段;

判断所述动态段是否存在DEBUG选项,如是则表示所述程序已开启PIE安全保护。

其中,所述判断所述文件头信息中的Type选项是否为DYN类型,之后还包括:

如果判断出所述文件头信息中的Type选项不为DYN类型,则表示所述程序未开启PIE安全保护。

其中,所述判断所述动态段是否存在DEBUG选项,之后还包括:

如果判断出所述动态段不存在DEBUG选项,则表示所述程序未开启PIE安全保护。

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

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

其中,所述ELF文件包括文件头、程序头表、节和节头表。

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

其中,所述第二命令为readelf–d。

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

综上所述,本发明提供一种基于PIE安全保护的检测方法、终端及存储介质,所述方法包括:获取程序的ELF文件,通过分析ELF文件的第一命令查看所述ELF文件的文件头信息;判断所述文件头信息中的Type选项是否为DYN类型,如是则通过分析ELF文件的第二命令查看所述ELF文件的动态段;判断所述动态段是否存在DEBUG选项,如是则表示所述程序已开启PIE保护。本发明通过判断程序是否开启PIE安全保护,在程序未开启PIE安全保护时提醒用户开启PIE安全保护,如果程序开启了PIE安全保护的话,在每次加载程序时都需要变换加载地址,从而黑客不能使用传统固定地址方法来利用漏洞对程序进行攻击。

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

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

技术分类

06120112177328