专栏首页黑白安全ASLRay:一个可以绕过ASLR的工具

ASLRay:一个可以绕过ASLR的工具

ASLR(Address Space Layout Randomization,即地址空间格局随机化)是指利用随机方式配置数据地址,一般现代系统中都加设这一机制,以防范恶意系统对已知地址进行攻击。不过目前已经有多种绕过ASLR的方式,今天将介绍一个简单的ASLR绕过工具。

介绍

特点

而ASLRay是一款可以绕过ASLR的工具,其特点如下:

ASLR绕过 跨平台 较为简约 操作简单 无法修复

依赖

Linux 2.6.12 – 适用于任何基于Linux的x86-64的操作系统。

限制

堆栈段必须可执行(-z execstack) 二进制必须在本地通过参数(不是文件,套接字或者输入)来利用 不支持其他架构和操作系统 需要知道缓冲区的限制/大小

工作原理

你有没有听说过堆喷射攻击(Heap Spraying attack)?其实Stack Spraying也差不多,不过在大多数情况下它都被认为很不实用,特别是x86-64上的ALSR。

而最近作者证明恰恰相反。

对于32位,一共有2^32(4 294 967 296)个理论地址,然而对于虚拟化的内存中的执行,内核仅允许控制2^(32/2)即65 536个理论地址。这意味着如果我们在堆栈中控制多于五万个字符,那么由于内核的重定向和重新转换,我们就可以指向的shellcode了。根据我的测试,其实100个甚至10个字符就够了。

这可以使用shell变量来实现,这些变量并不是真正限于特定的长度,但实际的限制是大约一百万,否则会使TTY饱和。那么,为了搭配任何shellcode成功利用,我们要将NOP sled紧接着shellcode放入shell变量中,然后通过随机地址来利用。要注意的是,NOP sled并不是必要的。

在64位系统中,情况就有些不一样了,但是我发现并没有变化太大。

当然了,你不一定要覆盖所有2^64种可能性,事实上内核只允许48位,另外一部分有一半是静态的和可预测的,这样算下来就是2^(4*8+5)即137 438 953 472种可能性。作者之前提到了shell变量的大小限制,其实还有一个计数限制,大约为10,因此我们可以存储一个10万字符的shellcode。这次需要强制使用NOP sled,因为这样会更快。

总而言之,在32为和64位系统中,ALSR可以通过几行shell在几分钟之内轻松绕过。

如何操作

如果你在之前至少利用过一个缓冲区溢出,就可以直接跳过这里了,但是为了防万一:

apt install gcc libc6-dev-i386 || kill -9 $$chmod u+x ASLRay.shsudo gcc -z execstack test.c -o testsudo gcc -m32 -z execstack test.c -o test32sudo chmod +s test test32source ASLRay.sh test32 1024source ASLRay.sh test 1024source ASLRay.sh test 1024 \x31\x80...你的shellcode

在debian上证明NOP sled不是必需的:

注意!!!这会改变etc/passwd且修改/etc/shadow的权限,所以推荐使用虚拟机。

chmod u+x PoC.shsource PoC.shgrep ALI /etc/passwd

如果没有用,就在一开始加上一些NOP(\x90)

别忘了检查堆栈段是否可执行和ASLR的设置:

scanelf -e test | grep RWXorreadelf -l test | grep RWEgrep 2 /proc/sys/kernel/randomize_va_space

你可以将shellcode放入一个变量中,并为ASLR的shell分配随机地址,作者认为这样的内核虚拟化行为是一个未知的漏洞,所以PoC属于0day。

sudo gcc -z execstack -fno-stack-protector test.c -o testsudo gcc -m32 -z execstack -fno-stack-protector test.c -o test32

如何防范

1.要记得始终依赖于多重保护,而并非单一保护。

2.或许我们需要新的系统安全机制。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何用树莓派实现WiFi钓鱼

     首先登场的是Kali Linux,它是基于Debian的Linux发行版,在数字取证和渗透测试有较大的优势。你可以在你的笔记本上安装该系统,然后就可以用它...

    周俊辉
  • PHP代码审计入门之路

    虽然市面上的代码审计的文章已经一大把了,但是还是决定重复造轮子,打算作为一个系列来写的,近年越来越多的安全研究人员投入到php应用的漏洞挖掘,相对应的代码安全问...

    周俊辉
  • 互联漏洞[提权挂黑]

    XSS (cross-site script) 跨站脚本自1996年诞生以来,一直被OWASP(open web application security pr...

    周俊辉
  • R常用基本 函数汇总整理

    help() 或者 ? + command 这是学习和使用R最常用到的命令。 help.search() 或者?? 搜索包含制定字串或pattern的...

    学到老
  • 【自动化测试】Python - uni

    用Python搭建自动化测试框架,需要组织用例以及测试执行,大部分推荐的是unittest。现在用的也是这个,随着了解,也有其他的框架,有时间再多去学习,保持持...

    py3study
  • AutoTest简介

           在离职后的一段时间里,个人总结了过去几年工作的心得,结合以往的工作经验。重新思考并重构了前些年做的一些东西(主要是测试相关),产生了设计AutoT...

    lulianqi
  • 如何用树莓派实现WiFi钓鱼

     首先登场的是Kali Linux,它是基于Debian的Linux发行版,在数字取证和渗透测试有较大的优势。你可以在你的笔记本上安装该系统,然后就可以用它...

    周俊辉
  • 斯坦福大学《机器学习》课程-中文版笔记(2.4)

    AI传送门
  • 为什么投资拉勾的是前程无忧?

    今天互联网圈最大的新闻,就是前程无忧1.2亿美金投资了拉勾。在互联网圈,很多人都知道拉勾,但很少人关心前程无忧。 这种上古时代的网站谁还用呢?为什么一家公司可以...

    罗超频道
  • 联发科号称自家5G芯片业界领先,是不是事实?

    联发科本身也是一家老牌的企业,在无线通讯,数字电视,光存储以及蓝光等产品都有涉猎。在2G时代的联发科通过发布MTK整体手机解决方案,直接奠定了联发科在手机行业的...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券