安全的进步,并非只靠性感唬人的新名词。即便是最基础的概念,应用到极致,自然也是创新。基础不扎实,一味炒作,终归是空中楼阁。每年的RSAC纵然热点繁多,但对安全基础能力的探索却从未中断。如果参会者从热议创新的喧嚣嘈杂中脱身,静下心来细细品味五花八门的议题内容,寻找茫茫大海中被遗落的珍宝,也必定收获良多。
攻击面Attack Surface,字面意思便很容易理解,是系统暴露在外的界面和功能,有可能存在弱点被攻击者利用。缩减攻击者能接触到暴露面,自然会增加系统安全性。在建造一个软件系统时,如何清晰了解评价A架构设计是否比B架构更加安全,攻击面即可作为一种靠谱的评判标准。正规集团军方式管理的红队,渗透测试前总会系统梳理对手暴露的攻击面,并据此制定战略任务分解。此概念虽未大红大紫,但早已成为业界指导工作的基本原则之一,衍生出众多方法论和落地产品。攻击面理论框架于2004年在CMU完成,与很多其它安全领域基础研究相同,由NSF、DARPA、和ARO资助。让我们一起透过本文粗略探究RSAC中行业专家如何利用攻击面概念提高安全水平。
高屋建瓴,攻击面用于指导顶层架构
NSA建议了安全运营的5个可行动准则,第一条即为建立可防御的边界,其中强调了缩小攻击面的重要性。
笔者并不认同某些新名词炒作,例如Zero Trust框架,现实例子BeyondCorp等,吸引眼球同时不免带有明显误导性;实际上此模型落地还是需要信任账号和证书甚至行为分析,与传统安全架构并无不同。笔者并非要吐槽BeyondCorp方向错误,而是请大家注意到其应用场景的狭窄、被业务需求所逼迫的窘困、以及降低安全性的无奈妥协,更重要的是请注意BeyondCorp使用了大量传统身份和访问安全手段,并基于信任链条,并不像某些宣传文章中所扭曲吹嘘的颠覆创新,宣称此方案比隔离更安全都是不负责任的,请勿无限制拷贝推广。上图幻灯片中所描述最佳实践,第一条便是要将互联网流量路径限制到有限数量;BeyondCorp其实也是这么做的,限制流量的反向代理网关显然也算是一种边界。简而言之:首先,安全,不可能不依赖信任;其次,多一条防御边界肯定比没边界更安全;第三,大幅增加暴露攻击面的实践要尽可能避免。
威胁建模在安全顶层设计中的应用将会愈加广泛,无论是在自用业务系统搭建,向云、容器、微服务等新平台迁移过程,还是DevSecOps设计实践中;而攻击面分析是不可或缺的重要组成部分。笔者建议,如果预算充足,对业务系统和软件产品,应该进行每年至少一次威胁建模,评估结果对改善整体安全性、提升安全团队话语权、指导下一年工作等都极为有益。下图展示了威胁建模的框架方法论。
而下面两张幻灯片示范了如何通过架构、用例、应用交互、和数据流去识别攻击面。
在数字经济转型如火如荼、软件决定业务的大环境下,各类新技术新系统匆忙上线,暴露的攻击面增长十分迅猛,对安全是个重大挑战。例如工控和IoT。
上面幻灯片为有关IoT多层暴露(内容过于简单),漏洞扫描自然都是基于攻击面。看过上图,读者可能会突然意识到IoT中供应链安全的严肃性和迫切性:每个层次每个环节都有大批厂商涌入,提供数不清的标准协议或者私有接口,功能五花八门深入社会每个角落,无处不在时刻连接的海量攻击面简直会令安全团队绝望。这也是为什么美国从政府到民间巨大呼声下定决心要对IoT实施大范围监管,如下图所示。
下图讨论了SDN中分布式和集中式控制器的攻击面区别,试图说明哪种设计更安全。这也是攻击面在顶层架构设计中的重要应用方式。显然,分布式控制器暴露在外的攻击面从数量上来讲远远高于集中式。当然,架构设计不能只考虑安全性,还需要考虑业务需求,互相平衡并妥协;但是,无数案例已经证明,架构设计阶段不考虑安全是万万不成的,会造成后期团队疲于奔命且损失惨重。
熟思审处,攻击面用于指导产品和服务设计
各位读者熟悉大名鼎鼎的微软的ASR吗?全称是Attack Surface Reduction,通过减少被加载模块的数量缩减攻击面,最初出现在EMET 5之中,颇受好评;最新版封装于Windows 10 RS3,能提供诸如阻止Office应用向其它进程注入代码、阻止混淆过的脚本被执行等安全能力,读者一看便知可以对抗安全团队心腹大患鱼叉攻击。漏洞扫描产品的作用是在已有攻击面上减少弱点。如果能削减攻击面数量,自然不用担心不存在的攻击面上的漏洞。
特权帐户拥有访问跨业务应用和关键IT基础设施中敏感数据的权限。在大型企业网络中,随着应用、系统、存储、和设备数量增加,特权帐户数量持续激增,从而成倍地扩展攻击面。而在众多网络入侵中,攻击者使用已泄露的特权凭据轻易得手,因此安全团队需要保护账户凭据免遭攻击。CyberArk通过集中管理和保护特权账号以缩减攻击面。
随着数据应用场景增多且复杂化,数据脱离业务系统存在的状况变得更加普遍。思睿嘉得通过绘制数据资产地图,可视化展现不同类别关键数据在组织中的分布,不符合安全策略的数据保有和使用的风险一览无余,帮助安全团队防范滥用数据,能有效减少针对关键数据攻击的暴露面。
攻击面概念应用于产品安全设计早已得到普及。例如下图,安全开发生命周期SDL的实施,在设计环节中引入威胁建模,缩减攻击面,已被公认为是最佳实践。
混合云和容器等新技术的使用也增大了攻击面,跨平台实时可见是基本能力要求,也需着重考虑如何减少攻击面。业务系统设计或进行安全评估时可以参考以下实践。
当迁移到微服务架构中时需要考虑攻击面,Serverless与传统主机模式相比,既会增加攻击面同时也在减少攻击面,所以安全保护模式有明显改变。
觅迹寻踪,攻击面用于指导渗透途径寻找
对于红队来说,发现攻击面更是至关重要。Kill Chain前三阶段以及MITRE PRE-ATT&CK都与攻击面识别有关。
侧信道、声音、二维码、电磁波等等攻击方式,是选择了不常见的攻击面。为了提高易用性从而为业务系统增加替代入口,也会造成新攻击面的出现,例如生物识别身份认证。而Fuzz Testing的前提条件便是存在暴露攻击面,然后即可进行半监督指导的随机输入参数攻击。随着AI在模糊测试中应用的推广,攻击面过多造成的隐患十分令人担忧。
攻击面的含义,比初始入侵突破口更加广泛,Kill Chain中每一步的成功实现,都可以利用不同的攻击面。对很多封闭环境来说,攻击者需要别出心裁地寻觅一个有效途径达成目标,此时体系化梳理潜在攻击面是个不错的选择。
红队已经在公开讨论自制自动化工具发现攻击面。
在公有云上,当VPC做了严格的ACL时,如何建立C&C通讯通道?DNS协议当然可以作为攻击面。对很多业务来讲,DNS是必须允许使用的基础设施能力。例如国内某云的对象存储服务,完全依赖于DNS,虚拟子网不开放UDP 53便无法使用。雪上加霜的是,大部分服务商不提供DNS日志给用户,审计追查十分困难。下图的例子使用CVE-2017-5638针对Struts 2远程代码执行,通过DNS服务下载payload,然后通过DNS隐蔽隧道建立C&C通讯,除了第一步Web上传漏洞执行代码,其余步骤都只需通过DNS暴露的攻击面实现。
下图例子使用了对象存储作为攻击面,成功从一个完全隔离外网的云上子网盗取数据。使用ImageMagick的远程代码执行漏洞CVE-2016-3714,上传包含代码的恶意图片,将入侵者控制的S3对象存储加入,作为C&C通讯通道,将攻击指令上传到攻击者控制的S3中,再将受害者S3对象存储中的私有数据,转移到攻击者所有的S3中,即可随意下载。具体攻击细节笔者就不赘述了,请读者自行研究。
这个例子充分说明了,即使看起来完全隔离的网段,如果选择恰当攻击面并加以巧妙利用,仍可成功渗透并盗取数据。令人忧虑的是,传统检测方法对此种攻击基本无效,只能通过监控对象存储中对关键数据对异动行为进行识别,这是很高的数据安全与实体行为分析的能力要求。但是潘多拉盒子既已打开,针对和利用云对象存储的攻击很快便会普及,甲乙双方都应尽快补课。
篇幅时间所限,本文以RSAC内容为引子,对攻击面的探讨只是冰山一角,权当抛砖引玉。