Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1168850
  • 博文数量: 272
  • 博客积分: 3899
  • 博客等级: 中校
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-15 14:53
文章分类

全部博文(272)

文章存档

2012年(272)

分类: 网络与安全

2012-06-15 16:03:53

正好今天David LeBlancblog上更新了一点关于vista安全特性的讨论,其中提到了ASLR的一些绕过,原文这么说的

ASLR – there is a limited amount of randomness in where things show up in memory – only 8 bits. In some cases, you can get 16 bits because you might have 2 things moving independently (e.g., where the stack is and where a DLL loads). Problems you can run into include information leaks, or crashes that tell you things about where DLLs are in memory. Once a DLL is loaded, it stays in the same place. For DLLs used by a lot of apps, this could persist until you reboot. Thus an information leak in one app might help refine an attack against another. It is also true that a poorly implemented exception handler could make ASLR ineffective by allowing as many attacks as you need. This was seen in the .ani exploit. I've written about this problem previously here. ASLR also may not be applied to all DLLs, and that gives you a non-moving target. Additionally, if the exploit mechanics allow it, you might be able to code something that depends on an offset rather than finding a fixed address. For example, if you can jump to a predictable offset from where you are to something that calls the function you want to hit, then you have a way to find the function, even if you cannot predict where it is and go there directly.


这让我想起了我以前写的那个imailiaspam.dll堆溢出,就是利用了information leaks,可以把内存地址读出来,精确判断栈空间的加载地址。那是一个write any to any的漏洞,所以可以精确覆盖。当时就想过这个漏洞在vista上如果绕过了DEP,应该是也能成功利用的。

David LeBlanc这里举的这些思路都是非常不错的,虽然没啥新东西,但也是个比较好的归纳。


全文我已经转到邮件列表了,不知道会有几个人认真去看。

阅读(2051) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~