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

简介: 本文简单介绍了android和ios中广泛使用的一些漏洞缓解及可能的绕过技术。也包含一些相关联的安全限制,而非真正意义的缓解技术。

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


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


缓解及绕过技术点

User Permissions

每个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、三星、华为等公司上报多个安全漏洞。实验室技术负责人曲和表示,期望通过此次比赛吸引更多应用及系统漏洞挖掘和漏洞利用的选手进行交流学习,共同为互联网安全新生态而努力。


重磅预告,今晚20:00阿里聚安全攻防挑战赛预热赛整点开启!但是我们不做任何淘汰!不淘汰!不淘汰!不淘汰!


作者:此彼@巴斯光年实验室,更多挑战赛信息,请关注阿里聚安全攻防挑战赛官网

相关文章
|
机器学习/深度学习 存储 数据采集
使用GANs生成时间序列数据:DoppelGANger论文详解(一)
使用GANs生成时间序列数据:DoppelGANger论文详解
2015 0
使用GANs生成时间序列数据:DoppelGANger论文详解(一)
|
12月前
|
存储 缓存 NoSQL
Redis持久化深度解析:数据安全与性能的平衡艺术
Redis持久化解决内存数据易失问题,提供RDB快照与AOF日志两种机制。RDB恢复快、性能高,但可能丢数据;AOF安全性高,最多丢1秒数据,支持多种写回策略,适合不同场景。Redis 4.0+支持混合持久化,兼顾速度与安全。根据业务需求选择合适方案,实现数据可靠与性能平衡。(238字)
|
存储 搜索推荐 API
电商 API 开启多平台营销推广数据整合新玩法
在数字化时代,电商企业面临多平台数据分散、分析效率低等问题。电商 API 通过整合淘宝、京东等平台数据,实现统一数据源、实时同步与精准营销,助力企业提升决策效率,开启个性化推荐、自动化营销等新玩法,是驱动营销升级的关键工具。
|
机器学习/深度学习 算法 算法框架/工具
埃式质数筛及性质
【10月更文挑战第8天】本文介绍质数,或素数,指大于1且仅能被1和自身整除的自然数。它们在数学中有独特地位,如算术基本定理指出任何大于1的自然数可唯一分解为质数乘积。质数的寻找方法多样,包括试除法、埃拉托斯特尼筛法等,后者通过筛除合数高效找出质数。质数在密码学中尤为重要,如RSA加密算法依赖大质数的乘积安全性。此外,还有多种算法和理论,如欧拉筛法、费马小定理、梅森质数等,丰富了质数的研究领域。
1046 2
|
存储 安全 测试技术
云计算应该掌握的八种用途
云计算通过互联网提供按需付费的云服务,广泛应用于软件开发、社交网络、大数据分析、数据备份、文件存储、灾难恢复、云端通信和业务流程管理等领域。它帮助企业降低硬件成本、提高开发效率、保障数据安全、增强业务连续性,并支持多样化应用场景,成为数字化转型的核心引擎。
2641 2
|
机器学习/深度学习 人工智能 自然语言处理
什么是智能搜索
智能搜索融合了人工智能和大数据技术,提供高效的语义理解、多模态数据处理及个性化推荐。它不仅支持传统关键词匹配,还结合NLP、机器学习等先进技术,提升信息检索的精准度与多样性。适用于电商、内容平台、多媒体及企业内部知识库等多种场景,显著优化用户体验和业务效率。
2224 2
|
运维 监控 安全
身份是安全的基石:深入理解阿里云身份体系
企业云上身份管理面临诸多挑战,如账号泄露、权限未及时回收等,导致数据泄露和内部系统被篡改。阿里云提供了一套完善的身份管理体系,包括单账号和多账号场景下的解决方案。对于单账号,通过主账号保护、RAM用户和角色实现分权与审计;对于多账号,使用云SSO统一管理和配置跨账号权限,确保安全合规。该体系支持浏览器、API访问,并集成企业IDP,实现无密钥登录和自动化管理,有效降低风险并提高管理效率。
|
Java Unix 程序员
一文彻底搞定C语言的前世今生
C语言是计算机编程史上的一颗璀璨恒星,由贝尔实验室的肯·汤普逊和丹尼斯·里奇在20世纪70年代基于B语言开发。它凭借高效、灵活、可移植性强等特点迅速崛起,成为Unix操作系统的核心语言,并广泛应用于操作系统、嵌入式系统、游戏引擎等领域。C语言不仅推动了众多后续编程语言的发展,如C++、Java等,还通过多次标准化(C89、C99、C11等)不断适应新时代的需求,至今仍占据着计算机技术的重要地位。
581 0
|
分布式计算 大数据 BI
ClickHouse与大数据生态整合:从ETL到BI报表
【10月更文挑战第27天】在这个数据驱动的时代,企业越来越依赖于数据来做出关键决策。而高效的数据处理和分析能力则是支撑这一需求的基础。作为一位数据工程师,我有幸参与到一个项目中,该项目旨在利用ClickHouse与Hadoop、Spark、Flink等大数据处理框架的整合,构建一个从数据提取(Extract)、转换(Transform)、加载(Load)到最终生成商业智能(BI)报表的全流程解决方案。以下是我在这个项目中的经验和思考。
868 1