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  插件显示
  • 相关阅读:
    sql取每个分组的第一行数据
    PHP microtime() 函数
    笔记产品会不会被淘汰
    making an os NO.1 怎样进内核之二
    hjkhjkh
    HTTP协议理解
    hjkhjkh
    making an os NO.1 怎样进内核之一
    hjkhjkh
    笔记产品会不会被淘汰
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982487.html
Copyright © 2011-2022 走看看