网络攻击与防御

上传人:ni****g 文档编号:503065668 上传时间:2023-07-26 格式:DOCX 页数:21 大小:95.67KB
返回 下载 相关 举报
网络攻击与防御_第1页
第1页 / 共21页
网络攻击与防御_第2页
第2页 / 共21页
网络攻击与防御_第3页
第3页 / 共21页
网络攻击与防御_第4页
第4页 / 共21页
网络攻击与防御_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《网络攻击与防御》由会员分享,可在线阅读,更多相关《网络攻击与防御(21页珍藏版)》请在金锄头文库上搜索。

1、甘肃政法学院本科课程设计(设计题 目 缓冲区溢出攻击的原理分析及防范计算机科学院院(系)计算机科学与技术专业_09级计本一班学 号姓名李磊指导教师 武光利成绩完成时间年月【摘要】:利用缓冲区溢出漏洞进行攻击自诞生以来始终是网络攻击常用的手段,对信 息安全危害极大。如何检测缓冲区溢出成为研究的一个热点,并涌现出了各种各样的方案。 本次课程设计的目的旨在分析攻击的原理及防范措施。关键字:缓冲区溢出;漏洞;攻击;权限Abstract:Utilization of buffer overflow attacks since the birth is always the network attack

2、means used for information security, great harm. How to detect buffer overflow has become a research hotspot, and emerged in a variety of programmes. The purpose of the curriculum design is aimed at the analysis of the attack principle and prevention measures.Key words:Buffer overflow;Loophole;Attac

3、k;Jurisdiction目录第一章 引言1第二章 系统漏洞12.1 漏洞的概念 12.2 漏洞的分类 22.2.1 系统配置不当2.2.2.2 口令失窃2.2.2.3 嗅探未加密通讯数据3.2.2.4 设计存在的缺陷3.2.2.5软件编写存在bug3.第三章 本地缓冲区溢出的原理及实现43.1 缓冲区的概念 43.2 缓冲区溢出攻击原理 53.3 缓冲区溢出实现方式 63.3.1 利用跳转指令实现溢出6.3.3.2定位参数地址实现溢出8.3.3.3溢出实现用户权限提升1.4第四章 基于缓冲区溢出的防御方法154.1关闭不需要的特权程序 164.2 关闭或修改系统的某些版本信息 164.3使

4、堆栈向高地址方向增长 174.4及时给程序漏洞打补丁 174.5提供高级的用户帮助 17第五章 总结18参考文献19第一章 引言目前我国互联网已经进入宽带时期,网络用户和网络资源持续增长。但是 互联网的开放性、商业化和应用系统的复杂性带来的安全风险也随之增加,各种 安全漏洞的大量存在并不断攀升仍是网络安全的最大隐患,即使计算机系统装上 了防火墙和防病毒软件,但遗憾的是系统本身的漏洞难以避免。近年由CERT/CC 发布的系统安全忠告中关于缓冲区溢出(又称堆栈溢出) 漏洞占 56.76%以上。缓 冲区溢出可以让普通用户通过运行一个“错误”的程序,来使系统运行只有在超 级管理员环境下才能运行的程序。

5、一旦系统存在着缓冲区溢出漏洞,系统就有可 能被黑客完全控制。所以,缓冲区溢出漏洞是致命的。缓冲区溢出攻击之所以成为一种常见的攻击手段,其原因在于缓冲区溢出漏 洞太普通了,并且易于实现。而且,缓冲区溢出所以成为远程攻击的主要手段, 其原因在于缓冲区溢出漏洞给予了攻击者所想要的一切:植入并且执行攻击代 码。被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被 攻击主机的控制权。本文简单介绍了缓冲区溢出的基本原理及本文讲述了漏洞的 基本概念,并列述了漏洞的分类。漏洞的种类繁多,主要就缓冲区漏洞的软件编 写存在bug、系统配置不当、口令失窃、明文通讯信息被监听以及初始设计存在 缺陷等方面

6、作了简单的介绍。本次课程设计的目的旨在分析攻击的原理及防范措 施。第二章 系统漏洞2.1 漏洞的概念漏洞也叫脆弱性,是在硬件、软件、协议的具体实现或系统安全策略上存在 的缺陷。从而可以使攻击者能够在未授权的情况下访问或破坏系统。这些缺陷被 非法用户利用,可以突破系统的审计和访问控制等安全机制,对系统及其承载数 据的完整性、保密性和可用性造成威胁。漏洞会影响到很大范围的软硬件设备, 包括系统本身及其支撑软件、网络客户和服务器软件、网络路由器和安全防火墙 等,即在不同的软硬件设备中都可能存在不同的安全漏洞问题。漏洞无处不在,入侵者只要找到复杂的计算机网络中的一个漏洞,就能轻而 易举地闯入系统。所以

7、,了解这些漏洞都有可能在哪里,对于修补它们至关重要。 通常,漏洞主要表现在软件编写存在bug、系统配置不当、口令失窃、明文通讯 信息被监听以及初始设计存在缺陷等方面。2.2 漏洞的分类2.2.1 系统配置不当(1) 默认配置的不足:许多系统安装后都有默认的安全配置信息,通常被称 为easytouse。但遗憾的是,easytouse还意味着easytobreakin。所以,一定 对默认配置进行扬弃的工作。(2) 管理员懒散:懒散的表现之一就是系统安装后保持管理员口令的空值, 而且随后不进行修改。要知道,入侵者首先要做的事情就是搜索网络上是否有这 样的管理员为空口令的机器。(3) 临时端口:有时候

8、为了测试,管理员会在机器上打开一个临时端口,但 测试完后却忘记了禁止,这样就会给入侵者有洞可寻、有漏可钻。通常的解决策 略是:除非一个端口是必须使用的,否则禁止它。一般情况下,安全审计数据包 可用于发现这样的端口并通知管理者。(4) 信任关系:网络间的系统经常建立信任关系以方便资源共享,但这也给入侵 者有可趁之机、间接攻击的可能,例如,只要攻破信任群中的一个机器,就有可 能进一步攻击其他的机器。所以,要对信任关系严格审核、确保真正的安全联盟。2.2.2 口令失窃(1) 弱不禁破的口令:就是说虽然设置了口令,但是非常简单,入侵者可以 轻而易举的攻破。(2) 字典攻击:就是指入侵者使用一个程序,该

9、程序借助一个包含用户名和 口令的字典数据库,不断地尝试登录系统,直到成功进入。毋庸置疑,这种方式 的关键在于有一个好的字典。(3) 暴力攻击:与字典攻击类似,但这个字典却是动态的,就是说,字典包 含了所有可能的字符组合。例如,一个包含大小写的 4字符口令大约有50万个 组合,1个包含大小写且标点符号的 7字符口令大约有10万亿组合。对于后者, 一般的计算机要花费大约几个月的时间才能试验一遍。2.2.3 嗅探未加密通讯数据(1) 共享介质:传统的以太网结构很便于入侵者在网络上放置一个嗅探器就 可以查看该网段上的通讯数据,但是如果采用交换型以太网结构,嗅探行为将变 得非常困难。(2) 服务器嗅探:

10、交换型网络也有一个明显的不足,入侵者可以在服务器上 特别是充当路由功能的服务器上安装一个嗅探器软件,然后就可以通过它收集到 的信息闯进客户端机器以及信任的机器。例如,虽然不知道用户的口令,但当用 户使用Telnet软件登录时就可以嗅探到他输入的口令了。(3) 远程嗅探:许多设备都具有RMON,远程监控功能以便管理者使用公共体 字符串进行远程调试。随着宽带的不断普及,入侵者对这个后门越来越感兴趣了。2.2.4 设计存在的缺陷(1) TCP/IP协议的缺陷:TCP/IP协议现在已经广为应用、但是它设计时却是 在入侵者猖狂肆虐的今天之很早以前设计出来的。因此,存在许多不足造成安全 漏洞在所难免,例如

11、smurf攻击、ICMPUnreachable数据包断开、IP地址欺骗以 及SYNflood。然而,最大的问题在于IP协议是非常容易“轻信”的,就是说入 侵者可以随意地伪造及修改IP数据包而不被发现。现在Ipsec协议已经开发出 来以克服这个不足,但还没有得到广泛的应用。2.2.5 软件编写存在 bug无论是服务器程序、客户端软件还是操作系统,只要是用代码编写的,都会 存在不同程度的Bug。Bug主要分为以下几类:(1) 缓冲区溢出:指入侵者在程序的有关输入项目中了输入了超过规定长度 的字符串,超过的部分通常就是入侵者想要执行的攻击代码,而程序编写者又没 有进行输入长度的检查,最终导致多出的攻

12、击代码占据了输入缓冲区后的内存而 执行。(2) 意料外的联合使用问题:一个程序经常由功能不同的多层代码组成,甚 至会涉及到最底层的操作系统级别。入侵者通常会利用这个特点为不同的层输入 不同的内容,以达到窃取信息的目的。(3) 不对输入内容进行预期检查:有些编程人员工作不负责任,对输入内容 不进行预期的匹配检查,使入侵者输送炸弹的工作变得非常简单。(4) Racecond it ions:多任务多线程的程序越来越多,在提高运行效率的同时, 也要注意Raceconditions的问题。比如说:程序A和程序B都按照“读/改/写” 的顺序操作一个文件,当A进行完读和改的工作时,B启动立即执行完“读/改

13、/ 写”的全部工作,这时A继续执行写工作,结果是A的操作没有了表现。入侵者 就可能利用这个处理顺序上的漏洞改写某些重要文件从而达到闯入系统的目的, 所以,编程人员要注意文件操作的顺序以及锁定等问题。第三章 本地缓冲区溢出的原理及实现3.1 缓冲区的概念缓冲区,又称中立区、中立地带等,指的是两地的交界处因为战争或其他因 素,而划定出的带状地区,此带状地区并不完全属于两方之中的一方,通常由两 方共管或是由第三方协助管理。缓冲区是地理空间目标的一种影响范围或服务范 围,具体指在点、线、面实体的周围,自动建立的一定宽度的多边形。缓冲区溢出的根本原因在于语言本身的一些特性。从数据结构的角度来说, 最根本

14、的原因是由于指针、数组的存在,导致了一系列存储操作上的问题。而直 接的原因则是“没有对数组的越界加以监视和限制”。程序编写者的经验不足或 粗心大意使得缓冲区溢出几乎无处不在,导致程序不够健壮,为缓冲区溢出攻击 留下了隐患。缓冲区溢出攻击利用了程序设计语言的安全缺陷,及程序员编写代码时的疏 漏,将特定的内容写到缓冲区以外的特定内存空间,以达到控制或破坏系统的目 的。同时也得满足以下几个条件:(1)缓冲区溢出,首先要有一个缓冲区,当然不是所有的缓冲区都可以, 要求是一块有固定大小的缓冲区,而且还要向这块缓冲区中拷贝数据。(2)在程序中存在不规范,不安全的代码,这是发生缓冲区溢出攻击最主 要的前提条

15、件。黑客就是最先利用这些不安全,不规范的代码,来首先取得系统 的控制权的,然后才利用系统的控制权,进一步实施攻击,产生更大的危害。(3)程序运行中栈的安排结构,有利于黑客展开缓冲区溢出攻击,这是因 为在程序运行时通常栈是向下增长的,即后进栈的数据的地址小于先进栈的数据 的地址。这样当发生函数调用时,首先压栈的是该函数的参数,然后是函数的返 回地址,接下来是基指针,然后在进入函数体以后还会保存一些寄存器的值,再 把这些寄存器的值压入栈顶,最后才是函数体中声明的各个局部变量(即前文所 说的缓冲区),也有可能包含一些函数指针。因此,在函数运行中缓冲区的地址 低于寄存器的地址,低于基指针的地址,低于返

16、回地址的地址,低于该函数的参数的地址。所以要是向缓冲区中拷贝超过其容量大小的数据,那么多出来的数据 就会覆盖寄存器的值,覆盖基指针的值,覆盖返回地址的值覆盖参数的值,也完 全可以覆盖上层函数中的缓冲区等等,只要拷贝的数据足够长。而且栈所在的地 址范围又低于代码所在的地址范围,这样也完全可能覆盖程序中的代码。(4) 既使上诉条件都满足,也不一定会发生缓冲区溢出攻击,只能说程序中 存在缓冲区溢出漏洞,这是因为不是所有的漏洞都能被黑客利用。有些只是程序 中存在的缺陷,黑客并没有办法或者说暂时没有办法通过该漏洞取得系统的控制 权限,来完成其进一步攻击的目的。3.2缓冲区溢出攻击原理当正常的使用者操作程序的时候,所进

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号