入侵检测.docx
《入侵检测.docx》由会员分享,可在线阅读,更多相关《入侵检测.docx(22页珍藏版)》请在冰豆网上搜索。
![入侵检测.docx](https://file1.bdocx.com/fileroot1/2023-1/10/e38950b4-3fab-4130-954d-568a5c69e3ff/e38950b4-3fab-4130-954d-568a5c69e3ff1.gif)
入侵检测
目录
1引言1
1.1电子邮件介绍1
1.2开发背景1
2软件架构及系统用例图2
2.1系统架构2
2.2系统总体用例2
2.3程序功能框图2
3SMTP和POP3协议的研究3
3.1SMTP协议简介及工作原理3
3.2POP3协议介绍和工作原理4
4RFC822(ARPA因特网文本信件格式的标准)6
4.1RFC822简单介绍7
4.2信件的头部7
5主要功能模块设计12
5.1窗口设计12
6项目测试16
6.1邮件发送测试16
6.2邮件查询17
总结19
致谢20
参考文献21
1引言
1.1入侵检测技术
入侵检测技术IDS是一种主动保护自己免受攻击的一种网络安全技术。
作为防火墙的合理补充,入侵检测技术能够帮助系统对付网络攻击,扩展了系统管理员的安全管理能力(包括安全审计、监视、攻击识别和响应),提高了信息安全基础结构的完整性。
它从计算机网络系统中的若干关键点收集信息,并分析这些信息。
入侵检测被认为是防火墙之后的第二道安全闸门,在不影响网络性能的情况下能对网络进行监测。
它可以防止或减轻上述的网络威胁。
入侵检测技术具体可以分为以下:
1).基于网络的入侵检测
基于网络的入侵检测产品(NIDS)放置在比较重要的网段内,不停地监视网段中的各种数据包。
对每一个数据包或可疑的数据包进行特征分析。
如果数据包与产品内置的某些规则吻合,入侵检测系统就会发出警报甚至直接切断网络连接。
目前,大部分入侵检测产品是基于网络的。
值得一提的是,在网络入侵检测系统中,有多个久负盛名的开放源码软件,它们是Snort、NFR、Shadow等,其中Snort的社区(http:
//www.snort.org)非常活跃,其入侵特征更新速度与研发的进展已超过了大部分商品化产品。
2).基于主机的入侵检测
基于主机的入侵检测产品(HIDS)通常是安装在被重点检测的主机之上,主要是对该主机的网络实时连接以及系统审计日志进行智能分析和判断。
如果其中主体活动十分可疑(特征或违反统计规律),入侵检测系统就会采取相应措施。
3).混合入侵检测
基于网络的入侵检测产品和基于主机的入侵检测产品都有不足之处,单纯使用一类产品会造成主动防御体系不全面。
但是,它们的缺憾是互补的。
如果这两类产品能够无缝结合起来部署在网络内,则会构架成一套完整立体的主动防御体系,综合了基于网络和基于主机两种结构特点的入侵检测系统,既可发现网络中的攻击信息,也可从系统日志中发现异常情况。
2软件架构及系统用例图
2.1系统架构
软件的总体架构如图2.1:
图2.1软件架构图
2.2系统总体用例
图2.2系统总体用例图
2.3程序功能框图
图2.3程序功能图
3TCP和UDP协议的研究
入侵检测主要是面对网络上的数据,所以对网络协议TCP和UDP的研究也就必不可少了,TCP协议是用来进行传输控制,是网络通信中最为关键的协议,UDP是用户数据报协议,同样也是一个比较重要的网络通信协议,熟练掌握这两个协议,才能进行网络通信,入侵检测。
3.1TCP协议简介及工作原理
3.1.1TCP简介
TransmissionControlProtocol传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transportlayer)通信协议,由IETF的RFC793说明(specified)。
在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
3.1.2TCP所提供服务的主要特点
(1)面向连接的传输;
(2)端到端的通信;
(3)高可靠性,确保传输数据的正确性,不出现丢失或乱序;
(4)全双工方式传输;
(5)采用字节流方式,即以字节为单位传输字节序列;
(6)紧急数据传送功能。
3.1.3TCP作用
在因特网协议族(Internetprotocolsuite)中,TCP层是位于IP层之上,应用层之下的运输层。
不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。
之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。
然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,他是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。
在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。
在拥塞控制上,采用慢启动算法。
3.2UDP协议介绍和工作原理
3.2.1UDP简介
UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP协议基本上是IP协议与上层协议的接口。
UDP协议适用端口分辨运行在同一台设备上的多个应用程序。
UDP协议的全称是用户数据报协议,在网络中它与TCP协议一样用于处理。
数据包。
在OSI模型中,在第四层——传输层,处于IP协议的上一层。
UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。
与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。
根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。
UDP协议的主要作用是将网络数据流量压缩成数据报的形式。
一个典型的数据报就是一个二进制数据的传输单位。
每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
3.2.2UDP协议的特性
(1)UDP是一个无连接协议,传输数据之前源端和终端不建立连接,它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
(2)由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3)UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4)吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。
发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。
既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。
例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。
UDP也用在路由信息协议RIP(RoutingInformationProtocol)中修改路由表。
在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。
UDP广泛用在多媒体应用中,例如,ProgressiveNetworks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudioaudio-on-demandprotocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。
4Sniffer(嗅探器)
Sniffer,中文可以翻译为嗅探器,是一种基于被动侦听原理的网络分析方式。
使用这种技术方式。
可以监视网络的状态、数据流动情况以及网络上传输的信息。
4.1Sniffer简单介绍
当信息以明文的形式在网络上传输时,便可以使用网络监听的方式来进行攻击。
将网络接口设置在监听模式,便可以将网上传输的源源不断的信息截获。
Sniffer技术常常被黑客们用来截获用户的口令,据说某个骨干网络的路由器网段曾经被黑客攻入,并嗅探到大量的用户口令。
但实际上Sniffer技术被广泛地应用于网络故障诊断、协议分析、应用性能分析和网络安全保障等各个领域。
4.2网络监听原理
Sniffer程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为杂乱(promiscuous)模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。
普通的情况下,网卡只接收和自己的地址有关的信息包,即传输到本地主机的信息包。
要使Sniffer能接收并处理这种方式的信息,系统需要支持BPF,Linux下需要支持SOCKET一PACKET。
但一般情况下,网络硬件和TCP/IP堆栈不支持接收或者发送与本地计算机无关的数据包,所以,为了绕过标准的TCP/IP堆栈,网卡就必须设置为我们刚开始讲的混杂模式。
一般情况下,要激活这种方式,内核必须支持这种伪设备Bpfilter,而且需要root权限来运行这种程序,所以sniffer需要root身份安装,如果只是以本地用户的身份进入了系统,那么不可能唤探到root的密码,因为不能运行Sniffer。
也有基于无线网络、广域网络(DDN,FR)甚至光网络(POS、FiberChannel)的监听技术,这时候略微不同于以太网络上的捕获概念,其中通常会引入TAP(测试介入点)这类的硬件设备来进行数据采集。
4.2.3Sniffer分类
Sniffer分为软件和硬件两种,软件的Sniffer有SnifferPro、NetworkMonitor、PacketBone等,其优点是易于安装部署,易于学习使用,同时也易于交流;缺点是无法抓取网络上所有的传输,某些情况下也就无法真正了解网络的故障和运行情况。
硬件的Sniffer通常称为协议分析仪,一般都是商业性的,价格也比较昂贵,但会具备支持各类扩展的链路捕获能力以及高性能的数据实时捕获分析的功能。
基于以太网络嗅探的Sniffer只能抓取一个物理网段内的包,就是说,你和监听的目标中间不能有路由或其他屏蔽广播包的设备,这一点很重要。
所以,对一般拨号上网的用户来说,是不可能利用Sniffer来窃听到其他人的通信内容的。
4.2.4网络监听的目的
当一个黑客成功地攻陷了一台主机,并拿到了root权限,而且还想利用这台主机去攻击同一(物理)网段上的其他主机时,他就会在这台主机上安装Sniffer软件,对以太网设备上传送的数据包进行侦听,从而发现感兴趣的包。
如果发现符合条件的包,就把它存到一个LOg文件中去。
通常设置的这些条件是包含字“username”或“password”的包,这样的包里面通常有黑客感兴趣的密码之类的东西。
一旦黑客截获得了某台主机的密码,他就会立刻进入这台主机。
如果Sniffer运行在路由器上或有路由功能的主机上,就能对大量的数据进行监控,因为所有进出网络的数据包都要经过路由器。
Sniffer属于第M层次的攻击。
就是说,只有在攻击者已经进入了目标系统的情况下,才能使用Sniffer这种攻击手段,以便得到更多的信息。
Sniffer除了能得到口令或用户名外,还能得到更多的其他信息,比如一个重要的信息、在网上传送的金融信息等等。
Sniffer几乎能得到任何在以太网上传送的数据包。
4.2.5Sniffer解码七层协议
Sniffer的软件非常丰富,可以对在各种网络上运行的400多种协议进行解码,如TCP/IP、NovellNetware、DECnet、SunNFS、X-Windows、HTTP、TNSSLQ*Netv2(Oracle)、Banyanv5.0和v6.0、TDS/SQL(Sybase)、X.25、FrameRealy、PPP、Rip/Ripv2、EIGRP、APPN、SMTP等。
还广泛支持专用的网络互联桥/路由器的帧格式。
Sniffer可以在全部七层OSI协议上进行解码,目前没有任何一个系统可以做到对协议有如此透彻的分析;它采用分层方式,从最低层开始,一直到第七层,甚至对Oracle数据库、SYBASE数据库都可以进行协议分析;每一层用不同的颜色加以区别。
Sniffer对每一层都提供了Summary(解码主要规程要素)、Detail(解码全部规程要素)、Hex(十六进制码)等几种解码窗口。
在同一时间,最多可以打开六个观察窗口。
Sniffer还可以进行强制解码功能(ProtoclForcing),如果网络上运行的是非标准协议,可以使用一个现有标准协议样板去尝试解释捕获的数据。
Sniffer提供了在线实时解码分析和在线捕捉,将捕捉的数据存盘后进行解码分析二种功能。
4.2.6Sniffer的扩展应用
1)专用领域的Sniffer
Sniffer被广泛应用到各种专业领域,例如FIX(金融信息交换协议)、MultiCast(组播协议)、3G(第三代移动通讯技术)的分析系统。
其可以解析这些专用协议数据,获得完整的解码分析。
2)长期存储的Sniffer应用
由于现代网络数据量惊人,带宽越来越大。
采用传统方式的Sniffer产品很难适应这类环境,因此诞生了伴随有大量硬盘存储空间的长期记录设备。
例如nGeniusInfinistream等。
3)易于使用的Sniffer辅助系统
由于协议解码这类的应用曲高和寡,很少有人能够很好的理解各类协议。
但捕获下来的数据却非常有价值。
因此在现代意义上非常流行如何把协议数据采用最好的方式进行展示,包括产生了可以把Sniffer数据转换成Excel的BoneLight类型的应用和把Sniffer分析数据进行图形化的开源系统PacketMap等。
这类应用使用户能够更简明地理解Sniffer数据。
4)无线网络的Sniffer
传统Sniffer是针对有线网络中的局域网而言,所有的捕获原理也是基于CSMA/CD的技术实现。
随着WLAN的广泛使用,Sniffer进一步扩展到802.11A/B/G/N的无线网络分析能力。
无线网络相比传统网络无论从捕获的原理和接入的方式都发生了较大改变。
这也是Sniffer技术发展趋势中非常重要的部分.
4.2.6Sniffer监测网络流量
随着互联网多层次性、多样性的发展,网吧已由过去即时通信、浏览网页、电子邮件等简单的应用,扩展成为运行大量在线游戏、在线视频音频、互动教学、P2P等技术应用。
应用特点也呈现出多样性和复杂性,因此,这些应用对我们的网络服务质量要求更为严格和苛刻。
目前,大多数网吧的网络设备不具备高端网络设备的智能性、交互性等扩展性能,当网吧出现掉线、网络卡、遭受内部病毒攻击、流量超限等情况时,很多网络管理员显的心有于而力不足。
毕竟,靠网络管理员的经验和一些简单传统的排查方法:
无论从时间上面还是准确性上面都存在很大的误差,同时也影响了工作效率和正常业务的运行。
SnifferPro著名网络协议分析软件。
本文利用其强大的流量图文系统HostTable来实时监控网络流量。
在监控软件上,我们选择了较为常用的NAI公司的snifferpro,事实上,很多网吧管理员都有过相关监控网络经验:
在网络出现问题、或者探查网络情况时,使用P2P终结者、网络执法官等网络监控软件。
这样的软件有一个很大优点:
不要配置端口镜像就可以进行流量查询(其实snifferpro也可以变通的工作在这样的环境下)。
这种看起来很快捷的方法,仍然存在很多弊端:
由于其工作原理利用ARP地址表,对地址表进行欺骗,因此可能会衍生出很多节外生枝的问题,如掉线、网络变慢、ARP广播巨增等。
这对于要求正常的网络来说,是不可思议的。
硬件环境(网吧):
100M网络环境下,92台终端数量,主交换采用D-LINK(友讯)DES-3226S二层交换机(支持端口镜像功能),级联普通傻瓜型交换机。
光纤10M接入,华为2620做为接入网关。
软件环境:
操作系统Windows2003Server企业标准版(SnifferPro4.6及以上版本均支持Windows2000Windows-xpWindows2003)、NAI协议分析软件-SnifferPortable4.75
环境要求:
1、如果需要监控全网流量,安装有SnifferPortable4.7.5(以下简称SnifferPro)的终端计算机,网卡接入端需要位于主交换镜像端口位置。
(监控所有流经此网卡的数据)
2、Snffierpro475仅支持10M、100M、10/100M网卡,对于千M网卡,请安装SP5补丁,或4.8及更高的版本
监控目的:
通过SnifferPro实时监控,及时发现网络环境中的故障(例如病毒、攻击、流量超限等非正常行为)。
对于很多企业、网吧网络环境中,网关(路由、代理等)自身不具备流量监控、查询功能,本文将是一个很好的解决方案。
SnifferPro强大的实用功能还包括:
网内任意终端流量实时查询、网内终端与终端之间流量实时查询、终端流量TOP排行、异常告警等。
同时,我们将数据包捕获后,通过SnifferPro的专家分析系统帮助我们更进一步分析数据包,以助更好的分析、解决网络异常问题。
5主要功能模块设计
5.1窗口设计
图5.1入侵检测系统界面
界面上方的列表控件用于显示出从本台计算机上通过的流量,并将抓到的该包的源地址,目的地址和报文长度显示给用户,并统计出通过的数据总量显示出来。
界面右方的列表框用于显示用户自定义的黑名单IP地址,程序就是根据黑名单中的IP来检测抓到包的源IP地址,看抓到的源IP地址是不是跟黑名单中的IP地址相同,相同则该IP地址就是用户定义的危险IP地址。
窗口初始化:
BOOLCRQJCDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
WSADatawsaData;
WSAStartup(0x0202,&wsaData);
sum=0;
started=false;
m_info.Format("%d",sum);
sum1=0;
m_info2.Format("%d",sum1);
addr="0.0.0.0";
m_IPtext=addr;
m_list.InsertColumn(0,"源地址",LVCFMT_LEFT,120);
m_list.InsertColumn(1,"目的地址",LVCFMT_LEFT,120);
m_list.InsertColumn(2,"报文长度",LVCFMT_LEFT,120);
m_atlist.InsertColumn(0,"源地址",LVCFMT_LEFT,120);
m_atlist.InsertColumn(1,"目的地址",LVCFMT_LEFT,120);
m_atlist.InsertColumn(2,"报文长度",LVCFMT_LEFT,120);
UpdateData(false);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
添加黑名单:
voidCRQJCDlg:
:
OnaddBUT()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(true);
intindex;
if(!
m_IPtext.IsEmpty())
{
index=m_IPlist.GetCount();
m_IPlist.InsertString(index,m_IPtext);
ipaddr[++len]=inet_addr(m_IPtext);
}
else
{
MessageBox("您的输入为空!
");
}
m_IPtext="";
UpdateData(false);
}
删除黑名单:
voidCRQJCDlg:
:
OndelBUT()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(false);
intindex=m_IPlist.GetCaretIndex();
m_IPlist.DeleteString(index);
for(inti=index;i<=len;i++)
{
ipaddr[i]=ipaddr[i+1];
}
len--;
UpdateData(false);
}
开始抓包:
voidCRQJCDlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
started=!
started;
if(started)
{
m