网络安全5-缓冲区溢出攻击
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
攻击UNIX
第5章 第3节
UNIX操作系统简介
FreeBSD文件系统的路径组织结构
/ 根文件系统,用于存储系统内核,启动管理和其他文件系统的装载点。 /bin 系统启动时需要的一些通用可执行程序。 /cdrom 光盘驱动器的装载点。 /compat 与系统兼容有关的内容,如系统模拟等。 /dev 设备入口点。在UNIX系统上,每个设备都作为一个文件来看待,这里放着 所有系统能够用到的各个设备 /etc 各种配置文件。非常重要的一个目录,所有的配置文件(可以看成是 WINDOWS的注册表)包括用户密码文档等存放在这里 /mnt 软盘等其他文件系统的装载点。 /modules 内核可装载模块。
16个A 11
第5章 第2节
缓冲区溢出程序原理及要素
为了执行一段精心准备的程序,需要4个步 骤
准备一段SHELLCODE 申请一个缓冲区,并将机器码填入缓冲区的低
端 估算机器码在堆栈中的起始位置,并将这个位
置写入缓冲区的高端 将这个缓冲区作为系统一个有着缓冲区溢出错
误的程序的一个入口参数,并执行这个有错误 的程序
5
第5章 第1节
缓冲区溢出攻击的原理
Morris
1988年,美国康奈尔大学的计算机科学系研究 生、23岁的莫里斯利用Unix fingered程序不限 制输入长度的漏洞,输入512个字符后使缓冲器 溢出,同时编写一段特别大的恶意程序能以root (根)身份执行,并感染到其他机器上。它造 成全世界6000多台网络服务器瘫痪
6
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
众所周知,C语言不进行数组的边界检查 在许多C语言实现的应用程序中,都假定缓冲区
的长度是足够的,即它的长度肯定大于要拷贝 的字符串的长度
事实并非如此
7
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
程序段 数据段 堆栈
网络安全
罗敏
第4章 拒绝服务攻击 重点回顾
拒绝服务攻击概述 拒绝服务攻击分类 服务端口攻击 电子邮件轰炸 分布式拒绝服务攻击DDoS
2
第5章 缓冲区溢出攻击
本章介绍缓冲区溢出攻击的原理,通过具体实 例分析攻击UNIX系统和攻击WINDOWS系统 的特点和方法。
3
第5章 缓冲区溢出攻击
/usr/bin 与系统启动无关的标准应用程序。 /usr/sbin 系统启动时不需要使用的一些系统管理程序。 /usr/games 游戏。 /usr/home 用户目录。存放各个用户自己的文件。
15
攻击UNIX
第5章 第3节
UNIX操作系统简介
文件系统的路径组织结构
程序
/usr/include 程序需要的头文件。 /usr/lib 程序需要的库文件。 /usr/libexec 一些不由用户直接运行的执行程序,如ftpd telnetd 等服务
pop ebp
ret 4
9
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
例2
void function(char *str) {
char buffer[16]; strcpy(buffer,str); }
void main()
{
int t; char buffer[128]; for(i=0;i<127;i++)
/usr/man 帮助文件 /usr/X11R6 X-Windows系统 /usr/X11R6/bin 可执行的X-Windows程序 /usr/X11R6/include X-Windows程序的头文件。 /usr/X11R6/lib X-Windows程序的库文件。 /usr/X11R6/man X-Windows程序的帮助文件。
16
攻击UNIX
第5章 第3节
UNIX操作系统简介
文件系统的路径组织结构
/usr/share 各种共享的只读文件,大多数是一些系统信息,文档,包括 有FreeBSD手册等。
/usr/local 第三个子文件系统,不属于FreeBSD一部分的其他程序。 /var 存储经常发生变化的文件,如邮件,日志等。
5.1 缓冲区溢出攻击的原理 5.2 缓冲区溢出程序的原理及要素 5.3 攻击UNIX 5.4 攻击WINDOWS
4
第5章 第1节
缓冲区溢出攻击的原理
定义
缓冲区溢出攻击是一种通过往程序的缓冲区写 超出其长度的内容,造成缓冲区溢出,从而破 坏程序的堆栈,使程序转而执行其他预设指令, 以达到攻击目的的攻击方法
12
第5章 第2节
缓冲区溢出程序原理及要素
关键技术
在程序的地址空间安排适当的代码 将控制程序转移到攻击代码的方式
Function Pointers Activation Records Longjmp buffers 植入码和流程控制
可执行的地址空间
代码段/数据段/堆栈段
JVM
8
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
例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
buffer[i]='A';
buffer[127]=0;
function(buffer);
printf("This is a test\n");
}
10
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
例2
压入堆栈中传递的参数
A…A
返回地址 少量存储单元 Buffer 16字节空间
0x41414141 ….
14
攻击UNIX
第5章 第3节
UNIX操作系统简介
文件系统的路径组织结构
/proc 进程文件系统,存储指向当前活动进程的虚拟内存的伪文件。 /root root用户的工作目录。 /sbin 系统可执行文件。 /stand 独立执行的程序,sysinstall就在这个目录下。在安装配置系统时用到 /usr 第二个文件系统。基本上是和系统核心无关但又属于操作系统的一部分的一 个目录,大多数的应用程序,还有各用户的私有资料存放在这个子系统
攻击UNIX
第5章 第3节
UNIX操作系统简介
FreeBSD文件系统的路径组织结构
/ 根文件系统,用于存储系统内核,启动管理和其他文件系统的装载点。 /bin 系统启动时需要的一些通用可执行程序。 /cdrom 光盘驱动器的装载点。 /compat 与系统兼容有关的内容,如系统模拟等。 /dev 设备入口点。在UNIX系统上,每个设备都作为一个文件来看待,这里放着 所有系统能够用到的各个设备 /etc 各种配置文件。非常重要的一个目录,所有的配置文件(可以看成是 WINDOWS的注册表)包括用户密码文档等存放在这里 /mnt 软盘等其他文件系统的装载点。 /modules 内核可装载模块。
16个A 11
第5章 第2节
缓冲区溢出程序原理及要素
为了执行一段精心准备的程序,需要4个步 骤
准备一段SHELLCODE 申请一个缓冲区,并将机器码填入缓冲区的低
端 估算机器码在堆栈中的起始位置,并将这个位
置写入缓冲区的高端 将这个缓冲区作为系统一个有着缓冲区溢出错
误的程序的一个入口参数,并执行这个有错误 的程序
5
第5章 第1节
缓冲区溢出攻击的原理
Morris
1988年,美国康奈尔大学的计算机科学系研究 生、23岁的莫里斯利用Unix fingered程序不限 制输入长度的漏洞,输入512个字符后使缓冲器 溢出,同时编写一段特别大的恶意程序能以root (根)身份执行,并感染到其他机器上。它造 成全世界6000多台网络服务器瘫痪
6
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
众所周知,C语言不进行数组的边界检查 在许多C语言实现的应用程序中,都假定缓冲区
的长度是足够的,即它的长度肯定大于要拷贝 的字符串的长度
事实并非如此
7
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
程序段 数据段 堆栈
网络安全
罗敏
第4章 拒绝服务攻击 重点回顾
拒绝服务攻击概述 拒绝服务攻击分类 服务端口攻击 电子邮件轰炸 分布式拒绝服务攻击DDoS
2
第5章 缓冲区溢出攻击
本章介绍缓冲区溢出攻击的原理,通过具体实 例分析攻击UNIX系统和攻击WINDOWS系统 的特点和方法。
3
第5章 缓冲区溢出攻击
/usr/bin 与系统启动无关的标准应用程序。 /usr/sbin 系统启动时不需要使用的一些系统管理程序。 /usr/games 游戏。 /usr/home 用户目录。存放各个用户自己的文件。
15
攻击UNIX
第5章 第3节
UNIX操作系统简介
文件系统的路径组织结构
程序
/usr/include 程序需要的头文件。 /usr/lib 程序需要的库文件。 /usr/libexec 一些不由用户直接运行的执行程序,如ftpd telnetd 等服务
pop ebp
ret 4
9
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
例2
void function(char *str) {
char buffer[16]; strcpy(buffer,str); }
void main()
{
int t; char buffer[128]; for(i=0;i<127;i++)
/usr/man 帮助文件 /usr/X11R6 X-Windows系统 /usr/X11R6/bin 可执行的X-Windows程序 /usr/X11R6/include X-Windows程序的头文件。 /usr/X11R6/lib X-Windows程序的库文件。 /usr/X11R6/man X-Windows程序的帮助文件。
16
攻击UNIX
第5章 第3节
UNIX操作系统简介
文件系统的路径组织结构
/usr/share 各种共享的只读文件,大多数是一些系统信息,文档,包括 有FreeBSD手册等。
/usr/local 第三个子文件系统,不属于FreeBSD一部分的其他程序。 /var 存储经常发生变化的文件,如邮件,日志等。
5.1 缓冲区溢出攻击的原理 5.2 缓冲区溢出程序的原理及要素 5.3 攻击UNIX 5.4 攻击WINDOWS
4
第5章 第1节
缓冲区溢出攻击的原理
定义
缓冲区溢出攻击是一种通过往程序的缓冲区写 超出其长度的内容,造成缓冲区溢出,从而破 坏程序的堆栈,使程序转而执行其他预设指令, 以达到攻击目的的攻击方法
12
第5章 第2节
缓冲区溢出程序原理及要素
关键技术
在程序的地址空间安排适当的代码 将控制程序转移到攻击代码的方式
Function Pointers Activation Records Longjmp buffers 植入码和流程控制
可执行的地址空间
代码段/数据段/堆栈段
JVM
8
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
例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
buffer[i]='A';
buffer[127]=0;
function(buffer);
printf("This is a test\n");
}
10
第5章 第2节
缓冲区溢出程序原理及要素
缓冲区溢出程序的原理
例2
压入堆栈中传递的参数
A…A
返回地址 少量存储单元 Buffer 16字节空间
0x41414141 ….
14
攻击UNIX
第5章 第3节
UNIX操作系统简介
文件系统的路径组织结构
/proc 进程文件系统,存储指向当前活动进程的虚拟内存的伪文件。 /root root用户的工作目录。 /sbin 系统可执行文件。 /stand 独立执行的程序,sysinstall就在这个目录下。在安装配置系统时用到 /usr 第二个文件系统。基本上是和系统核心无关但又属于操作系统的一部分的一 个目录,大多数的应用程序,还有各用户的私有资料存放在这个子系统