[讨论]关于缓冲区溢出的检测

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

目前,缓冲区溢出应该是攻击的最直接的方式,因此如何检测缓冲区溢出以及保护刻不容缓 ,然而当前并没有很稳定可靠的方法来对缓冲区溢出进行检测,MACFEE应该是提出缓冲区溢出保护的最早的安全厂商,然而如今也不再对该技术进行大肆宣传了,这几天在网上翻了一下,感觉Comodo公司对缓冲区溢出的检测做的比较好,然后我也看不懂他采用的什么技术,如果哪位牛人来介绍一下他采用的技术就好了.后来又看了gyzy的文章"基于栈指纹检测缓冲区溢出的一点思路"以及czy对其的点评,可以看出,这两位牛人对漏洞的分析利用都有着非凡的经验,然而从文章中也看的出按照这样的技术思路还不能应对很多缓冲区溢出, 首先就是基于这样的返回地址检测本身的不稳定,kaba也只是把他作为特征码扫描的一个补充,如果单单这样的话,绕过的方法肯定不只是 修改teb和push ret+jmp这两种方法, 其次就是对于堆溢出的检测,目前很多堆溢出漏洞通过大面积的喷射然后跳转都能够稳定的利用,特别是与IE相关的堆溢出. 牛人们对于缓冲区溢出的检测尚且如此,我就更不说了,但是我还是把这几天的想法总结一下,希望对自己以及研究的溢出检测的朋友有帮助:
按照shellcode存放的位置,可以将缓冲区溢出分为 堆溢出 和堆栈溢出, 目前的缓冲区溢出检测保护的对象都是这两位仁兄, 据我了解,目前缓冲区溢出检测保护方法有下面几种:

1. 编译级别的检测保护
(1) 比如vc7以上的 /GZ 选项,就是在堆栈中加入一个cookie,当函数返回的时候检测该cookie值是否被改变,如果改变说明发生了溢出,然后引发一个异常
unix下可以下载gcc的补丁,也是类似效果
(2) c数组边界检查, 这种方法效率太低,不适用
还有其他的方法,我不理解,所以就不谈了

2.系统/硬件级别的检测保护
比如windwos的 数据执行保护, 将堆和堆栈设置为不可执行,一旦检测到代码在这些地方执行,那么立刻引发一个异常, 不过绕过的方法也有哦

3. 运行时的动态检测
个人觉得这个才是安全产品应该研究的,因为这个不依赖于开发环境,以及系统的支持
然而目前的方法还是挂钩关键函数 LoadLibraryA或者GetProcAddr甚至是CreateProcessA这样函数,然后查看其返回地址,如果地址在堆栈中,就可以判定是溢出发生了,

对于动态检测的一些想法
(1) 在内核接管call和ret,不知道能不能实现,如果能接管,那么为线程创建一个"返回地址堆栈",当call发生时,将返回地址压在"返回地址堆栈"中,当ret时再进行对比,看看是否发生了溢出,可能操作比较麻烦
(2)同样也挂接关键函数,然后使用堆栈回溯技术来继续分析函数调用的位置,这样是否会通用一点呢?

还有一些问题:
1. 如何在windows下得到堆的信息呢?如何判断一个地址是否堆中的呢?单单判断是MEM_PRIVATE不行啊,peb,teb,这些都是吧
2. 是不是 有些加壳软件在安装了KABA7的机子上运行就报错 就是 缓冲区溢出检测导致的?
3. 关于堆栈回溯技术的问题,堆栈回溯技术主要基于ebp,如果ebp被破坏或者是函数被优化不能通过ebp回溯时,还有什么方法可以继续推测之前的call呢?难道要一一搜索堆栈?

希望能有朋友看到这篇文章,一起讨论

systemsetting 系统在此应用程序中检测到基于堆栈的缓冲区溢出BUG修复工具下载 彻底解决 真正的原因到底是因为啥咱们没必要去追踪每一个人的操作动作,只需要知道是系统出了问题就可以了,因为阿三哥开发的WIN10系统吊炸天,问题老多,你只能忍着恶心将就着用, 实在不行就换系统吧。首先,你别去百度乱搜索答案了,都是千篇一律的复制粘贴,没啥用的,你要是不相信,咱们可以试试,网上流传最多的是这样的,在开始,运行,输入命令:msconfig。本工具不保证100%绝对适用于解决所有人的该问题,请谨慎拍,特别是非本站会员,又吧几块钱看的很重的,尽量赶紧走,别拍!右键文件,管理员打开,然后重启,搞定。 阅读详情

相关推荐

初探VS2010缓冲区安全检查

初探VS2010缓冲区安全检查 (是原创,转自自己的人人,而该人人已经注销)。          今天做一个缓冲区溢出的实验,然后各种奇葩,各种与资料出入。然后OD跟进,观察汇编代码和堆栈数据,发现是VS2010的缓冲区安全检查在搞鬼。查阅网上资料,发现还是有点出入或者不全吧。这里与大家分享一下我的发现。          缓冲区溢出是很多漏洞的具体表现形式,而VS在这方面引入了

HenryFenny的专栏 3320

Windows系统弹出:“系统在此应用程序检测到基于堆栈的缓冲区溢出,如何解决?“解决办法

按 “Windows 徽标键+R”,输入 “msconfig”,回车启动系统配置页面。点击 “服务”>“隐藏所有 Microsoft 服务”,点击 “全部禁用”。鼠标右击任务栏,启动任务管理器。点击 “启动” 选项卡,将所有的启动项全部禁用。通过开始菜单重启设备 (请选择重启设备,不要选择关机后再开机)。执行完毕后重启设备,查看问题是否解决。

daijingxin的博客 4万+

38、软件安全中的缓冲区溢出与整数溢出防范策略

本文深入探讨了软件安全中的缓冲区溢出与整数溢出漏洞及其防范策略。介绍了静态分析、编译器修改、操作系统修改和硬件修改四类缓冲区溢出防御技术,并详细解析了StackGuard等机制的工作原理。针对整数溢出问题,分析了其成因及危害,阐述了基于污点分析的检测方法和Integer Overflow Checker(IOC)工具的技术实现。文章还对比了各类技术的优缺点,提出了实际应用中的选择考量因素,并展望了软硬件协同、智能化和自适应防护等未来发展趋势,为开发者提供全面的安全防护参考。

net55的博客 148

windows折腾日记】解决电脑提示系统错误弹窗:系统在此应用程序中检测到基于堆栈的缓冲区溢出

解决电脑提示系统错误弹窗:系统在此应用程序中检测到基于堆栈的缓冲区溢出 这个问题我也碰到过,其时很容易解决 按下面的操作步骤,就可以解决这个问题~ 步骤: 1,按下键盘Win+R键,打开运行 2,输入 msconfig ,点击确定 3,在启动选择中,选择 正常启动 ,点击应用 ,在点击 确定 即可。 ...

u010560236的博客 14万+

系统在此应用程序中检测到基于堆栈缓冲区溢出

系统在此应用程序中检测到基于堆栈缓冲区溢出”,之前困扰八羊倒霉君的这个问题,曾经给大家5套解决方案,有命令修复,有工具修复,还有策略修复的,很多网友去官网下载不错,解决率基本上有70%左右吧。面对这些,我也想弄个万金油万能型的工具给大家,但是实际上不存在,很多不是VIP的甚至购买了也不能用那也太无奈了。根据这些种种问题,官网的帖子也在2023年的7月份进行了至少四次修订,修改了系统的修复的方案,增加了更多的方式。如果修复都不行,那么,你也许要做好准备了,那就是重新安装一个原版的操作系统。

k88net的博客 1万+

win10系统 explorer.exe系统错误

win10

Hello_world_XXL的博客 4万+

缓存区溢出检测

转自:http://blog.csdn.net/galihoo/article/details/2299151 目前,缓冲区溢出应该是攻击的最直接的方式,因此如何检测缓冲区溢出以及保护刻不容缓 ,然而当前并没有很稳定可靠的方法来对缓冲区溢出进行检 测,MACFEE应该是提出缓冲区溢出保护的最早的安全厂商,然而如今也不再对该技术进行大肆宣传了,这几天在网上翻了一下,感觉Comodo公司对缓冲 区溢

刘松华-林散 3413

缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前,先了解以下几个概念: 缓冲区 简单说来是一块连续的计算机内存区域,可以保存相同数据类型的多个实例。 堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型。堆栈中的物体具有一个特性:最后一个放入堆栈中的物体总是被最先拿出来,这个特性通常称为后进先出 (LIFO)队列。堆栈中定义了一些操作。两个最重要的是PU...

laikaikai的博客 1万+

软件漏洞及缓冲区溢出

文章作者:davy_yan[E.S.T] 信息来源:邪恶八进制 中国本文是我做溢出的一点心得,希望大家提出宝贵的修改意见,也希望对大家有一定的帮助:)软件漏洞及缓冲区溢出一、 缓冲区溢出的发展简史1、 基础知识(1) 汇编语言(2) 反汇编原理及Intel机器指令编码体系(3) 调试器原理(4) 异常处理(SEH)(5) 调试技术(6)

2850

点评"基于栈指纹检测缓冲区溢出的一点思路

基于栈指纹检测缓冲区溢出的一点思路》原文 (by gyzy) http://www.xfocus.net/articles/200708/936.html 呵呵,难得看到有兄弟敢写这么高深的技术. 1.绕过KABA和MCAFEE的技巧,就不多说了,除了把SC移到PEB中执行我觉得最简单的办法就是在SHELLCODE中尽量不调用 getprocaddress和loadlibrary,取API地址可以

997

缓冲区溢出攻击

缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成一个简单的溢出代码也需要...

weixin_30315435的博客 93

从进程地址空间分布到缓冲区溢出

进程的地址空间一个进程的空间分布大致如上图所示,主要由数据段、代码段、堆、栈这几部分组成,其中代码段(.code)主要存放程序代码在内存中的映射;数据段具体会分为初始化数据段(.data)和为初始化数据段(.bss);而堆主要用于存放局部变量、临时变量,函数调用时,存放函数的返回指针,用于控制函数的调用和返回;堆用于存储动态内存分配,需要手动分配,手动释放,比如我们常见的malloc()函数产生的...

iva_brother的博客 796

***针对缓冲区溢出绕过IDS的方式

IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“***检测系统”。 IDS作为企业安全防护的重量级产品,自然也成为了***试图攻破的目标。事实证明,绕过IDS防护进行***是完全可以实现的,接下来的文章里就将简述******时如何通过针对缓冲区溢出绕过IDS。 一些NIDS检测远程缓冲区的主要方式是通过判断数据包的内...

weixin_33800463的博客 238

警惕缓冲区溢出(C中那些不安全的库函数)

转自:警惕缓冲区溢出(C中那些不安全的库函数) C 和 C++ 不能够自动地做边界检查,边界检查的代价是效率。一般来讲,C 在大多数情况下注重效率。然而,获得效率的代价是,C 程序员必须十分警觉以避免缓冲区溢出问题。 C语言标准库中的许多字符串处理和IO流读取函数是导致缓冲区溢出的罪魁祸首。我们有必要了解这些函数,在编程中多加小心。 一、字符串处理函数 strcpy

coffeecato的个人博客 1765

38、软件安全:缓冲区溢出与整数溢出防护

本文深入探讨了软件安全中的缓冲区溢出与整数溢出问题及其防护措施。涵盖了静态分析、编译器增强、操作系统加固和硬件辅助等多层面的防御技术,重点介绍了StackGuard、ProPolice、SmashGuard等具体方案,并分析了整数溢出的成因及检测难点。通过污点分析和IOC工具的原理阐述,揭示了动态与静态检测方法的优劣。文章还强调开发者需具备攻击思维,结合持续学习,综合运用软硬件防护手段,提升软件安全性。

jenkins8butler的博客 70

CSAPP学习笔记-缓冲区溢出(AttackLab前言)

向程序缓冲区写入超出其长度的内容,造成缓冲区溢出,造成程序破坏以执行其他程序,达到攻击目的

Here is prician 744

缓冲区溢出攻击的网络安全模拟系统实现

1.背景介绍 在计算机科学领域,缓冲区溢出攻击是一种常见的网络攻击手段。它利用了程序对缓冲区边界的控制不严,导致恶意代码注入到程序中,从而达到破坏或控制目标计算机的目的。本文将详细介绍缓冲区溢出攻击的原理、实现方式以及如何构建一个网络安全模拟系统来防御和检测此类攻击。 2.核心概念与联系

AI天才研究院 892

[zz]堆栈溢出的运行时探测

转载自http://blog.csdn.net/dajuan1989/article/details/7307671 文章:Run-time Detection of Heap-based Overflows作者:William Robertson, Christopher Kruegel, Darren Mutz, and Fredrik Valeur(University of Califo...

weixin_34085658的博客 102
上一篇: 通过PspTerminateThreadByPointer结束进程
下一篇: [分析]detours 通过修改输入表注入DLL -- UpdateImports 函数的分析
galihoo
博客等级 码龄22年 14粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值