WINDOWS下封包截获的实现.docx
- 文档编号:6400649
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:18
- 大小:228.64KB
WINDOWS下封包截获的实现.docx
《WINDOWS下封包截获的实现.docx》由会员分享,可在线阅读,更多相关《WINDOWS下封包截获的实现.docx(18页珍藏版)》请在冰豆网上搜索。
WINDOWS下封包截获的实现
WINDOWS下封包截获的实现
摘要
基于Windows封包截获就是对应用程序进行数据包过滤。
数据包过滤是在网络层对数据包进行选择,对向网络上传或从网络下载的数据流进行有选择的控制过程。
要完成数据包过滤,就要首先设置好规则来指定哪些类型的数据包被允许通过,哪些类型的数据包将会被阻止。
如果程序被拒绝访问网络,它将不能向网络发送任何数据。
基于数据包过滤的主要思想就是截获数据包,并且对其进行分析,主要通过检查数据流中每个数据包的源地址、目的地址、所用的端口号和协议状态等,或它们的组合来决定是否允许该数据包通过,从而达到保护计算机安全的目的。
关键词:
网络安全;包过滤;控管规则
TheImplementationofPacketInterceptBasedonWindows
Abstract
Theimplementationofpacketinterceptbasedonwindowsismainlyacourseofdatapacketfilteringthroughnetworkleveltoachieveanoptionalcontrolofdatastreamupdatingtoordownloadingfromthenet.Tofulfillthisgoal,thereshouldbefirstlyestablishedrulestodefinewhichkindsofpacketareallowedtogo.Ifaprogramisrefusedtoaccessthenetwork,itcannotsendanydatatothenetwork.
Themainideaofdatapacketfilteringistointerceptdatapacket.Andbyanalyzingdatapacket,especiallybycheckingsourceaddress,destinationaddress,portnumberandprotocolstatusofeverydatapacketindatastream,itisthendecidedwhetherornottoletgothedatapacket,whichhelpusachievethegoalofprotectingthecomputer.
Keywords:
networksecurity;packetfiltering;controlrule
目录
论文总页数:
20页
1引言1
1.1课题意义1
1.2课题综述1
1.2.1国内外发展情况1
1.2.2网络安全技术介绍2
2关键技术3
2.1技术介绍3
2.1.1MFC介绍3
2.1.2数据包3
2.2可行性分析4
2.3开发环境及工具4
2.3.1开发环境4
2.3.2开发工具4
3系统的设计与实现5
3.1系统概述5
3.2.功能概述6
3.2.1封包过滤功能6
3.2.2封包监视窗口功能6
3.2.3控管规则设置窗口功能6
3.3各重要模块的设计与实现7
3.3.1模块接口定义和划分7
3.3.2FILTER.DLL封包过滤模块7
3.3.3封包监视模块10
3.3.4控管规则模块12
3.3.5规则设置模块12
4测试14
4.1关键功能点的测试14
4.1.1数据包监听测试14
4.1.2控管规则设置测试14
4.1.3管制动作设置测试15
4.1.4测试出错
(1)17
4.1.5测试出错
(2)17
4.2测试总结18
结论18
参考文献18
声明20
1引言
1.1课题意义
随着网络安全问题日益严重,网络安全产品也被人们重视起来。
内部的信息很容易暴露给Internet上的其它计算机,一旦受到攻击,计算机便没有能力来抵抗,保密信息有可能会被盗取,甚至连整台计算机上的数据都有可能被破坏掉,很容易造成无法晚会的损失。
而基于Windows封包截获是放置在外部网络与计算机之间的一个隔离设备,它可以识别并屏蔽非法请求,有效防止跨越权限的数据访问。
基于Windows封包截获将局域网的安全性统一到它本身,这就降低了计算机遭遇外部攻击的风险。
目前,网络安全产品可以说是百花齐放,迅猛发展。
随着网络向各个领域的扩展,网络安全的重要性也日益被人们所认知。
ICP提供商担心网站被攻击,因为这种事情发生得太频繁;使用网上交易的用户担心帐户密码被盗,因为窃取密码的工具比比皆是;软件公司担心源代码泄露。
种种现象都表明网络安全越来越重要,这种事情随时都可能发生在我们自己身上。
这也正是网络安全快速发展的原因。
由此可见,基于Windows封包截获的意义是非常重大的,在互连网已广泛普及的现代社会,一台接入互连网的计算机上不安装防火墙是不可想象的。
1.2课题综述
1.2.1国内外发展情况
全球网络安全市场规模及发展趋势iResearch统计2004年全球网络安全产品市场规模已经达到了158.4亿元,iResearch预测,未来几年全球网络安全市场的规模将会由2001年的71.8亿美元上升到2007年的341.5亿美元,其中中小企业采购所占的份额将会越来越高。
中国网络安全市场规模及预测据iResearch统计,2004年中国网络安全市场总体收入达29.6亿元人民币,而由于中国网络安全政策、企业需求等因素的影响,中国网络安全市场在未来一到两年内将会出现持续、平稳增长,到2007年整个网络安全市场容量将会接近70亿元人民币。
图1-1中国网络安全市场规模及预测
1.2.2网络安全技术介绍
数据加密技术是最基本的网络安全技术,被誉为信息安全的核心,最初主要用于保证数据在存储和传输过程中的保密性。
它通过变换和置换等各种方法将被保护信息置换成密文,然后再进行信息的存储或传输,即使加密信息在存储或者传输过程为非授权人员所获得,也可以保证这些信息不为其认知,从而达到保护信息的目的。
该方法的保密性直接取决于所采用的密码算法和密钥长度。
包过滤的主要功能是接收被保护网络和外部网络之间的数据包,根据访问控制策略对数据包进行过滤,只准许授权的数据包通行。
应用层网关位于TCP/IP协议的应用层,实现对用户身份的验证,接收被保护网络和外部之间的数据流并对之进行检查。
在防火墙技术中,应用层网关通常由代理服务器来实现。
通过代理服务器访问Internet网络服务的内部网络用户时,在访问Internet之前首先应登录到代理服务器,代理服务器对该用户进行身份验证检查,决定其是否允许访问Internet,如果验证通过,用户就可以登录到Internet上的远程服务器。
同样,从Internet到内部网络的数据流也由代理服务器代为接收,在检查之后再发送到相应的用户。
由于代理服务器工作于Internet应用层,因此对不同的Internet服务应有相应的代理服务器,常见的代理服务器有Web、Ftp、Telnet代理等。
网络安全扫描技术是为使系统管理员能够及时了解系统中存在的安全漏洞,并采取相应防范措施,从而降低系统的安全风险而发展起来的一种安全技术。
利用安全扫描技术,可以对局域网络、Web站点、主机操作系统、系统服务以及防火墙系统的安全漏洞进行扫描,系统管理员可以了解在运行的网络系统中存在的不安全的网络服务,在操作系统上存在的可能导致遭受缓冲区溢出攻击或者拒绝服务攻击的安全漏洞,还可以检测主机系统中是否被安装了窃听程序,防火墙系统是否存在安全漏洞和配置错误。
网络入侵检测技术也叫网络实时监控技术,它通过硬件或软件对网络上的数据流进行实时检查,并与系统中的入侵特征数据库进行比较,一旦发现有被攻击的迹象,立刻根据用户所定义的动作做出反应,如切断网络连接,或通知防火墙系统对访问控制策略进行调整,将入侵的数据包过滤掉等。
黑客诱骗技术是近期发展起来的一种网络安全技术,通过一个由网络安全专家精心设置的特殊系统来引诱黑客,并对黑客进行跟踪和记录。
这种黑客诱骗系统通常也称为蜜罐(Honeypot)系统,其最重要的功能是特殊设置的对于系统中所有操作的监视和记录,网络安全专家通过精心的伪装使得黑客在进入到目标系统后,仍不知晓自己所有的行为已处于系统的监视之中。
2关键技术
2.1技术介绍
2.1.1MFC介绍
近年来,利用Internet进行网际间通讯,在WWW浏览、FTP、Gopher这些常规服务,以及在网络电话、多媒体会议等这些对实时性要求严格的应用中成为研究的热点,而且已经是必需的了。
Windows环境下进行通讯程序设计的最基本方法是应用WindowsSockets实现进程间的通讯,为此微软提供了大量基于WindowsSockets的通讯API,如WinSockAPI、WinInetAPI和ISAPI,并一直致力于开发更快、更容易的通讯API,将其和MFC集成在一起以使通讯编程越来越容易。
MFC是VC编程环境最重要的组成部分,它为用户提供了一大批预先定义的类和成员函数,封装了大量的WindowsAPI。
同时VC环境提供了与MFC对象和代码一起工作的专用工具:
AppStudio源程序编辑器、AppWizard和ClassWizard。
应用MFC,可以使Windows程序员用较少的时间和精力开发出复杂的通讯应用程序。
2.1.2数据包
包的构造有点像洋葱,它是由各层连接的协议组成的。
在每一层,包都由包头与包体两部分组成。
在包头中存放与这一层相关的协议信息,在包体中存放包在这一层的数据信息。
这些数据也包含了上层的全部信息。
在每一层上对包的处理将从上层获取的全部信息作为包体,然后依本层的协议在加上包头。
这种对包的层次性操作(每一层均加上一个包头)一般称为封装。
在应用层,包头含有需被传送的数据。
当构成下一层(传输层)的包时,传输控制协议(TCP)或用户数据报协议(UDP)从应用层将数据全部取来,然后在加装上本层的包头。
当构筑再下一层(网间网层)的包时,IP协议将上层的包头与包体全部当做本层的包体,然后再加装上本层的包头。
在构筑最后一层(网络接口层)的包时,以太网或其它网络协议将IP层的整个包作为包体,再加上本层的包头,在数据包过滤系统看来,包的最重要信息是各层依次加上的包头。
2.2可行性分析
采用Filter-HookDriver的新型网络驱动
在WINDOWS2000DDK中,微软包含了称为Filter-HookDriver的新型网络驱动。
可以使用它来过滤所有进出接口的数据。
实际上,Filter-HookDriver并不是网络驱动,它是一种内核模式驱动(KernelModeDriver)。
这种方法可以过滤所有IP层(或以上)的通讯,但不能过滤更低层的头部数据,比如以太帧数据。
这是一种简单的方法。
安装防火墙和执行过滤功能非常简单。
但包过滤API(PacketFilteringAPI)更加容易使用,尽管它缺少弹性,例如不能处理包的内容,不能用包过滤API修改内容。
2.3开发环境及工具
2.3.1开发环境
硬件环境:
需要一个可靠,、稳定和安全,并能够满足学习和设计的要求的硬件配置环境。
CPU:
800M以上;
内存:
128M以上;
其他:
安装有网卡,可以接入因特网。
软件环境:
要求要有很强的持续工作能力、同时要稳定性高、可集成度高的开放式标准的操作系统,使用了Windows2000/2003。
2.3.2开发工具
VC和BorlandC++着重于系统编程,它们开放接口较多,也最为灵活,且编译出的程序体积较小,所以比较适合做系统工具类软件。
它们的缺点就是程序员需要较多的时间才能掌握这门开发技术。
这一点,BorlandC++Builder做得比较好,它拥有Delphi式的工作环境,语言是C++,并且支持对Delphi、MFC的直接编译,可以说是采百家之长,神通广大。
不过它的缺点就是它使用的VCL类库是为Delphi的准备,并不是真正用C++实现的,相信在以后的版本中会有所改观。
基于Windows封包截获软件较多的使用系统接口,且界面比较简单。
另外,基于Windows封包截获的主要传播渠道为互联网,这就要求体积应尽量的小,安装尽量方便。
所以选择VC做为开发工具。
3系统的设计与实现
3.1系统概述
初步设计进入系统后的界面有监听控制、要监听的端口、IP、进出流量和开始结束时间及动作以及控管规则的动作、应用程序、方向。
一旦启动了封包监视,所有在本机上进入或流出的数据包信息将被捕获下来,并且分析出它的协议类型,源端口号和目的端口号,还有时间等其他信息;封包监视一边工作,另一边就将监视得到的数据包的各项数据处理、分析、并且保存起来,如果用户对控管规则设置进行了操作,那么这些设置将被保存起来,作为以后执行的根据。
系统设计工作流程:
Winsock2SPI是一个DLL程序,它工作在API和DRIVER之间,为上层应用程序提供服务,根据这种特性,制定出本防火墙的一级工作流程图,如图3-1所示:
图3-1系统工作一级流程
用户界面(XFILTER.EXE)设置工作模式和控管规则,然后WINSOCK2SPI根据工作模式,控管规则和参数设置,对应用程序连接网络动作进行控管最后再送给系统SPI。
3.2.功能概述
通过以上流程图可以得到XFILTER的主体功能为四部分:
封包过滤,封包监视,控管规则设置和管制动作设置功能.
3.2.1封包过滤功能
用户状态下在WINSOCK层上简单的进行数据包拦截,截获网络封包;然后进行过滤规则设置,包过滤的规则由应用程序选择,管制动作和进出方向组成,它涵盖对所有出入数据包的处理方法,其主要是依据包头信息如IP源地址和目的地址进行过滤。
它将工作模式设置为询问,每当有新的应用程序想连接到网络首先弹出询问对话框,也就是管制动作设置对话框,Xfilter.dll(具体捕获过滤部分)根据工作模式和控管规则对过往封包进行过滤,Xfilter.dll将通过的网络封包记录下来并通知Xfilter.exe(界面部分)取走封包。
图3-2封包过滤
3.2.2封包监视窗口功能
提供封包监视界面和提供清空监视列表、停止/开始监控及停止/开始滚动功能。
3.2.3控管规则设置窗口功能
控管规则设置窗口的功能包括手工添加、修改及删除控管规则、自学习添加控管规则和控管规则字段属性设置;其中控管规则属性设置字段包括的功能又包括应用程序选择功能、允许和放行应用程序的管制动作功能和进出方向控制功能
图3-3控管规则设置
3.3各重要模块的设计与实现
3.3.1模块接口定义和划分
Windows消息接口使一种特殊的接口形式,它是基于Windows操作系统的消息机制。
这种接口形式适合于应用程序之间,例如在这里要用到的dll和exe程序之间的操作。
应用程序是相对独立的模块,如果这两个模块需要通信,则消息接口就是一种理想的选择。
这种接口类似于函数接口,只不过通过操作系统的消息机制来中转。
根据以上对主体功能的分析,可以划分为4个模块,分别是封包过滤模块,控管规则模块,管制动作模块和封包监视模块。
下面对各个模块进行实现。
3.3.2FILTER.DLL封包过滤模块
3.3.3封包监视模块
要完成封包监视,首先模块由DLL抓取封包,然后由EXE界面显示。
主要为XFILTER.DLL编写了一个CCHECKACL类对其进行处理,他封装了一组访问权限进行控制的函数和对服务提供者做管制的函数,其中就有封包处理函数,他包含获取封包信息的主要函数SENDSESSIONTOAPP(将传递过来的封包记录保存在进程变量里),FINDSESSION(在已存在的网络封包数据结构数组中寻找网络封包记录),GETSESSION(用来得到封包数据)和FINALLYSESSION(将所有网络封包数据全部发送到EXE中)等。
XFILTER.EXE是整个工程的用户界面部分,他需要与XFILTER.DLL实现对接,在XFILTER.EXE中,与XFILTER.dll直接通信的模块主要有2个,其中一个是主窗口模块MAINFRAME,他的作用是用来接收DLL发送过来的消息,然后对消息进行相应的处理。
要在界面中看到截获的网络封包信息,在MAINFRAME中的ONSESSIONNOTTIFICATION消息处理函数,用来处理XFILTER发送过来的封包信息,它接收发送过来的封包消息,根据消息从XFILTER.DLL取出封包数据并把封包数据发送到监视窗口中显示,如图3-5所示。
图3-5封包监视
封包监视窗口实时显示网络封包。
网络封包由XFILTER.DLL捕获后发送消息到CMAINFRAME(主窗口函数),CMAINFRAME根据消息再从XFILTER.DLL的缓冲区取走封包数据,然后调用封包监视窗口的函数显示封包。
关键代码:
LRESULTCMainFrame:
:
OnSessionNotification(UINTwParam,LONGlParam)
{
//如果XFILTER的控制函数指针为NULL,则直接返回
if(theApp.m_XfIoControl==NULL)
returnXERR_SUCCESS;
XFILTER_IO_CONTROLioControl;
ioControl.isession=wParam;
ioControl.session=newSESSION;
//从XFILTER。
DLL中取出封包数据
theApp.m_XfIoControl(IO_CONTROL_GET_SESSION,&ioControl);
//如果是空的封包则直接返回
if(ioControl.session->s==0)
returnXERR_SUCCESS;
//调用封包监视窗口INSERTONLIST往列表中增加一条记录
//如果还没创建则不显示
CPacketMonitor:
:
InsertOneList(
CPacketMonitor:
:
m_pListPacketMonitor,
ioControl.session,
CPacketMonitor:
:
IsMonitor,
CPacketMonitor:
:
IsScroll
);
//释放封包缓冲区
delete(ioControl.session);
3.3.4控管规则模块
对控管规则这部分模块,主要完成的两部分功能是询问工作模式和显示控管规则对话筐
首先调用XFILTER.DLL(捕获封包模块)的函数XFLOCONTROL(控制函数)设置XFILTER.DLL的工作模式为询问,再调用读写控管规则得到控管规则数据,其中读写控管规则包含读控管规则,保存控管规则文件,增加一条控管规则记录和删除一条控管规则记录。
显示控管规则对话筐调用SHOWDLG(显示对话筐函数)将读写的控管规则数据在控管规则对话框中显示出来,如图3-6所示。
3.3.5规则设置模块
对规则设置这部分模块,主要是对应用程序的具体放行和拒绝做选择,完成这一操作主要用到控管规则文件操作类(CACLFILE),开始通过检查工作模式为询问,在系统规则中检查是否有系统调用规则如果有则检查这条规则的行为是否为PASS,没有则检查是否第一次调用,如果控管规则的行为是PASS则返回PASS结束,如果不是则返回DENY;如果控管规则中系统的调用是第一次,则返回询问,如果不是,则在上一个找到的控管规则行为判断是否为PASS,如果是则返回PASS,如果不是则返回DENY,如图3-7。
当选择“放行”的时候,任何网络信息,数据包,非法操作将不再询问我们是否让其通过。
所以这一项非特殊情况将不选。
当选择“拒绝”的时候.任何有用,包刮破坏的程序将不能通过.有时为了必要我们不得不在自己机子上做一些检查,测试自己的机子是否有不良程序运行的时候就不能通过。
所以将工作模式设置为固定的“询问”,一些个人信息,如检测端口,杀毒等将会访问是否放行。
这里对一些正常的消息我们可以在下面管制动作中选择放行。
然后点确定。
对一些非法的我们可以选择拒绝来阻止。
图3-6控管规则
图3-7规则设置
4测试
4.1关键功能点的测试
4.1.1数据包监听测试
预期结果:
可以实时监听数据包,并且可以动态记录到日志文件中,并且在监视窗口中显示出来,每监听到一条就显示一条记录,一直不断更新。
测试结果
如图所示:
图4-1封包监视窗口
当点击清除按钮时,封包监视显示筐中的内容会自动清除,如图
图4-2封包监视窗口
当点击停止滚动后,右边的滚动条将会停止自动滚动。
4.1.2控管规则设置测试
预期结果:
可以对应用程序、动作和方向进行显示,每次对一个应用程序进行一次管制动作,在显示栏上就进行一次记录,并且能对管制动作进行添加,修改和删除。
下面是测试结果测试结果,按照预期效果显示出了控管规则的设置并成功实现其功能:
图4-3控管规则窗口
当单击添加按扭时会弹出(图4-3),可以选择任意能连接到网络的应用程序如IE、QQ等进行控制管理。
当选中显示框中的其中一条,再点击修改时,也能弹出(图4-3)进行控制管理。
选中删除,可以对已经设置好的控管规则返回默认
4.1.3管制动作设置测试
预期结果:
对连接到网络的应用程序进行控制,通过设置对程序实现具体的操控,并在(图4-4)中显示出来
测试结果:
可以对管制动作进行设置后完成其相应功能,并且在控管规则中的敞口中显示出来。
如图所示:
图4-4管制动作设置窗口
当选择应用程序浏览按扭会出现如图的结果选择需要控管的应用程序:
图4-5应用程序选项
当选择到管制动作,显示如图:
图4-6管制动作选项
当选择到进出方向时,显示如图:
图4-7进出方向
4.1.4测试出错
(1)
预期结果:
顺利打开主窗口菜单,显示主窗口界面
分析:
在这个测试中,多次发现了多加或少加了break(),return()语句,循环边界处理不当,返回了错误的值,对变量的定义不当,对MFC库函数使用不当的情况。
如图所示:
图4-8测试出错1
4.1.5测试出错
(2)
预期结果:
设置“帮助”选项弹出WINDOWS默认帮助菜单
在对帮助选项进行测试时出现的错误,在安装了WINDOWS相应的帮助菜单后对其进行连接时出现了错误,并且最终未能解决
图4-9测试出错2
理论上因该弹出WINDOWS默认帮助菜单,可是最终无法实现,这也是本设计的一大遗憾。
4.2测试总结
此次测试由于时间仓促,未能完全按照软件工程中的测试步骤进行。
从测试中可以看出,本程序还有很多不完善的地方,有些功能不完全或者无法实现,但基本功能的实现情况还是可以令人满意的。
这样的测试是一个很好的锻炼,我得到了许多启示,就是在编写软件之前和编写过程中要尽量把各个方面都考虑周到,避免像前面所描述的情况的发生,给软件的总体功能打折扣。
结论
这次毕业设计主要完成了WINDOWS封包截获的实现,其中包括2大部分功能:
封
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WINDOWS 封包 截获 实现