浅析mcafee的“缓冲区溢出保护”及绕过方法【安焦Leven】
[mcafee的“缓冲区溢出保护”]
如果处在堆栈里的shellcode调用了getprocaddress等函数,mcafee会中止当前进程并报警。
[分析原理]
mcafee对所有进程截获了loadlibrarya、loadlibraryw、getprocaddress等api函数,方法类似api截获:将这些函数的开始几个字节改为call detectapiret,即调用entapi.dll中的某个检测函数(detectapiret),该函数检查调用getprocaddress等函数的父函数是否处于堆或栈内,如果是,报警并退出当前进程;否则回到getprocaddress等函数。
[绕过方法]
detectapiret只是简单的将[esp+0x04]的值当做父函数的返回地址,所以只要将其该为一个合法的返回地址就可以了,再伪造一个函数调用环境。
比如我们要在shellcode里调用getprocaddress,在call detectapiret时正常的堆栈是这样
------------
0x0013aaaa //返回地址
参数1
参数2
------------
需要构造这样一个环境
------------
0x7c9231db //ntdll.dll中的地址,内容是0xc3(ret)
参数1
参数2
0x0013aaaa //真实的返回地址
------------
所以,shellcode调用getprocaddress的时候,先push 0x0013aaaa,再push两个参数,最后push 0x7c9231db,然后jmp getprocaddress。
这里0x0013aaaa显然需要通过计算相对偏移地址来得出。
浅析mcafee的“缓冲区溢出保护”及绕过方法【安焦Leven】相关推荐
- 溢出科普:heap overflow溢出保护和绕过
pr0mise · 2016/04/11 9:50 0x00 第一部分:heap overflow 接上文,来看另外一种溢出方式:堆溢出.相对于栈溢出来说,稍微麻烦一点 本文算是一个笔记,技术有限,难 ...
- 缓冲区溢出攻击原理、方法及防范(一)
由于C/C++语言本身没有数组越界检查机制,当向缓冲区里写入的数据超过了为其分配的大小时,就会发生缓冲区溢出. 攻击者可以利用缓冲区溢出来窜改进程运行时栈,从而改变程序的正常流向.在分析缓冲区溢出攻击 ...
- windows溢出保护原理与绕过方法概览(转自riusksk's blog(泉哥))
前言 从20世纪80年代开始,在国外就有人开始讨论关于溢出的攻击方式.但是在当时并没有引起人们的注意,直至后来经一些研究人员的披露后,特别是著名黑客杂 志Phrack上面关于溢出的经典文章,引领许多人 ...
- 浅析缓冲区溢出漏洞的利用与Shellcode编写
文章目录 前言 汇编语言 寄存器 内存堆栈 CPU指令 函数调用 缓冲区溢出 栈溢出原理 栈溢出攻击 ShellCode 总结 前言 缓冲区溢出(Buffer Overflow)是计算机安全领域内既经 ...
- java 缓冲区溢出_浅析缓冲区溢出
最近一直在学习缓冲区溢出漏洞的攻击,但是关于这一块的内容还是需要很多相关知识的基础,例如编程语言及反汇编工具使用.所以研究透彻还需要不少的时间,这里简单的做一个学习的总结,通过具体的实验案例对缓冲区溢 ...
- 缓冲区溢出还是问题吗?C++/CLI安全编码
C++/CLI是对C++的一个扩展,其对所有类型,包括标准C++类,都添加了对属性.事件.垃圾回收.及泛型的支持. Visual C++ 2005扩展了对使用C++/CLI(通用语言基础结构)开发运行 ...
- IoT上的缓冲区溢出漏洞
在过去N年里,缓冲区溢出一直是网络攻击中最常被利用的漏洞. 看一下缓冲区是如何创建的,就能知道原因所在. 下面是C语言的一个例子: 第一步,程序员使用 malloc 函数并定义缓冲区内存的数量(例如3 ...
- 缓冲区溢出攻击(详细解析)
定义:利用缓冲区溢出漏洞进行攻击行动 攻击原理 通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的.造成缓冲区溢出的原因是程序中没有仔 ...
- 软件漏洞及缓冲区溢出
软件漏洞及缓冲区溢出 文章作者:davy_yan 本文是我做溢出的一点心得,希望大家提出宝贵的修改意见,也希望对大家有一定的帮助:) 软件漏洞及缓冲区溢出 一. 缓冲区溢出的发展简史 1. ...
最新文章
- memcached failed to listen问题解决以及 结束daemon的方法
- 约束条件创建定义表(主码,外码的确定和防止空值等)
- 前端javascripts基础知识点猴子吃桃
- Good Bye 2017 G. New Year and Original Order 数位dp + 按数贡献
- 内是不是半包围结构_轻钢别墅的体系结构
- Linux入门学习(二)
- 关于spring security自定义sessionRegistry
- python安装离线包window_python 离线安装unrar库
- Chrome默认开启flash
- YOLOv2论文中英文对照翻译
- 傲腾readyboost_使用SD卡和ReadyBoost提升上网本速度
- 二维彩虹二维码产品功能更新:增加“赞赏”、“重置”功能
- 服务器能不能清理系统垃圾,在服务器上如何清理垃圾
- IT业台风警报(一)——望天
- 网页H5实现 美团接单 连接打印机打印客户下单信息
- MySQL安装问题总结
- 项目报找不到属性时解决方法
- 初识华为云数据库GaussDB(for Cassandra
- 频谱仪和信号发生器的使用
- CNAS量检具校准资格查询