阿肯评:这是一篇零信任体系建设和运营的实践好文。Ethan作为当事人,详细介绍了零信任走过了远程、全网、动态策略、多维异常行为分析等4阶段的建设过程,以及零信任在攻防实战运营中发挥的巨大作用。目前Ethan及其所在安全团队正在探索零信任的智能化阶段,非常期待具备大模型推理和智能体能力的零信任运营体系会产生什么意想不到的效果。
作者简介-----------------------------------
一、背景介绍
笔者主要负责安全运营以及零信任平台维护,非常有幸作为核心人员深度参与了公司安全运营平台和零信任平台的深度建设,所在公司也有每年攻防对抗的传统,用于验证安全建设的水位,最近一次攻防对抗,攻击方进行了为期1个月的定向攻击,但仍然未突破内网。其中,零信任的安全防护能力起到非常核心的作用,因此通过该文章进行记录和分享,聊一聊零信任在攻防中的重要用途。
二、为什么选择零信任
- 外部攻击方式的变化:公司多年的建设,使得现阶段面临的攻击主要为 2.0-3.0阶段,对暴露面收敛提出更高的安全需求,也对基于用户行为特征的白流量检测提出更高的要求:
-
攻击 1.0 阶段: 饱和式攻击,攻击者主要通过大量扫描、弱口令、Nday利用突破,主要特点示挑软柿子捏; -
攻击 2.0 阶段: 隐匿示攻击,泛化0day、社工能力、供应链攻击,主要特点示静默、隐匿、无感; -
攻击 3.0 阶段: 白流量攻击,通过获取用户可信凭证、API KEY等信息,以合法的身份攻击,主要特点为白流量;
- 业务办公场景的变化:移动办公、远程办公场景、BYOD 场景的出现,网络访问边界越来越模糊。
-
移动化办公场景:用户需要通过企业微信、飞书等IM 工具,便捷安全的访问到内部应用; -
远程办公场景:远程办公场景,要求在任何一个地点都能稳定、安全的访问公司业务系统;
- 数字化转型对业务系统:操作审计、防泄密、安全防护上提出了更高的要求。
- 数据防泄露:检测响应里是否有敏感数据,对文件进行标记;
- 操作审计:谁在什么时间点请求了哪个内网服务,获取了什么数据,并进行可视化展现;
- 安全防护:提供WAF能力、用户异常访问动作序列等风控能力;
- 网络运维难度的变化:内网权限访问控制权限完全依赖acl实现,多年积累的acl造成运维复杂,潜在故障点多,变更影响不可控的问题。
-
解决acl权限不可视:造成的权限管理复杂,权限腐化问题; -
提升了acl管控效率:以前策略管理需要投入3人专职,现在仅1人便可; -
用户体验提升:通过零信任访问,访问路径为用户->代理网关->目标服务器,简化了访问链路,提升了访问效率。
综合上述原因选择了零信任,目标是解决安全问题并尽可能兼顾用户体验。
三、零信任攻防相关知识介绍
1. 零信任介绍
这里借鉴下谷歌对于零信任的定义:零信任是一种旨在保护现代组织的云安全模型,它消除了隐式信任并强制执行严格的身份验证和授权。在零信任模型中,每个用户、设备和组件始终被视为不可信,无论它们在组织的网络内部还是外部都是如此。以下是微软的零信任业务逻辑图。
用户使用各种类型的设备,经过动态的不断的验证条件(位置、设备、用户、应用、风险、异常情况后),验证成功后可以访问应用,如果不成功则拒绝并提醒无法访问原因. 特点是持续验证、永不信任。
2. 零信任通信原理介绍
零信任通过代理技术实现数据通信,分为4层隧道代理和 7层 web代理:
- 相关代理技术实现特点:
- 7层的代理基于DNS解析到代理网关,实现通信,对数据包有一定的侵入性,特点是可以查看所有响应请求的数据包,方便审计和排障且不依赖零信任客户端,适应移动办公场景应用
- 4层的对流量进行封装、改包完成通信,特点是稳定、兼容性强,能看到用户请求进程信息。
- b. 7 层web代理介绍:
该web的配置:前端访问地址: oa.ztp.com (浏览器到代理网关之间通信地址),后端地址为oa.com (代理网关到服务器之间的通信地址)。
- c. 4 层隧道代理介绍:
用户通过办公电脑,使用零信任 4 层代理通信 原理介绍,下面ssh 192.168.1.1的场景描述:
3. 绕过2FA认证的实时钓鱼技术
2FA钓鱼,攻击者已经通过实时钓鱼(real-time phishing)技术突破了2FA的防线。在这些钓鱼攻击中,攻击者需要与受害者实时交互。
举个简单的例子,现在有一个钓鱼网站,要求用户输入一次性密码以及正确的用户名及密码。一旦用户在钓鱼网站上填写认证信息,完成认证过程,钓鱼网页会给用户返回一个通用的“登录成功”页面,并且成功捕捉到用户的一次性密码(但暂未使用)。此时,攻击者可以在一个较短的窗口期内,在令牌过期之前利用受害者的凭据。
四、如何做好日常配置和运营
接下来笔者从安全和用户体验的维度,选择用户管理、应用发布授权管理、认证管理、安全策略管理四个维度来分享分享一下如何做日常的配置和运营。
- a. 用户管理:
用户是零信任的主体,用户管理最主要的是本地生成用户目录和外部组织架构两个功能。
-
本地用户管理则是通过手动创建或根据模板导入员工信息,维护非常的麻烦,不推荐。 -
外部组织架构则是其他的用户供给系统,通过 ldapldaps之类的协议,进行用户供给,并针对用户的属性、组织架构属性、角色属性进行一一映射。零信任基于频率,定期去前端服务器拉取组织架构信息,可实现组织架构和人员的自动变更,实现权限动态调整的目的。
- b.应用发布授权管理:
应用是是零信任的客体,应用需要先发布,再授权给上面的用户、组织架构、角色。 -
这里建议明确应用owner是应用权限管理的第一负责人,应用发布过程。 可通过 API 接口,对接公司 OA 等流程系统,通过审批流来规范业务的发布和授权。
-
自动化应用发布流程:
-
自动化应用授权流程
- c. 认证管理:
主要是配置认证服务器以及认证策略。
- 认证服务器:主要的认证方式就是票据认证、TOTP 令牌认证、短信验证码认证、账号密码认证、证书认证、CAS 认证等,这里不建议用账号密码密码认证。
- 真实的击案例:某公司使用账号密码认证体系,账号是用户的手机号码,密码是身份证的后 6 位数,被攻击者全部拿下了,看上去账号密码是通用的认证方式,为何被攻击者轻易攻破呢?因为攻击者使用社工库,可以轻易捞取认证所需信息。
- 认证策略:
建议认证过程一定要开 2FA 认证,这样能解决很多的安全问题,但用户每一次登录,都接受验证码,对用户体验是较为糟糕的事情,这里笔者选择的是一个折中的认证策略,从时间段、终端授信状态和应用敏感度三个维度设计认证策略。
- 工作时间+授信终端场景+高敏应用
:用户可以申请自己的终端为授信终端,申请授权终端的过程也需要短信认证,申请完成后,管理员审批通过,则用户可以通过自己的授信终端直接访问高敏; - 工作时间+非授信终端场景+高敏应用:
用户需要除了正常认证之外的其他 2FA 认证,如短信、TOTP 令牌,这里建议用 TOTP 令牌,短信存在弱网情况下,无法接收短信的情况; - 非工作时间+非授信终端 +任何应用:
非工作时间,如晚上 11 点到第二天的7 点,则需要通过二次认证,才能登录零信任系统。
- d. 安全策略管理:
- 上线策略:
强制安装客户端,用户访问应用系统毕业安装零信任客户端,如果特殊情况,可以添加排除策略,该策略主要是为了推广全网零信任。 - 超时注销策略: 超时注销其实分PC 端和移动端,这里列举一下笔者所在公司的注销策略,以及原因:
-
PC 端: 8小时无业务流量以及2 小时无鼠标键盘操作则注销,为什么要加添加 无鼠标键盘操作注销呢? 因为当用户登录零信任应用,但忘记退出的时候,可能后台会持续的刷新,这样用户永远是不会注销的; -
移动端: 8 小时无业务流量则注销。
- 高敏应用访问策略:
- 基于 IP 地址的访问策略:
-
内部高敏 IP: 比如某些高敏的应用,必须只能特定的 IP 地址访问,则可以基于 IP 地址配置策略,只有这些 IP才能访问到高敏应用,即使用户权限被钓鱼了,但用户没在指定的接入网络里面,攻击者也无法访问到该类应用; -
基于外部 IP 地址: 一般攻击者的 C22FA服务器,均为各大云厂商的,而正常用户不会使用云厂商的 IP 地址用来办公,因此可以针对云厂商的互联网 IP 地址,配置策略,不允许云厂商的 IP 地址登录零信任业务系统;
- 基于增强认证的访问策略:
-
对于内部的一些线上生产应用、运维通道、集权系统等,可以配置增强认证策略,用户访问时,必须通过短信认证,这样即使攻击者钓鱼获取到特权用户的零信任权限,也无法绕过2 次认证且当攻击者尝试访问时,用户会收到短信认证,从而发现自己权限丢失。
五、不同场景下攻击检测规则思考
从攻防角度来看,经过这么多年的对抗,攻击者的攻击手段也由以前的依赖公开漏洞和个人实战经验,依托于经验足,从互联网突破。突破边界后一马平川转变为互联网很难突破。如何突破大集权成为成为攻防对抗中攻击方水平的分水岭。而由于零信任的出现,大部份集权设备都被防护在零信任背后,且零信任本身也是集权系统,因此零信任平台成为集权平台中的集权平台,如何突破零信任成了攻击者的重点。
那么如何获取用户的零信任权限,大体可以分为两种方式:
第一:钓用户零信任权限,其中代表就是绕过2FA认证的钓鱼攻击手法,目的是窃取正常用户的凭证信息,利用用户凭证对零信任系统发起攻击行为;
第二:钓到用户终端权限,用户被诱导执行恶意可执行程序,远控并代理用户流量,通过用户流量对零信任系统发起攻击行为。
1. 基于凭证窃取攻击的WEB应用攻击场景分析
-
场景说明:用户被实时钓鱼,通过中间人绕过零信任的2FA认证后,获取用户的零信任权限。 -
攻击路径:用户收到钓鱼短信 ->用户扫码钓鱼链接的二维码/打开钓鱼链接->用户输入2FA凭证->攻击者获得用户零信任凭证cookie->访问被钓鱼用户web应用。 -
影响范围: 攻击者可通过用户的零信任权限,访问到web应用,但无法访问隧道应用。 -
异常检测思路:
- 中间人检测:
检测到用户请求的地址和实际认证的应用地址不一致,那么大概率是中间人攻击。例如用户请求时记录的是oa.top,但去服务器认证的时候是oa.com,则大概率被2FA钓鱼了。 - 会话内登录和应用访问的浏览器不一致:
检测同一会话,登录的时的User Agent和访问应用时的User Agent不一致,例如用登陆时的User Agent是小米手机,但访问应用时的User Agent为 Chrom浏览器,则该用户非常可疑。 - 账号在该地点、终端首次登录:
检测到的登录用户的零信任账号在该地点或终端首次登陆。例如张三一直在深圳,突然有一个新加坡的地址登陆,并且该终端也是张三首次使用,那么张三大概率是有问题的。 - 账号多会话异地登录:
用户的账号存在多个会话,并且多个会话在不同的地方登陆。例如某用户被钓鱼后,攻击团队把用户的凭证当作突破点,急需突破内网拿到靶标,而攻击者本地都会挂IP地址池代理,这样就会形成账号多会话异常登陆的现象,该现象是也是非常稀少且准确的。
2. 基于FRP流量代理攻击4层隧道场景分析
-
场景说明: 用户被钓鱼后执行了免杀的可执行恶意文件,用户被远控且流量被代理。 -
攻击路径:用户中马->用户被上FRP->攻击者在自己电脑直接全流量走用户FRP->攻击零信任保护的应用; -
影响范围: 攻击者可通过FRP访问零信任对应所有的应用; -
异常检测思路:
- 进程名检测:
攻击者通过代理工具访问零信任应用,而隧道应用是会记录进程信息,则可以通过进程信息判断。 - 异常行为检测:用户在非工作时间、短时间访问大量平时不访问的应用,并且伴随着扫描、目录遍历等行为,则是非常可疑行为,需要关注。
- 诱捕策略:
-
零信任应用中将蜜罐地址伪装成集权应用发布,当攻击者使用被害者流量访问时,则需要关注; -
通过零信任,在用户的浏览器记录以及本地电脑中,插入蜜罐账号密码信息,诱导攻击者访问蜜罐。
-
加固思路:
- 异常时间增强认证:
可基于公司的实际情况,在非业务高峰期配置增强认证,攻击者使用流量访问应用时,则需要用户输入短信验证码,如用户收到异常验证码,也可以上报信息安全部。 - 高敏应用二次认证:
针对公司高敏的应用,访问需要二次认证,则非用户主动访问的情况下,攻击者代理了用户流量也无法访问,保证高敏系统的安全。
3. 基于公司业务系统自定义检测规则分析(仅限 WEB 应用)
-
场景说明: 攻击者钓鱼用户权限后,访问公司内部的文档系统,获取大量账号、密码、核心系统凭证; -
攻击路径: 用户凭证被窃取 -> 访问docswiki等平台 -
异常检测思路:
-
将docswiki等业务系统发布成web资源,web资源会记录所有用户访问业务系统的postresponse的请求,基于请求信息,自定义规则。当用户在wiki中搜索密码、API、凭证等关键字时推动告警给安全人员。
综上,业务系统收缩到零信任后是有非常多的异常检测手段的,并且这些发现手段之间可以互相组合。在端失陷的情况下,通过多元的异常行为分析、进程检测以及诱捕策略发现攻击者的行为,从而快速的阻断。在攻防对抗过程中,阻断时间是非常重要的指标。当docs、wiki类的业务系统被攻击者访问1天以上时间仍未阻断,那么其实对抗已经结束,攻击者将使用正常业务权限打穿所有系统。
六、实战攻防中零信任保护
钓鱼攻击是防守方在实战攻防过程中常用的手段,以下是攻击放通过钓鱼直接拿下目标靶机作战路径图:
特点是:钓鱼成功后隐匿度高。前期某一钓鱼节点没监测到无痛出局。
第一回合:攻击队钓鱼攻击,拉开攻防对抗序幕
通过2FA钓鱼,拿到公司某用户权限,零信任中间人告警后,强制用户下线并应急。
第二回合:诱敌深入,满意而归
攻击方持续钓鱼,存在零星的用户上线,均被发现和应急,但非常担心处置不及时漏掉告警后直接内网打穿,便主动采取诱敌深入,不处置上线用户,持续观察攻击方行为,消耗攻击方资源。
-
用户被钓鱼成功,决定观察攻击方下一步动作:
-
发现攻击者尝试访问某内部系统并越权:
-
发现用户越权管理员之后进行水坑攻击,定向钓鱼SRE人员:
-
发现攻击者恶意文件和意图后,迅速清理该路径,并对恶意文件进行分析,提取情报信息.
第三回合: 全自动封堵开启!!!
针对内部wiki、hr等高敏感系统,基于用户非常用UA、非常用进程访问自动封堵:
七、总结与展望
攻防对抗是一个非常好的安全验证手段:向上,一个中立第三方的报告胜过安全部的千言万语;对内,只有模拟的外部攻击,才能更有效的验证当前安全建设的薄弱点以及内部团队的战时的协作能力,从而针对性的提高和加强。
零信任能够有效的简化安全对抗的难度。攻击路径越多,防守方的防守难度越大。但有了零信任之后,攻击者只有获取到零信任权限后,才能攻击到内部系统。零信任的解法是收缩到2-3条可能的攻击路径,并且在这些路径上重兵把守。
对于防守方而言,攻防对抗是反人性的:
-
安全是体系建设,需要资源、时间、各部门配合,且和攻击方相比具备滞后性;
-
每天都要盯着安全设备日志,从几十亿条安全告警中,发现潜在的异常线索,非常折磨人。
但只有直面敌人,才能强大。脆弱的反义词不是坚强,而是韧性。
原文始发于微信公众号(阿肯的不惑之年):零信任在企业攻防实践中的作用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论