网络安全5-缓冲区溢出攻击课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《网络安全5-缓冲区溢出攻击课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络安全 缓冲区 溢出 攻击 课件
- 资源描述:
-
1、网络安全罗罗 敏敏 2第第4章章 拒绝服务攻击拒绝服务攻击 重点回顾重点回顾l拒绝服务攻击概述l拒绝服务攻击分类l服务端口攻击l电子邮件轰炸l分布式拒绝服务攻击DDoS3第第5章章 缓冲区溢出攻击缓冲区溢出攻击l本章介绍缓冲区溢出攻击的原理,通过具体实例分析攻击UNIX系统和攻击WINDOWS系统的特点和方法。 4第第5章章 缓冲区溢出攻击缓冲区溢出攻击l5.1 缓冲区溢出攻击的原理l5.2 缓冲区溢出程序的原理及要素l5.3 攻击UNIXl5.4 攻击WINDOWS5 缓冲区溢出攻击的原理缓冲区溢出攻击的原理l定义l缓冲区溢出攻击是一种通过往程序的缓冲区写超出其长度的内容,造成缓冲区溢出,从
2、而破坏程序的堆栈,使程序转而执行其他预设指令,以达到攻击目的的攻击方法 第第5 5章章 第第1 1节节6 缓冲区溢出攻击的原理缓冲区溢出攻击的原理lMorrisl1988年,美国康奈尔大学的计算机科学系研究生、23岁的莫里斯利用Unix fingered程序不限制输入长度的漏洞,输入512个字符后使缓冲器溢出,同时编写一段特别大的恶意程序能以root(根)身份执行,并感染到其他机器上。它造成全世界6000多台网络服务器瘫痪 第第5 5章章 第第1 1节节7 缓冲区溢出程序原理及要素缓冲区溢出程序原理及要素l缓冲区溢出程序的原理 l众所周知,C语言不进行数组的边界检查 l在许多C语言实现的应用程
3、序中,都假定缓冲区的长度是足够的,即它的长度肯定大于要拷贝的字符串的长度 事实并非如此事实并非如此第第5 5章章 第第2 2节节8 缓冲区溢出程序原理及要素缓冲区溢出程序原理及要素l缓冲区溢出程序的原理 程 序 段 数 据 段堆 栈第第5 5章章 第第2 2节节9 缓冲区溢出程序原理及要素缓冲区溢出程序原理及要素l缓冲区溢出程序的原理l例 1 void proc(int i) int local;local=i;void main()proc(1);main:push1call procproc:pushebpmovebp,espsubesp,4moveax,ebp+08movebp-4,ea
4、xaddesp,4popebpret4第第5 5章章 第第2 2节节10 缓冲区溢出程序原理及要素缓冲区溢出程序原理及要素l缓冲区溢出程序的原理l例 2void function(char void function(char * *str)str) char buffer16; char buffer16; strcpy(buffer,str); strcpy(buffer,str); void main()void main() int t; int t; char buffer128; char buffer128; for(i=0;i127;i+) for(i=0;i127;i+) b
5、ufferi=A bufferi=A; buffer127=0;buffer127=0; function(buffer); function(buffer); printf(This is a testn); printf(This is a testn); 第第5 5章章 第第2 2节节11 缓冲区溢出程序原理及要素缓冲区溢出程序原理及要素l缓冲区溢出程序的原理l例 2压入堆栈中传递的参数返回地址少量存储单元Buffer 16字节空间A A0 x41414141.16个A第第5 5章章 第第2 2节节12 缓冲区溢出程序原理及要素缓冲区溢出程序原理及要素l为了执行一段精心准备的程序,需要4
6、个步骤l准备一段SHELLCODEl申请一个缓冲区,并将机器码填入缓冲区的低端l估算机器码在堆栈中的起始位置,并将这个位置写入缓冲区的高端l将这个缓冲区作为系统一个有着缓冲区溢出错误的程序的一个入口参数,并执行这个有错误的程序 第第5 5章章 第第2 2节节13 缓冲区溢出程序原理及要素缓冲区溢出程序原理及要素l关键技术l在程序的地址空间安排适当的代码 l将控制程序转移到攻击代码的方式lFunction Pointers lActivation Records lLongjmp buffers l植入码和流程控制 l可执行的地址空间l代码段/数据段/堆栈段lJVM第第5 5章章 第第2 2节节
7、14 攻击攻击UNIXlUNIX操作系统简介 lFreeBSD文件系统的路径组织结构 / 根文件系统,用于存储系统内核,启动管理和其他文件系统的装载点。/bin 系统启动时需要的一些通用可执行程序。/cdrom 光盘驱动器的装载点。/compat 与系统兼容有关的内容,如系统模拟等。/dev 设备入口点。在UNIX系统上,每个设备都作为一个文件来看待,这里放着所有系统能够用到的各个设备/etc 各种配置文件。非常重要的一个目录,所有的配置文件(可以看成是WINDOWS的注册表)包括用户密码文档等存放在这里/mnt 软盘等其他文件系统的装载点。/modules 内核可装载模块。第第5 5章章 第
8、第3 3节节15 攻击攻击UNIXlUNIX操作系统简介 l文件系统的路径组织结构/proc 进程文件系统,存储指向当前活动进程的虚拟内存的伪文件。/root root用户的工作目录。/sbin 系统可执行文件。/stand 独立执行的程序,sysinstall就在这个目录下。在安装配置系统时用到/usr 第二个文件系统。基本上是和系统核心无关但又属于操作系统的一部分的一个目录,大多数的应用程序,还有各用户的私有资料存放在这个子系统/usr/bin 与系统启动无关的标准应用程序。/usr/sbin 系统启动时不需要使用的一些系统管理程序。 /usr/games 游戏。/usr/home 用户目
9、录。存放各个用户自己的文件。第第5 5章章 第第3 3节节16 攻击攻击UNIXlUNIX操作系统简介 l文件系统的路径组织结构/usr/include 程序需要的头文件。/usr/lib 程序需要的库文件。/usr/libexec 一些不由用户直接运行的执行程序,如ftpd telnetd 等服务程序 /usr/man 帮助文件 /usr/X11R6 X-Windows系统/usr/X11R6/bin 可执行的X-Windows程序/usr/X11R6/include X-Windows程序的头文件。/usr/X11R6/lib X-Windows程序的库文件。/usr/X11R6/man
10、X-Windows程序的帮助文件。第第5 5章章 第第3 3节节17 攻击攻击UNIXlUNIX操作系统简介 l文件系统的路径组织结构/usr/share 各种共享的只读文件,大多数是一些系统信息,文档,包括有FreeBSD手册等。/usr/local 第三个子文件系统,不属于FreeBSD一部分的其他程序。 /var 存储经常发生变化的文件,如邮件,日志等。/var/log 系统日志。/var/mail 发给用户的信件。/var/spool 缓冲数据,如打印数据等。/var/tmp 临时文件。第第5 5章章 第第3 3节节18 攻击攻击UNIXlUNIX操作系统简介 lUNIX系统的文件属性
11、和存取权限 #ls -la# -rw-rw-rw- 1 root wheel 170 jan 7 19:46 mnk# -rw-r- 1 root wheel 18204 jan 8 20:34 nmap.tar.gz# -rwxr-xr- 1 candy user 1204 may 23 13:00 mysh.sh# drwx- 2 netdemon user 512 may 23 14:23 mydoc|-1-|-2-|-3-|-4-|-5-|-6-|-7-|文件属性/文件数量/所有者/所属组/文件大小/文件修改时间/文件名第第5 5章章 第第3 3节节19 攻击攻击UNIXlUNIX操作
12、系统简介 l核与Shell的交互 l启动l登录l执行命令l退出第第5 5章章 第第3 3节节20 攻击攻击UNIXlUNIX操作系统简介 lShell的功能和特点 l命令行解释l使用保留字l使用Shell元字符(通配符)l可处理程序命令l使用输入输出重定向和管道l维护变量l运行环境控制l支持Shell编程第第5 5章章 第第3 3节节21 攻击攻击UNIXl攻击UNIX实例分析 lShell Code 的编写 void main() char *name2;name0 = /bin/sh;name1 = NULL;execve(name0, name, NULL);第第5 5章章 第第3 3节
13、节22Dump of assembler code for function main:0 x8000130 : pushl %ebp0 x8000131 :movl %esp,%ebp0 x8000133 : subl $0 x8,%esp0 x8000136 : movl $0 x80027b8,0 xfffffff8(%ebp)0 x800013d : movl $0 x0,0 xfffffffc(%ebp)0 x8000144 : pushl $0 x00 x8000146 : leal 0 xfffffff8(%ebp),%eax0 x8000149 : pushl %eax0 x8
14、00014a : movl 0 xfffffff8(%ebp),%eax0 x800014d : pushl %eax0 x800014e : call 0 x80002bc 0 x8000153 : addl $0 xc,%esp0 x8000156 : movl %ebp,%esp0 x8000158 : popl %ebp0 x8000159 : ret第第5 5章章 第第3 3节节23Dump of assembler code for function _execve:0 x80002bc : pushl %ebp0 x80002bd : movl %esp,%ebp0 x80002
15、bf : pushl %ebx0 x80002c0 : movl $0 xb,%eax0 x80002c5 : movl 0 x8(%ebp),%ebx0 x80002c8 : movl 0 xc(%ebp),%ecx0 x80002cb : movl 0 x10(%ebp),%edx0 x80002ce : int $0 x800 x80002d0 : movl %eax,%edx0 x80002d2 : testl %edx,%edx0 x80002d4 : jnl 0 x80002e6 第第5 5章章 第第3 3节节240 x80002d6 : negl %edx0 x80002d8 :
16、 pushl %edx0 x80002d9 : call 0 x8001a34 0 x80002de : popl %edx0 x80002df : movl %edx,(%eax)0 x80002e1 : movl $0 xffffffff,%eax0 x80002e6 : popl %ebx0 x80002e7 : movl %ebp,%esp0 x80002e9 : popl %ebp0 x80002ea : ret0 x80002eb : nop第第5 5章章 第第3 3节节25 攻击攻击UNIXl攻击UNIX实例分析 lShell Code 的编写 l汇编语言程序leal strin
17、g,string_addrmovl $0 x0,null_addrmovl $0 xb,%eaxmovl string_addr,%ebxleal string_addr,%ecxleal null_string,%edxint $0 x80stringdb/bin/sh,0string_addrdd0null_addrdd0第第5 5章章 第第3 3节节26 攻击攻击UNIXl攻击UNIX实例分析 lShell Code 的编写 l汇编语言程序l相对偏移jmp 0 x20popl esimovb $0 x0,0 x7(%esi)movl %esi,0 x8(%esi)movl $0 x0,0
18、 xC(%esi)movl $0 xb,%eaxmovl %esi,%ebxleal 0 x8(%esi),%ecxleal 0 xC(%esi),%edxint $0 x80call -0 x25string db /bin/sh,0 string_addr dd 0null_addr dd 0 第第5 5章章 第第3 3节节27 攻击攻击UNIXl攻击UNIX实例分析 lShell Code 的编写 l汇编语言程序l相对偏移 l消除0void main() _asm_(jmp 0 x18/ # 2 bytespopl %esi/ # 1 bytemovl %esi,0 x8(%esi)/
展开阅读全文