基于沙盒机制的入侵检测

2010-08-15 00:49马媛丽
太原城市职业技术学院学报 2010年12期
关键词:沙盒内核调用

马媛丽

(山西省工贸学校,山西 太原 030024)

基于沙盒机制的入侵检测

马媛丽

(山西省工贸学校,山西 太原 030024)

文章提出了基于沙盒机制的入侵检测,能够限制不可信代码在可信区域里执行,从而达到主动系统防护的目的,并且分析了三种沙盒机制,分别介绍了其优缺点,并重点介绍了基于细分类保护区域模型的沙盒机制如何确保应用进程的安全运行。

入侵检测;沙盒;侦听系统调用;安全策略;监控进程;细分类

随着互联网的蓬勃发展和Linux操作系统的普及,针对Linux操作系统的病毒和攻击程序也不断出现。他们利用多种形式进行攻击,或者利用特权程序的软件错误来获得超级用户特权,或者利用系统漏洞来访问保密数据,或者利用合法用户下载并运行特洛伊木马程序来产生破坏。用户面临的问题就是如何确保他们的计算机系统不受远程恶意攻击的破坏。这就需要有效的方法来对各种非法程序做出主动的响应和防御。

对于检测计算机系统是否遭受恶意攻击以及限制不可信进程的研究已经有好几年的历史了。其中一种主动检测攻击的方法是入侵检测 (Intrusion Detection)。入侵检测是指通过对行为、安全日志或审计数据或其他网络上可以获得的信息进行操作,检测到对系统的闯入或闯入的企图。入侵检测技术是为保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的技术,是一种用于检测计算机网络中违反安全策略行为的技术。它通过对计算机网络或计算机系统中的若干关键点收集与安全策略有关的行为和信息,并进行分析,从中发现网络或系统中是否有被攻击的迹象。

一、Linux系统调用机制

在Linux操作系统中,系统调用是用户程序和操作系统的一个接口,也是进程使用内核管理功能的唯一接口。出于保护目的,把Linux操作系统区分成用户空间和内核空间。操作系统内核运行在内核空间,而用户进程运行在用户空间。由于保护级别不同,用户进程不能直接访问内核的数据,也不能直接调用内核的函数。操作系统内核是为用户服务的,用户所有操作最终都通过内核函数来实现。

当攻击者通过网络远程攻击系统,最终在目标系统上执行系统调用对系统产生破坏,并产生了侦听系统调用的方法。这是沙盒系统常采用的一种方法。进程在运行期间要调用不同的系统函数,而它们可以调用的系统函数及其参数是有限制的。如果能检测到所有的系统调用,就可以判断出攻击并且执行相应的操作:中断系统调用或改变它的操作数或直接终止该进程。

二、沙盒模型

1.沙盒模型概述

沙盒是指在可信环境里执行不可信代码,限制该代码访问文件和目录的权限。如果一个恶意进程试图违反安全策略并进行非授权访问,沙盒系统就会作出判断并进行过滤。在网络环境下,沙盒可以安全地过滤网络应用程序。网络应用程序就是指从网络上获取的进程数据(比如邮件、网页和电子文档)。这些应用程序都存在一些漏洞,可能遭受恶意攻击。

沙盒机制比利用审计数据进行入侵检测更有效。首先,系统审计日志并不能提供入侵检测所需的所有信息。其次,审计日志上记录了有用信息,但是所需的开销和磁盘空间大。侦听系统调用方法即使在离线状态,也能通过访问所需的信息来判断入侵,降低了访问无效信息的开销。

许多研究都致力于使用发展侦听系统调用方法的沙盒模型。该方法通过监控进程来监控应用进程调用的系统函数。监控进程是一段程序代码,负责过滤掉对安全策略产生影响的系统调用。侦听系统调用方法允许监控进程控制应用进程的资源访问。

2.沙盒模型分类

按照监控进程位置不同而把沙盒分为三种类型:内核级、用户级、指令级。

第一种类型是在内核模式下执行监控进程。该方法直接把监控进程编入内核。TRON是在Linux系统中保护进程文件的机制,与已存在的Linux文件保护机制合作执行,对所有进程进行访问控制。它允许用户指定访问文件和目录的权限,通过侦听系统调用方法,监视并阻止木马程序及其他非授权文件的访问。该方法直接把特定类型的沙盒机制编入操作系统内核,用户被迫使用这种沙盒机制,缺乏灵活性。

为了克服上述方法的局限性,一些系统采用可装载内核模块来执行。LSM(Linux Security Module)为Linux内核提供一个访问控制框架,仲裁应用进程对内核的访问。该沙盒系统允许不同的访问控制模式作为可装载内核模块来执行,当使用不同的安全模式时仅需要装载不同的内核模块,这就满足了用户需求的多样性,增强了访问控制的灵活性。但是,监控进程必须充分可信,否则将其直接编入内核可能会破坏整个系统。

第二种类型是在用户模式下执行监控进程。该方法把监控进程与应用进程存放在不同进程内,监控进程就不会被应用进程修改。监控进程利用操作系统支持那些具有系统调用跟踪特性的调试器(如ptrace()和/proc文件系统),来侦听应用进程的系统调用。监控进程在用户级执行,依据应用进程选择合适的沙盒系统,具有很大的灵活性。但是一旦侦听系统调用,就有进程间通信,进而产生巨大的运行时间代价,降低了应用程序的性能。

第三种方法是把监控进程编入应用程序中。JAVA的基本安全结构是围绕用户如何能动态地调入和运行Applet展开的。Applet的各种操作是受Java沙盒机制限制的。这种沙盒模式实现了一种特定的安全策略,提供了一个受限环境,运行不可信代码。这种基于语言的沙盒机制限制了程序员对编程语言的选择。

综上所述,侦听系统调用方法直接通过沙盒机制检测,不需要修改应用程序,对于用户来说很方便,实现了透明性。内核级方法是在内核模式下侦听系统调用,系统开销小,但是缺乏灵活性,而且会影响内核。用户级方法是在用户模式下侦听系统调用,用户可以自由选择沙盒机制,但是开销大,不易执行。指令级方法是把沙盒插入到应用程序中,该方法不能应用到非二进制程序中。

3.细分类保护区域的沙盒框架

还有一种是细分类保护区域的沙盒框架,它结合了用户级方法和内核级方法的优点。该框架只有一些基本机制在内核空间执行,而监控进程在用户空间执行。它不但保留了灵活性,也降低了监控进程对系统的影响。该方法是把监控进程放在应用进程中,降低了侦听系统调用的代价。同时细分类区域提供进程内部保护,这样应用程序对监控进程就不会造成影响。在细分类保护区域中,进程包含多个细分类保护区域。每个进程选择某一个细分类保护区域来存放监控进程,该区域可以访问进程的所有内存页面,称作策略区域。其他的细分类区域存放移动代码,都只能访问进程的某些内存页面。也就是说,不同的细分类保护区域有不同的访问权限。策略区域可以访问分配给应用进程的区域,但是应用进程的区域不能去访问策略区域,这样监控进程可以直接访问应用程序的系统调用及其参数,而且不受应用程序的影响。创建与装载细分类保护区域由程序装载器来完成,监控进程在操作系统内核中注册系统调用处理程序,侦听应用程序调用的系统函数。当应用进程产生系统调用时,操作系统内核就唤醒系统调用处理程序,同时把系统调用序号及参数传递过去,由系统调用处理程序来检测。如果这些系统调用及参数符合安全策略,就允许其执行,否则返回错误代码。该框架允许执行多种安全策略,用户可以根据需要选择合适的沙盒系统,具有灵活性。它把监控进程放到应用进程中,就不属于进程间通信,也就没有侦听系统调用的开销,具有高效性。同时,它提供了细分类保护区域,设立进程内保护,是一种内核级保护机制,这样应用进程就不会破坏监控进程。

[1]冀振燕,程虎.J AVA的安全结构[J].微型机与应用,1999,(1).

T

A

1673-0046(2010)12-0172-02

猜你喜欢
沙盒内核调用
多内核操作系统综述①
不好惹的沙盒树
强化『高新』内核 打造农业『硅谷』
核电项目物项调用管理的应用研究
韩国版金融科技“监管沙盒”法案及其启示
Windows 10“沙盒” 不仅更安全
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究