zoukankan      html  css  js  c++  java
  • ASLR 基本概念

    ASLR (Address Space Layout Randomization)


    解决方法 总结:

    1 利用 未启用ASLR的模块的跳转 ,直接覆盖返回地址,!ASLRdynamicbase 查看未启用ASLR的模块中的跳转地址

    注意输出并不可信,重启比较较好

    2 基于SEH的exploit 那么 

    !pvefindaddr nosafeseh 搜索没safeseh保护 

    !pvefindaddr nosafesehaslr  搜索 safeseh和aslr都没启用的模块

    注意输出并不可信,重启比较较好

    然后例如  !pvefindaddr p esi xxxx.dll    寻找 pop pop ret     

    3 部分覆盖进行定位内存地址 只用于memcpy等不截断字符串覆盖低字节



    通过加载程序时候不再使用固定的基址加载,从而干扰shellcode定位的一种保护机制

    windows Vista出现后,ASLR 才真正开始发挥作用

    VS2005 添加 /dynmicbase 就可以支持 ASLR

    VS2008 linker->Randomized Base Address 设置

    包含 映像随机化,堆栈随机化,PEB+TEB随机化



    查看 ASLR  插件显示

    百度下:

    ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。据研究表明ASLR可以有效的降低缓冲区溢出攻击的成功率,如今Linux、FreeBSD、Windows等主流操作系统都已采用了该技术。

    PE头文件中会设置 IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE标示来说明其支持 ASLR


    1 映像随机化

    经典的方法是用注册表项HKLMSYSTEMCurrentControlSetSession ManagerMemory Management.的方法对映像随机化禁用  设置为0 禁用 ,-1强制对可随机化的映像进行处理,其他值正常工作

    各模块的低位2位不变

    只是对加载基址的前2个字节做了随机处理

    2 堆栈随机化

    XP 下 不具备, VISTA具备  每次获取堆地址不同

    不需要精确跳转的  溢出手段影响有限

    3 PEB TEB随机化

    XP SP2中已经引入了,使用随机性的基址.

    提取代码:

    unsigned int teb;
    unsigned int peb;
    __asm
    {
          mov eax,fs:[0x18]
          mov teb,eax
          mov eax,dword ptr [eax+0x30
          mov teb,eax]
    }
    printf("PEB:%#x
    TEB:%#x",peb,teb);
    getchar();

    ADOBE FLASH PLAYER ACTIVEX  在10后的版本开始全面支持 微软的安全特性,但10以前的可能并未支持SAFESEH ASLR



    根据 http://en.wikipedia.org/wiki/Address_space_layout_randomization所述,在win7下,要用官方指定工具(The Enhanced Mitigation Experience Toolkit)禁用:

    http://support.microsoft.com/kb/2458544


    查看 ASLR  插件显示
  • 相关阅读:
    SQLite数据库
    如何将大文件写入到数据库中
    Visual Studio 2008 附加进程调试
    VS2010MFC编程入门
    关于exe文件传递参数方法
    监视剪贴板数据
    Delphi快捷键
    判断一个对象是否存在, 谁更快
    全局探色器
    用DELPHI中实现RAR文件解压到指定一目录
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982487.html
Copyright © 2011-2022 走看看