在网站入侵、数据泄露、DDOS攻击等安全事件频繁发生的同时,网络攻击的攻击来源、攻击目的、攻击方法以及攻击规模都在发生各种变化。网络攻击从最初自发式、分散式攻击转向专业化的有组织行为,呈现出攻击工具专业化、目的商业化、行为组织化的特点。对于我国关键信息基础设施,现有的网络安全防护体系和已有的安全措施到底起到多大的效果?是否可以抵御真实的网络攻击行为?是否能够对抗此类有组织、专业化的攻击?这就亟需通过一种可靠的方式进行检验,而网络安全演习则是目前被公认的最为有效的一种手段。

一、网络安全演习的发展和形式

美国作为全球IT及互联网技术最先进的国家,对网络安全实战演习青睐有加,自2006年开始,美国每两年举行一次网络风暴演习。演习分为攻、防两组进行模拟网络攻防战,攻方通过网络技术、社工手段、物理破坏手段,攻击能源、金融、交通等关键信息基础设施;守方负责搜集攻击部门的反映信息,评估并强化网络筹备工作、检查事件响应流程并提升信息共享能力。2016年至2018年,美国国防部连续组织开展了“黑掉五角大楼”“黑掉陆军”“黑掉空军”“黑掉国防旅行系统”“黑掉海军陆战队”等多次军方实战演习。其中,“黑掉空军3.0”于2018年11月进行,是“黑掉空军”计划的第三次实施。

美国的网络安全实战演习引发全球网络安全行业的“跟随效应”。我国对网络安全实战攻防演习的重视程度也不断加大。网络安全演习已经从原来的桌面推演检验流程,向实战演习过度,组织的层级和规模也越来越大。从我国网络安全演习形式看,一般分为桌面推演、模拟演练和实战演习三种形式。

1.桌面推演

参演人员利用演练方案、流程图、计算机模拟、视频会议等辅助手段,针对事先假定的演练情景,讨论和推演应急决策及现场处置,从而促使相关人员掌握应急预案所规定的职责和程序,提高指挥决策和协同配合能力。桌面演练通常在室内完成,更侧重于演练制度、流程的检验。

2.模拟演练

搭建测试环境,模拟真实系统及网络环境。组建攻击队进行安全检测,检验模拟环境里系统的安全现状;并由运维人员组建防守队伍,监测攻击行为,采取防守措施。模拟演习不会对生产环境产生影响,但是,由于模拟环境无法进行1:1仿真实际系统,与真实环境存在差异,因此,无法真实反映现在安全防御体系的防护能力和水平。

3.实战演习

以真实生产环境为战场,以攻击者视角,以不破坏目标系统为基础,具有攻击能力的“红队”对真实目标系统进行攻击,以拿到目标系统控制权限及获取核心数据为目标,采用多维度技术手段,检测系统的健壮性及防守体系的有效性。目标系统责任单位组建防守队伍,监测攻击行为,深入分析攻击事件,并采取有效的防守与反制措施。最终,通过实战演习的方式,对系统安全防护能力、安全运维保障能力以及安全事件监测、响应能力进行全面检验。其主要特点是在真实生产环境进行,从攻击者的角度全面检验现有安全防护体系的有效性,真实反映安全防护能力现状。

二、网络安全实战演习“攻击”手法

攻击队在对目标系统进行有针对性、有组织地入侵攻击时,通常会首先制定攻击策略、规划攻击线路,多角色分工合作,力争在短时间内取得最大战果。常见的攻击步骤和方法如下。

1.信息收集

“兵马未动、情报先行”。情报在常规战争中具有举足轻重的地位,在网络攻击中,准确、快速、真实的情报和信息收集同样至关重要。攻击队在明确需要攻击的目标后,第一时间利用一切能利用的技术手段收集目标系统相关的有用信息,包括域名、IP、软件信息、硬件信息等,同时,采用社会工程学方法等收集人力资源相关情报信息。信息收集的主要策略包括:

收集域名信息。根据目标系统的互联网域名,最大限度地收集与之相关的域名信息,作为旁站攻击的必要线索,该环节常用的技术涉及发掘DNS域传送漏洞、搜索引擎查询、DNS服务器域名枚举查询、注册信息反查等。

收集IP信息。暴露在互联网上的IP是攻击队进行攻击的有利切入点,可通过域名IP反查、C段扫描等技术手段,尝试获取可利用的IP信息。

收集软硬件资产信息。攻击队有必要了解目标系统及周边系统的软硬件资产构成,提前了解系统可能存在的共性缺陷。通过历史漏洞、GitHub、云盘、邮箱等互联网信息查询等方式,收集目标系统软硬件相关信息;通过端口扫描获取端口信息、服务类型、OS信息;通过网站指纹识别(如WAF识别、网站框架识别、中间件识别、CMS识别、语言识别等),发掘系统可能存在的缺陷;通过社会工程学获取账号、密码等有用信息。

此外,在信息收集阶段,还可探测一些敏感文件,例如,网站的敏感目录、Git源码、SVN源码、网站备份文件、一些容易信息泄露的配置文件(例如robots.txt、sitemap.xml、.DS_store、phpinfo.php、WEB-INF\web.xml等),这些泄露信息的敏感文件能够为攻击者提供有效的攻击思路。

2.漏洞分析

攻击队在收集到目标系统足够多的信息后,会对目标系统的漏洞进行初步探测分析,为后续的渗透测试做充分准备。

漏洞分析以获取、统计可利用的漏洞为目标,主要采用自动化探测工具和脚本对目标系统进行自动化探测,包括基于端口和服务的扫描测试、web目录暴力枚举测试、web服务器相关信息探测、服务器漏洞测试等方式。同时,也会有针对性地对系统发起手工测试,包括通用型漏洞测试、web应用漏洞测试以及网络漏洞扫描等。

在完成漏洞探测后,攻击队会验证漏洞的利用方式和利用难度,并将所获得的漏洞信息进行关联分析,并以此制定出有效的攻击向量和攻击路径,如有必要,会在本地搭建测试环境,进一步针对获取的新型漏洞或非常规漏洞进行研究,找出潜在漏洞的攻击路径。

3.渗透攻击

直到渗透攻击阶段,正式的网络攻击才刚刚开始,该阶段的主要目的是获取互联网侧业务系统的控制权限,为后续尝试内部网络横向突破或跨内部区域突破做好准备。攻击队根据上个阶段制定的方案,结合在信息收集阶段获取的信息,利用各种手段绕过网络边界安全防护措施,实施对互联网侧应用的网络攻击行为。

攻击队在该环节的首要目的是绕过各类防御、监测类安全设备,包括结合系统、中间件、数据库特性,利用WAF自身缺陷、构造畸形协议请求,HTTP参数污染等手段绕过应用防火墙;或采用编码、加壳、白名单绕过、进程注入、内存加载等技术手段绕过反病毒系统等。

绕过防御设备后,攻击队将针对应用系统开展更为具体的攻击,主要涉及以下层面。

Web攻击。针对应用系统的具体攻击过程会采用SQL注入、XSS、XXE、SSRF、CSRF、LFI/RFI、任意文件下载/上传、命令注入、反序列化、任意代码注入、开源框架常见漏洞利用等方式开展综合攻击尝试,直到获取该应用系统控制权限,并控制其主机、数据库的权限。

操作系统、数据库、中间件攻击。攻击队可采用未授权访问、身份认证绕过、弱口令、已经泄露的口令、反序列化、远程代码注入、Oracle TNS Listener远程毒化等。系统已知漏洞利用(如远程溢出漏洞MS08-067、MS17-010)等方式尝试攻击,直到获取操作系统、数据库、中间件的控制权限。

钓鱼攻击。为获取更多的控制手段,攻击队会采用鱼叉攻击、水坑攻击等方式,诱捕防守单位业务相关人员的操作行为,为有效攻击与控制提供便利条件。

零日攻击。当攻击过程遇到难度时,攻击队将尝试零日攻击,采用代码审计分析、模糊测试、逆向分析、流量分析等方式,挖掘零日漏洞,并以此作为突破口进行网络攻击。此外,攻击队还会利用第三方的服务漏洞发起攻击。

4.后渗透

攻击队获取系统权限后,会充分利用已获取的权限进行内网后渗透操作,此阶段是攻击队控制核心目标系统及扩大战果的重要阶段。

“提权”是后渗透阶段的一项重要技能。若攻击队获取的是非管理员权限,且该低权限账户无法满足进一步渗透需求时,则将进行相应的提权操作。针对不同操作系统,攻击队会采取不同的提权操作。例如,在Windows环境下,可利用系统内核漏洞、第三方服务/应用漏洞、DLL劫持、计划任务等方式进行提权操作;而在Linux环境下,利用Linux系统内核漏洞、错误配置的Suid/Guid、Crontab、滥用sudo权限的应用、第三方服务/应用漏洞等方式进行提权操作。

攻击者通过分析失陷服务器的网络连接、路由信息及服务器上可能存有的敏感信息(如账号密码、组织架构信息,获取VPN凭证信息,运维密码本,NFS共享信息、SVN、Git的源代码和配置文件、共享目录、配置说明文档、通过数据库发掘身份信息、相关备份文件和备份服务器信息等),粗略绘制出内网结构拓扑图。在信息收集完成后,做进一步横向渗透。

通过收集可利用的信息,攻击内网其他设备,进一步收集有价值的信息,包括windows系统环境下的系统日志、最近打开的文件、配置文件、注册表等信息;linux系统环境下的know_hosts、日志文件中发掘历史登录过的服务器IP、.bash_history文件、Mysql History、syslog、passwd/shadow、应用日志/配置文件等信息;浏览器的收藏信息、浏览历史、保存的密码、浏览器缓存文件,并关联分析横向渗透中收集的这些有效信息,通过会话重用、凭证登录、中间人劫持等方式进入内网其他机器,进一步扩展内网的网络拓扑结构,扩大攻击成果。

攻击队达到既定目标后,会进行必要的收尾工作,清理在横向渗透过程中留下的各种脚本文件和日志痕迹,记录渗透攻击的过程和步骤,删除上传文件、测试数据,并将远程无法处理的行为以报告的方式告知组织方。

三、网络安全实战演习的管控要点

由于整个网络安全实战攻防演习过程是在生产环境进行,为避免对生产环境业务系统造成影响,对实战攻防演习组织者的能力经验、演习平台、演习后系统的分析复原都有极高的要求,需要组织者注意以下方面:

1.注重整体方案设计

根据网络安全主管单位的实际需求,演习组织者需要提前规划实战攻防演习的整体设计方案,方案要包括演习组织设计、目标系统确认、攻击队伍组建、防守队伍组建、演习约束条件制定、演习规则制定、应急处突预案、演习平台设计、演习成果复盘、协助整改等重点内容。

2. 保障演习全流程安全可控

为确保实战攻防演习安全可控,演习组织者需要从人员和技术方面提供保障。在人员方面,配备专职项目组,负责演习全流程保障,为演习过程的安全可控提供有效支撑;参与攻击队的人员需签署保密协议并接受政审,政审可以邀请国家公安机关协助配合。在技术方面,需利用专用的攻防演习平台及攻击专用计算机,攻击队配备专用的VPN账号接入攻防演习平台,对攻击通道采取实时流量监控,捕捉、分析流量内容,对违规通道进行实时阻断和回溯,主办方也可以通过大屏展示,对攻击行为、目标系统可用性状态、防守单位提交阻断证据等内容进行实况监控;攻击队所有操作均通过统一配发的专用计算机进行操作,专用计算机需具备录屏、审计、数据单项导入等功能,保证攻击数据不被人为泄露。

3.确保“攻击队”技术能力

攻击队的专业技术能力是实战攻防演习所体现效果的关键,攻击队需要模拟有组织的黑客攻击行为,具有明确的任务分工。攻击队成员应该至少由三类技术专家组成,一是WEB安全专家,主要职责是在互联网侧对WEB类应用系统进行突破,通过渗透应用系统,获取服务器操作系统的控制权限;二是后渗透专家,在WEB突破的基础上,横向控制内网其他应用、系统、主机的控制权限,主要职责是内网主机、数据库、中间件、域控、网络、网管、安全设备等资产的突破,最终控制目标系统;三是反编译专家,在传统攻击模式遇到阻力时,攻击队会尝试获取业务系统、外采系统的源代码,由反编译专家对其进行反编译,寻找源码的业务逻辑漏洞,实现对业务系统的控制。随着攻防演习任务难度的升级,有可能会根据实际情况编写免杀木马,以逃逸防守方安全监测设备的检测。

4. 正确研判演习结果

实战攻防演习组织者需要安排评判专家组,对攻击方及防守方的成果进行研判与评分。对攻击方的评分机制包括:攻击方对目标系统攻击所造成的实际危害程度、准确性、攻击时间长短以及漏洞贡献数量等;对防守方的评分机制包括:发现攻击行为、响应流程、防御手段、防守时间等。通过多个角度进行综合评分,从而计算出攻击方及防守方最终得分和排名。

四、小结

网络安全实战攻防演习可以帮助政企机构对现有的安全防护体系(包括流程、协同、人员能力、系统设备等)进行全面安全测试,通过对攻击队的主要攻击思路和攻击手法的了解,政企机构可以有针对性地在攻击实施各阶段做好安全检测、分析、处置和防御等工作,发现存在的薄弱环节和漏洞,并在演习后的总结复盘过程中,根据详尽的安全整改建议,提高政企单位的网络安全防御能力。

(本文刊登于《中国信息安全》杂志2019年第1期)

声明:本文来自中国信息安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。