《《信息安全导论》课件1第8章.ppt》由会员分享,可在线阅读,更多相关《《信息安全导论》课件1第8章.ppt(49页珍藏版)》请在文字多文库上搜索。
1、第8章 攻击检测与攻击容忍,8.1 攻击检测概述8.2 攻击检测方法8.3 攻击容忍与可生存系统思考题实验8 攻击检测,8.1 攻击检测概述,8.1.1 攻击检测的概念攻击检测是一种动态监控、预防和抵御攻击行为的安全机制,它主要通过监控网络、系统的状态、行为以及系统的使用情况,来检测系统用户的越权使用以及外部攻击者对系统进行的攻击。,攻击检测机制是防火墙机制的一种补充。如果把安全的信息系统比作一座城堡的话,身份识别或访问控制就好像进城时检查证件一样,重点在于防范奸细的混入或者限制内部人员的活动范围;攻击检测类似巡警或治安巡逻队,专门注重于发现形迹可疑者。通过攻击检测,可以监控、分析用户和系统的
2、活动,可以审计系统的配置和弱点,可以评估关键系统和数据文件的完整性,还可以识别攻击者的攻击活动模式。,8.1.2 攻击检测系统的架构最具代表性的攻击检测系统的架构是通用攻击检测框架CIDF,这一架构来自于美国国防部高级研究计划局的一个项目。这一架构由事件产生器、事件分析器、事件数据库和响应单元四部分组成,如图8-1所示。事件产生器:从攻击检测系统之外的环境中收集事件,并将事件规范化为通用攻击检测对象GIDO的格式送给其他部分。事件分析器:接受事件产生器生成的GIDO,并对其进行孤立或关联分析,分析方式由实际系统决定,可以使用统计特征,也可以使用其他特征。,事件数据库:完成对必要的GIDO的存储
3、,方便将来的进一步使用。响应单元:根据信息产生响应动作,如报警、关闭连接、终止进程、更改文件权限等。,图8-1 CIDF架构,CIDF最主要的工作就是不同组件间所使用语言的标准化,CIDF用通用攻击说明语言CISL对事件、分析结果、响应指示等过程进行表示说明,以达到IDS之间的语法互操作。CISL语言使用符号表达式(简称S-表达式),类似于LISP语言。,8.1.3 攻击检测系统的工作流程攻击检测系统的工作流程可分为信息收集、信息分析和动作响应三个阶段,这三个阶段对应的CIDF功能单元分别是事件产生器、事件分析器和响应单元。信息收集阶段的主要工作是收集被保护网络和系统的特征信息,攻击检测系统的
4、数据源主要来自主机、网络和其他安全产品。基于主机的数据源主要有系统的配置信息、系统运行状态信息、系统记账信息、系统日志、系统安全性审计信息和应用程序的日志;基于网络的数据源主要有SNMP信息和网络通信数据包;其他攻击检测系统的报警信息、其他网络设备和安全产品的信息也是重要的数据源之一。,信息分析阶段的主要工作是利用一种或多种攻击检测技术对收集到的特征信息进行有效的组织、整理、分析和提取,从而发现存在的攻击事件。这种行为的鉴别可以实时进行,也可以事后分析,在很多情况下,事后的进一步分析是为了寻找行为的责任人。动作响应阶段的主要工作是对信息分析的结果做出相应的响应。被动响应是系统仅仅简单地记录和报
5、告所检测出的问题,主动响应则是系统要为阻塞或影响进程而采取反击行动。理想的情况下,系统的这一部分应该具有丰富的响应功能特性,并且这些响应特性在针对安全管理小组中的每一位成员进行裁剪后,能够为他们提供服务。,8.1.4 攻击检测系统的部署攻击检测系统中事件产生器所收集信息的来源可以是主机、网络和其他安全产品。如果信息源仅为单个主机,则这种攻击检测系统往往直接运行于被保护的主机之上;如果信息源来自多个主机或其他地方,则这种攻击检测系统一般由多个传感器和一个控制台组成,其中传感器负责对信息进行收集和初步分析,控制台负责综合分析、攻击响应和传感器控制。图8-2为一典型的“传感器-控制台”结构的攻击检测
6、系统的部署方案。,图8-2 一个“传感器-控制台”结构的攻击检测系统部署方案,8.1.5 攻击检测软件SnortSnort是一款用C语言开发的开放源代码(http:/www.snort.org)的跨平台网络入侵检测系统,能够方便地安装和配置在网络的任何一个节点上。Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络入侵检测模式是最复杂的,但也是可配置的。,Snort使用基于规则的模式匹配技术来实现入侵检测功能,其规则文件是一个ASCII文本文件,可以用常用的文本编辑器对其进行编
7、辑。为了能够快速、准确地进行检测,Snort将检测规则采用链表的形式进行组织。Snort的发现和分析能力取决于规则库的容量和更新频率。,8.1.6 网络数据包的捕获在共享HUB下的任一台计算机都能接收到本网段的所有数据包,这需要将网卡的工作模式设置为混杂模式,使之可以接收目标地址不是自己的MAC地址的数据包。在UNIX系统中可以用Libpcap包捕获的函数库直接与内核驱动交互操作,实现对网络数据包的捕获。在Win 32 平台上可以使用Winpcap,通过VxD虚拟设备驱动程序实现网络数据捕获的功能。在交换HUB下的计算机只能接收发往自己的数据包和广播包,交换HUB下数据包的捕获需要在HUB处通
8、过镜像方法实现。,8.2 攻击检测方法,攻击检测的基本假设是攻击者的攻击行为是能够被感知的。根据检测策略可以把攻击检测方法分为基于异常行为特征的攻击检测和基于正常行为特征的攻击检测。基于异常行为特征的攻击检测:假定攻击行为能够表达为一种模式或特征,对已知的攻击行为建立模式库,把检测到的行为与已知的攻击模式相对比,如果匹配成功,则认为有攻击行为发生。这种方法的的优点是误报率低,缺点是不能发现新型攻击。,模式匹配、专家系统(规则推理)和状态转化分析是上述方法的具体实现形式。专家系统(规则推理)通过将安全专家的知识表示成If-Then结构的规则(if部分表示构成攻击所要求的条件,then部分表示发现
9、攻击后采取的相应措施)形成专家知识库,然后运用推理算法检测攻击行为。,状态转化分析将攻击过程看做一个行为序列,该行为序列导致系统从初始状态转入被攻击状态。分析时,需要针对每一种攻击方法确定系统的初始状态和被攻击状态,以及导致状态转化的转化条件(导致系统进入被攻击状态必须执行的操作/特征事件),然后用状态转化图来表示每一个状态和特征事件。状态转化分析不适合分析过分复杂的事件,也不能检测与系统状态无关的攻击行为。,基于正常行为特征的攻击检测:假定能够建立正常行为的模式或特征,可以把与正常行为模式不同的行为视为攻击或潜在的攻击行为。比如通过统计分析可以将异常的网络流量视为可疑行为。这种方法的优点是能
10、够发现新型攻击,其关键是对异常的判定尺度和特征的选择,如果选择不佳,会导致误报率的升高。,上述方法中,正常行为的模式或特征一般通过统计分析的方法来描述,通过对过去一段时间内合法用户行为数据的收集,然后采用门限法或轮廓法来实现对攻击行为的判定。常用的统计分析模型有均值与标准差模型、多元模型和马尔可夫过程模型。另外系统静态配置分析、神经网络和数据挖掘也可用于攻击检测。例8-1是系统静态配置分析中文件完整性检验的实现办法。,例8-1 文件完整性检验。通常攻击者攻击时都会对一些文件进行改动,因此采用对文件系统进行完整性检验的攻击检测方式能够检测出对文件内容的非法更改,从而判定攻击。文件完整性检验首先将
11、需要校验的文件内容进行散列计算,将生成的散列值与文件完整性数据库中存储的预先计算好的文件内容的散列值进行比较,不一致则说明文件被非法更改,并可判定发生攻击。,8.3 攻击容忍与可生存系统,8.3.1 攻击容忍随着技术的发展,新的信息攻击形式不断涌现,系统完全杜绝攻击事件的发生是不太可能的。攻击容忍的理念应运而生且应用前景非常广阔。攻击容忍的概念最早出见于1985年,这一理念改变传统的以隔离、防御、检测、响应和恢复为主的思想,假定系统中存在一些受攻击点,在系统可容忍的限度内,这些受攻击点并不会对系统的服务造成灾难性影响,系统本身仍能保证最低质量的服务。,要实现上述目的,攻击容忍系统必须具备自我诊
12、断能力、故障隔离能力和还原重构能力。攻击容忍的研究主要围绕实现上述能力展开。攻击容忍系统的主要实现机制有攻击检测机制、攻击遏制机制、安全通信机制、错误处理机制和数据转移机制。攻击遏制是通过结构重构和冗余等方式达到进一步阻止攻击的目的;错误处理机制主要通过错误屏蔽的方法检测和恢复系统发生失效后的错误。,8.3.2 可生存系统可生存性研究源于美国国防部有关信息拯救计划,目的是开发具有遭到攻击后能“劫后余生”的网络及信息系统。在信息安全领域,可生存性概念可以认为是攻击容忍概念的延拓。网络的可生存性包括两个方面:在网络出现故障的情况下,通过各种恢复技术,来维持或恢复网络服务使之达到可接受程度的性能;网
13、络通过使用预防技术,减轻故障或预防服务失效。,可生存系统的关键特征是在面对攻击、故障、意外事故时完成基本服务的能力。在完成基本服务的同时系统仍然保持其基本安全属性,如数据完整性、机密性等其他属性。可生存性的开发思路和设计模式主要有两种:一种是基于入侵使用情景的重新设计;另一种是基于攻击容忍技术的可生存系统设计方法。也就是说:必须开发具有新的安全特征的高度可信赖的联网技术和计算机系统;遗留系统的安全改造与增强需要采用包装软件的方法进行改造,而不是进行内核改造;采用所谓的蜜罐技术来欺骗敌人;充分利用软件代理技术,实现新的入侵监测系统。,思 考 题,(1)攻击检测作用体现在哪些方面?(2)基于主机的
14、攻击检测数据源主要有哪些?(3)代表性的攻击检测技术有哪些?(4)什么是分布式攻击检测系统?(5)攻击容忍的含义是什么,这种系统采用的技术有哪些?(6)什么是可生存网络和系统?,实验8 攻 击 检 测,一、实验目的(1)理解并掌握攻击检测的基本流程。(2)掌握注册表、系统日志的查看与修改方法。(3)了解各类扫描器的实现原理。(4)了解各种攻击检测软件的使用方法。,二、实验准备(1)理论上讲,只要坚持跟踪以下信息,几乎所有网络攻击都能被检测出来:网络拥挤程度和网络连接;Web日志与系统安全日志;成功与失败的登录尝试;当前运行的应用程序和服务;定时运行的应用程序或启动时运行的应用程序;对文件系统所
15、做的改变。,(2)系统目录下的Win.ini是一种特殊的初始化文件,主要为系统提供初始化服务,在系统启动时将被系统所访问,并根据其所保存的参数值对系统进行配置。Windows专门提供了三个API函数GetProfileInt()、GetProfileString()和WriteProfileString()对Win.ini进行读写访问。,(3)系统注册表是一个多层次的结构树,在树的根部共有六个预定义键,Windows提供了近30个API函数用于访问系统注册表,这些API函数提供了对注册表进行键的创建、打开、关闭、删除和对键值的设置、删除等功能。通常对注册表比较常用的操作不外乎对键或键值的添加、
16、删除与修改等,而注册表中的各个键均有其特定的作用,通过对这些键的访问和对键值的适当修改可以获取到几乎所有的同系统有关的软、硬件信息并可对系统性能进行优化。,(4)扫描在网络监控中具有重要的地位。通过对网络的扫描,管理员可以及时了解网络的安全配置和运行的应用服务、发现安全漏洞、客观评估网络风险等级,还可以根据扫描的结果修补网络安全漏洞和系统中的错误配置,有效地阻止攻击事件的发生。要求熟悉相关网络扫描原理。,三、实验内容(1)分析、调试并运行第三章的例3-2,查看你的系统当前运行的进程。(2)分析、调试并运行第三章的例3-2,检查你的机器是否中了“冰河”病毒。(3)如下是用C#编写的“读取系统日志
17、”程序,调试并运行该程序,分析并查看相关结果。,using System;using System.Diagnostics;using System.Security;using System.Text;namespace glogclass Programstatic void main(string args)String machine=.;/local machine Console.WriteLine(tttWindows Log pickernttttby Xti9ern);Console.WriteLine(-n);,if(args.Length=1)if(args0=appli
18、cation|args0=system|args0=security)String log=args0;EventLog aLog=new EventLog(log,machine);EventLogEntry entry;EventLogEntryCollection entries=aLog.Entries;for(int i=0;i entries.Count;i+)entry=entriesi;,Console.WriteLine(Indext+entry.Index+nEventIDt+entry.EventID+nTimeWrittent+entry.TimeWritten+nMa
19、chineNamet+entry.MachineName+nSourcet+entry.Source+nUserNamet+entry.UserName+nMessaget+entry.Message+n-n);else,Console.WriteLine(Usage:glog.exe system(application,security)n);else Console.WriteLine(Usage:glog.exe system(application,security)n);,(4)编写程序,读取注册表中HKEY_current_userSoftwareMicrosoftWindows
20、 Current Version run下的信息,检查你机器的自动加载程序。(5)根据下述要求和参考代码编写多线程TCP Connect()扫描程序,给出运行结果。每台计算机都有65 535个端口,对一个IP地址段内多台主机的大量端口进行扫描是比较耗时的。为了提高扫描速率,端口扫描程序的实现也应采用多线程技术。各个线程分别调用Connect()函数连接同一主机的不同端口,并试图在开放端口接收相关服务信息。每个线程的工作流程如下:,创建一个类型为sock-stream的流套接字。调用connect()进行连接,根据返回值判断端口是否开放。对于开放端口调用select()判断套接字状态。对于来自开
21、放端口的可读信息调用Receive()接收信息并显示结果。关闭套接字。相关的参考代码如下:,#include#include#include#pragma comment(lib,ws2_32.lib)/define global variablelong MaxThread=100;HANDLE hSemaphore;long PreviousCount=0;int TargetIP;DWORD WINAPI portscan(LPVOID lp);int main(int argc,char*argv),HANDLE hThread=NULL;WSADATA wsd;int i;DWORD
22、 dwThreadID;if(argc!=4)printf(n%s,scan port nusage:%s n,argv0,argv0);return 1;,_try/load winsock libraryif(WSAStartup(MAKEWORD(2,2),if(hSemaphore=NULL)printf(Failed to create semaphore!Error%dn,GetLastError();_leave;/get target IP and target port rangeTargetIP=inet_addr(argv1);int TargetHost=ntohl(T
23、argetIP);int StartPort=atoi(argv2);int StopPort=atoi(argv3);/create thread to scanfor(i=StartPort;i=StopPort;i+),hThread=CreateThread(NULL,0,portscan,(LPVOID)i,0,WaitForSingleObject(hSemaphore,INFINITE);/wait for all thread donewhile(1)WaitForSingleObject(hSemaphore,INFINITE);if(!ReleaseSemaphore(hS
24、emaphore,1,if(PreviousCount=(MaxThread-1)printf(no scan end!n);break;Sleep(500);,/try end_finallyCloseHandle(hSemaphore);WSACleanup();return 0;DWORD WINAPI portscan(LPVOID lp)struct sockaddr_in server;SOCKET s=INVALID_SOCKET;,int iPort=(int)lp;s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(s=INVALID_S
25、OCKET)printf(Faile to create socket!Error%d,GetLastError();ExitProcess(1);server.sin_family=AF_INET;server.sin_addr.S_un.S_addr=TargetIP;server.sin_port=htons(iPort);_try,/connect to targetif(connect(s,(struct sockaddr*),if(!ReleaseSemaphore(hSemaphore,1,NULL)printf(nThread ReleaseSemaphore Failed:%d,GetLastError();closesocket(s);return 0;,四、实验报告1通过实验回答下列问题(1)你机器上运行的进程有哪些?.(2)你的机器是否感染了“冰河”病毒?(3)你的系统日志有哪些内容?(4)你的机器有哪些自动加载程序?2简答题(1)给出实验内容5的相关代码。(2)你知道的攻击检测工具有哪些?(3)简述Snort软件的安装和使用方法。,