论文部分内容阅读
计算机软件与人们的生活和工作的已密不可分,然而其潜在的安全隐患也受到了越来越多的关注。软件行为分析及异常检测技术通过监控来自系统内部和外部的攻击,可以及时阻止危害软件安全的相关行为,保证软件系统运行的安全性与可靠性,得到了广泛的关注。通过软件分析技术构建软件的正常行为模型是实施异常检测的关键。由于软件系统所发出的系统调用行为具有特殊的性质,因此,研究基于系统调用来构建用于异常检测系统的软件行为模型已得到广泛的应用。然而,如何获得软件预期行为集合并对软件的预期行为进行建模仍是首先需要研究的问题。序列模型和自动机模型是目前行为建模的主要方法。序列模型缺乏对程序结构的理解,因此检测能力较差。自动机建模技术可以很好的描述程序的结构,增强检测系统的精确性。但是自动机模型存在固有的不确定性、不可达路径及状态集合过大的问题。针对上述问题,本文提出了一种基于动态符号执行技术的面向软件行为的自动机建模方法,对软件的系统调用行为进行分析与建模。首先,通过静态分析获取软件的控制流图,再根据控制流图构建确定的自动机模型。相比传统的基于系统调用图的自动机模型,这种方法可以很好的简化自动机的状态集合。基于此,本文继续对所建立的自动机模型进行了优化处理,约减了自动机的状态集合,提高了检测系统效率。进一步,利用动态训练的方法来获取预期行为集合。本文采用动态符号执行技术来获取训练所需的数据集合,利用污点分析确定需要符号化执行的变量,并利用二进制插桩技术来实现训练的自动化。该方法提高了获取到的行为模型的完备性和精确性,降低了模型建立的复杂度,也消除了自动机的不可达路径问题。基于上述研究内容,并结合对系统调用拦截与监控技术的研究,本文设计并实现了一个基于软件系统调用行为的异常检测系统。实验结果表明,基于符号执行的软件行为获取与建模方法提高了检测系统的精确性,降低了系统的误报率和漏报率,并且没有额外增加系统的开销。