绕过卡巴斯基主动防御系统方法的讨论

本文探讨了如何绕过卡巴斯基主动防御系统的方法,包括不使用被Hook的函数,将代码拷贝到程序的.Data中执行,以及通过两次返回来规避检测。文章详细介绍了三种技术,并提供了示例代码,如利用GetCurrentProcess函数地址控制跳转,以编写有效的ShellCode。
摘要由CSDN通过智能技术生成
 |=---------------------------------------------------------------------------=|
|=-----------------=[  绕过卡巴斯基主动防御系统方法的讨论  ]=----------------=|
|=---------------------------------------------------------------------------=|
|=---------------------------------------------------------------------------=|
|=------------------------=[        By lisl03       ]=-----------------------=|
|=----------------------=[    <lisl03_at_gmail.com>   ]=---------------------=|
|=---------------------------------------------------------------------------=|


    卡巴斯基的主动防御系统自推出以来,大大增强了系统的安全特性,使得以前常用一些
攻击操作变得不那么容易了。在执行溢出攻击的时候,如果我们的ShellCode刚获得执行就
被卡巴给拦了下来,那么经过精心编写的漏洞EXP程序将就此作罢了。因此,有必要研究一下
ShellCode的编程过卡巴斯基主动防御的问题。

    通过借鉴gyzy大虾写的《基于栈指纹检测缓冲区溢出的一点思路》及czy在安焦上发表
了《点评“基于栈指纹检测缓冲区溢出的一点思路”》的文章,我将这些知识与技术消化后加
以整理,加上以前自己摸索出来的一些方法与体会,综合成了这篇文章,希望能够对大家有所
帮助。

    有关卡巴斯基等个人安全套装产品主动防御的原理就不啰嗦了。需要补充说明的是,实
际上卡巴在做返回地址检查的时候除了检测返回地址是否在栈中,还会检测返回地址是否在
进程的堆空间里。如果检测到函数将要返回到堆中执行,那么卡巴依然会弹出报警窗口。只
是报警窗口给出的提示与栈溢出稍有不同,如图一所示。
    图一、 卡巴斯基堆溢出检测提示

    本文所附的示例代码ShellCode1.c及ShellCode2.c能证明这一点。这两个文件的主要
区别是ShellCode1.c创建一个新堆申请一块空间后将ShellCode拷贝到该堆空间中执行;
ShellCode2.c是直接在进程的默认堆中申请一块空间将shellcode拷贝执行到该空间执行。
卡巴这样做的目的是使它对堆溢出类型的攻击也能够进行检测。

    本文下面主要集中讲解一下绕过卡巴斯基主动防御的ShellCode的编写技巧与方法:

    1、不使用被主动防御系统Hook过的函数

    最简单的办法就是在编写ShellCode时尽量不调用 GetProcAddress和LoadLibrary函数。
Kernel32.dll与Ntdll.dll是进程启动时必须加载的两个模块。在Win32系统中,Kernel32.dll
是Windows系统中非常重要的动态链接库文件,它提供了系统的内存管理、数据的输入输出
操作等API函数操作。因此,用来编写ShellCode的API函数基本都集中在该Dll文件中。使用
该动态连接库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值