本技术涉及计算机软件,尤其涉及一种防止动态链接库劫持的链接方法、设备及介质。
背景技术:
1、在计算机软件和系统的开发与应用中,动态链接库(dynamic link library,dll)作为一种重要的模块化编程技术,被广泛用于实现代码重用、资源共享和减少内存占用。
2、然而,随着网络环境的日益复杂和黑客技术的不断发展,dll文件的安全性问题日益凸显。攻击者可以通过各种手段劫持或篡改dll文件,从而控制程序的执行流程、窃取敏感信息或破坏系统稳定性。
3、动态链接库被劫持是一种安全漏洞利用方式。在linux中,程序运行时动态链接器负责解析和加载程序所需的共享库。动态链接器会按照一定的顺序搜索共享库文件,这个顺序包括环境变量、系统配置、标准路径等。攻击者可以通过修改环境变量、系统配置文件或利用其他系统漏洞,将恶意的共享库放置在搜索路径的前端,从而使其被优先加载。当程序尝试加载某个共享库时,如果恶意的共享库已经存在并被优先加载,那么程序就会调用恶意共享库中的函数,而不是正常的共享库函数。
4、传统的防止dll劫持的方法主要集中在运行时检测和防御,往往存在响应滞后、防护范围有限等问题。特别是在面对高级持续性威胁等复杂攻击时,现有检测防御的方法往往难以有效应对。
技术实现思路
1、本技术实施例提供了一种防止动态链接库劫持的链接方法、设备及介质,用于解决如下技术问题:在面对高级持续性威胁等复杂攻击时,由于现有检测防御的方法存在滞后性,以致难以有效应对。
2、本技术实施例采用下述技术方案:
3、本技术实施例提供一种防止动态链接库劫持的链接方法。包括,对主程序源代码进行编译,生成重定位文件;调用连接器,通过隐式链接方式将重定位文件与动态链接库进行链接,生成可执行文件;对动态链接库进行私钥加密,并将私钥对应的公钥存储至可执行文件的自定义段;运行可执行文件,基于链接确定出动态链接库文件并进行加载;基于可执行文件中的公钥对加载的动态链接库文件进行解密,并在解密成功的情况下,完成动态链接库文件的加载。
4、本技术实施例通过软件编译的链接阶段,即程序生成可执行文件之前,使用私钥对动态链接库文件进行加密,并将相对应的公钥存入可执行文件,从而确保动态链接库文件在部署前的纯净与未被篡改状态。随后,在程序运行时,加载器通过在可执行文件中存储的公钥对动态链接库进行解密,如果解密成功,则说明文件没有被改动,如果解密失败,则说明文件被篡改,从而迅速识别并阻止任何潜在的劫持或篡改行为。提升了系统对复杂网络攻击的防御能力和响应速度,从而有效防止动态链接库文件被恶意劫持或篡改。
5、在本技术的一种实现方式中,对主程序源代码进行编译,生成重定位文件,具体包括:读取目标文件,并将目标文件中的符号表合并为全局符号表;对全局符号表中的各符号进行内存地址分配,并基于分配的内存地址对各符号对应的引用地址进行修改;基于目标文件以及全局符号表对应的修改后的内存地址,生成重定位文件。
6、在本技术的一种实现方式中,将目标文件中的符号表合并为全局符号表之后,方法还包括:获取链接器输出的错误信息,基于错误信息确定出符号未定义信息与符号冲突信息;若为符号未定义信息,在库文件与其他目标文件中查询出未定义符号对应的符号定义,以将查询到的符号定义添加至全局符号表;若为符号冲突信息,确定出现冲突的符号,调用自动命名工具对出现冲突的符号进行重命名;其中,重命名至少包括添加前缀、添加后缀以及添加唯一标识符中的一项;将重命名后的符号名称进行全局检测,在检测结果为没有冲突的情况下,确定重命名成功。
7、在本技术的一种实现方式中,运行可执行文件,基于链接确定出动态链接库文件并进行加载,具体包括:运行可执行文件,基于可执行文件对应的链接关系确定出动态链接库中的库文件;对库文件对应的可执行与可链接elf文件头进行解析,以获取导出符号与重定位;根据导出符号确定出偏移量,根据重定位确定出重新定位的入口地址,基于偏移量与重新定位的入口地址,确定出动态链接库对应的实际地址;基于实际地址进行动态链接库文件的加载。
8、在本技术的一种实现方式中,基于可执行文件中的公钥对加载的动态链接库文件进行解密,具体包括:确定加载的动态链接库文件为加密状态;在可执行文件的自定义段获取公钥;基于公钥对存储在动态链接库文件中的对称秘钥进行解密,并基于解密后的对称秘钥对动态链接库文件中的数据进行解密;对解密后的数据进行完整性校验,并在校验无误的情况下将数据映射至内存中。
9、在本技术的一种实现方式中,基于公钥对存储在动态链接库文件中的对称秘钥进行解密,并基于解密后的对称秘钥对动态链接库文件中的数据进行解密,具体包括:基于公钥对存储在动态链接库文件中的对称秘钥进行解密,获取解密后的多个对称秘钥;其中,多个解密后的对称秘钥分别设有唯一标识符;在预置标识符对照表中进行查询,确定出与唯一标识符相匹配的加密数据以及加密方式;响应解密指令,确定出需要解密的数据类型,基于数据类型确定出待解密数据;将加密数据与待解密数据进行匹配,基于匹配结果与加密方式,对待解密数据进行解密处理。
10、在本技术的一种实现方式中,基于可执行文件中的公钥对加载的动态链接库文件进行解密之前,方法还包括:获取当前系统实际占用参数值,将系统实际占用参数值与预置参考参数值进行比对,基于比对结果确定出时间调节区域;其中,系统实际占用参数至少包括cpu使用率以及内存占用中的一项;基于时间调节区域,对第一时间参数值进行调节,得到第二时间参数值;基于解密参数与预置解密时间预测模型,得到解密预测时间;其中,解密参数至少包括解密方式、动态链接库大小以及剩余可用资源大小中的一项;将解密预测时间与第二时间参数值进行比对,在比对结果符合要求的情况下,对动态链接库文件进行解密。
11、在本技术的一种实现方式中,基于可执行文件中的公钥对加载的动态链接库文件进行解密之后,方法还包括:在解密失败的情况下,生成错误信息;其中,错误信息至少包括解密失败原因、解密时间以及错误代码中的一项;解密失败原因至少包括密钥错误、数据损坏以及解密超时中的一项;基于错误信息生成解密日志;定时对解密日志进行检测,基于检测结果确定出错误频率;基于错误频率对不同的错误信息进行优先级排序,基于排序进行错误信息修复。
12、本技术实施例提供一种防止动态链接库劫持的链接设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:对主程序源代码进行编译,生成重定位文件;调用连接器,通过隐式链接方式将重定位文件与动态链接库进行链接,生成可执行文件;对动态链接库进行私钥加密,并将私钥对应的公钥存储至可执行文件的自定义段;运行可执行文件,基于链接确定出动态链接库文件并进行加载;基于可执行文件中的公钥对加载的动态链接库文件进行解密,并在解密成功的情况下,完成动态链接库文件的加载。
13、本技术实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:对主程序源代码进行编译,生成重定位文件;调用连接器,通过隐式链接方式将重定位文件与动态链接库进行链接,生成可执行文件;对动态链接库进行私钥加密,并将私钥对应的公钥存储至可执行文件的自定义段;运行可执行文件,基于链接确定出动态链接库文件并进行加载;基于可执行文件中的公钥对加载的动态链接库文件进行解密,并在解密成功的情况下,完成动态链接库文件的加载。
14、本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:本技术实施例通过软件编译的链接阶段,即程序生成可执行文件之前,使用私钥对动态链接库文件进行加密,并将相对应的公钥存入可执行文件,从而确保了动态链接库文件在部署前的纯净与未被篡改状态。随后,在程序运行时,加载器通过在可执行文件中存储的公钥对动态链接库进行解密,如果解密成功,则说明文件没有被改动,如果解密失败,则说明文件被篡改,从而迅速识别并阻止任何潜在的劫持或篡改行为。提升了系统对复杂网络攻击的防御能力和响应速度,从而有效防止dll文件被恶意劫持或篡改。
1.一种防止动态链接库劫持的链接方法,其特征在于,所述方法包括:
2.根据权利要求1所述的一种防止动态链接库劫持的链接方法,其特征在于,所述对主程序源代码进行编译,生成重定位文件,具体包括:
3.根据权利要求2所述的一种防止动态链接库劫持的链接方法,其特征在于,所述将所述目标文件中的符号表合并为全局符号表之后,所述方法还包括:
4.根据权利要求1所述的一种防止动态链接库劫持的链接方法,其特征在于,所述运行所述可执行文件,基于所述链接确定出动态链接库文件并进行加载,具体包括:
5.根据权利要求1所述的一种防止动态链接库劫持的链接方法,其特征在于,所述基于所述可执行文件中的所述公钥对加载的所述动态链接库文件进行解密,具体包括:
6.根据权利要求5所述的一种防止动态链接库劫持的链接方法,其特征在于,所述基于所述公钥对存储在所述动态链接库文件中的对称秘钥进行解密,并基于解密后的所述对称秘钥对所述动态链接库文件中的数据进行解密,具体包括:
7.根据权利要求1所述的一种防止动态链接库劫持的链接方法,其特征在于,所述基于所述可执行文件中的所述公钥对加载的所述动态链接库文件进行解密之前,所述方法还包括:
8.根据权利要求1所述的一种防止动态链接库劫持的链接方法,其特征在于,所述基于所述可执行文件中的所述公钥对加载的所述动态链接库文件进行解密之后,所述方法还包括:
9.一种防止动态链接库劫持的链接设备,其特征在于,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行权利要求1-8中的任一项所述的方法。
10.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令能够执行权利要求1-8任一项所述的方法。
