论文部分内容阅读
操作系统异常主要包含操作系统资源占用异常和操作系统中进程的运行异常,而这些异常往往都是因为外界用户采取的种种攻击手段、程序的自身漏洞、程序被非法篡改或注入恶意代码而造成的。在操作系统运行时对它进行异常检测是十分重要的。一方面,通过检测操作系统和进程的异常行为,及时发现并处理这些异常事件,能够增强操作系统的安全性和可靠性,从而为用户搭建一个安全、高效和可信的计算平台。另一方面,发现和记录操作系统运行时的异常状态,有助于系统管理员改正系统运行时的错误或不适当的配置,提高操作系统的效率。
现有的异常检测工具一般使用系统调用作为系统状态指标。但是单单对系统调用的异常检测并无法准确地给用户提供错误诊断,而且目前有研究表明有一些攻击通过插入带有无效参数的调用系统调用,使其在系统调用序列上表现得与正常时一样,以此来躲避异常检测工具的检测。同时,对于与系统调用不相关的异常行为,如果不引入其他指标,也没有办法检测到,但现有工具也没有提供动态增减监测指标的功能。
本文对操作系统运行时产生的数据进行分类,总结出三类进程状态描述,然后采用内核代码动态插装技术,引入了系统资源利用率、系统调用参数及返回值等指标,应用了多种机器学习技术,设计并实现了一个Linux运行时异常检测工具LADT(Unux Anomaly Detection Tool)。该工具能够动态增减监测指标,同时对该指标的运行情况进行海量的数据收集,然后利用数据分析模块中的多种机器学习技术对系统正常运行时的系统调用名、系统调用参数及返回值、内核关键的操作序列进行训练,从而学习出运行时正常状态轮廓,最后进行实时异常检测,通过与正常状态轮廓的比较,发现系统异常并记录和告警。该工具已经在Linux2.6.26内核上实现,实验结果表明,本文中所描述的基于机器学习的Linux异常检测是可行的。