3.1 网络安全数据采集的问题背景
在网络安全态势感知中,分析师需要对防护的目标系统有一个清晰直观的了解,例如需要知道当前网络的拓扑状态、不同用户运行的任务等;需要知道当前目标系统存在哪些漏洞,哪些漏洞已经安装补丁进行了修复等;需要知道当前系统是否受到了各种类型的攻击,这些攻击造成了什么影响等。采集网络安全相关的数据在技术上已经不是一个难点,通过各种各样的流量采集工具、日志采集工具、终端采集工具等能获取多种类型的网络安全数据。为了帮助分析师掌握所防护目标系统的状态,网络安全数据的采集工作需要具有针对性,即进行靶向数据采集。在形成针对目标系统的网络安全态势感知过程中,需要采集的数据可以分为三个维度的数据。第一个是资产维度数据,即目标系统包含的与各类软件和硬件、运行任务相关的资产数据;第二个是漏洞维度数据,即与目前系统中可能存在的与各种漏洞相关的信息;第三个是威胁维度数据,攻击者对系统进行攻击时留下的与威胁行为相关的数据。通过采集资产维度数据,分析师可以对目标系统的资产状况、工作任务运行状况有清晰的了解;通过采集漏洞维度数据,分析师可以发现目标系统可能存在的漏洞,并使用相应的补丁进行修复;通过采集威胁维度数据,分析师可以获知正在发生或已经发生的攻击事件,进一步判断攻击事件可能造成的后果,并及时制定相应的防范措施。
3.1.1 网络安全数据的特点及数据采集难点
网络安全数据属于典型的大数据,具有5V(Volumn,Variety,Velocity,Value,Veracity)特点:
(1)Volumn:网络流量、系统产生的日志等数据体量庞大。如果对所有的数据都进行采集,那么需要存储和计算的数据太多,因此需要从海量的数据中提取关键和敏感的数据。
(2)Variety:网络安全相关的数据种类多,来源广。例如通过传感器、网络爬虫、日志收集系统等均能采集不同类型的数据,数据类型从来源上可以分为环境业务数据、网络层面数据、日志层面数据、告警数据等,在形成网络空间安全态势感知的过程中需要对不同来源的数据进行有效融合。
(3)Velocity:数据增长速度快,时效性要求高。从数据增长速度来看,无论是流量数据还是日志数据、告警数据等,每天都会产生很多新的数据,对这些新产生的数据进行分析是十分迫切的需求,而且由于网络攻击事件的时效性要求高,以前的防御往往是在事后才进行复现和分析的,因此网络安全态势感知的目的是在事前和事中能及时发现潜在的网络攻击,并有效制止所发现的攻击。
(4)Value:数据价值密度低。虽然网络安全数据多,但是很多都是正常用户的操作数据,与攻击者进行攻击事件相关的数据占比很小,却对网络攻击的分析非常有利,因此需要准确筛选出相关有价值的数据,以利于进行数据分析,并通过大量的数据分析,找出真正的攻击事件,有效阻击潜在的攻击。
(5)Veracity:数据质量不高。网络安全数据包含许多告警数据。这些告警数据来源于很多与网络安全相关企业研发的防御系统,例如防火墙、IDS(Intrusion Detection System,入侵检测系统)、IPS(Intrusion Prevention System,入侵防御系统)等。这类防御系统能对部分数据进行初步分析,并对存在的隐患发出告警信息,如IDS告警数据。但是目前IDS大多采用基于规则的方法,告警数据存在很多误报情况,即很多正常用户的数据可能被IDS识别为威胁,而真正有危害的数据可能无法被IDS准确识别。因此,需要从大量的数据中甄别数据的真实性和有效性,减少无用的数据,让分析师能使用更高质量的数据进行态势理解和分析。
由于网络安全数据具有5V特性,采集网络安全数据形成态势感知的过程和传统态势感知中数据采集完全不一样。传统战场上进行态势感知采集数据,通常是通过物理传感器获取环境信息、通过人体感官观察敌方动向、通过侦察平台采集信息等方式。传统战场一般处于物理状态下,大部分数据是不易发生改变的。例如,战场环境中的道路、建筑物等,敌我双方能观察到的是同一物理战场上的各种状态,敌我双方能获得很相似的态势数据。而网络安全态势感知采集数据的过程完全不同,网络安全数据具有大数据的5V特性,数据采集难度很大。网络安全态势感知数据采集与传统战场态势感知数据采集的主要区别体现在以下4点。
(1)采集要素的特点不同。传统战场态势感知需要采集的要素主要是作战过程中的物理环境、敌方的兵力部署等数据;网络安全态势感知需要采集的要素是网络空间中的数据,包括计算机等硬件设备所产生的数据、通过网络传播和交换的数据等。传统态势感知采集的要素大多是物理世界真实存在的;网络安全态势感知采集的要素主要是数字化的数据,其中不仅包括软件和硬件等资产维度数据、与系统漏洞相关的数据,还包括由大量攻击行为所导致的威胁维度数据。
(2)数据采集的难点不同。传统态势感知往往通过传感器、人眼观察、情报系统等获取敌方数据,数据采集方式比较单一,获取情报信息数据的难度很大,这是传统态势感知数据采集的主要难点。网络安全态势感知数据采集的方法多种多样,可用于数据采集的工具种类繁多,有传感器、流量探针、网络爬虫、日志采集系统、协议采集系统、数据库采集系统等。相比传统态势感知,其采集方法、采集工具已经不是数据采集的难点。正是由于采集方法多样、工具繁多,分析师在采集网络数据时需要掌握的专业技能更多,要求更高。另外,数据采集方式的多样化,使得能用于网络安全态势提取的数据过多,需要解决数据过载问题,以便从大量的数据中采集到与态势感知密切相关的数据。
(3)数据采集过程中敌我双方的地位不同。传统态势感知的双方处于一个比较对等的状态,双方采集的数据差别不会太大;而在网络安全态势感知中,攻击者比防御者具有更明显的优势,攻击者只需要找到某一个环节的漏洞,例如在webshell攻击中找到一个SQL(Structured Query Language,结构化查询语言)注入点,在获取管理员账号和密码后,便可上传webshell对后台服务器进行控制,而防御者必须对己方所有的系统进行数据采集,才能保护所有的资产不被损坏。在网络安全态势感知中,攻击者在采集数据时可以聚焦于获取的某一个点数据,如可以通过社会工程学的方法、扫描系统漏洞等方法实施攻击,而防御者则需要对全局数据进行采集。
(4)数据体量、更新速度不同。在传统态势感知过程中,数据量并不大,数据的更新速度也较低,例如当兵力部署发生变化、物理状态发生变化(桥梁被毁、道路被毁等)时,双方才会更新采集的数据;而在网络安全态势感知过程中,数据体量大,与网络空间相关的数据更新速度极快,需要及时对数据进行更新。
从防御者角度而言,进行网络安全态势感知具有十分重要的作用和意义。网络安全态势感知不仅能对当前目标系统的资产状态进行有效评估,还能通过采集的数据发现潜在的网络攻击,以便在网络攻击事件发生之前或发生之时进行有效的处理。传统态势感知局限性大,采集的数据种类少,数据体量小,采集方法简单,数据更新慢;而网络安全态势感知需要采集的数据体量大、种类多、更新速度快、采集方法繁多。有效、有目标地采集网络安全数据是完成网络安全态势感知的重要基础,也是数据采集过程中的难点。
3.1.2 面向不同岗位角色、不同分析师的靶向数据采集
与网络安全态势感知相关的数据量大,应该采集什么样的数据,针对哪些关键要素进行数据采集呢?本节将通过介绍不同岗位角色、不同层次分析师一般会关注什么样的数据,讲解面向不同需求的靶向数据采集方式。
本书第1章曾介绍了网络安全态势感知过程中五种不同的岗位角色,包括首席安全官、安全分析师、安全工程师、安全管理员、安全顾问/专家。其中,首席安全官负责制定安全策略或安全框架,安全顾问/专家也可以从顶层制定相关策略或提出建议。对于首席安全官和安全顾问/专家,他们更关注整体系统的安全情况和安全策略,可能不会关注直接涉及数据采集的相关工作,不会关注资产维度数据,不会关注对软件和硬件资产的维护等。
安全分析师主要分析和评估网络基础设施中存在的漏洞及相关的应对措施。因此,安全分析师更关注漏洞维度数据及与目标系统软件和硬件资产等相关的漏洞,可以通过分析资产维度和漏洞维度的关联情况来采集相关的数据。
安全工程师负责执行安全监控、安全分析、数据分析、日志分析及取证分析等,能检测发现安全事件,并对安全事件进行响应。因此,安全工程师关注的是威胁维度数据,需要从安全防御设备中采集各类告警数据,从日志数据中发现异常,从流量数据中采集与攻击行为相关的异常流量数据等。
安全管理员负责安装和管理安全系统,是执行安全信息采集、安全管理措施、安全响应方案实施等的实际工作人员,会根据安全分析师、安全工程师的实际需求采集相关的数据。
一般而言,安全分析师、安全工程师会执行相应的分析任务,根据采集的网络安全数据进行综合分析,从中了解资产运行状况、系统漏洞情况、攻击行为等。因此,可以将安全分析师和安全工程师看作是使用态势感知系统的分析师。借助态势感知系统,分析师可以更加便捷地理解当前网络安全态势。对于分析师,Splunk公司介绍了三个层次分析师的职责[1],如图3-1所示。
图3-1 三个层次分析师的职责
安全行动中心(Security Operations Center,SOC)在检测到安全事件以后,会采取相应的流程。首先,当安全告警信息发出以后,第一级分析师一般会试图去迅速消除其中的误报信息,并对真实的网络攻击尝试实施缓解措施,由于第一级分析师一般是技能掌握程度较低的分析师,因此当他们无法补救或很难理解面临的威胁警告时,会将该事件递交给第二级分析师处理。在这个过程中,第一级分析师主要采集的数据是来自防御设备最直接的告警信息及资产被攻击的事件信息,如IDS告警、文件或系统出现安全事件等。第一级分析师根据这些最直接的数据进行处理,基于自身的知识试图去消除误报、理解威胁、尝试补救。第二级分析师掌握的技能更多,技术更为熟练,会通过使用更高级的工具来研究安全事件。例如,他们会采用数据包捕获工具分析流量中的异常,并综合多个防御设备的告警数据、流量数据等分析安全事件的威胁程度,尝试各种缓解和补救措施,尽量将安全事件的影响程度降低。第三级分析师的技能最为熟练,是专门解决最困难和最关键的安全事件的。第三级分析师一般使用的数据更多,会综合判断安全事件造成的危害,包括对文件系统、软件和硬件等造成的危害,结合防御设备的信息、流量异常信息,对攻击事件进行分析和溯源,并制定相应的措施防止以后出现类似的攻击事件。一般而言,第三级分析师可以根据发生的攻击设计规则,与防御设备进行联动,以便防止后续发生类似的攻击事件。计算机安全事件响应团队(Computer Security Incident Response Team,CSIRT)的第二级和第三级分析师往往位于安全行动中心(SOC)内部,处理发生的网络安全事件。
不同层次分析师所关注的安全要素和需要采集的数据并不一样:第一级分析师可能更关注来自资产遇到攻击的后果数据及比较直接的告警数据;第二级分析师关注分析层面的安全要素和数据,通过融合多个防御设备的数据进行综合分析;第三级分析师关注全局,包括对安全要素的融合分析,对安全事件进行分析和溯源,进行威胁狩猎、主动取证,并尽可能在攻击事件发生之前或发生时采取措施保护关键资产。网络空间的数据种类繁多,数据体量大,分析师的时间和精力有限,无法对所有的数据都进行采集和分析,因此需要针对不同的岗位角色、不同层次的分析师设计具有靶向的数据采集方式,更好地帮助分析师有效地分析网络攻击事件。
3.1.3 网络安全数据采集示例
以webshell攻击为例,攻击者在入侵企业网站时,通过各种方式获取webshell,进而获得对企业网站的控制权。常见的攻击方式包括利用后台数据库备份及恢复的功能来获取webshell、SQL注入、直接上传获取webshell、使用跨站脚本攻击(Cross Site Scripting,XSS)[1]等。webshell攻击能导致很严重的后果,例如攻击者通过webshell入侵企业系统,并通过系统的本地漏洞来提升权限,对网站服务器进行长期持续的控制等。下面举一个简单的例子,攻击者会先寻找web漏洞,通过一些高危的漏洞实现对webshell的获取,例如找到一个SQL注入点,在获取网站后台的管理员账号和密码后,在后台上传一个webshell,在服务器上留下脚本文件。针对这个例子,下面将讲解如何检测并发现此类攻击,需要采集什么样的数据才能检测出此类攻击。
从资产维度数据采集而言,应该采集服务器运行状态、服务器权限数据、服务器数据库异常数据等,从而及时发现服务器资产中存在的异常;从漏洞维度数据采集而言,应该采集服务器漏洞,如与SQL注入相关的漏洞等,根据已公开的漏洞数据库进行关联分析,分析目标系统中存在此类漏洞的服务器;从威胁维度数据采集而言,需要采集与webshell攻击行为相关的数据。一般而言,可以通过基于webshell特征、基于流量、基于webshell行为特征等方法进行检测。当使用基于webshell特征进行检测时,需要了解webshell常用的函数,如系统调用命令执行函数(eval/system/cmd_shell等)、文件操作函数(fopen/fwrite等)、数据库操作函数等。因此,需要通过采集数据,检测是否有对系统调用、数据库、文件的操作动作,需要对数据库、文件等重要资产采集相关的数据,关注其变化情况。具体而言,可以通过grep命令搜索常见webshell木马中可能使用的危险函数,找到webshell。基于流量的检测主要是通过匹配数据流的特征进行检测,可以通过Wireshark、WeBaCoo等工具进行抓包测试,采集流量数据并对其中的流量特征进行分析。基于webshell行为特征的检测首先考虑攻击者的攻击意图是什么,攻击者上传webshell会进行什么操作,然后检测系统中关键资产的变化及敏感的操作,如收集服务器信息、配置文件信息等,采集此类数据可以进行有效检测。此外,可以通过日志信息追溯攻击路径,例如分析师通过grep命令找到webshell以后,通过日志数据找出关于webshell的记录,进而找到攻击者的IP地址,并搜索攻击者的访问记录,从而实现对整个攻击路径的溯源和复现。