欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Blind Return Oriented Programming (BROP) Attack - 攻击原理

来源:本站整理 作者:佚名 时间:2014-09-28 TAG: 我要投稿

0x00 写在前面

第一次在WooYun发文章,不知道是否符合众客官口味,望轻拍。

这篇文章翻译至我的 这篇博客 ,主要介绍了一种叫做BROP的攻击,该文章主要介绍原理部分,对该攻击的重现可以参看我的 另外一篇博客 。

BROP攻击基于一篇发表在Oakland 2014的论文 Hacking Blind ,作者是来自Standford的Andrea Bittau,以下是相关paper和slide的链接:

paper

slide 。

以及BROP的原网站地址:

Blind Return Oriented Programming (BROP) Website

可以说这篇论文是今年看过的最让我感到兴奋的论文(没有之一),如果要用一个词来形容它的话,那就只有“不能更帅”才能表达我对它的喜爱程度了!

这篇文章假设读者已经了解Return-Oriented Programming (ROP) 的基本概念,所以只是介绍BROP的实现原理,如果还不清楚什么是ROP,请先出门左转,看看Wiki 的相关介绍。

BROP的实现真的是让人感到非常“cool”和“smart”,我希望能够通过这篇文章把它讲清楚。

0x01 BROP攻击的目标和前提条件

目标:通过ROP的方法远程攻击某个应用程序,劫持该应用程序的控制流。我们可以不需要知道该应用程序的源代码或者任何二进制代码,该应用程序可以被现有的一些保护机制如NX, ASLR, PIE, 以及stack canaries等保护,应用程序所在的服务器可以是32位系统或者64位系统。

初看这个目标感觉实现起来特别困难。其实这个攻击有两个前提条件的:

  • 必须先存在一个已知的stack overflow的漏洞,而且攻击者知道如何触发这个漏洞;
  • 服务器进程在crash之后会重新复活,并且复活的进程不会被re-rand(意味着虽然有ASLR的保护,但是复活的进程和之前的进程的地址随机化是一样的)。这个需求其实是合理的,因为当前像nginx, MySQL, Apache, OpenSSH, Samba等服务器应用都是符合这种特性的。

0x10 BROP的攻击流程 1 - 远程dump内存

由于我们不知道被攻击程序的内存布局,所以首先要做的事情就是通过某种方法从远程服务器dump出该程序的内存到本地,为了做到这点我们需要调用一个系统调用 write ,传入一个socket文件描述符,如下所示:

[1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载