网络安全第六讲教案分析.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统的Shell 操作系统中用户与操作系统的交互方式(通过命令行的方式) Linux中叫做“Shell”,一般为“/bin/sh” Windows中称作“命令提示符”,为“cmd.exe” 因此ShellCode一般在操作系统Shell中运行命令 如:文件操作、帐号操作等 缓冲区溢出程序原理及要素 关键技术 在程序的地址空间安排适当的代码(ShellCode的编写) 将控制程序转移到攻击代码的方式 Function Pointers Overwrite(覆盖函数指针) Activation Records(覆盖函数调用的返回地址) Longjmp buffers(利用跳转指令) 植入码和流程控制(覆盖函数栈) 可执行的地址空间 代码段/数据段/堆栈段 SHELLCODE的定位 在1999年之前,很多人提出了不少方法来定位ShellCode,但都不太精确。 例如, NNNNNNSSSSSSSSSSSRRRRRRRR型。 适合于大缓冲区,“N”代表空指令,在实际运行中,程序将什么也不做,而是一直沿着这些NOPS运行下去,直到遇到不是NOPS的指令再执行之;“S”代表ShellCode;“R”代表覆盖的返回地址,思路是把返回地址R覆盖为NOPS的大概位置,这样就会跳到Nop中,然后继续执行,直到我们的ShellCode中。 SHELLCODE的定位 RRRRRRNNNNNSSSSS型。思路是用大量的“R”填满整个缓冲区,然后大量的Nop,最后是ShellCode。这里,“R”往后跳到Nop中,再顺着往下执行就会到ShellCode中。但在Windows下,“R”中必定会含有0,这样,整个构造就会被截断,只能用于Unix中。 SHELLCODE的定位 随着技术的发展,1999年Dark Spyrit:提出使用系统核心DLL中的Jmp ESP指令完成跳转,Phrack 55。 适用于Windows,因为Windows的系统核心dll包括kernel32.dll、user32.dll、gdi32.dll,这些dll一直位于内存中,而且对应于固定版本的Windows,它所加载的位置也是固定的。 如在Windows 2000 SP2下,地址0x77e0492b里的值正好就是 “FF E4”,“FF E4”就是JMP ESP指令的机器码。 SHELLCODE的定位 Windows下如何利用系统核心dll里的指令来完成跳转呢? 利用系统核心dll中的jmp esp地址来覆盖返回地址,而把ShellCode紧跟在后面,这样就可跳转到我们的ShellCode中,其利用格式是: NNNNNRSSSSS, N=Nop,S=ShellCode,R=jmp esp的地址。 思考,为什么用Jmp esp的地址覆盖返回地址就可以跳到后面的ShellCode中呢? SHELLCODE的定位 覆盖后的缓冲区如右图所示,‘N’表示NOP,原返回地址的地方覆盖成了JMP ESP的地址,接下去的‘S0’、‘S1’等表示ShellCode开始的0字节、1字节等。 SHELLCODE的定位 用具体的数字重复一下上述过程。‘FF E4’是JMP ESP的机器码,地址0x77e0492b里正好就是‘FF E4’。我们用0x77e0492b来覆盖返回地址,如右图所示。 SHELLCODE的定位 当程序返回时,执行Ret=Pop EIP,EIP就变成0x77e0492b,而ESP往下走,指向ShellCode的第一个字节中,如右图所示。 如何防御缓冲区溢出攻击? 检查程序源代码,特别是边界处理; 禁止运行栈空间的指令; 安全的C库; 编译技术 RAD(Return Address Defender) StackGuard 本章小结 缓冲区溢出攻击的基本原理、方法 缓冲区溢出程序的原理及要素 攻击UNIX 攻击WINDOWS * * * * * * Function Pointers 溢出函数指针所在空间,从而改变调用函数指针时的流程。 5 第五章 缓冲区溢出攻击 5.1 缓冲区溢出程序的原理及要素 5.2 攻击UNIX 5.3 缓冲区溢出攻击概述 5 5.4 攻击Windows 缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。 5.1 缓冲区溢出攻击概述 缓冲区溢出攻击有多种英文名称:buffer overflow,buffer overrun,smash the stack,trash the stack,scribble the stack,mangle the s

文档评论(0)

w5544434 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档