网络攻击与防范实验报告-缓冲区溢出
网络攻击与防范实验报告-缓冲区溢出
网络攻击与防范实验报告姓名:____王小北___ 学号:___ 201411111111111111 _ 所在班级:实验名称:缓冲区溢出实验日期:2014年11月7日指导老师:实验评分:验收评语:实验目的:1.掌握缓冲区溢出的原理2.掌握常用的缓冲区溢出方法3.理解缓冲区溢出的危害性4.掌握防范和避免缓冲区溢出攻击的方法实验工具:溢出对象:war-ftp 1.65 ( 自己分析)调试工具:Debugging Tools for Windows 中(网上有下载)实验环境:虚拟机vmware workstation 10 Windows XP sp1高级语言编程:Socket编程VS2010实验步骤:原理:war-ftp 1.65版本的一个漏洞,即向服务器发送超过480字节的用户名可以触发漏洞(即使用命令USER longString\r\n),溢出之后ESP内容包含了longString中的部分内容。
过程:攻击者向war-ftp发送多余480字节的用户名,触发war-ftpd的漏洞,产生缓冲区溢出,此时war-ftpd将出现错误。
接下来通过PatterntTool工具构造的一串不重复字符串(1000个不同字符串,存入test.txt中),通过其时eip的内容,利用patternoffset.pl工具来确定RET的位置。
在网上寻找一段具有攻击效果的Shellcode,作为所发送的war-ftpd用户名。
其最主要是通过上边所确定的RET的位置,将“JMP ESP”指令的地址(0x7ffa4512)传递到RET 位置,最终目的是将指令指针转移到esp的位置。
同时我们可以通过确定esp的位置,从而在构造字符串时直接将shellcode代码加在在用户名上,使其能直接被放入esp所指的位置,即达到将其放入esp指向的缓冲区的目的。
通过发送构造的用户名,导致war-ftpd发生缓冲区溢出。
Shellcode的功能是建立一个新用户hack,可以用过net user命令来查看用户,最后发现攻击成功。
缓冲区溢出攻击
缓冲区溢出攻击网络安全实验报告实验名称:缓冲区溢出攻击姓名:王嘉琳学号:090342228指导教师:付宇一、实验目的1.了解缓冲区溢出攻击的现象2.掌握使用缓冲区溢出攻击工具的方法二、实验环境系统环境:Windows网络环境:交换网络结构实验工具:ms06035漏洞利用工具、ms08025漏洞利用工具、ms06063补丁、ms08025补丁三、实验实际完成内容及结果分析利用ms06035漏洞进行攻击1.进入“ms06035漏洞利用工具”目录主机A单击工具栏中“ms06035工具”按钮,进入“ms06035漏洞利用工具”工作目录。
2.查看当前目录内容主机A用dir命令查看当前目录中的内容,如下图所示:上图中标注的“ms06035.exe”即为ms06035漏洞攻击工具。
3.查看“ms06035工具”的使用方法主机A执行“ms06035.exe”命令,提示ms06035漏洞利用工具的使用方法,如下图所示:4.使用“ms06035工具”进行攻击主机A执行“ms06035.exe 主机B的ip445”命令,发起对主机B的攻击。
5.主机B观察被攻击现象主机B被攻击后出现蓝屏死机的现象(实验结束,主机B用虚拟机“快照X”恢复实验环境)。
利用ms08025漏洞进行攻击以下步骤两主机互相攻击对方,操作相同,故以主机A为例说明实验步骤。
「注」将“C:\ExpNIS\NetAD-Lab\Tools\OverFlow\RemoteOverflow”目录下的“ms08025.exe”复制到D盘的根目录下,以便实验下一步进行。
1.telnet登录系统(1)主机A在命令行下使用telnet登录同组主机,登录账号为“student”,密码为“123456”,登录成功如下图。
(2)主机A依次输入“d:”|“dir”查看同组主机D盘根目录,“ms08025.exe”即为实验工具。
2.使用系统命令添加用户主机A使用“net user student1 /add”命令来试添加一个用户“student1”,执行该命令,出现“发生系统错误5,拒绝访问”的提示,如下图所示:请解释出现上述现象的原因:当前用户为普通用户,普通用户没有添加用户的权限。
缓冲区溢出攻击与防范实验报告
缓冲区溢出攻击与防范实验报告——计算机网络(2)班——V200748045黄香娥1·缓冲区溢出的概念:缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
2·缓冲区溢出的危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。
而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。
3·缓冲区溢出原理:由一个小程序来看://test.c#include "stdio.h"#include "stdlib.h"#include "string.h"void overflow(void){char buf[10];strcpy(buf,"0123456789123456789");}//end overflowint main(void){overflow();return 0;}//end main按F11进入"Step into"调试模式,如下:按F11跟踪进入overflow,让程序停在6,现在再看一下几个主要参数:esp=0x0012ff30,eip发生了变化,其它未变。
缓冲区溢出攻击与防范实验报告
实验六报告如图2所示的Windows 2000系统(虚拟机环境下)的计算机。
显然这2台计算机处于同一个网段中,可以相互通讯,win10系统用作攻击机,下面将在此系统上运行Metasploit进行渗透测试,而Windows 2000系统都是本次任务中需要进行渗透入侵的靶机,保持安装后的默认状态,没有打额外的系统安全补丁。
图1 win10攻击机图2 Windows 2000 靶机2、扫描靶机在正式开始渗透之前,应该对靶机进行扫描探测工作,搞清楚渗透目标的系统类型、开放的端口服务、可能存在的安全漏洞等。
在win10攻击机上运行metasploit console,即可进入Metasploit环境。
现在可以利用MSF框架中集成的Nmap扫描器对渗透测试目标进行扫描,如图3所示,获取了靶机的开放服务和操作系统类型等信息。
图3 windows 2000扫描结果利用扫描器的脚步插件,还有可能直接探测出目标系统的安全漏洞,例如如图4所示,Nmap 利用smb-check-vulns插件扫描探测出了Windows 2000靶机存在MS08_067漏洞,命令执行如下:nmap -script= 。
namap扫描的结果里报告发现MS08-067:DISABLED。
这是在暗示我们或许能够对这台主机进行渗透攻击,然后我们在Metasloit里面找到此漏洞的攻击模块,并尝试攻击目标机器。
MS08-067是一个对操作系统版本依赖非常高的漏洞,所以在这里,我们只自动payload指定一下目标就可以确保触发正确的溢出代码。
图4漏洞扫描结果3利用MS08_067漏洞渗透入侵MS08-067漏洞的全称为“Windows Server服务RPC请求缓冲区溢出漏洞”,如果用户在受影响的系统上收到特制的RPC 请求,则该漏洞可能允许远程执行代码。
在Microsoft Windows 2000Windows XP 和Windows Server 2003 系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码,此漏洞可用于进行蠕虫攻击,目前已经有利用该漏洞的蠕虫病毒。
(完整word版)缓冲区溢出攻击实验报告
缓冲区溢出攻击实验报告班级:10网工三班学生姓名:谢昊天学号:1215134046实验目的和要求:1、掌握缓冲区溢出的原理;2、了解缓冲区溢出常见的攻击方法和攻击工具;实验内容与分析设计:1、利用RPC漏洞建立超级用户利用工具scanms.exe文件检测RPC漏洞,利用工具软件attack.exe对172.18.25.109进行攻击。
攻击的结果将在对方计算机上建立一个具有管理员权限的用户,并终止了对方的RPC服务。
2、利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。
3、利用WebDav远程溢出使用工具软件nc.exe和webdavx3.exe远程溢出。
实验步骤与调试过程:1.RPC漏洞出。
首先调用RPC(Remote Procedure Call)。
当系统启动的时候,自动加载RPC服务。
可以在服务列表中看到系统的RPC服务。
利用RPC漏洞建立超级用户。
首先,把scanms.exe文件拷贝到C盘跟目录下,检查地址段172.18.25.109到172.18.25.11。
点击开始>运行>在运行中输入cmd>确定。
进入DOs模式、在C盘根目录下输入scanms.exe 172.18.25.109-172.18.25.110,回车。
检查漏洞。
2.检查缓冲区溢出漏洞。
利用工具软件attack.exe对172.18.25.109进行攻击。
在进入DOC 模式、在C盘根目录下输入acctack.exe 172.18.25.109,回车。
3,利用软件Snake IIS溢出工具可以让对方的IIS溢出。
进入IIS溢出工具软件的主界面.IP:172.18.25.109 PORT:80 监听端口为813单击IDQ溢出。
出现攻击成功地提示对话框。
4.利用工具软件nc.exe连接到该端口。
进入DOs模式,在C盘根目录下输入nc.exe -vv 172.18.25.109 813 回车。
网络安全实验报告 - 缓冲区溢出攻击
一实验名称利用跳转指令实现缓冲区溢出定位参数地址实现缓冲区溢出二实验目的1.熟练掌握缓冲区溢出原理2.利用jmp esp指令实现缓冲区溢出3.熟练掌握缓冲区溢出原理4.利用定位参数地址实现缓冲区溢出三实验步骤利用跳转指令实现缓冲区溢出1.编写前导码程序中提供了一个超长前导码,对程序进行调试来确定实际需要的前导码长度在图中可以看出,0x49484746四字节覆盖了ret返回地址2.查找jmp esp指令地址运行FindJmpesp工具,选取一个地址追加到shellcode尾(追加填加地址时注意数组高字节对应地址高位),所选jmp esp指令地址是0x77e424da跟踪调试程序,确定在memcpy执行返回时jmp esp指令是否被执行从图看出,在jmp esp指令执行完毕后,指令指针紧接着执行了3个空指令,而空指令是追加在shellcode尾部的3.生成实现弹出对话框的指令码MessageBoxA函数的绝对内存地址,该地址为0x77E10000+0x0003D8DE=0x77E4D8DE函数ExitProcess的绝对内存地址0x7C800000+0x00013039=0x7C813039利用反汇编功能获取代码字节,将代码字节以十六进制数据形式继续追加到shellcode尾。
重新编译执行。
定位参数实现缓冲区溢出1.进入工程2.生成shellcode功能体(1)首先设置OverFlowClient项目为启动项。
(2)使用Depends工具打开FindShellBase.exe文件定位上述内存地址kernel32.dll 0x7C800000LoadlibraryA 0x7C800000+0x00001E60=7C801E60SHELL32.DLL 0x7CA10000shellExecuteA 0x7CA10000+0x0008F6D4=0x7CA9F6D4(3)编译并生成OverFlowClient.exe,执行OverFlowClient.exe,确定系统是否新建了jlcss用户,并隶属Administrators组。
网络安全缓冲区溢出技术实验报告
网络实验报告一、实验目的及要求1、目的了解和掌握Win32平台缓冲区溢出原理;学会使用Win32平台Shellcode技术。
2、内容及要求以windows 2000 server虚拟机为测试对象,修改server.cpp和exploit.c,利用shellcode port bind给出的shellcode,远程获得CMD,并启动目标机器的ftp服务。
二、仪器用具计算机(分别装有windows server 2000和windows 7操作系统),本实验使用的是虚拟机Wmware8.0在同一台电脑上面安装两个操作系统。
三、实验方法与步骤在实验开始前,首先编写可能产生缓冲区溢出的程序(server.cpp)和测试程序(exploit.c)。
在server.cpp中能够产生缓冲区溢出的程序片段如下:void overflow(char * s,int size){char s1[50];printf("receive %d bytes",size);s[size]=0;strcpy(s1,s);}这两个程序的完整代码见附件。
由于本实验是在虚拟机环境下测试的,所以在开始实验前,分别记下两个系统的IP地址:运行server程序的系统IP地址为:192.168.209.131运行exploit程序的系统IP地址为:192.168.209.1实验的过程如下:1.在windows2000系统下分别编译server.cpp和exploit.c程序,详细过程如下:C:\test>cl server.cppC:\test>cl exploit.c编译完成后分别产生exploit.exe、exploit.obj、server.exe、server.obj截图如下图1所示:图 12.在windows2000系统中运行服务程序:server.cppC:\test>server.exe截图如下图2所示:图 23.将编译好的exploit程序拷贝到windows 7系统中来测试4.在windows 7系统中运行exploit.exe程序,如下D:\client\exploit.exe 192.168.209.131 8888截图如下图3所示:图3这样就可以获得目标主机的CMD了,接下来的任务是开启目标主机的FTP服务。
缓冲区溢出攻击与防范实验报告
缓冲区溢出攻击与防范实验报告——计算机网络(2)班——V200748045黄香娥1·缓冲区溢出的概念:缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
2·缓冲区溢出的危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。
而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。
3·缓冲区溢出原理:由一个小程序来看://test.c#include "stdio.h"#include "stdlib.h"#include "string.h"void overflow(void){char buf[10];strcpy(buf,"0123456789123456789");}//end overflowint main(void){overflow();return 0;}//end main按F11进入"Step into"调试模式,如下:按F11跟踪进入overflow,让程序停在6,现在再看一下几个主要参数:esp=0x0012ff30,eip发生了变化,其它未变。
缓冲区溢出攻击与防范实验报告
实验六报告图1 win10攻击机图2 Windows 2000 靶机2、扫描靶机在正式开始渗透之前,应该对靶机进行扫描探测工作,搞清楚渗透目标的系统类型、开放的端口服务、可能存在的安全漏洞等。
在win10攻击机上运行metasploit console,即可进入Metasploit环境。
现在可以利用MSF框架中集成的Nmap扫描器对渗透测试目标进行扫描,如图3所示,获取了靶机的开放服务和操作系统类型等信息。
图3 windows 2000扫描结果利用扫描器的脚步插件,还有可能直接探测出目标系统的安全漏洞,例如如图4所示,Nmap利用smb-check-vulns插件扫描探测出了Windows 2000靶机存在MS08_067漏洞,命令执行如下:nmap -script=smb-check-vulns.nse 192.168.56.101。
namap扫描的结果里报告发现MS08-067:DISABLED。
这是在暗示我们或许能够对这台主机进行渗透攻击,然后我们在 Metasloit里面找到此漏洞的攻击模块,并尝试攻击目标机器。
MS08-067是一个对操作系统版本依赖非常高的漏洞,所以在这里,我们只自动payload指定一下目标就可以确保触发正确的溢出代码。
图4漏洞扫描结果3利用MS08_067漏洞渗透入侵MS08-067漏洞的全称为“Windows Server服务RPC请求缓冲区溢出漏洞”,如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码。
在 Microsoft Windows 2000Windows XP 和 Windows Server 2003 系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码,此漏洞可用于进行蠕虫攻击,目前已经有利用该漏洞的蠕虫病毒。
防火墙最佳做法和标准的默认防火墙配置,有助于保护网络资源免受从企业外部发起的攻击,默认情况下能建立空连接。
缓冲溢出攻击实验报告
一、实验目的及要求1. 了解缓冲区溢出攻击的原理和类型。
2. 掌握缓冲区溢出攻击的实验方法和步骤。
3. 理解缓冲区溢出攻击的危害性。
4. 学习防范和避免缓冲区溢出攻击的方法。
二、实验环境1. 操作系统:Windows 102. 编程语言:C/C++3. 漏洞利用工具:Metasploit4. 实验环境搭建:使用虚拟机软件(如VMware)搭建实验环境,靶机为Windows 7 SP1,攻击机为Kali Linux。
三、实验内容1. 漏洞分析:分析实验环境中存在的缓冲区溢出漏洞。
2. 攻击实现:利用Metasploit工具对靶机进行攻击,实现远程代码执行。
3. 防御措施:学习防范和避免缓冲区溢出攻击的方法。
四、实验步骤1. 漏洞分析- 使用Ghidra工具对实验环境中的漏洞程序进行反汇编,分析程序中的缓冲区溢出漏洞。
- 发现漏洞程序存在缓冲区溢出漏洞,攻击者可以通过输入超长字符串来覆盖返回地址,从而控制程序的执行流程。
2. 攻击实现- 使用Metasploit工具中的`exploit/multi/handler`模块,设置攻击目标为靶机的IP地址和端口。
- 使用`set payload`命令设置攻击载荷,选择`windows/x64/meterpreter/reverse_tcp`,该载荷可以在攻击成功后与攻击机建立反向连接。
- 使用`set LHOST`命令设置攻击机的IP地址,使用`set LPORT`命令设置端口号。
- 使用`set target`命令设置攻击目标,选择漏洞程序的模块和参数。
- 使用`exploit`命令启动攻击,等待攻击成功。
3. 防御措施- 代码审计:对程序进行代码审计,及时发现并修复缓冲区溢出漏洞。
- 输入验证:对用户输入进行严格的验证,限制输入长度,防止输入超长字符串。
- 边界检查:在代码中添加边界检查,防止缓冲区溢出。
- 安全编程:遵循安全编程规范,使用安全的编程语言和库,避免使用存在漏洞的函数。
缓冲区溢出实验报告
缓冲区溢出报告院系:计算机与通信工程学院班级:信息安全10-02班1.实验目的掌握缓冲区溢出的原理掌握常用的缓冲区溢出方法理解缓冲区溢出的危害性掌握防范和避免缓冲区溢出攻击的方法2.实验工具溢出对象:CCProxy 7.2(1)(2)调试工具:使用Vmware虚拟机,安装CCPROXY7.2进行实验调试。
3.实验步骤了解CCProxy 7.2代理服务器为大家解决了很多问题,比如阻挡黑客攻击和局域网共享上网等。
•国内非常受欢迎的一款代理服务器软件•设置简单,使用方便•不仅支持常见的HTTP和SOCKS代理,而且支持FTP/Telnet等这类不常用的协议及其它协议关于CCProxy6.2缓冲区溢出漏洞说明CCProxy在代理Telnet协议时,可以接受Ping命令Ping命令格式:ping hostname\r\n当hostname的长度大于或者等于1010字节时,CCProxy 6.2会发生缓冲区溢出,导致程序崩溃CCProxy 6.2缓冲区溢出漏洞演示在目标主机运行CCProxy,使用默认设置运行CCProxy的机器IP是192.168.6.132使用telnet命令连接CCProxy:telnet 192.168. 6.132 23返回信息:(如图)输入ping命令,后接畸形数据:在ping命令后接10个字符A(ping AAAAAAAAAA),观察返回信息将字符A的数量变为100个、1000个、2000个,观察返回信息(注:由于本人安装的是7.2版本,其漏洞已修复,故智能识别252个字符,其后被截断,所以当出现的畸形字符长度超过252时,就不再被识别,所以会有“host not found”)原理:如果终端提示“Host not found”,说明CCProxy正确地处理了这个畸形数据,仍工作正常如果终端提示“失去了跟主机的连接”,表明CCProxy已经崩溃CCProxy 6.2缓冲区溢出漏洞利用如何利用这个漏洞,来实现攻击目的,做一些特别的事情。
5.4.2 实例——缓冲区溢出攻击及其防范
5.4.2 实例——缓冲区溢出攻击及其防范1.实验环境实验环境如图5.21所示。
入侵者(192.168.85.1):对192.168.85.128进行缓冲区溢出攻击。
被入侵者(192.168.85.128):是开启DNS服务的所有版本的Windows 2000 Server或Windows 2003 Server SP1,在本次测试中使用Windows 2003 Server SP1。
图5.21 实验环境2.缓冲区溢出攻击过程第1步:入侵者下载并且执行dns.exe命令。
到网上下载dns.exe工具,将其复制到C:\Documents and Settings\ Administrator,在DOS窗口执行dns.exe命令,如图5.22所示。
图5.22 执行dns.exe命令第2步:寻找漏洞。
执行dns.exe -s 192.168.85.128命令,对主机进行扫描,如图5.23所示,显示出被入侵主机(192.168.85.128)开放的端口以及操作系统,最主要的是显示“1047:Vulnerability”,意思就是1047端口存在漏洞。
图5.23 寻找漏洞第3步:实施溢出。
如图5.24所示,执行dns.exe -t 2003chs 192.168.85.128 1047命令。
出现“Attack sent, check port 1100”字样,说明已经打开了目标地址的1100端口。
图5.24 实施溢出第4步:成功入侵。
如图5.25所示,执行telnet 192.168.85.128 1100命令,结果如图5.26所示,我们现在已经成功的入侵了对方的电脑,并且得到了管理员的权限。
图5.25 执行telnet 192.168.85.128 1100命令图5.26 成功入侵第5步:如图5.27所示,在已经成功入侵的电脑上执行简单的操作。
图5.27 简单的操作第6~11步介绍在被入侵电脑中开3389端口(远程桌面)的方法。
网络攻防溢出漏洞实验报告
网络攻击与防御实验报告姓名:项中村班级:信安0803学号:U200814066指导老师:付才日期:2011.7.6一、实验目的1.掌握缓冲区溢出的原理;2.掌握缓冲区溢出漏洞的利用技巧;3.掌握CCProxy的溢出方法;4.利用溢出漏洞设计Shellcode。
二、实验环境操作系统:Windows XP SP2破解软件:OllyICE v1.10编译环境:VC++6.0三、实验过程及截图1.验证漏洞: a.打开CCProxy;b.命令行输入telnet 127.0.0.1登录ccproxy;c.发送一条含超长字符串的ping命令。
我使用了大量的0123456789的循环字符串,如下图发生溢出错误,证明CCProxy存在溢出漏洞2.定位溢出点:由图可知溢出点在0x35343332处,可以知道溢出位置个位为3,然后逐步缩主机名字符串的长度,最后结果是在文件名长度为1013时恰好溢出,并且EIP的地址被1013-1016位覆盖。
3.漏洞分析:同学通过搜索得知在CCProxy的消息传输机制中有一个十分重要的函数:WSAsend(),在他的指点下,我通过查找WSAsend()函数得到如下图所示结果:找到WSAsend()函数对应的的指令地址,然后在相应位置设置断点,F9运行程序,发送超长ping命令给ccproxy,再进入OllyDbg进行单步调试。
当程序运行到call 00426B20这条指令时,发生了如下图所示溢出:继续在地址0x0041735C处设断点,用OllyDbg重新加载ccproxy程序,再次运行到call 00426B20时,按F7进入函数。
继续单步执行,可以发现程序在执行指令call 00430300时发生了溢出,具体情况如下图所示:在0x00426B40处设断点,重新跟踪到call 00430300处,然后按F7进入函数,当运行到retn 0c这条指令时,esp为0x014066F0,如下图:F8单步执行程序之后马上发生溢出。
网络攻防实验课程缓冲区溢出
程序在内存中的映像
堆(Heap) 内存低地址
内 存 递 增 方 向 堆的增长方向
…… 堆栈段 数据段 栈(stack) 非初始化数据段(BSS) 初始化数据段
栈的增长方向
文本(代码)段 内存高地址
代码段 系统DLL PEB&TEB 内核数据代码 0x7FFFFFFF 0x80000000
栈
栈是一块连续的内存空间——就像一个杯子
程序指令流被改变后……
溢出之后,让程序执行我们指定的代码
我们自己提供的一段代码 系统现有的调用
由于这段代码往往不能太长,所以需要精心设计,并且充 分利用系统中现有的函数和指令 对于不同的操作系统到一个shell(最好是root shell) Windows,一个可以远程建立连接的telnet会话
pushl %ebp movl %esp,%ebp subl $24,%esp addl $-8,%esp movl 8(%ebp),%eax pushl %eax leal -12(%ebp),%eax pushl %eax call strcpy addl $16,%esp leave ret
例子2
危害性
不需要太多的先决条件 杀伤力很强 技术性强
在Buffer Overflows攻击面前,防火墙往往显得很无奈
利用缓冲区溢出的攻击
随便往缓冲区中填东西造成它溢出一般只会出现 “分段错误”(Segmentation fault),而不能 达到攻击的目的。
如果覆盖缓冲区的是一段精心设计的机器指令序 列,它可能通过溢出,改变返回地址,将其指向 自己的指令序列,从而改变该程序的正常流程。
基于缓冲区溢出的攻击实验报告
一、实验名称:基于缓冲区溢出的攻击二、实验目的:1.学习并掌握缓冲区溢出的基本原理2.学习缓冲区溢出攻击利用的技术三、概念与原理1.缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。
2.通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。
造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。
例如下面程序:void function(char *str) {char buffer[16];strcpy(buffer,str);}上面的strcpy()将直接吧str中的内容copy到buffer中。
这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。
存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf()等。
当然,随便往缓冲区中填东西造成它溢出一般只会出现“分段错误”,而不能达到攻击的目的。
最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。
如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。
四、攻击方法利用c语言中的getchar()等脆弱性函数在执行时没有检查缓冲区长度的特性,通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。
网络安全实验报告 (4)
四、实验结果与数据处理
ms05039攻击一直无法完成,重新启动虚拟机后就可以了。
五、分析与讨论
要提高网络安全意识。
六、教师评语
签名:
日期:
成绩三、实验内容与Fra bibliotek骤实验任务:利用ms05-039溢出漏洞攻击
MS05-039漏洞是Microsoft Windows即插即用功能远程缓冲区溢出漏洞。Microsoft Windows即插即用(PnP)功能允许操作系统在安装新硬件时能够检测到这些设备。Microsoft Windows即插即用功能中存在缓冲区溢出漏洞,造成该漏洞的原因是Plug and Play服务中有未经检查的缓冲区。成功利用这个漏洞的攻击者可以完全控制受影响的系统。这是一个严重的安全漏洞,成功的攻击者可以完全控制被攻击的计算机。这个漏洞既可以用来远程溢出(只适用于目标系统是2000和xp sp1),也可以用来本地提升权限(2000以上版本都可以)。而且溢出成功后会得到一个SYSTEM权限的shell。
《计算机网络安全》实验报告
实验序号:4 实验项目名称:缓冲区溢出攻击与防范实验
学号
姓名
专业、班
实验地点
指导教师
实验时间
一、实验目的及要求
通过实验掌握缓冲区溢出的原理;通过使用缓冲区溢出攻击软件模拟入侵远程主机;理解缓冲区溢出危险性;理解防范和避免缓冲区溢出攻击的措施。
二、实验设备(环境)及要求
Windows 2000 server,虚拟机
本实验是在主机上利用ms05-039溢出工具对虚拟机上的ms05039漏洞进行溢出攻击,入侵成功后获得系统的控制权。
1)入侵准备工作
图2 运行nc 进行监听
实验6网络攻击与防范实验
实验 6 网络攻击与防范实验6.1 实验目的1、理解 Dos/Ddos/ARP 攻击的原理及实施过程,掌握检测和防范 Dos/DDoS/ARP 攻击的措施;2、理解缓冲区溢出攻击的原理及实施过程,掌握防范和避免措施。
6.2 实验环境实验室所有机器安装了 Windows 操作系统,并组成了一个局域网;Dos/DDoS/ARP 攻击软件;每 4-5 个学生为一组:互相进行攻击或防范。
6.3 实验原理6.3.1 DoS 的原理拒绝服务( DoS )攻击利用系统或协议的缺陷,采用欺骗的策略进行网络攻击,目的是使目标主机因 为资源全部被占用而不能处理合法用户提出的请求,即对外表现为拒绝提供服务。
常见的 DoS 攻击方法:( 1 ) Synflood: 该攻击以多个随机的源主机地址向目的主机发送 SYN 包,而在收到目的主机的 SYN ACK 后并不回应,这样,目的主机就为这些源主机建立了大量的连接队列,而且由于没有收到 ACK 一直 维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务。
( 2 ) Land-based :攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过 IP 欺骗的方式发送给被攻击主机,被攻击主机与自己建立空连接并保留连接,从而很大程度地降低了系统 性能。
(3) UDP 洪水(UDP flood) 一个数据包时随机反馈一些字符。
意攻击,通过伪造与某一主机的 一台主机,通过将 Chargen 和 Echo 服务互指,来回传送毫无用处且占满带宽的垃圾数据,在两台主机之 间生成足够多的无用数据流,这一拒绝服务攻击飞快地导致网络可用带宽耗尽。
4 ) Smurf 、UDP-Flood 、Teardrop 、 PingSweep 、Pingflood 、Ping of Death 等。
6.3.2 DDOS 的原理分布式拒绝服务( DDoS )是基于 DoS 攻击的一种特殊形式。
缓冲区溢出攻击与防范实验
实验十二缓冲区溢出攻击与防范实验1.实验目的通过实验掌握缓冲区溢出的原理;通过使用缓冲区溢出攻击软件模拟入侵远程主机;理解缓冲区溢出危险性;理解防范和避免缓冲区溢出攻击的措施。
2.预备知识2.1缓冲区溢出攻击简介缓冲区溢出攻击之所以成为一种常见的攻击手段,其原因在于缓冲区溢出漏洞太普通了,并且易于实现。
而且,缓冲区溢出所以成为远程攻击的主要手段,其原因在于缓冲区溢出漏洞给予了攻击者所想要的一切:植入并且执行攻击代码。
被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。
下面简单介绍缓冲区溢出的基本原理和预防办法。
(1)缓冲区概念缓冲区是内存中存放数据的地方。
在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。
而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区,然后再向一个有限空间的缓冲区中植入超长的字符串,这时可能会出现两个结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root特级权限。
缓冲区是程序运行的时候机器内存中的一个连续块,它保存了给定类型的数据,随着动态分配变量会出现问题。
大多时为了不占用太多的内存,一个有动态分配变量的程序在程序运行时才决定给它们分配多少内存。
如果程序在动态分配缓冲区放入超长的数据,它就会溢出了。
一个缓冲区溢出程序使用这个溢出的数据将汇编语言代码放到机器的内存里,通常是产生root权限的地方。
仅仅单个的缓冲区溢出并不是问题的根本所在。
但如果溢出送到能够以root权限运行命令的区域,一旦运行这些命令,那可就等于把机器拱手相让了。
造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。
缓冲区是一块用于存放数据的临时内存空间,它的长度事先已经被程序或操作系统定义好。
缓冲区类似于一个杯子,写入的数据类似于倒入的水。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络攻击与防范实验报告
姓名:____王小北___ 学号:___ 201411111111111111 _ 所在班级:
实验名称:缓冲区溢出实验日期:2014年11月7日指导老师:实验评分:
验收评语:
实验目的:
1.掌握缓冲区溢出的原理
2.掌握常用的缓冲区溢出方法
3.理解缓冲区溢出的危害性
4.掌握防范和避免缓冲区溢出攻击的方法
实验工具:
溢出对象:war-ftp 1.65 ( 自己分析)
调试工具:Debugging Tools for Windows 中(网上有下载)
实验环境:虚拟机vmware workstation 10 Windows XP sp1
高级语言编程:Socket编程VS2010
实验步骤:
原理:war-ftp 1.65版本的一个漏洞,即向服务器发送超过480字节的用户名可以触发漏洞(即使用命令USER longString\r\n),溢出之后ESP内容包含了longString中的部分内容。
过程:攻击者向war-ftp发送多余480字节的用户名,触发war-ftpd的漏洞,产生缓冲区溢出,此时war-ftpd将出现错误。
接下来通过PatterntTool工具构造的一串不重复字符串(1000个不同字符串,存入test.txt中),通过其时eip的内容,利用patternoffset.pl工具来确定RET的位置。
在网上寻找一段具有攻击效果的Shellcode,作为所发送的war-ftpd用户名。
其最主要是通过上边所确定的RET的位置,将“JMP ESP”指令的地址(0x7ffa4512)传递到RET 位置,最终目的是将指令指针转移到esp的位置。
同时我们可以通过确定esp的位置,从而在构造字符串时直接将shellcode代码加在在用户名上,使其能直接被放入esp所指的位置,即达到将其放入esp指向的缓冲区的目的。
通过发送构造的用户名,导致war-ftpd发生缓冲区溢出。
Shellcode的功能是建立一个新用户hack,可以用过net user命令来查看用户,最后发现攻击成功。
1.启动war-ftp 1.65
2.打开Debugging Tools for Windows,将war-ftp 1.65挂起
3.利用PatterntTool工具生成一个1000个不同字符的txt文档
4.将war-ftp 1.65连接到主机
5.输入用户名,密码,用户名为之前产生的1000个不同字符的txt文档,密码随便输入
6.在Debugging Tools for Windows输入g继续运行,出现eip的内容等,之后查看esp的
内容
7.根据eip,esp的内容在1000个字符中的位置去定位,发现其相对位置分别为489和493
8.在网上找到一段能建立一个hack用户的shellcode代码:
9.编写Socket程序,注意代码填充的位置
连接目标主机(connect)
构造溢出字符串(使用命令USER longString\r\n,溢出之后,ESP中的内容包含了longString)
向目标主机发送溢出字符串(send)
关闭连接
10.攻击前后结果
实验结论:
通过这次实验了解了缓冲溢出的危害,war-ftp 1.65存在用户名溢出的漏洞,EIP的位置相对于缓冲区的起始位置是485,ESP的位置相对于缓冲区的起始位置是493,漏洞存在的原因是因为war-ftp并不检查发送过来的用户名的长度。
解决方法是war-ftp每次对建立连接的用户检查发送过来的用户名长度,如果过长,就截取其中一段,这样就可以修补漏洞。
收获与体会:
通过这次实验又熟悉了Socket编程,并了解的一些命令(如telnet等),但也出现了几个需要注意的问题:
war-ftp软件无法打开,经过在群上和同学交流,明白必须先删除文件夹内FtpDaemon.dat “user ”是5个字符,别忘了空格也算一个,结尾要加上\r\n
若利用sizeof计算字符串长度别忘了减一。