科普 | 你必须了解的漏洞利用缓解及对抗技术

随着软件系统越来越复杂,软件漏洞变得无法避免。业界逐渐推出了让漏洞无法利用或利用难度提高的方法,简称漏洞缓解技术。我们简单介绍下Android和iOS中广泛使用的一些漏洞缓解及可能的绕过技术。当然这里也包含一些相关联的安全限制,而非真正意义的缓解技术。

缓解及绕过技术点

User Permission

每个app有自己uid,selinux_context,只有申请并且用户允许才有权限做它想做的事。要突破这些限制,可以考虑通过每个app合理的权限相互结合后产生的不合理性来入手。或者App之间交互的漏洞,如Android的FileProvider,先拿下此app等。

SELinux、MAC、Sandbox

SELinux是Security Enhanced Linux缩写,可解释为“安全加固型Linux内核”,MAC是Mandatory Access Control的缩写,意为强制访问控制。Sandbox即沙盒。它们含了一套很复杂的权限管理策略。基本采用白名单模式,默认禁止任意进程的绝大部分的行为,限制文件访问,限制系统调用及调用参数。即限制了每个app的行为,也减少了被攻击面。要突破这些限制,比较可行的方法是攻击如内核关闭等。

PIE、ASLR、KALSR

PIE是Position Independent Executable的缩写,与PIC,Position Independent Code一样。ALSR是Address Layout Space Randomization增强内存地址空间分配的随机度。可执行文件和动态加载的库之间的间隔,前后顺序均不同,更没有规律。准确地址未知的情况下攻击者几乎不可能完成攻击,相当于战场上目标都没有找到。KALSR中的K是kernel的缩写,保证每次设备启动内核的虚拟地址是不同的。要突破这些限制,可采用堆喷射等喷射加各种类型的滑板,提高利用成功几率。信息泄漏漏洞,如泄漏内存,泄漏文件,获取内存地址。

DEP、PXN

DEP是Data Execution Protection的缩写数据不可执行,意味着攻击者不能直接执行自己的代码,使攻击难度变高。PXN是Privileged Execute Never的缩写,内核态无法运行用户态可执行数据。要突破这些限制,可利用ROP(Return Orient Program),JOP(Jump Orient Program),stack pivot技术,用程序自己的代码做攻击者想做的事。原理是利用现在ABI(Application Binary Interface)的特点,改写程序的栈,控制多个函数返回地址从而形成链,将原有程序自己的代码片段连起来做攻击者想做的事。类似生物上的病毒。浏览器的话可以改写JIT(Just In Time)编译器所用的内存。Android用户态mprotect,mmap系统调用,把内存改成可执行。

Trust Zone

可信空间,完成指纹、支付、解锁、DRM和其他认证最保险的一步。即使是操作系统内核也无法访问其内存。它完成签名,加密等工作。要突破这些限制,先考虑拿下有权限访问的service进程drmservie,gatekeeper。通过Fuzz接口找漏洞。如果拿到代码执行的权限的话,就可以跳过指纹验证悄悄的扣款了。

平滑升级

App自动更新,系统自动下载并提醒开关机时候升级,保证及时修复bug,我们也将此列入到漏洞缓解中。要突破这些限制,可以考虑使用Google的app之间彼此信任,先拿下Google的一个app。让这个app向Google Play发送安装请求。

Code Sign

对代码进行签名,保证代码从商店到用户手机上不会有变化,防止被恶意植入代码,也防止执行未被苹果公司审核的代码。绕过方法这里就不阐述了。

Secure Boot、Verifying Boot

Secure Boot是iOS中的、Verifying Boot是Android中的,它们保证系统代码不被修改,保证完美越狱、完美root无法实现。还有一些手机厂商自定义的缓释措施,如Android的system分区强制只能只读挂载,需要修改部分驱动中的数据才能实现对system分区的修改

示例初探

在之前发布的《PXN防护技术的研究与绕过》这篇文章,里面详细解释了如何绕过DEP、PXN这两种缓释措施,用的基本方法就是JOP和ROP技术。我们将在此基础上解释root工具中绕过其他几种防护的方法。

文章提到将thread_info中的addr_limit改为0xffffffffffffffff:

addr_limit是用于限制一个线程虚拟地址访问范围,为0至addr_limit,改成0xffffffffffffffff表示全部64位地址全部可访问。Google至今没有在Android上启用KALSR,arm64内核一般都固定在0xffffffc000000000开始的虚拟地址上,并没有随机化也就是说可以随意读写内核了。虽然Android没有KALSR但内核堆的地址依旧是不可预知的相当于一种随机化,想要利用CVE-2015-3636(pingpong)这类UAF类型漏洞必须要用到喷射或者ret2dir这类内存掩盖技术。

一般是将uid、gid修改为0,0是root的uid,即此线程拥有了root权限,capabilities修改为0xffffffffffffffff掩盖所有比特位,表示拥有所有capability。至此user permissions缓释就被绕过了,也可以把自己伪造成其他任意用户。

将“selinux_enforcing”这个内核中的全局变量设为0后,selinux相当于被关闭了。此举可以绕过SElinux的缓释。

MAC、Sandbox是iOS中的缓释措施,作用相当于Android中的SELinux。苹果公司的Code Sign要求除了开发所用程序,所有可执行代码必须要苹果公司签名才能在iPhone运行。Android虽然要对APK签名但APK依旧可以任意加载可执行程序。

在此次阿里聚安全攻防挑战赛中便可以体验一把如何突破ASLR、DEP等漏洞缓解技术。该题是由蚂蚁金服巴斯光年实验室(AFLSLab) 曲和、超六、此彼三位同学完成设计,将模拟应用场景准备一些包含bug的程序,并侧重于PWN形式,服务端PWN需要选手具备二进制程序漏洞挖掘和利用能力,通过逆向服务端程序,找出服务端程序的各类问题,然后编写利用代码,在同服务端程序的交互中取得服务端程序的shell权限,进而拿到服务器上的敏感信息。另外在Android应用PWN能力方面,需要选手具有远程获得任意代码执行和arm64平台反汇编理解逻辑的能力,寻找能够突破DEP、ASLR等防护,进而控制目标APP执行自己的代码。

这次参与出题的蚂蚁金服巴斯光年实验室(AFLSLab)是蚂蚁金服安全中心(俗称蚂蚁神盾局)旗下近期刚成立不久的移动安全实验室,除护航支付宝钱包及蚂蚁金服相关产品的安全外,也同时为守护外部厂商、商户、生态伙伴终端基础安全。虽然成立时间很短,但已经为google、三星、华为等公司上报多个安全漏洞。实验室技术负责人曲和表示,期望通过此次比赛吸引更多应用及系统漏洞挖掘和漏洞利用的选手进行交流学习,共同为互联网安全新生态而努力。

时间: 2024-12-26 04:17:10

科普 | 你必须了解的漏洞利用缓解及对抗技术的相关文章

Linux堆溢出漏洞利用之unlink

Linux堆溢出漏洞利用之unlink 作者:走位@阿里聚安全 0 前言 之前我们深入了解了glibc malloc的运行机制(文章链接请看文末▼),下面就让我们开始真正的堆溢出漏洞利用学习吧.说实话,写这类文章,我是比较怂的,因为我当前从事的工作跟漏洞挖掘完全无关,学习这部分知识也纯粹是个人爱好,于周末无聊时打发下时间,甚至我最初的目标也仅仅是能快速看懂.复现各种漏洞利用POC而已-鉴于此,后续的文章大致会由两种内容构成:1)各种相关文章的总结,再提炼:2)某些好文章的翻译及拓展.本文两者皆有

Windows漏洞利用技术总结

Windows漏洞利用技术总结 1. 前言 本文是我对漏洞利用技术的学习总结,也是自己践行QAD (Questions.Answer.Discussions)的一次实践.本文通过阅读几位大牛的文章.演讲报告.exploit编写教程等技术文档不断总结修改而成,列举了当前Windows下常见攻击缓解技术的基本原理及绕过方法,具体技术细节则不详细描述,大家可以通过参考文献或其他文章进一步学习.由于本人能力有限,文中可能还存在不少错误,我会不断回顾并完善. 2. Windows攻击缓解技术简介 自从Wi

Apache漏洞利用与安全加固实例分析

Apache 作为Web应用的载体,一旦出现安全问题,那么运行在其上的Web应用的安全也无法得到保障,所以,研究Apache的漏洞与安全性非常有意义.本文将结合实例来谈谈针对Apache的漏洞利用和安全加固措施. Apache HTTP Server(以下简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,是最流行的Web服务器软件之一.虽然近年来Nginx和Lighttpd等Web Server的市场份额增长得很快,但Apache仍然是这个领

Zabbix的前台SQL注射漏洞利用

今年8月份Map在wooyun上发了个Zabbix某前台SQL注射漏洞 ,11月份才公开. 漏洞详情大约是这样的: 在zabbix前端存在一个SQL注射漏洞,由于zabbix前台可以在zabbix的server和client进行命令执行,所以这会导致很严重的后果. 在 /chart_bar.php 的163行代码 获取了一个来自GET,POST,COOKIE的值itemid. $itemid = $item['itemid']; 最后这个参数进到了SQL查询的过程 在同一个文件内的$period

《Look Mom, I don’t use Shellcode》议题解析&IE11漏洞利用小议

0x0 前言 <Look Mom, I don't use Shellcode>是2016年Syscan360上讲过的一个议题,这个议题的副标题是"Browser Exploitation Case Study for Internet Explorer 11 ",可以看出内容是关于IE11浏览器中的漏洞利用的. 非常可惜我没有能够在现场听到这个议题,但是在会后拿到了演讲者的ppt研究了一下,这里写出来也是做一个分享. 0x01 正文 这是演讲者的PPT封面 演讲者介绍漏洞

LFI漏洞利用总结

主要涉及到的函数 include(),require().include_once(),require_once() magic_quotes_gpc().allow_url_fopen().allow_url_include().move_uploaded_file() .readfile() file().and file_get_contents().upload_tmp_dir().post_max_size().and max_input_time()等 典型漏洞代码: <!–?php

ETERNALROMACE漏洞利用流程备录

NSA中Eternalromance模块为windows中针对SMB服务的漏洞利用工具,该工具针对CVE-2017-0145. SMB在处理SMB_COM_TRANSACTION命令的请求时,如果发送的内容超过最大长度,需要使用SMB_COM_TRANSACTION_SECONDARY命令请求发送之后的数据,如下图所示,通过该函数SMB_COM_TRANSACTION_SECONDARY才能获取对应的正确SMB_COM_TRANSACTION(主要通过判断两个包的PID,MID,TID和UID是

apt28组织新的flash漏洞利用包dealerschoice分析

17号paloalto发布了文章dealerschoice-sofacys-flash-player-exploit-platform,文中提到apt28正在编写adobe flash player的利用工具包,遂将样本下下来分析了一番. 和之前很多的flash漏洞利用不同,这次apt28将自身的漏洞利用工具作为ole的一部分捆绑到rtf文件中,运行结果如下,可以看到运行之后,直接显示的是一个word文档,内容是关于俄罗斯的,看来这次是要搞老毛子咯...... Rtf文件处理 直接通过offic

Fckeditor漏洞利用总结

Fckeditor漏洞利用总结  查看编辑器版本FCKeditor/_whatsnew.htmlFCKeditor/editor/dialog/fck_about.htmlFCKeditor/_samples/default.htmlaeditor/filemanager/browser/default/browser.html?Connector=../../connectors/cfm/connector.cfm editor/filemanager/connectors/asp/conne