利用Linux系统下Snort防止反取证技术

2010-08-09 08:08瑛,陈
电信科学 2010年2期
关键词:探针报警服务器

邹 瑛,陈 联

(四川司法警官职业学院 德阳618000)

1 引言

在网络取证中,网络取证的数据可以来自多种设备和应用程序,可以分别从网络协议的各个层捕获,其实质是网络流,其存在形式依赖于网络传输协议,采用不同的传输协议网络流的格式也不相同。网络取证的目标就是对网络流进行正确地提取和分析,真实全面地将发生在网络上的所有事件记录下来,为事后的追查提供完整准确的资料,将证据提交给法庭。在计算机网络犯罪手段不断技术化、反取证能力日益增强的形势下,仅依靠网络安全技术将入侵者完全拒之门外非常困难。而利用snort2是可以用来填补昂贵的、探测任务繁重的网络入侵检测系统(network intrusion detection system,NIDS)留下的空缺,有效防止反取证躲避技术。

2 典型的躲避技术

躲避或越过网络入侵检测系统的技术是指利用非法或合法手段逃脱IDS/IPS的检测和记录,以防止取证。举例如下。

(1)利用字符串匹配的弱点:针对基本字符串匹配弱点的IDS躲避技术是最早被提出和实现的。一些基于特征码的入侵检测设备几乎完全依赖于字符串匹配算法,而对于一个编写非常差的特征码,攻击者能轻松地破坏对其的字符串匹配。虽然不是所有的入侵检测系统都是纯粹基于特征码检测的,不过绝大多数对字符串匹配算法有非常大的依赖。

(2)多变shell代码:多变shell代码技术由K2研发的,设计思想来源于病毒逃避(virus evasion)技术。使用这种技术重新构造的shell代码更为危险,入侵检测设备非常难以检测到。这种技术只用于缓冲区溢出攻击,对付基于特征码的检测系统非常有效,而对于智能化的或基于协议分析的检测系统的效果要差很多。

以上的两个实例都可以进行应用层入侵检测躲避。

3 分布式snort入侵检测系统概述

分布式snort入侵监测系统的主要组成部分包括中央分析服务器、IDS探针和协同代理。一般情况下,一个企业的网络可以分为外部网络、企业内部网络和DMZ区等。入侵监测系统既可以部署在防火墙之外,也可以部署于防火墙之内。部署于防火墙之外,可以获得更多攻击数据,但是误报警率也高。因此一般情况下,入侵检测系统部署于防火墙之后是比较明智的。

(1)中央分析服务器

中央分析服务器是整个系统的心脏和灵魂。它一般由一个数据库系统和一个Web服务器组成,为系统管理员提供交互式Web管理界面。在中央分析服务器上,管理人员可以进行远程IDS探针管理、攻击数据查询、实时监视网络攻击及深入分析,如攻击方向的迁移、识别攻击模式等。MySQL数据库、Apache服务器、SnortCenter和ACID(analysis console for incident databases)是一个不错的snort平台系统组合。

SnortCenter是一个基于Web的snort探针和规则管理系统,用于远程修改snort探针的配置,起动、停止探针,编辑、分发snort特征码规则。如果与cron和curl结合使用,SnortCenter还可以定时为每个探针进行规则升级,自动从snort官方站点获得最新特征码规则(http://www.snort.org/dl/signatures/snortrules-stable.tar.gz)。SnortCenter的下载地址为http://users.pandora.be/larc/download/。ACID是一个基于PHP的分析引擎,用于查询、管理snort探针产生的数据库。ACID的下载地址为http://www.cert.org/kb/acid/。

(2)IDS探针和协同代理

代理是向中央分析服务器报告攻击信息的软件,是分布式入侵检测系统的一个重要部件。SnortCenter Agent和普通意义上的协同代理软件有些不同,它只是一个SnortCenter进行探针管理的代理工具。通过SnortCenter Agent,SnortCenter能够起动、关闭受保护主机上的snort探针;修改探针的配置和使用的特征码规则。SnortCenter Agent是用Perl语言编写的,可以在不同的平台上使用。为了防止登录过程中账户和密码的泄漏,它使用SSL和SnortCenter之间进行通信。snort探针是真正进行入侵检测的组件,其源代码可以从http://www.snort.org获得。

4 snort入侵检测系统的安装及部署

在分析服务器上,首先要建立记录snort报警和日志数据库及SnortCenter、ACID需要的数据库。在临时目录中解压缩snort的源代码,进入contrib目录,建立数据库,并进行相关的配置。代码如下:

#mysql-u root-p

create database snort;

connect snort

source create_mysql

grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.*to snort;

grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.*to snort@localhost;

grant CREATE,INSERT,SELECT,UPDATE on snort.*to acidviewer;

grant CREATE,INSERT,SELECT,UPDATE on snort.*to acidviewer@localhost;

connect mysql

set password for'snort'@'localhost'=password('yourpassword');

set password for'snort'@'%'=password('yourpassword');

flush privileges;

把最新版的SnortCenter源代码解压缩,将目录里面的文件复制到Apache的DocumentRoot目录(如/usr/local/apache/htdocs)。下载SnortCenter需要的adodb(http://php.weblogs.com/adodb/),安装到SnortCenter所在的目录,然后建立SnortCenter数据库。代码如下:

$tar zxvf snortcenter-v0.9.6.tar.gz

$cp snortcenter-v0.9.6/*/usr/local/apache/htdocs/

$tar zxvf adodb250.tgz

$cp-R./adodb/usr/local/apache/htdocs/

$echo"CREATE DATABASE snortcenter;"|mysql-u root-p

完成了基本的安装之后,需要根据系统的情况手工编辑/usr/local/apache/htdocs/config.php文件,从而结束SnortCenter的配置。一般情况下需要修改的参数见表1。

完成上面的配置后,启动Apache服务器,在浏览器的地址栏输入分析中心服务器的地址,系统缺省账户是admin,密码为change。登录进入系统以后,点击admin→Create DB Tables选单,即完成SnortCenter的安装,如图1所示。

安装ACID需要PHP支持GD,并对PHPLot(www.phplot.com)、ADODB进行支持。新版本的ACID(0.9.6b22以后版本)还需要JpGraph(http://www.aditus.nu/jpgraph/)的支持。ACID及相关软件安装到指定位置之后,编辑配置文件acid_conf.php完成其配置,参数设置如表2所示。

表1 /usr/local/apache/htdocs/config.php文件需要修改的参数

图1 创建SnortCenter数据库

表2 ACID参数设置

PHPLot所在目录另外,ACID本身缺乏必要的访问控制机制,需要设置Apache对访问ACID的用户提供验证。

同时,需要安装snort探针和SnortCenter Agent,分别进入需要保护主机,安装snort和SnortCenter Agent。SnortCenter Agent需要SSL的支持,所需模块可以从http://www.cpan.org得到。安装代码如下:

$./configure-with-mysql

$make

$make install

$tar-zxvf Net_SSLeay.pm.1.21.tar.gz

$cd Net_SSLeay.pm.1.21

$perl Makefile.PL

$make install

$mkdir/opt/snortagent/

$cp snortcenter-agent-v0.1.6.tar.gz/opt/snortagent

$cd/opt/snortagent

$tar-zxvf snortcenter-agent-v0.1.6.tar.gz

$cd sensor

$./setup.sh

其中,我们需要注意的问题是,系统涉及到网络中的很多主机,各个snort探针需要通过网络时间协议(network time protocol)实现时间的精确同步。

在实际的网络取证中,犯罪分子通过分析,利用取证软件和设备漏洞等反取证技术,绕开取证环节直接攻击计算机,而snort通过协议分析,检测网络的原始传输数据,进行实时通信分析和信息包记录、检查包有效载荷、分析协议和内容查询匹配、探测缓冲溢出、秘密端口扫描、CGI攻击、SMB探测、操作系统侵入尝试、分析捕获的报文、系统日志、指定文件等,通过匹配入侵行为特征或者从网络活动的角度检测异常行为,对攻击进行实时报警。

Snort是基于特征检测的IDS,使用规则的定义来检查网络中有问题的数据包,针对每一种入侵行为提炼出它的特征值并按照规范写成检验规则,从而形成一个规则数据库。通过对协议的分析、数据包内容的搜索和匹配,snort将捕获的报文按照规则库逐一进行匹配,若匹配成功,则认为该入侵行为成立。snort的检测能力能对付绝大多数基于单包的网络攻击。从报警信息,我们可以了解到报警的类型,它由一个惟一的报警类型编号(SID)表示、报警的创建时间、报警的源地址,即报警的源IP和端口、报警的目的地址,即报警的目的IP和端口。

通过对这些报警信息的分析,可以提取出有用的取证信息。

5 结束语

网络取证是一个迅速发展的研究领域,是一门有待标准化和探讨、不断发展的学科,特别在反取证技术日益提高的情况下,如何利用有效的工具防治反取证躲避技术对计算机取证工作带来的困扰,这在网络信息安全和犯罪调查方面有着重要的应用前景。

1 王一淼.基于入侵检测系统的主动取证方法.计算机应用研究,2007(5)

2 安全响应团队的好帮手:网络取证工具,http://netsecurity.51cto.com

3 Ponec M,Herv G P.Highly efficient techniques for network forensics.In:Proceedings of the 14th ACM conference on Computer and communications security,Alexandria,Virginia,USA,2007

4 使用Snort探测轻型侵入HackBase.com

猜你喜欢
探针报警服务器
通信控制服务器(CCS)维护终端的设计与实现
LKD2-HS型列控中心驱采不一致报警处理
中国服务器市场份额出炉
得形忘意的服务器标准
多通道Taqman-探针荧光定量PCR鉴定MRSA方法的建立
2015款奔驰E180车安全气囊报警
计算机网络安全服务器入侵与防御
BOPIM-dma作为BSA Site Ⅰ特异性探针的研究及其应用
死于密室的租住者
透射电子显微镜中的扫描探针装置