windows安全机制

1.GS安全编译原理选项的保护



攻击方法:
利用未被保护的内存突破GS;
覆盖虚函数突破GS;
将虚函数的调用地址改为自己的地址
攻击异常处理突破GS;
char buf[200];
strcpy(buf,input);
strcat(buf,input);
覆盖异常处理函数调用地址,在异常发生时调用自己的代码
同时替换栈中和.data中的Cookie突破GS
012913DE    A1 04712901     mov eax,dword ptr ds:[__security_cookie]
012913E3    33C5            xor eax,ebp
012913E5    8945 FC         mov dword ptr ss:[ebp-0x4],eax
将security_cookie与EBP异或 再存入EBP-4处

2.SafeSEH对异常处理的保护

在程序调用异常处理函数之前,对要调用的异常处理函数进行一序列的有效性校验,当发现异常处理函数不可靠时将终止异常处理函数的调用。
攻击方法:
攻击返回地址绕过SafeSEH;
利用虚函数绕过SafeSEH;
从堆中绕过SafeSEH;
利用未启用SafeSEH模块绕过SafeSEH;
利用加载模块之外的地址绕过SafeSEH;
利用Adobe Flash Player ActiveX控件绕过SafeSEH;

DEP机制的保护
代码与数据分离,将数据所在的内存页标识为不可执行,当程序成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。
突破DEP:
攻击未启用DEP的程序;
进程只要有一个模块不支持DEP,就不能贸然开启DEP,否则异常。
利用Ret2Libc挑战DEP;
溢出,让程序跳到已经存在的系统函数中。
1.通过跳到ZwSetInformationProcess函数关闭DEP
2.通过跳转到VirtualProtect函数将shellcode设置为可执行
3.跳转到VirtualAlloc函数开辟一段可执行空间,将shellcode复制过去
利用可执行内存挑战DEP


ASLR内存随机化保护机制
映像随机化 堆栈随机化 PEB与TEB随机化(不是很明显)
攻击未启用ASLR的模块;
利用部分覆盖进行定位内存地址;
利用Heap spray技术定位内存地址;
申请大量内存放0x90和shellcode(大概率成功),利用0x90滑行到shellcode

新的SEH保护机制SEHOP
就是在程序转入异常前检查SEH链的完整性即检测链的最后一个异常处理函数是不是为系统固定的终极异常处理函数。
方法:
不去攻击SEH,攻击返回地址,攻击虚函数;
利用未开启的SEHOP模块;
伪造SEH表;







  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值