网络攻击与防御作业指导书.docx
《网络攻击与防御作业指导书.docx》由会员分享,可在线阅读,更多相关《网络攻击与防御作业指导书.docx(8页珍藏版)》请在冰豆网上搜索。
网络攻击与防御作业指导书
《网络攻击与防御》课程作业论文
题目:
系别:
班级:
姓名:
成绩:
二〇一二年四月
基于SPI的网络攻击与防御技术
一、选题的目的和意义
目前,网络安全已经成为制约互联网发展的头号问题,无论是病毒、木马,还是来自黑客的恶意攻击都在较大程度地影响着互联网的健康发展。
对于个人PC用户来讲,层出不穷的蠕虫和木马造成的威胁性越来越大。
黑客可以通过入侵Web服务器并植入木马,使得成千上万浏览相关网页的用户都陷入危险之中。
当木马侵入系统后,传统的反病毒软件并不能保证及时发现,这样就有可能让黑客通过木马对个人PC用户进行远程控制。
当系统被植入木马后,轻则用户的隐私会被泄露,重则用户的网络银行账号、IM账号、Email账号等都会被监听并截获密码发送给黑客,给用户带来财产损失。
由于反病毒软件工作原理的限制,对于新出现的木马,或者是专门进行“免杀”处理过的木马它们往往会在一段时间内无能为力;而防火墙则不然,它们可以通过各种手段截获所有进程的网络操作,根据规则决定进行过滤还是放行,或者向用户进行报警。
因此我们可以选择一款个人防火墙配合反病毒软件来保护自己的安全。
即使反病毒软件没有及时查杀到木马,凭借防火墙的网络保护功能也可以使得木马无法连接网络,不至于将自己的敏感信息泄露给黑客。
作为网络工程专业的学生,对于反病毒软件、个人防火墙等常规安全软件以及病毒、木马等恶意程序的工作原理是必须认真掌握的。
要想实现一个防火墙,不是一件容易的事情。
我们必须理解常规的网络通信程序工作原理,包括OSI协议模型、数据传输过程等;必须知道常见的网络编程方法,不仅包括如何编写基于网络连接的程序,还有如何进行封包监视和截获等的实现方法;必须知道通常的病毒与木马是如何突破防火墙保护的,以及怎样做出有针对性的防范。
通过实现一个完整的防火墙,可以把大学期间学习到的内容有效地串联起来,例如网络编程、WindowsGUI编程、消息机制、注册表操作、动态链接库编程,促使我们的知识结构得到一个系统的总结。
二、目前该选题的研究现状
在一个网页内容过滤系统中,实现数据包截获并非困难,但要把截获的数据包重组成服务器返回的网页文件需要一定的难度。
本文简单阐述了WindowsSPI网页数据包截获技术,并结合HTTP协议和winsock2.0原理,提出了截获网页数据包并重组为网页文件的算法模型。
最后在网络数据过滤系统中得以实现,并取得了良好的效果。
网络测试的对象从网络层向应用层过渡。
目的就是要确保网络能够承载各种各样的应用,最好的解决办法是对网络上加载不同应用的情况进行测试。
从这个意义上说,话音业务、网站业务等网络应用才是网络测试的真正意义所在。
由于网络安全测试技术含量较高、操作较复杂,许多网络系统管理员只清楚网络系统安全重要,实际并不十分了解网络系统安全真正存在的具体问题。
因此,掌握一种操作简便、性能优越的网络安全测试方法,也就成为各单位网络系统管理人员需要认真研究及掌握的重要问题。
三、设计思路分析
比较容易利用SPI实现的攻击有网络嗅探、木马和Web欺骗。
嗅探器(sniffer)是利用计算机的网络接口截获目的地为其它计算机的数据报文的一种技术。
一般情况下,嗅探器通过将以太网卡设置成混杂模式来实现。
使用混杂模式建立的嗅探器容易通过检测混杂模式套接字和套接字所在进程而找到黑客程序。
使用SPI技术建立的嗅探器不需要设置套接字模式,也不需建立新的套接字。
假设要嗅探所有从本机发送出去和目的地址为本机的数据,数据分别保存为文件recvUPP.dat(接收的UDP数据)、recvTCP.dat(接收的TCP数据)、sendUDP.dat(发送的UDP数据)、sendTCP.dat(发送的TCP数据)。
例如,有人上网进入免费邮件服务器发送邮件。
如果嗅探器正在工作,上网收发的内容将保存在recvTCP.dat和sendTCP.dat中,在文件中可以发现登陆邮箱的密码。
传统的木马是分别位于控制和被控制端计算机上的两个进程。
如果SPI被用于设计木马,被控制端将是一个DLL文件。
只要有进程使用网络,木马就会被自动启动,在DLL中可以实现数据的上传下载、进程的启动与终止、系统信息的获取。
但是,只要使用网络的进程退出内存,SPI木马也会退出内存。
传统的木马检测办法是通过网络端口与进程的关联来寻找木马进程,如果对SPI木马也使用此办法,则无法检测到。
例如,设当前正常的文件aa.exe启动,产生进程并使用网络,则SPI程序启动,相应地SPI木马也启动。
使用网络端口与进程的关联时,虽然能发现木马使用的端口,但找到的进程不是SPI的DLL文件,而是进程aa.exe。
由此可以看出,SPI木马更加具有隐蔽性,仅仅使用传统检测办法是不可以发现的。
SPI木马启动时,首先执行SPI函数WSPStartup,在该函数内部,开发者可以建立子线程,完成和控制端的连接、控制信息的获取等。
Web把寄存在服务器的超文本文档和其他一些文件、菜单和数据库通过超级链接连接到一起,构成一个整体。
这些文件均可在网络上通过URL获取,这就是万维网。
传统的Web欺骗攻击就是打断从被攻击者主机到目标服务器之间的正常连接,并建立一条从被攻击者主机到攻击者主机再到目标服务器的连接。
当用户点击到看似一个熟悉网站的连接时实际上登录到了攻击者想让被攻击者登陆的网站。
使用SPI进行的Web欺骗很容易实现。
比如,希望用户不管输入什么样的URL路径,总是会被登陆到,其原理是,浏览器进程向所在的服务器发送数据报。
数据的发送调用SocketAPI函数recv。
如果安装了进行Web欺骗的SPI程序,在调用recv之前会先调用WSPRecv函数。
WSPRecv函数的参数lpBuffers是WSABUF结构变量的指针,包含数据缓冲区和数据长度。
如果将lpBuffers中的数据替换为访问需要发送的数据,则不管用户输入何种域名,都将被引导到搜狐网站。
Winsock2是WindowsSockets的2.0版本,在此之前的是Winsock1.1。
与1.1版本相比,2.0版本引入了一种新的叫做SPI(ServiceProviderInterface)的编程接口。
利用这种技术可以在Socket中插入一层,从而可以完成诸如传输质量控制(Qos)、扩展TCP/IP协议栈、URL过滤及防火墙的开发。
引入SPI的目的是让网络开发者可以编写自己的服务提供者程序,即SPI程序。
SPI程序以动态联接库形式存在,它工作在应用层,通过WSPStartup函数为上层API调用提供接口函数。
SPI中的函数与SocketAPI函数存在一一对应关系,只是名称和参数有区别。
例如,SocketAPI中数据接收函数recv,对应的SPI函数为WSPRecv,其参数区别如下:
intrecv(
SOCKETs,//套节字
charFAR*buf,//接收数据缓冲区
intlen,//缓冲区长度
intflags//标志
);
intWSPRecv(
SOCKETs,//套节字
LPWSABUFlpBuffers,//接收数据缓冲区
DWORDdwBufferCount,//缓冲区长度
LPDWORDlpNumberOfBytesRecvd,//实际接收字节数
LPDWORDlpFlags,//标志
LPWSAOVERLAPPEDlpOverlapped,//可忽略
LPWSAOVERLAPPED_COMPLETION_ROUTINElpCompletionRoutine,//可忽略
LPWSATHREADIDlpThreadId,//进程ID指针
LPINTlpErrno//指向错误码
);
如果在SPI程序中开发者按WSPRecv规范编写了该函数,则在安装SPI程序后,每个使用函数recv的程序都要先执行SPI程序的WSPRecv,在WSPRecv中开发者可以完成自己的操作后再调用recv函数。
例如在WSPRecv函数中,可以从参数lpBuffers中获取所有发送出去的数据。
由此可以看出,这实际上是对SocketAPI的钩子程序。
既然SPI提供了拦截Socket的方法,可以以此开发防火墙之类程序。
另外,也可能被黑客利用来开发攻击工具,进行网络攻击。
四、设计过程描述
在前期,SPI程序要被调用,总是必须被注册到注册表的一个固定位置,为HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services\Winsock2\Parameters\Protocol_Catalog9\Catalog_Entries分支下。
子分支PackedCatalogItem键保存的内容为SPI程序的路径和文件名。
访问该路径可以确认当前系统中是否有SPI程序存在。
其次,我开始进行SPI网络嗅探的检测。
如果确认SPI程序存在,使用软件工具如FileMon可以检测到所有使用网络的进程会向若干固定文件写入数据。
用二进制编辑工具打开这些文件会发现从网络上接收和发送的数据。
在中期,我就开始使用工具进行SPI木马的检测。
SPI木马的关键在于在SPI程序中建立套接字。
检测到SPI程序中存在套接字就检测到了SPI木马。
通过SPI运行,路由器能够保存两个日志:
本地计算机访问的Web站点的日志以及攻击尝试的日志。
路由器可以配置成通过电子邮件将此列表发送给您。
Web欺骗SPI检测。
Web欺骗导致无法正常上网,容易观察到。
如果卸载SPI程序后正常上网,即可以确认是SPI程序造成。
在后期,我开始SPI程序的检测与卸载了,通过检测注册表路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
Winsock2\Parameters\Protocol_Catalog9\Catalog_Entries实现。
PackedCatalogItem子分支包含一个WSAPROTOCAL_INFOW类型结构。
图6是加载SPI程序TcpIpDog.dll前后注册表中的差异。
将PackedCatalogItem改回原值,即完成卸载。
尽管上述措施足以提供基本保护,但路由器通常能够监控更加广泛的活动,如通信流量模式以及发送通信流量的应用程序的类型。
通过SPI,路由器可观察各个数据包与已知黑客技术相似的模式,如拒绝服务(DoS)攻击、PingofDeath、SYN溢流、LAND攻击和IP哄骗。
例如,PingofDeath攻击可通过丢弃大于允许IP大小的数据包来避免。
五、设计成果展示
如果嗅探器正在工作,上网收发的内容将保存在recvTCP.dat和sendTCP.dat中,在文件中可以发现登陆邮箱的密码,如图右边所示。
该图反映了本地服务器上存在的服务漏洞(当然,实际中的服务器这么多的漏洞的话真的应该注意了)。
其中主要的还是TCP为主的安全问题。
该图为SPI木马检测和注册表中的SPI程序
课设总结
通过本次课题的研究,按要求实现了一款Windows平台的基于SPI的应用层个人防火墙,经测试证明该防火墙可以良好地工作,起到过滤封包以及自我保护等基本功能。
通过本次研究,我们对于防火墙的工作原理更加清楚,了解到常见的个人防火墙如何实现过滤,以及各种过滤方法的优缺点。
在我们动手设计与实现一款个人防火墙的同时,不仅有效地将大学期间学
到的知识进行了总结和升华,而且还切实地增加了编程的动手能力、查阅文献能力以及论文写作能力等。
使用扫描工具可以快速扫描计算机上的安全漏洞,以及可以快速的了解安全漏洞的处理方法。
很多表面上看起来安全的问题都可以及时的反映出问题,方便管理人员快速的解决安全漏洞。
但是,由于软件本身出发点是为HANK攻击所使用的扫描器,所以,我们在使用的同时,HACKER们也可能使用扫描工具在扫描您的服务器和计算机。
那么我们就要加强本地网络的安全性了。
SPI程序具有两面性,既可以用于开发网络安全程序,也可能被用于开发网络攻击程序。
本文全面地预言了这种攻击存在的可能性,同时提出了分析、检测和清除这种攻击的方法。
网络的安全性测试将逐步得到重视。
近年来,由于国际、国内多次重大的网络病毒爆发及黑客入侵事件,给人们敲响了警钟。
人们越来越认识到,只有网络系统设备具备完善的安全能力,网络安全问题才有可能得到解决。
建立高效、稳定、安全、可靠、互操作强、可预测、可控的网络是网络研究的最终目标,而网络测试是获得网络行为第一手指标参数的有效手段。