实验二: 缓冲区溢出国家计算机网络入侵防范中心刘奇旭内容摘要

电脑杂谈  发布时间:2019-05-01 04:20:43  来源:网络整理

stack overflow溢出攻击的核心是_图解 溢出攻击_一定程度上能防范缓冲区溢出攻击的措施有

实验二: 缓冲区溢出国家计算机网络入侵防范中心刘奇旭内容摘要1.实验目的2.实验工具3.实验步骤4 实验报告4.实验报告1. 实验目的掌握缓冲区溢出的原理掌握常用的缓冲区溢出方法理解缓冲区溢出的危害性掌握防范和避免缓冲区溢出攻击的方法掌握防范和避免缓冲区溢出攻击的方法2. 实验工具溢出对象: CCProxy 6.2 (课上分析) war-ftp 1.65 (自己分析) 3CTftpSvc 2.0.1 (自己分析)调试工具调试工具: CDB/NTSD/WinDbg: 这三个工具都包含在Debugging Tools for Windows中(网上有下载) OllyDBG/IDAPro etc.需要使用高级语言编程虚拟机(可选, 自行安装)3.实验步骤1.介绍CCProxy 6.22.CCProxy 6.2缓冲区溢出漏洞说明3.CCProxy 6.2缓冲区溢出漏洞演示4 CCProxy 6 2缓冲区溢出漏洞利用4.CCProxy 6.2缓冲区溢出漏洞利用3.1 介绍CCProxy CCProxy因其设置简单和使用方便等特点, 成为国内最受欢迎的代理服务器软件。

stack overflow溢出攻击的核心是_图解 溢出攻击_一定程度上能防范缓冲区溢出攻击的措施有

 CCProxy不但支持常见的HTTP和SOCKS代理, 而且还支持FTP和Tel net这类不常用的协议及其它协议。一定程度上能防范缓冲区溢出攻击的措施有3.2 漏洞说明CCProxy在代理Telnet协议时, 可以接受Ping命令Ping命令格式: ping hostname\r\n当hostname的长度大于或者等于1010字当hostname的长度大于或者等于1010字节时, CCProxy 6.2会发生缓冲区溢出, 导致程序崩溃3.3 漏洞演示在目标主机运行CCProxy, 使用默认设置运行CCProxy的机器IP是192.168.121.129使用telnet命令连接CCProxy:telnet 192 168 121 129 23telnet 192.168.121.129 23返回信息:3.3 漏洞演示输入ping命令, 后接畸形数据:ping AAAA…在ping命令后接10个字符A, 观察返回信息将字符A的数量变为100个、 1000个、 2000个,察返信息观察返回信息如果终端提示“Host not found”, 说明CCProxy正确地处理了这个畸形数据, 仍工作正常如果终端提示“失去了跟主机的连接” , 表明CCProxy已经崩溃3.3 漏洞演示输入1 0个A输入1 000个A3.3 漏洞演示输入2000个A3.4 漏洞利用于是, 我们可以考虑利用CCProxy 6.2的这个缓冲区溢出漏洞, 利用ping命令向其发送一个长的字符串, 溢出局部变量, 覆盖RET的位置从而实现程序跳转置, 从而实现程序跳转。

一定程度上能防范缓冲区溢出攻击的措施有_图解 溢出攻击_stack overflow溢出攻击的核心是

定位RET寻找跳转指令地址构造shellcode定位shellcode存放位置编写攻击程序局部变量n……局部变量1EBPEBPRET函数实参1……函数实参m函数栈布局3.4.1 定位RET在目标主机上运行CCProxy用CDB将其挂起cdb –pn ccproxy.exe3.4.1 定位RET输入g继续运行在攻击主机上按前面所述telnet到目标主机上, 并通过ping命令把2000个A组成的字符串发送到CCProxy时, CDB捕捉到CCProxy串发送到y时,的Access Violation事件捕捉到y3.4.1 定位RET可以发现, EIP的内容为41414141(字符A的ASCII码是0x41)这是因为栈中存放RET值的地方已经被41414141覆盖, 当函数返回时, 就将这个值弹出到EIP寄存器EIP中存放的是程序下一条指令的地址。 但程序在0x41414141地址处找不到可执行的指令, 因此报错很容易想到, 如果覆盖RET位置的不是0x41414141, 而是指向某个跳转指令(eg. Jmp esp) 的地址呢?3.4.1 定位RET查看一下此时各寄存器中的内容ESP和ESI指向的内容都有我们植入的字符串3.4.1 定位RET我们选择ESP寄存器来实现程序流程跳转即: 将shellcode放在ESP寄存器中, 然后在RET位置填充一条指向jmp esp指令的地址, 于是函数返回时, 就能执行jmp esp,址, 于是函数返回时, 就能执行j跳转到ESP中的shellcode上运行定位: 缓冲区有多大? RET位置在哪里?pp,3.4.1 定位RET利用一串不重复的字符填充缓冲区, 然后查看覆盖RET的字符串, 计算它们在整个字符串中的位置, 从而得出缓冲区的大小及RET的偏移通过patternCreate.pl来生成不重复的字符3.4.1 定位RET3.4.1 定位RETTelnet到目标主机, 将这串字符串通过ping命令发送给CCProxy, CDB捕捉到异常3.4.1 定位RETEIP寄存器的值为: 0x68423768通过patternOffset.pl计算出它在整个长为2000的字符串中的偏移是10123.4.1 定位RET这说明, RET相对缓冲区的偏移大小是1012字节。一定程度上能防范缓冲区溢出攻击的措施有

一定程度上能防范缓冲区溢出攻击的措施有_图解 溢出攻击_stack overflow溢出攻击的核心是

由于EBP占4字节, 故存放局部变量的缓冲区大小为1008字节。区大小为字节3.4.2 寻找jmp指令地址前面说到, 我们选择通过jmp esp来实现程序跳转, 也就是说, 要在RET的位置放置jmp esp指令的地址, 那么, 到哪里找jmp esp指令呢?最好是能在系统中找到现成的, 而不需要我们重新再构造事实上, 在Windows系统的许多DLL中都能找到jmp esp这样一条指令, 一个通用的地址是0x7ffa45123.4.2 寻找jmp指令地址前面分析, ping后接字符串的1012字节位置开始的4个字节将覆盖RET于是, 我们便可以在字符串的这个位置上填充0x120x450xfa0x7f填充程序运行到此, 就会转向地址0x7ffa4512找到jmp esp指令并执行, 其流程发生变化3.4.3 构造shellcode所谓shellcode就是一段能够完成特定功能的机器码, 因其最初的功能为获得目标主机的一个shell而得名由于受目标主机的缓冲区大小限制, shellcode长度般越小越好长度一般越小越好Shellcode一般构造步骤:用C语言实现功能将其修改为带有shellcode特点的汇编(精通汇编语言的人可直接使用汇编语言编写程序)根据汇编程序得到机器码形式的shellcode3.4.3 构造shellcode提供了许多通用的Shellcode3.4.3 构造shellcode在目标主机中添加一个用户账号hack3.4.4 定位shellcode存放位置我们要把shellcode放置在程序崩溃时ESP指向的地址处那么, 程序崩溃时, ESP指向什么位置呢?同样, 我们可以用定位RET偏移的方法来同样, 我们可以用定位RET偏移的方法来定位ESP指向的位置3.4.4 定位shellcode存放位置用CDB挂起CCProxy.exe利用patternCreate.pl生成长为2000的字符串用ping命令向目标主机发送这个字符串用ping命令向目标主机发送这个字符串在CDB捕捉到CCProxy.exe的崩溃事件时,查看ESP的内容用patternOffset.pl计算出它在整个长为2000的字符串中的偏移3.4.4 定位shellcode存放位置这说明ESP指向字符串的第4个字节这说明ESP指向字符串的第4个字节因此, 我们把shellcode放在字符串的第4个字节处由于这段shellcode长度只有476字节, 而缓冲区大小为1012字节, 足够容纳下shellcode构造好的exploit的结构如下所示:3.4.5 编写攻击程序Socket编程连接目标主机(connect)构造溢出字符串(即构造后接shellcode的ping命令: ping shellcode\r\n)ping命令: ping shellcode\r\n)向目标主机发送溢出字符串(send)关闭连接3.4.5 编写攻击程序运行攻击程序在目标主机上查看攻击效果4. 实验说明可任选CCProxy 6.2/war-ftp 1.65/3CTftpSvc 2.0.1进行溢出实验截止时间: 2010-11-13 3(暂定)实验分值: 20分选择CCProxy: 满分按18分计选择war-ftp: 满分按20分计选择3CTftpSvc : 满分按20分计4. 实验说明——CCProxyCCProxy官方发现CCProxy 6.2的这个ping缓冲区溢出漏洞后, 对其进行了修补,当ping请求超过255字节时, 会自动截断。

图解 溢出攻击_stack overflow溢出攻击的核心是_一定程度上能防范缓冲区溢出攻击的措施有

不过修补后的CCProxy版本号未变因此, 在网上下载的CCProxy 6.2有可能是已修补了该漏洞的程序4. 实验说明——War-ftpwar-ftp漏洞提示: 向服务器发送超过480字节的用户名可以触发漏洞(即使用命令USER longString\r\n) , 溢出之后, ESP中的内容包含了longString中的部分内容4. 实验说明——3CTftpSvc软件名称: 3CTftpSvc影响版本: Current version: 2.0.1漏洞描述: 畸形的传输模式可以导致缓冲区溢出, 覆盖EIP, 可能造成拒绝服务攻击和区溢出, 覆盖EIP, 可能造成拒绝服务攻击和远程代码执行。漏洞调试: 当传输模式为mode = "netascii" + "A" * 469时覆盖EIP4. 实验说明 实验报告要求详细分析漏洞的细节写出详细的实验步骤附上攻击程序源代码附上实验过程截图和结果截图提出防范此类缓冲区溢出漏洞的方法提出防范此类缓冲区溢出漏洞的方法阐述碰到的问题及解决方法阐述收获和体会阅读相关论文, 阐述阅读体会谢谢liuqx@nipc.org.cn


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-95360-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...