电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第七章计算机系统安全(缓冲区溢出)精编版

66页
  • 卖家[上传人]:ahu****ng1
  • 文档编号:145717709
  • 上传时间:2020-09-22
  • 文档格式:PPTX
  • 文档大小:570.98KB
  • / 66 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、2020/9/22,网络安全Network Security,2020/9/22,第7章 计算机系统安全(缓冲区溢出),缓冲区溢出概述,缓冲区溢出攻击的原理,缓冲区溢出攻击的防御技术,2020/9/22,第7章 计算机系统安全(缓冲区溢出),缓冲区溢出概述,缓冲区溢出攻击的原理,缓冲区溢出攻击的防御技术,2020/9/22,缓冲溢出概述,1. 缓冲区的定义 连续的一段存储空间。 2. 缓冲区溢出的定义 指写入缓冲区的数据量超过该缓冲区能容纳的最大限度,造成溢出的数据改写了与该缓冲区相邻的原始数据的情形。 Buffer overflow is the result of writing more data into a buffer than the buffer can hold.,2020/9/22,Example,Consider the following code,int main(void) char buffer4; strcpy(buffer, “AAA”); ,AAA0,2020/9/22,Example (contd.),Now we input 4+4+3 As i

      2、nstead of 4 As.,int main(void) char buffer4; strcpy(buffer, “ ”); ,AAA,AAAAAAAAAAA,main stack frame,previous stack frame,buffer4,Higher addresses,Lower addresses,?,2020/9/22,缓冲溢出概述(续),3. 缓冲区溢出的危害 利用缓冲区溢出实现在本地或者远程系统上实现任意执行代码的目的,从而进一步达到对被攻击系统的完全掌控; 利用缓冲区溢出进行DoS(Denial of Service)攻击; 利用缓冲区溢出破坏关键数据,使系统的稳定性和有效性受到不同程度的影响; 实现蠕虫程序 1988 Robert T. Morris蠕虫利用UNIX 系统中In, the Morris Internet worm exploited buffer overflow vulnerability in fingerd server program on UNIX systems. 曾在2001年造成大约26亿美元损失的Code Red蠕虫及

      3、其变体就是利用了Microsoft IIS中的缓冲区溢出进行攻击 2002年的Sapphire蠕虫和2004年的Witty蠕虫也都利用了缓冲区溢出进行攻击。 In 2004, the Witty worm takes advantage of a buffer overflow flaw in several Internet Security Systems (ISS) products.,2020/9/22,Source from CERT (Computer Emergency Response Team) CERT Advisories,缓冲区溢出相关的软件安全隐患数目占整个软件安全隐患数目的比例,2020/9/22,缓冲溢出概述(续),4. 造成缓冲区溢出的根本原因 代码在操作缓冲区时,没有有效地对缓冲区边界进行检查,使得写入缓冲区的数据量超过缓冲区能够容纳的范围,从而导致溢出的数据改写了与该缓冲区相邻存储单元的内容。 C and C+ are the most common languages to create buffer overflows. C语言中许多字符串处理函

      4、数如:Strcpy、Strcat、Gets、Sprintf等都没有对数组越界加以检测和限制。,2020/9/22,缓冲溢出概述(续),Microsoft Windows,Linux/Unix,Apple Macintosh等主流操作系统无一例外存在缓冲区溢出问题。 存在缓冲区溢出问题的应用程序也广泛存在,涉及数据库系统例如Microsoft SQL Server 2000, Oracle9i,网络服务(Microsoft IIS),网络协议实现(例如OpenSSL),多媒体软件(Apple QuickTime)等等,2020/9/22,缓冲溢出概述(续),缓冲区溢出可以成为攻击者实现攻击目标的手段,但是单纯地溢出缓冲区并不能达到攻击的目的。 在绝大多数情况下,一旦程序中发生缓冲区溢出,系统会立即中止程序并报告“fault segment”。例如缓冲区溢出,将使返回地址改写为一个非法的、不存在的地址,从而出现core dump错误,不能达到攻击目的。 只有对缓冲区溢出“适当地”加以利用,攻击者才能通过其实现攻击目标。,2020/9/22,第7章 计算机系统安全(缓冲区溢出),缓冲区溢出概

      5、述,缓冲区溢出攻击的原理,缓冲区溢出攻击的防御技术,2020/9/22,缓冲溢出攻击的原理,1. 缓冲区溢出攻击模式,Attacked System,溢出缓冲区,重定向到攻击程序,任意地执行程序,执行攻击程序,Attacker,注入恶意数据,获得控制权,找到可利用的缓冲区溢出隐患,恶意数据可以通过 命令行参数、 环境变量、 输入文件或者 网络数据注入,2020/9/22,缓冲溢出攻击的原理(续),2. 缓冲区溢出可能发生的位置 预备知识点 进程在内存中的布局,2020/9/22,缓冲溢出攻击的原理(续),代码段/文本段 用于放置程序的可执行代码 (机器码) 。 数据段 用于放置已初始化的全局变量和已初始化的局部静态变量。 BSS (Block Started by Symbol)段 用于放置未初始化的全局变量和未初始化的局部静态变量。 堆 用于动态分配内存。 堆栈段 用于存放函数的参数,返回地址,调用函数的栈基址以及局部非静态变量。 进程的环境变量和参数,2020/9/22,缓冲溢出攻击的原理(续),2. 缓冲区溢出可能发生的位置(续) 堆栈(stack) 堆(heap) 数据段(da

      6、ta) BSS段,2020/9/22,缓冲溢出攻击的原理(续),2. 缓冲区溢出可能发生的位置(续) 堆栈(stack) 堆(heap) 数据段(data) BSS段,2020/9/22,被调函数堆栈布局,堆栈采用后进先出(LIFO)的方式管理数据,这种方式是实现函数嵌套调用的关键。,Previous stack frames,Function arguments,Return address,Previous frame pointer,Local variables,High address,Low address,从右到左的顺序,指令寄存器(EIP),基址寄存器(EBP),局部非静态变量,2020/9/22,缓冲溢出攻击的原理(续),基于堆栈的缓冲区溢出,void function(char *str) char buffer4; strcpy(buffer, str); void main (int argc, char *argv) char large_string8; int i; for(i=0; i8; i+) large_bufferi=A function(lar

      7、ge_string); ,2020/9/22,Example (contd.),Large_string,上一个栈帧地址,返回地址,argv,内存低端,内存高端,argc,ESP,main函数栈帧,void main (int argc, char *argv),i,2020/9/22,缓冲溢出攻击的原理(续),基于堆栈的缓冲区溢出,void function(char *str) char buffer4; strcpy(buffer, str); void main (int argc, char *argv) char large_string8; int i; for(i=0; i8; i+) large_bufferi=A function(large_string); ,2020/9/22,Example (contd.),Large_string,上一个栈帧地址,返回地址,argv,内存低端,内存高端,argc,ESP,Main函数的栈帧,i,*str,返回地址,main函数的栈帧地址,buffer,function函数栈帧,function函数 被调用,调用 strcp

      8、y之前,void function (char *str),2020/9/22,Example (contd.),Large_string,上一个栈帧地址,返回地址,argv,内存低端,内存高端,argc,ESP,Main函数的栈帧,i,*str,返回地址,AAAA,AAAA,function函数栈帧,function函数 被调用,调用 strcpy之后,void function (char *str),2020/9/22,缓冲溢出攻击的原理(续),基于堆栈的缓冲区溢出的潜在危害 改写返回地址 改写调用函数栈的栈帧地址,2020/9/22,缓冲溢出攻击的原理(续),基于堆栈的缓冲区溢出的潜在危害(续) 改写函数指针 改写虚函数指针 改写异常处理指针 改写数据指针,void BadCode(char * string) void (*p)() = .; char buff100; strcpy(buff, string); p(); ,2020/9/22,缓冲溢出攻击的原理(续),2. 缓冲区溢出可能发生的位置(续) 堆栈(stack) 堆(heap) 数据段(data) BSS段,2

      9、020/9/22,缓冲溢出攻击的原理(续),基于堆的缓冲区溢出 Heap is a contiguous memory used to dynamically allocate space where the size will be known only during the execution of the code. 在Linux中,堆空间按照Doug Lea算法实现动态分配。在C程序中,标准库函数malloc()/free()用于从堆中动态申请/释放块;对于C+程序,相应函数为new/delete。,2020/9/22,缓冲溢出攻击的原理(续),基于堆的缓冲区溢出(续),void main(int argc, char *argv) char *buf1 = (char *) malloc(16); char *buf2 = (char *) malloc(16); strcpy(buf1,”AAAAAAAAAAAAAAA”); strcpy(buf2, argv1); ,2020/9/22,基于堆的缓冲区溢出,正常输入 Prompt:BB.BBB (total 15 Bs) 产生溢出的输入 Prompt:BB.BBB (total 40 Bs),(a) heap layout without overflow,2020/9/22,基于堆的缓冲区溢出攻击举例,1996年BSDI crontab被发现存在基于堆的缓冲区溢出隐患,攻击者可以通过输入一个长文件名溢出在堆上的缓冲区,溢出数据改写的区域是保存有用户名、密码、uid, gid等信息的区域。,2020/9/22,缓冲溢出攻击的原理(续),2. 缓冲区溢出可能发生的位置(续) 堆栈(stack) 堆(heap) 数据段(data) BSS段,2020/9/22,缓冲溢出攻击的原理(续),基于数据段的缓冲区溢出,void Overflow_Data(char* input) static char buf4=”CCCC”; int i; for (i = 0; i 12 ; i+) bufi = A; ,2020/9/22,缓冲溢出攻击的原理(续),2. 缓冲区溢出可能发生的位置(续) 堆栈(sta

      《第七章计算机系统安全(缓冲区溢出)精编版》由会员ahu****ng1分享,可在线阅读,更多相关《第七章计算机系统安全(缓冲区溢出)精编版》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.