浅谈网络攻防中的战术对抗

在攻防对抗中,技术层面的剧本就是:你有POC/EXP,我有升级补丁;你有病毒木马,我有病毒库更新;你发动DDOS,我做清洗;你渗透应用,我有各种墙和Agent;等等。总体来说,对于每一类威胁,守方都能找到相对有效的解决方案。

到了战术层面,双方均开始制造信息不对称。攻方主要利用技术优势,开发新“武器”,比如0 day漏洞或高级木马,直接突破防御。守方主要利用地利优势,层层设防,等待“猎物”踩中“陷阱”。

本文主要讨论战术层面的对抗,重点关注守方的战术思考。

一、边界的战术定位

所有人都知道边界的重要性。边界也因此承担了过多的职责。人们希望能够在边界解决全部问题,进而创造一个绝对安全的内部网络环境。然而从战术上来说,守方在边界其实并不占优势。

一般网络访问行为都可以用5W1H(WHEN-时间、WHERE-地址、WHO-主体、WHAT-客体、HOW-动作、WHY-凭据)进行抽象。网络攻击是访问行为的一种。在边界环境下,业务是对公众开放的,守方无法对访问主体进行限制,也就是说守方必然面临来自各方的攻击。守方能够控制的,只有客体(WHAT)和动作(HOW)。

对动作的控制就是普遍意义上的入侵检测和防护,也是守方重点投入资源的部分。一般来说,会对网络、应用和主机的各个技术层面部署相应的防护手段,形成纵深防御;再配合覆盖防护、监测、响应、优化等阶段的闭环运营,有效处置各类安全事件。

对客体的控制其实是对暴露面的控制,也就是攻击面收敛。与入侵检测不同,攻击面收敛往往不受重视。这可能是致命的,因为守方常常并不清楚对自身对外暴露了多少站点,甚至不知道有些运维端口也暴露在公网上。一般来说,守方会基于最小化原则,将攻击面收敛到有限的应用和API。一方面,将高风险服务隐藏起来;另一方面,最小化对外服务有利于集中力量进行防护和监测。

之所以说守方在边界不占优势,有如下几个原因:一是守方对客体和动作的控制只是相对的,不是绝对的。从客体方面来说,攻击面再怎么收敛,业务也是要对外服务的;留下的入口再小,也不是绝对隔离的。从动作方面来说,如前文所述,守方处于技术劣势,对0 day漏洞和高级木马无能为力。二是守方无法对主体进行限制,体现在攻方有足够多的地址(分布式攻击)可以使用,以及足够长的时间进行踩点。量变会带来质变,分布式攻击给安全分析带来巨大困难,传统IP地址黑名单策略几乎失效;长期踩点过程中,守方只要对暴露面稍有疏忽,就能被攻方找到突破口。

可以看出,在边界环境下,守方并没有“掐死”攻方的把握。因此,我们对边界安全要设置有限且合理的目标,也就是只暴露必要的应用和API,一般严禁暴露运维和管理服务;能够有效抵御已知攻击手段;保持更新。其他的问题留给下一阶段解决,在边界进行过多的投入会导致ROI将低。

二、守方的绝对优势

如果有些运维和管理服务必须要暴露,比如SSH或数据库连接,那么就需要绑定IP并进行多重认证。这样情况下,访问行为基本可控。也就是说,如果条件允许,白名单策略还是有效的。

突破了边界,也就完全进入了守方的网络范围。可以看出,主体、客体、地址甚至时间,都是守方可以控制的因素。比如,中间件对数据库的访问,账户对文件和进程的操作,业务的高峰和低谷等等,都有标准业务模式。谁的行为在标准业务模式之外,就很值得关注了。在这一阶段,守方在攻击手段方面仍然是劣势,但是地利优势使得守方可以将主体和客体完全“掐死”。在攻击中,攻击动作基于网络和系统结构,客体基于资产信息。因此,底层安全隔离和访问权限控制是生命线。攻击者武器威力再强大,也不能突破系统和网络协议限制;攻击路径设计再巧妙,也要踩点收集信息。“大潮退去,才知道谁在裸泳”。前期边界纵深防御已经过滤大部分常规攻击,这一阶段只要梳理清楚业务流和数据流,结合蜜罐设置一些陷阱,异常行为就很清晰了。

但是如果“基本功”不到位,这一阶段是很难有效果的。比如基础防御缺失,大量攻击渗透到内网、病毒传播不能控制,将会给分析带来很多干扰,即使识别出高级攻击也没有手段控制;或者资产管理不细致,不能区分哪些是计划内的业务,则相当于白白丢掉了自身优势。

事实上,动作、主体、客体这三个核心因素,只要完全控制一个就足以实现防护;如果控制两个则提供了容错能力,能够在单点安全措施失效的情况下保障整个安全体系的有效性。守方在战术意识方面最容易犯的错误在于:一是被攻方“带节奏”,过于关注攻击手段,在攻击检测和防护方面疯狂投入,而忽略了自身天然优势,没有扎实做好资产管理、安全隔离和基础设施;进而局限于单次攻防,而忽略整体战役。二是完全不能接受损失,一定要在边界解决问题,“御敌于国门之外”;然而,这并不是守方熟悉的战场,明知道敌方不会游泳,还在岸上跟他们拼刺刀;事实上,在安全态势不明朗的情况下,最重要是保障核心业务和数据的安全,其他都有周旋和补救的空间。

三、绝望的墨菲定律

“Anything that can go wrong will go wrong.”这一规律在实际攻防环境中尤其明显,因为实际环境中并不是单点攻防,而是长时间、多来源、多目标情况下的复杂环境。长时间会导致本来低风险的脆弱性升级为高风险,多来源使得溯源和防御变得困难,多目标使得攻击成功的概率大大提升。

一是单因素认证必然被攻破。在RSA1024算法都被认为不安全的时代,一般人们使用的密码就更不安全了。无论多么严格的密码策略都难有好的效果:一是密码强度方面,字符类型再多、密码再长,也比不上1024位非对称密钥的强度。二是更改密码周期再短、限制重复使用的密码再多,也比不上暴力破解和撞库攻击的速度。三是密码锁定策略存在副作用,账户锁定后系统和数据是安全了,业务也不可用了,如果业务没有高可用的冗余设计,那么很容易造成拒绝服务;另外,在分布式攻击下,密码锁定策略是无效的。因此,我们可以将基于账户口令的单因素认证视为脆弱性。然而,账户口令往往给人以错觉,好像已经有了安全措施。这种似是而非的概念就像纸糊的墙,误导人们忽视其一捅就破的风险。

二是用户必然遭受社会工程学攻击。举例来说,我们经常接到诈骗电话,却发现骗子的套路往往很简单;但是骗子还是会用这种套路,因为简单的套路成本低,便于大面积使用;尽管上钩的概率极低,但是当接到电话的人足够多时,还是会有个别上当的。社会工程学攻击也是一样,当用户足够多时,我们在用户安全教育中提示的风险场景都会出现,比如点击风险链接、下载未知附件、插入陌生移动介质以及使用公共wifi移动办公等等。因此,从安全隔离的角度来说,我们应将用户视同为公网上的一般访问者,将用户所在办公网络视为边界以外,与业务和生产网络至少在逻辑上应是不同的数据中心。

本文之所以跳出技术谈战术,一方面是基于客观的攻防形式,另一方面也是考虑到紧缺的安全资源。安全投入不足,缺乏人员、技术和资金,是企业安全的常态化问题。网络安全攻防对抗是相对复杂的系统性问题,守方的牌永远不够打。通过对战术的研究和思考,可以将牌在正确的时机打到正确的地方,有助于将有限资源发挥最大化作用。

作者简介:董祎铖 资深网络安全工程师,就职于中国人民银行金融信息中心信息安全部,CISP,银行科技发展奖获得者。负责开展互联网安全防护体系建设和安全运营工作,专注于渗透测试、WEB安全、PKI/CA领域。


更多好文,来自仙人掌情报站

欧阳昕:终端安全运营的实践和思考

吕毅:从攻击视角构建弹性信息安全防御体系

董祎铖:建立企业安全应急响应“急救箱”

【造轮子】暴力破解审计工具


扫描识别二维码,获取更多原创文章

欢迎转载并联系仙人掌情报站

发表评论