您当前的位置:首页 > 计算机论文>计算机网络论文

浅谈两种常见的网络攻击机制及防范措施

2015-11-19 10:01 来源:学术参考网 作者:未知

摘 要:随着网络的发展,网络安全日益受到重视,黑客入侵进行网络攻击已经成为影响网络安全的主要因素,黑客入侵方式多种多样,主要包括:拒绝服务(DoS:Denial of Service)、缓冲区溢出、IP欺骗以及网络监听等,其中拒绝服务、缓冲区溢出是黑客常用的网络攻击方式,本文就这两种攻击方式的攻击原理以及防范措施做一些探讨。

关键词:黑客 拒绝服务 网络攻击 网络安全 缓冲区溢出
前言
  随着计算机网络的发展,网络与人们的生活结合的越来越紧密,网络的普及,随之而来的网络安全是每个网络管理者必须面对的问题。网络攻击与防范永远是个此消彼长的过程,攻击方法的不断演进,防范措施必须与时俱进。黑客攻击方法主要分为以下几类:拒绝服务(DoS:Denial of Service)、缓冲区溢出、IP欺骗以及网络监听等,其中拒绝服务与缓冲区溢出是黑客常采用的攻击方法。  
1 DoS机制
    外部网络中的黑客攻击威胁性非常大,比如,网络黑客蓄意发动针对网络设备的分布式拒绝服务攻击DDoS (Distributed Denial of Service)、蠕虫病毒等新的攻击方式,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击:带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法用户请求无法通过;连通性攻击是指用大量的连接请求冲击,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。这些攻击可以造成网络流量急速提高,最终导致网络设备的崩溃或者造成网络链路的不堪重负。另外,由于在宽带网络建设中只注重网络的可用性,而忽视了管理性,造成内部网用户的互相攻击。
    在DoS攻击中,灰洞攻击是比较特殊的一种,灰洞攻击是一种比较隐蔽的攻击方式,在开始的时候很难被发现,因为在攻击开始的时候,攻击者和其它正常网络节点表现并无差异:正常地参与路由发现过程,在取得其它网络节点的信任后,攻击者开始故意丢失部分或全部的转发数据包。转发数据包被丢失必然引起网络性能的下降,网络路由的建立也常常比干扰。
2、缓冲区溢出攻击
  缓冲区是程序存放数据的地方,如果程序往缓冲区写入的数据超过其允许的长度,就会造成缓冲区溢出,如果是无意为之,则最多是程序或者系统崩溃,如果是有意为之,则往往是借助缓冲区的溢出来使程序转而执行其它指令,达到攻击的目的。
    缓冲区溢出攻击一般分为两步,首先是在程序的地址空间安排代码,在安排好代码后,下一步就是设法寻找没有边界或者其它弱点的缓冲区,造成缓冲区溢出,改变程序正常的执行顺序,使其跳转到攻击代码处执行。
3、 拒绝服务攻击防范
    为了防止拒绝服务攻击,首先是通过对系统的设置来调整限制Syn半开数据包的流量和个数,对于超时的Syn请求需强制复位;其次在路由器的前端做TCP拦截,使得只有完成TCP三次握手过程的数据包才可进入该网段;最后需要关闭可能产生无限序列的服务来防止信息淹没攻击。
    针对灰洞攻击的检测方法:灰洞攻击检测方案由以下三个相关算法组成。
  (1)证据产生算法
    所有参与路由的节点都要调用该算法,以产生数据包转发证据。转发证据基于Boneh 等人的聚合签名算法产生,用于证明节点接收了数据包。
  (2)审查算法
  源节点发现非正常丢包现象时,如目标节点告收到的数据包明显少于正常情况,调用该算法检测丢包节点。
    (3)诊断算法
  源节点根据审查算法返回的转发证据,确定丢包节点。根据签名验证结果,有以下三种情况:①通过了验证,确定没有丢包节点。②如果节点Ni拒绝提供签名,则认为该节点是丢包节点。③Ni在源路由中签名但不是目标节点。综合考虑上述情况,若某节点被怀疑次数超过阈值,则被认为是丢包节点。
4、缓冲区溢出防范策略
    缓冲区溢出是较为常见的隐患之一,攻击者往往会利用系统或者是程序的溢出漏洞来获取对计算机的控制,因此其对网络安全的危害可想而知,对于缓冲区溢出,目前主要采用以下一些措施来进行防范。
4.1 检查程序指针的完整性
    缓冲区溢出攻击者往往通过改变程序指针的方法来达到改变程序流程的目的,因此在程序指针被引用前对其进行检测就显得非常有必要,这样的话,即使程序指针被攻击者改变,由于事先已经检测到,编程者可以采取合理的措施来处理这种情况。
4.2 保护堆栈
    这是一种提供程序指针完整性检查的编译器技术,通过检查函数活动记录中的返回地址来实现。在堆栈中函数返回地址后面加了些附加的字节,而在函数返回时,首先检查这个附加的字节是否被改动过。如果发生过缓冲区溢出的攻击,那么这种攻击很容易在函数返回前被检测到。但是,如果攻击者预见到这些附加字节的存在,并且能在溢出过程中同样地制造它们,那么他就能成功地跳过堆栈保护的检测。
4.3 检查数组边界
    许多应用程序是用C语言编写的,而C语言不检查缓冲区的边界,因此在编程中使用数组时就必须格外谨慎,在对数组进行读写操作时都应当检查,以免对数组的操作超过数组的边界,显然如果每次操作都对数组直接检测会造成应用程序性能的下降,目前有些优化的技术来对数组进行检查,主要有Purify存储器存取检查以及Jones&Kely C数组边界检查等。

参考文献:
[1] 范建中.黑客社会工程学攻击.山东:齐鲁电子音像出版社,2008.
[2] 贺龙涛,方滨兴,胡铭曾主动监听中协议欺骗的研究通信学报.2003
[3]吕维梅,刘坚 C/C++程序安全漏洞的分类与分析计算机工程与应用.2005

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页