将近几年参加攻防演练的经验进行提炼并进行总结分享。
攻防演练建议站在黑客的视角下,审视其攻击流程,再针对性的进行防守,防止出现木桶效应,即攻击者只会从短板攻入,但构建的防守措施却和短板无关。
外网纵向入侵流程以及备注信息如下所示:
内网横向渗透流程以及备注信息如下所示:
攻防演练前应进行的工作建议为周期性工作,例如每年1次、每月1次、每日1次,不建议攻防演练前才开始。攻防演练前的工作总结如下所示:
人员培养
培养单位日常运维人员,以应对随着信息化日趋完善,软硬件过多的日常运维工作,同时提升紧急突发事件发生时现场人员的可协调性,以及重保期间的人员值守工作,因为重保期间非一个单位重保,向其他单位抽调人员相对较难。
日常运维及资产台账月度梳理
梳理软硬件资产:互联网/专网/内网的端口暴露面积,老旧资产;
协调软件开发商自查、清理通用型框架暴露在互联网、软件中的特征;
更新软硬件资产的信息;
启用操作系统本地针对系统日志、应用日志、中间件的访问日志的记录功能,对产生的日志保存6个月以上;
针对网络、主机进行安全检查,并针对性的优化加固。
新上线业务系统的风险评估
未进行风险评估的业务系统禁止上线。
防护机制月度检查
互联网/专网/内网区域边界具有监测告警/安全防护机制;尤其是专网边界,【上级单位主动通报攻击行为来自下级单位并对其断网和要求自查】和【下级单位主动拦截攻击行为并交付相关报告至上级单位】在性质层面是具有本质区别的;
安全设备应用层防护策略检查;
网络/安全设备网络层访问控制检查;
操作系统本地访问控制检查;
操作系统本地安全软件的防护策略检查;
如有条件以及具备可行性、可操作性的情况下可建立运行基线,并周期性的巡检。
软件版本漏洞月度检查
跟踪第三方漏洞公布平台,匹配本地资产(操作系统/第三方软硬件/web容器/web框架)的特征,自动化告警存在的漏洞和进行漏洞修复。
软件逻辑漏洞年度检查
通过代码审计、渗透测试发现逻辑漏洞,并进行修复。
安全意识年度培训
针对单位全员的安全意识培训;
针对单位信息化相关人员的安全技术培训。
监测告警机制构建
针对操作系统、应用系统的可用性事件进行内网监测告警;
针对操作系统、应用系统的安全性事件进行内外网监测告警;
构建威胁情报系统,威胁情报源越多越好,可同时录入内部/外部的威胁情报,且可根据情报维度相互关联,可读性强、可关联性强,适合日常运维人员的习惯,例如威胁情报系统可自动化将攻击源ip、攻击工具、攻击流量等特征进行多维度关联从而形成更高价值的内部威胁情报。
应急响应机制构建和年度检查
制定特定安全事件的信息系统安全性专项应急预案;
根据预案搭建环境,定期针对特定安全事件进行应急演练;
定期针对内网安全防护体系的有效性进行验证,第一是当下不应该将关注点全部位于外部的可攻击面积,内部的可攻击面积直接关系核心系统、数据的安危;第二是防止投入了大量人力物力,结果内网安全防护体系是否有效却无一个相对准确的答案(相对准确取决于攻方能力);
组建常规事件的现场应急支撑团队以及后台支撑专家团队,以及干系人群聊。
容错机制构建
构建重要数据、痕迹操作系统本地备份机制;
构建重要数据、痕迹异机备份机制;
针对可用性较高的业务系统构建异地备份机制和容灾切换机制;
针对备份机制周期性进行检查确认是否正常,并周期性的进行恢复测试。
蜜罐密网构建
不建议使用开源的蜜罐技术,没有技术支撑,容易发生蜜罐逃逸安全事件,任何信息系统的变更应该以安全稳定为主;
单位日常运维人员技术条件较好,以产品形态购买,并熟练使用和定制化需求;单位日常运维人员技术条件较差,以服务形态购买,除了首次服务,建议附加年度周期性、维护性服务,频率越高越好;体现形态取决于单位的态度以及供方的本地化实力以及服务态度;
无论哪种体现形态,建议购买原厂服务,禁止渠道服务,打一个比方,写文档的人可以将文档的表面含义、深层次的含义口述出来,但是不同使用文档的人,则高低无标准;因为无论是原厂亦或是渠道均是非特别熟悉单位应用系统架构、特性的技术人员,因此可能会出现【实施开始→交付通用性实施方案→现场简单调研→搭建功能可运行的某阵→简单功能测试→交付实施报告和用户手册→简单功能使用培训→实施结束即项目结束】的情况;
该情况会给供方带来看不见的负面影响(因为不知道),让产品未在单位体现出真实的应用价值,也未通过产品/服务的成果给供方引发、带来更多的价值,具体表现形式可为某阵无法访问N久,未定期检查和优化,攻防演练前用户单位如果无人向其提及,可能都无法通过回忆想起存在这么一个产品。如果该厂商看到了,是感谢我的反馈还是给我打折,打骨折的那种?/狗头
舒总的理念:赋能无可挑剔,但是遇到了大部分领导都会遇到而且很头疼的问题,即相关人员的落地执行能力,以及沟通漏斗。/狗头
攻防演练防守工作启动会议
向各个层次体现重视程度,以获取攻防演练时的相关支撑资源;
记录会议纪要,为攻防演练总结报告附件内容做准备。
高强度、高重复性且容易发生错漏少的情况是【攻防演练中工作】的特有属性。攻防演练中的工作总结如下所示:
一次性工作
情报共享:值守领导协调上级单位、下级单位、兄弟单位以及值守交班人员,共享防守情报,例如共享攻击源ip的威胁情报,每交班时与相关单位交换一次威胁情报,由交班人员加入到本地的防守策略中;
人员保障:协调后台支撑专家远程待命,保持24小时电话开机,随时准备进场入侵取证;
现场保护:如攻击源为内网,则往上溯源直至发现互联网ip后,对安全设备、操作系统中的网络连接状态进行截图取证再进行断网,在后台支撑专家赶赴现场前根据网络连接描绘出攻击路径,禁止其他破坏现场的行为发生;
攻击溯源:由于非攻击者自身,后台支撑专家将会根据现场残留痕迹进行最大程度的入侵溯源,并给出对应的优化建议,交付应急处置报告,由值守领导上报上级单位或裁判组;
优化加固:现场值守人员根据应急处置报告中的优化建议进行安全隐患、安全风险的优化,协调软件开发商进行安全漏洞的修复,协调渗透测试人员对漏洞修复的有效性进行复测;
争议处置:值守领导根据值守人员反馈的信息,经评估后上报上级单位或裁判组;
宁错杀,不放过:异常ip在互联网网关处新建一个地址组,将其全部封禁,禁止封国内网段防止对应用系统可用性造成影响(如已和业务部门协商确认,可在攻防演练中加大策略调优力度,例如封禁ip段等等强有力的控制措施但可能会导致业务系统发生可用性问题),封禁国外网段根据具体情况请示值守领导;
人员值守1:安排值守领导和值守人员2班24小时值守,值守时间和值守批次可自行调整,但需预留1个机动人员应对突发情况;人力资源富裕则可3班24小时值守;
人员值守2:每批次巡检结束后在干系人群聊中汇报该批次的值守成果,当日值守成果的文件名称需附日期和时间(xx单位xx值守成果20010101-00:30),为编制当日值守报告做准备;
人员值守3:交接时间已到的情况下,交接人员进行当前班次的值守工作,未完成的值守工作不可交接给下一班次的值守人员,完成后才可下班;
人员值守4:当日值守人员交接时,向当日值守领导和交接人员简单汇报值守期间的工作成果以及注意事项,向交接人员交付当前班次的所有值守成果;
人员值守5:当日最后一班值守人员交接时,记录当日值守报告交付当日值守领导,值守报告需具备可读性,当日值守报告的文件名称需附日期(xx单位xx值守报告20200101),为攻防演练总结报告的附件做内容准备;值守领导交接时,向下一批次的交接领导交付当日的值守报告及注意事项。
重复性工作,根据人员能力匹配以下工作内容,尽量做到人员/对象全覆盖
巡检安全性/可用性事件监测告警系统:针对告警事件进行过滤、事件验证、策略调优;当无新事件时每隔30分钟巡检1次;每批次安排1人员,根据任务量可与【巡检安全防护硬件】人员为同一人;
巡检安全防护硬件:针对告警/防护事件进行过滤、事件验证、策略调优,当无新事件时每隔30分钟巡检1次,每批次安排1人员;
巡检安全防护软件:针对告警/防护事件进行过滤、事件验证、策略调优,每1小时巡检1次,以每批次巡检15个操作系统为单位安排人员;
巡检windows操作系统:针对当天全部目录的全部新增文件或特定目录的特定新增文件进行巡检,每1小时巡检1次,以每批次巡检15个操作系统为单位安排人员;巡检方法详见目录《附件-windows新增文件值守方法》;
巡检linux操作系统:针对当天全部目录的全部新增文件或特定目录的特定新增文件进行巡检,每1小时巡检1次,以每批次巡检15个操作系统为单位安排人员;巡检方法详见目录《附件-linux新增文件值守方法》;
根据单位需求巡检本文中未提及的软硬件系统。
攻防演练结束后存在三种防守成果,根据不同的成果进行不同的总结
防守成功,根据防守得分参加防守方排名;
防守失败,核心系统被攻破,不参加防守方排名;后续本地主管部门进行通报、现场检查年度等级保护/风险评估的工作成果、然后本单位进行优化加固、以及主管单位的复检;
作为附属单位参演,攻方有入侵成功的的成果但附属单位未发现,上级单位进行内部通报及处理。
攻防演练后的工作总结思路
值守领导安排值守人员编写攻防演练总结报告和整理附件,附件包括不限于会议纪要、日常值守报告、应急响应报告等攻防演练防守痕迹,并对其内容进行审核,确认无误后交付裁判组/上级单位;
值守人员根据防守成功的结果,在收到攻方的总结报告后,对比优化加固报告,检查是否存在遗漏;值守领导安排值守人员编写会议材料,展开总结分析会议,提炼防守心得和防守技战法;
值守人员根据防守失败的现状,在收到攻方的总结报告后,对比优化加固报告,检查是否存在遗漏;值守领导安排值守人员编写会议材料,展开总结分析会议,提炼防守失败的主要因素,包括不限于人为因素、技术因素和软硬件因素,以及识别以上因素中存在的安全隐患、安全风险和安全漏洞,同步制定相关联的、现阶段即可落地执行的优化整改措施;同步制定信息系统安全防护体系建立健全的计划,并根据计划制定建立健全的流程并将其逐步落地(分步骤、按批次,逐渐完善、循循渐进)。
针对攻防演练前中后的防守思路进行提炼,同时将提炼的内容进行总结,如下所示:
【梳理互联网/专网/内网的可攻击面积】影响黑客【信息收集】的成果;
【安全域的访问控制】影响黑客【内外网渗透】的可行性;
【关键路径上的安全软硬件中的防护策略】影响黑客【内外网渗透】的成果;
【本地痕迹】、【第三方保存的痕迹】影响【攻击溯源】的可行性。
通过everything工具进行检查,dc:后跟日期,检查创建时间为1999年01月01日,后缀为.txt的文件。
dm:后跟日期,检查修改时间为1999年01月02日,名称包含te和.的文件。
da:后跟时间,检查访问时间为1999年01月03日的文件。
注意:windows文件的所有时间完全不可信,因此文件时间仅作为参考依据。攻防相悖论的地方,如果攻方看到/哭泣,以后就只能根据逻辑进行痕迹关联,无法通过直接证据进行痕迹关联了,但只要正在运行,即代表可以找到痕迹并进行逻辑关联,如果不运行,即代表无危害不用紧张,包括不会自启动的程序。
是否受够了网上大量查找最近7天的方法/狗头?查找/path目录下2020年12月1日访问过后缀为jsp文件,即atime。path可以是绝对路径,也可以是当前目录./
find /path -name "*.jsp" -newerat '2020-12-01 00:00:00' ! -newerat '2020-12-01 23:59:59'
查找/path目录下2020年12月1日改动过后缀为jsp文件,即mtime。
find /path -name "*.jsp" -newermt '2020-12-01 00:00:00' ! -newermt '2020-12-01 23:59:59'
查找/path目录下2020年12月1日创建的后缀为jsp文件,即ctime。
find /path -name "*.jsp" -newerct '2020-12-01 00:00:00' ! -newerct '2020-12-01 23:59:59'
示例: