前言
攻防对抗是企业安全治理工作中的常态。一方面,安全团队在实际攻击场景中不断提升技术水平和对抗能力;另一方面,红蓝对抗、攻防演练可以有效检验安全工作成果,验证安全机制有效性,找出差距。
本文根据近期经历的攻防演练情况,梳理技术要点,总结经验教训,作为未来网络安全重要保障工作的参考。
一、攻防对抗
首先,攻防双方主要从三个方面进行对抗:信息对抗、技术对抗、运营对抗。这一观点引用自赵彦老师《互联网企业安全高级指南》。
信息对抗的基础是数据,尤其是防守方的数据,因为攻防对抗的“战场”在防守方的数据中心。网络架构、主机地址、服务接口等静态资产数据形成攻击面,流量日志、主机日志、应用日志等动态运行数据支撑风险控制,等等。海量的数据经过解读形成信息,信息归纳验证形成知识,分析推理形成情报,而情报是决策和行动的依据。攻防双方对数据的获取和提炼的过程,是信息对抗的过程。防守方在对抗中天然处于劣势:技术资源少,主要体现在人员编制远少于攻击者;黑客技术积累少,主要体现在对漏洞和木马的研究不足,这不是企业安全工作的重心。因此,“地利”优势几乎可以算是防守方唯一可见的优势,如果不能充分利用,则将处于全面被动。
技术对抗是攻防技术储备和运用的对抗。通过安全隔离划分整体防护格局,通过基础设施提供安全运行环境,通过纵深防御在攻击路径上预设“埋点”、在多个维度对攻击方进行打击。这里做一个比喻:安全隔离就像道路规划,安全基础设施就像铺路,纵深防御就像路上的关卡。安全承载业务,就像道路承载运输。技术对抗是依赖信息对抗的,应覆盖自身的攻击面、协议栈、技术栈。如果信息和情报不准确或体量过大,无疑将给技术对抗带来负担。
运营对抗是对事件和风险的闭环处置。攻防对抗是动态的过程。一方面,闭环处置过程依赖信息对抗和技术对抗。事件的输入来源于数据分析结果:告警和情报。事件的处置需要纵深防御中的各种技术手段。另一方面,举一反三、持续优化对整体安全意义重大。从整个数据中心的角度,不能在一个风险的问题上跌倒两次。安全运营已经有很多成熟的方法论,所以落地是关键。根据企业自身条件,制定工作机制,让整个流程真正运转起来,在实践中得到不断检验和优化,是安全运营工作的重点。
二、事前准备
在事前的技术准备上,攻击面收敛是首要考虑的。攻击的入口不能像大海一样辽阔,而是要“自古华山一条道”。让攻击方在防守方设计好的区域内活动,才能变被动为主动。尤其是攻击方在难以直接拿下核心系统的情况下,往往选择“旁敲侧击”,从关注度低的系统着手。
梳理攻击面有这些方法:
首先是子域名。可以从域名服务商记录、威胁情报DNS解析记录等方面获取历史存量的子域名。当然也可以通过字典直接猜解。这方面相关的技术文章比较多。我们在实际操作的过程中,发现了一些子域名在由分支机构使用和管理,甚至一些业务直接外包托管、其安全性基本未得到关注。
其次是C段。企业数据中心拥有的公网地址一般是连续的,也就是说核心系统相邻的公网地址一般也是同一企业的系统。扫描C段和遍历子域名都是攻击方常用的收集信息方法。
接下来是一些外部信息。比如主站上的友情链接,比如从搜索引擎发现的业务系统,再比如在github上发现的源码。
另外还有扫描、流量分析、台账导入等方式,这些都是长期安全建设的手段。在重保来临的情况下,还是从子域名、C段这些攻击手段出发,容易获得好效果。
梳理清楚攻击面都有哪些,就要着手清理了。主要有以下几方面:
一是针对未知资产,能够获得运行管理权限的,纳入统一安全管理,并组织开展风险评估。无法获得运行管理权限的,要分清边界和职责。
二是进行必要的关停,主要是对无人使用的系统进行下线处理,对于不对外开放使用的系统停止对外服务。
三是进行风险控制,主要是对存在风险的系统进行临时下线。实在不能下线的系统,要严格隔离。有些系统前台虽然分开,但是后台共用中间件资源。对于这种“铁索连环”模式的系统群,也许仅有一个系统存在风险,但是将威胁其他系统的安全性,只能是为一个大系统整体隔离。
重要保障时期是一个特殊的时期。对于安全部门来说,这是一个时机。因为在这个时间段和特殊的背景下,安全需求将压倒一切。许多平时难以推进的项目或策略,都可以借此机会完成。所以从某种意义上说,安全工作是由威胁推进的。威胁的严重程度决定了安全工作的意义和必要性。威胁的有效发现和稳妥处置,决定了安全工作的价值。
安全隔离是一项基础而重要的工作。当实质入侵已经发生时,隔离措施可以防止攻击扩散,将失陷损失控制在有限范围内。更重要的是,在日常隔离措施完备的情况下,这一过程是被动触发的,没有时间延迟;即使日常隔离措施不完备,防守方也可以比较容易进行调整和补充。可以说,安全隔离是企业安全的生命线。
边界隔离是基础。主要有网络边界和物理边界。网络边界是指攻击者从外部通过网络进行访问和攻击,物理边界是指攻击者通过社会工程学等方式,直接使用内网终端或主机发起攻击。对于网络边界控制和物理安全建设,绝大部分企业都能很好地完成。
安全域隔离是“规定动作”。首先要进行安全域的划分,一般以业务类型、业务重要性和风险评估等为依据。常见的划分方式,将员工办公和生产分开,并且在办公和生产区域内部,分别将不同的业务划分为不同的安全域,尤其是生产区内部要将测试环境划分出来。然后是安全域隔离,不同安全域之间应建立基于二层的网络隔离,根据最小化原则配置跨安全域访问策略。而且,跨域访问应通过安全、可审计的途径。
协议栈和技术栈隔离是“加分项”。基于网络协议,最易实现也是最彻底的方式是基于链路级的隔离。然后根据业务的需求,不断细化隔离策略,过度到端口级和应用级。最终,实现协议栈的收敛,基于“零信任”模型,将全部的交互统一为服务级调用,并进行鉴权。对于具体的业务,将系统权限和应用权限分离,解析目录与可写目录分离,阻断攻击的连续动作。
针对具体的攻击,基于纵深防御模型部署安全手段。我们思考纵深防御的过程其实就是思考攻击路径,并拓展到对整个数据中心网络的覆盖,一般包括业务流、数据流、协议栈、技术栈等等维度。丰富技术手段,从防御、阻断、降级、欺骗等方面形成多维防御和技术异构,不断优化防御策略细粒度,在保障业务平稳运行的同时完成有效防护。具体到应用场景,一般就是终端安全、应用安全、网络安全和主机安全等方面。其中,终端安全作为用户入口,应用安全作为业务入口,是防御的重中之重。这两部分的内容也最为复杂。终端方面,需要做到整齐划一、不留死角,补丁、防病毒及时更新,安全策略灵活可管、“令行禁止”。应用安全种类繁多,整体上以web服务为主,一般需要用到waf。Waf设备使用的难点在于与业务的兼容性,既需要保障防护策略强度,又要避免影响业务,一般要通过大量的适配调整具体规则。邮件安全作为社会工程学的主要目标,也越来越受到重视。除了传统的垃圾邮件和病毒网关,账户安全风险控制急需有效的技术手段,以应对暴力破解、撞库等威胁。
在应用系统普遍严防死守的情况下,社会工程学受到攻击者的青睐。企业员工数量庞大、安全意识参差不齐,社会工程学攻击往往能起到效果,成为防御体系的突破口。对用户进行安全意识教育、提示风险,是防止社会工程学攻击的有效手段。主要有邮件、终端和网络三方面:
邮件安全使用。请不要轻易查看来自陌生人的邮件,不要轻易点击邮件中的链接,不要轻易下载或运行来源不明的附件,不要轻信邮件中明显不合理的要求(如要求反馈个人信息、通信录等敏感信息)。对于无法判断安全性的邮件,请先通过电话等其他渠道确认后再进行处理。
终端安全使用。请不要将个人终端交由非单位人员使用,不要使用来源不明的优盘、光盘或其他存储介质。在使用来自外部的文件之前,请先进行杀毒处理。请不要接收桌面技术支持工程师以外的人员维修终端设备。当人员离开终端时,请注意锁屏。
网络安全使用。在单位以外的场所使用笔记本电脑时,请不要轻易接入安全性不确定的网络(如咖啡厅公共无线网络)。在单位内使用个人终端时,请不要私自搭建wifi。不要将非统一配发的终端接入内部网络。
三、监测响应
进入演练期间,也就进入安全运营和事件处置工作状态。首先面临的就是持续监测工作。持续监测、态势感知,其本质在于从海量数据中分析出有效信息,再进一步提炼成可以决策的情报。在这个过程中,有两个相对立的需求:数据量的提升和告警量的下降。一方面,需要监测范围覆盖全部攻击路径甚至全部业务,就需要采集尽量多的数据。另一方面,安全资源不足导致对事件的处置能力有限,误报过高必然导致对安全资源的严重消耗,影响对实质风险的及时处置。
以上两方面都是“刚需”,需要寻找平衡点。首先要提升情报质量,严格控制无效告警,突出重点告警;甚至可以说,宁可要漏报,也不要误报,因为漏报还有安全隔离措施、安全基础设施和异构的防护体系可以补救,而误报将资源消耗殆尽后,安全运营将无法运转。其次,要有效整合处置技术力量,效能最大化。另外,还要在整个过程注意控制对业务运行的影响,争取业务零影响、用户零感知。
在具体的攻击方式中,暴力破解和web攻击占比较高,可以看出员工和web应用是攻击者偏爱的入口。病毒木马、DDOS攻击、CC攻击与平时基本持平。Web威胁虽然复杂,但是安全解决方案也相对成熟。暴力破解等账户安全问题反而缺乏有效的风险控制手段。比如,每天都存在海量暴力破解记录,绝大部分都不会成功。因此,一般针对暴力破解行为的监测告警意义不大。实际场景中,需要能够在海量失败记录中,发现暴力破解成功记录。这也就是前文提到的严格控制无效告警。
四、实际场景
在这种高度定制的细分场景中,企业安全不得不进入自己“造轮子”的过程。
从账户维度分析,想要判断暴力破解成功,需要满足以下条件:一是既存在暴力破解成功记录,又存在暴力破解失败记录;二是暴力破解应使用了多个不同密码,否则可能是邮件客户端密码配置错误;三是登录成功的IP存在登录失败记录,否则可能是用户正常使用邮箱的同时,攻击者也在进行暴力破解,但二者没有关系;最终可以准确判断该账户被暴力破解成功。
从源IP维度分析,首先该IP登录失败频率超过预定的阈值,说明一定不是用户正常使用行为;其次该IP存在登录成功记录;两个条件结合,说明该IP暴力破解成功。
对于一般的web攻击场景中攻击者使用的漏洞,防守方通常能够在日常的安全运营中及时修复。而对于未知漏洞,在没有情报支撑的情况下,防守方往往措手不及。未知漏洞入侵事件一般包括如下四个过程:
一是发现可疑行为。比如上传了可疑文件(webshell),有“菜刀”连接行为等;再比如主机突然开始挖矿。事情不会无缘无故发生,从结果可以判断该系统受到攻击并失陷。
二是立即执行隔离措施。一方面防止攻击扩散、攻击者进一步向内网渗透,需要将该系统进行链路层隔离;另一方面阻止攻击者持续控制当前主机或者窃取数据,可以考虑将业务临时下线。
三是进行攻击溯源。处理未知漏洞攻击的主要困难在于缺乏信息支撑,既不知道如何攻进来,也不知道如何防御。通过溯源可以解决攻击信息的问题。定位可疑行为出现的时间点(文件写入时间或者首次挖矿时间等),对该时间点附近的流量进行回放。回放到某一条时,同样的可疑行为再次出现,即可确认攻击载荷(payload)。也许不能第一时间解析这个攻击载荷(如反序列化攻击),但还是可以通过时间关联性准确定位。
四是制定临时解决方案。尽管无法找到通用的临时解决方案或者官方补丁,通过资产管理措施和应用层防护措施也可以解决防护问题。首先,基于前文提到的“地利”优势,防守方对自身站点的目录结构应有全面准确的掌握,了解哪些路径和页面是正常业务访问所需要的;其次,基于在终端和主机安全方面常见的“黑白名单”策略,将攻击载荷所在路径加入黑名单,并将其中正常路径和页面加入白名单。
这种方式的优点在于:一是可以较快制定并完成临时解决方案;二是基本不影响业务;三是不基于规则而是基于路径,相当于降维防御,在攻击者所处层面的下层进行阻断;而攻击者由于无法触及下层,很难研究绕行方案。
在这一过程中,我们可以看到,未知漏洞虽然威力巨大,但仅仅是攻击链中的一个阶段。攻击者不可能在攻击链的每一个阶段都使用未知武器,总有一些阶段是可以被监测到的。这时,信息不对称的形势已悄然扭转。防守方尽管损失了一些业务,但是换来了攻击相关的情报,并可借此进行反击。攻击方一击不中,没有了突然性,后续将难以形成有效威胁。
五、总结
防守方“空间换情报”的过程虽然可以扭转局势,但这是基于持续监测、纵深防御、安全运营等体系建设的积累。这一过程使整个安全防护体系具有弹性,可以承受预设场景意外的威胁。具体来说,需要有以下几方面的技术储备:
一是覆盖全攻击链的持续监测,通过事后审计的方式,发现未知攻击,并通过溯源和攻击回放定位攻击载荷。
二是灵活的协议栈阻断措施,可以快速止血。
三是扎实的台账和资产管理,能够充分发挥“地利优势”,基于“黑白名单”制定临时解决方案。
四是丰富的技术栈防御手段,能够将临时解决方案落地,并且保障业务安全稳定运行。
作者简介:董祎铖 资深网络安全工程师,就职于中国人民银行金融信息中心信息安全部,CISP,银行科技发展奖获得者。负责开展互联网安全防护体系建设和安全运营工作,专注于渗透测试、WEB安全、PKI/CA领域。
*本文来源:微信公众号“仙人掌情报站”(sec-cactus),转载请注明来自FreeBuf.COM