论文部分内容阅读
随着计算机科学技术的飞速发展,计算机、互联网与人类日常生产生活的关系变得越来越紧密。人们一方面享受着技术发展带来的巨大便利,另一方面又遭受着恶意攻击的侵袭和困扰。在这种情况下,人们对于计算机系统安全的关注度逐渐提升。研究发现恶意攻击中使用的动态注入技术,在程序热补丁、自动化测试等方面同样具有广泛的应用市场。目前,动态注入技术在系统升级、自动化测试等方面得到广泛应用。但是很多使用者最终还是选择放弃这一项技术,主要原因是动态注入在自动化测试中集成度比较低、动态注入会使目标进程在注入前后的环境不一致、动态注入的效率低。因此需要设计安全和高效的方案对进程进行动态注入,并能够实现进程上下文恢复。本文主要研究内容和研究成果如下:1.基于对现有注入机制的研究,提出了一个新式的动态注入机制基本模型。该模型包括注入工具、寄宿程序、目标进程,以及生成的最终结果等四个部分。动态注入过程通过寄宿程序提供的相关数据和目标进程的相关信息完成寄宿程序与目标进程相关性分析、函数解析与重定向等操作。动态注入过程通过获取目标进程信息以完成进程定位、进程分析以及进程恢复等操作。因此该系统框架的设计主要包括:寄宿程序数据接口设计、动态注入过程的设计以及目标进程信息获取的设计等三个部分。寄宿程序的数据的设计主要包括寄宿程序编译方式的设计和数据接口的设计。2.以上述基本模型为基础,细化为工程可实现的动态注入机制的系统模型。动态注入过程通过寄宿程序提供的相关数据和目标进程的相关信息完成寄宿程序与目标进程相关性分析、函数解析与重定向等操作。对寄宿程序的编译方式进行了设计,使用位置无关代码技术,实现寄宿程序中代码和数据地址引用无关。对寄宿程序的数据接口进行设计,寄宿程序的数据接口为注入工具提供以下信息:寄宿程序与目标进程相关性的指示符、寄宿程序中新创建或修改的数据类型、寄宿程序中变量的作用范围的界定符、寄宿程序中新创建的函数、寄宿程序中的函数符号。3.基于上述系统模型,实现一种动态注入工具。在分析与研究了Linux内存管理、Linux进程信息以及动态链接等原理后,目标进程信息的获取的主要是使用utrace系统接口调用,通过这种系统调用对目标进行附着,并将进程运行相关的堆栈、通用寄存器等信息存储到定义的数据结构体中。注入过程中需要获取进程的内存映射空间,通过utrace获取的信息进行寄宿程序的定位和dlopen函数的符号解析工作。4.面向上述动态注入工具,搭建Linux测试环境,对编程实现的工具进行测试,并对其测试结果进行分析。