李晶,黄杰,袁慧,朱国威,张先飞,王新年
(1 国网湖北省电力有限公司,武汉 430077;2 国网湖北省电力有限公司信息通信公司,武汉 430077;3 中南民族大学计算机科学学院,武汉 430074)
随着信息技术的发展,安全攻防形势越来越严峻,传统的以分散安全设备日志、主机日志、应用日志进行安全事件响应溯源的手段,已不能满足对安全事件快速“洞察”的要求,尤其是近年来具备国家和组织背景的攻击行为日益增多,例如国际上发生的针对伊朗核电站的“震网”病毒攻击、针对乌克兰电网的“BlackEnergy”恶意攻击,2021年5月美国最大的成品油管道运营商Colonial Pipeline因受到勒索软件攻击,被迫关闭其美国东部沿海各州供油的关键燃油网络.我国也先后发生了二滩水电站、鹅城换流站等多起因网络攻击造成的电网安全生产事故,带来了严重的经济损失和社会影响[1].
这些安全事件发生后,安全管理人员很难定位事件的风险,主要缺少能在海量数据中快速分析的工具.对一次攻击进行检测需要从大量数据中进行快速分析,这要求本地具备海量的数据存储能力、检索能力和多维度关联能力,而传统的数据存储和检索技术很难达到这样的要求.例如:一个中型规模企业记录全年的日志数据,大约有2000亿条日志,需要约300多TB的存储空间,如果使用传统的检索技术进行一次条件检索,大概需要几个小时的时间,这种效率明显不能满足攻击行为分析的需求[2-3].
预防系统和工具有助于减少攻击者的机会,并帮助分析人员更有效分析,本文实现了对日志数据进行分析,为安全工作提供支撑;提供对安全日志进行快速分析、检索和多维度关联能力,在安全事件发生后,为管理员提供安全事件调查工具,进行快速的事件定位与处理,提高安全事件的应急响应能力;有效快速的安全事件分析和调查取证,可以最大程度保护信息资产受到更大侵害,减少企业资产和数据损失,可有效利用现有信息安全投资,使信息安全投资收益最大化[4-9].
目前国网湖北电力公司已经建设了大数据系统,对网络设备、安全设备、主机设备、中间件应用、数据库等的日志进行集中收集和存储,但是缺乏对日志进行快速分析、检索和多维度关联的能力,因此设计和实现了大数据环境下可视化网络威胁系统来处理以上问题,提升国网湖北电力公司自身的信息安全防护技术与能力.
本系统主要分为:数据采集、数据存储、数据关联分析、数据查询展示几个子模块,整体架构图如图1所示.数据主要来源为国网湖北电力公司的天眼分析平台、天擎控制中心、安全dns分析平台以及网络与信息安全风险监控平台S6000.
图1 网络威胁关联分析可视化系统架构Fig.1 Visualization system architecture of network threat association analysis
关联分析主要是指在大量的数据记录中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构.关联分析Apriori算法[10-11],包含以下几个概念:
项集:设itemset={item1,item_2,…,item_m}是所有项的集合,其中,item_k(k=1,2,…,m)成为项.项的集合称为项集,包含k个项的项集称为k项集.
关联规则:关联规则是形如A→B表达为A(B)的蕴涵式,其中A、B均为itemset的子集且均不为空集,而A∩B为空.
支持度(Support):某条特定的规则在所有数据条目中所占的最小百分比.关联规则的支持度定义为:support(A(B))=P(A∪B),其中P(A∪B)表示事务包含集合A和B的并(即包含A和B中的每个项)的概率.
置信度满足假设的前提下,结论为真的条件概率,公式为Confidence(A(B))=P(B|A)=P(A∪B)/P(A)=P_count(A∪B)/P_count(B).P_count就是项集的出现频度,包含项的事务数,简称为项集的频度、支持度计数或计数.
频繁项集:如果项集I的相对支持度满足事先定义好的最小支持度阈值(即I的出现频度大于相应的最小出现频度(支持度计数)阈值),则I是频繁项集.
强关联规则:满足最小支持度和最小置信度的关联规则,即待挖掘的关联规则.
关联规则的挖掘是一个两步的过程:找出所有的频繁项集,由频繁项集产生强关联规则.
采集子系统需要对接多个数据源,需要具有部署灵活、扩展方便、稳定可靠等特点,因此可采用Logstash做为采集子系统的基础组件[12].
Logstash的常见工作过程如图2所示,Logstash的数据处理过程主要包括:Inputs输入模块、Filters过滤模块、Outputs输出模块三部分,另外在Inputs和Outputs中可以使用Codecs数据编码模块对数据格式进行处理.这四个部分均以插件形式存在,用户通过定义pipeline配置文件,设置需要使用的input,filter,output,codec插件,以实现特定的数据采集,数据处理,数据输出等功能.
图2 Logstash工作过程Fig.2 Logstash work process
在本系统中,主要采用Syslog Input插件来接收各类设备的日志.各类设备接收端口定义如表1所示.
综 合 采 用grok filter、mutate filter、json filter、json codec等插件,将接收到的日志解析、转换成Elasticsearch index模板所定义的日志格式.
采用Elasticsearch output插件,将解析转换好的日志直接输出到Elasticsearch存储[13-14].
数据存储分为两类:结构化存储、半结构化存储.结构化存储基于传统关系型数据库Postgresql,主要存储系统内的配置和权限等结构和数据量变化都不频繁的数据;半结构化存储基于可线性扩展的搜索引擎Elasticsearch,主要存储数据量需要线性扩展、数据类型及结构需要灵活变更的日志数据.
半结构化存储数据基于性能方面的考虑,采取分索引、分片的方式来做到分布式存储,每天为每类日志创建一个索引.
Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎Apache Lucene基础上的搜索引擎.
关联分析子系统是本项目的核心模块之一,主要为各类查询分析提供支持[15].
关联分析分为基础查询分析和自动化关联分析两部分.
2.3.1 基础查询
基础查询由用户手动触发,每次定义一种类型的线索,指定查询方式来获取与其相关的线索.主要查询类型项集为Inputs-Type={MD5,IP,DNS,Port,Virus},基础的文件或者日志的MD5值、IP地址、域名DNS、端口Port和病毒名Virus做为线索进行关联分析.
数据源项集定义为Ds=DeviceType×LogType,其中DeviceType={Ty,Tq,sDns,s6},Ty:天眼分析平台,Tq:天擎控制中心,sDns:安全DNS分析平台,s6:S6000;LogType={warningLog,virusLog},其中warningLog为告警日志,virusLog为病毒分析日志.
1)基于MD5线索查询.
查询方式集合为QMd5={warning-type,effect-user,attack-sources,aDNS,sample-sources},其中warningtype:告警类型,effect-user:影响用户,attack-sources:攻击源,aDNS:关联域名,sample-sources:样本来源.
MD5数据源定义为DsMd5=Ds×Md5.
输出值为ZMd5={wType,vIP,aIP,DNS,vType,fName},其中wType:告警类型,vIP:受害IP,aIP:攻击IP,DNS:域名,vType:病毒类型,fName:文件名称.
根据以上的关系可以得出其关联zMd5=qMd5(dsMd5),dsMd5∈DsMd5,qMd5∈QMd5,z∈ZMd5.其对应的结果值如表2所示.
表2 基于MD5值关联查询Tab.2 Correlation analysis based MD5
2)基于IP线索查询.
对于输入IP的值来进行判断的,除了上面的查询方式集合外,还有Query-Methods-IP={risks,hosts},risks:风险,hosts:主机信息.因此定义IP的查询方式为:QIP=QMd5∪Query-Methods-IP.
IP数 据 源 定 义 为DsIP=(Ds×IP)∪(Ty×{wRisk,vRisk,cPass}×asIP),其 中IP={IP,vIP,aIP},IP为普通IP值,Ty特指天眼系统,wRisk为弱口令,vRisk为暴力破解风险,cPass为明文密码,asIP为资产IP值,vIP为受害者IP,aIP为攻击IP值.
IP查询输出值ZIP={MD5,vName,vType,DNS,rType,wType,aIP,vIP,wPass,vRisk,cPass,host},其中,vName:病毒名,vType:病毒类型,rType:威胁类型,wType:告警类型,aIP:攻击IP,vIP:受害IP,wPass:弱口令风险,vRisk:暴力破解风险,cPass:明文密码风险,host:主机MAC.
那么输入IP地址,可以得出zIP=qIP(dsIP),dsIP∈DsIP,qIP∈QIP,zIP∈ZIP.
3)基于DNS线索查询.
对于属于域名DNS信息查找相应的查询方式集为QDns={IOC}∪QMd5,其中IOC为入侵威胁指标.
DNS的数据源定义为DsDns=DsxDNS.
DNS查询的输出值ZDns={MD5,fName,vIP,sIP,aIP,aTissue,rType,wType,IOC},其中,fName:文件名称,vIP:受害IP,sIP:源IP,aIP:攻击IP,aTissue:攻击组织,rType:威胁类型,wType:告警类型.
输入DNS,可以得到zDns=qDns(dsDns),dsDns∈DsDns,qDns∈QDnS,zDns∈ZDns.
4)基于Port线索查询.
QPort={srcIP,destIP},srcIP:原地址,destIP:目的IP.
DsPort=Tyx{wRisk,vRisk,cPass}xPort.
ZPort={asIP,destIP}.
输 入Port得 出zPort=qPort(DsPort),zPort∈ZPort,qPort∈QPort,dsPort∈DsPort.
5)基于Virus线索查询.
QVirus={warning-type,sample-sources}∈QMd5.
DsVirus=Dsx{fName,vName},fName:告警日志的文件名,vName:病毒分析日志的病毒名.
ZVirus={atMd5,Md5,aIP,IP,wType,vType},atMd5:附件Md5,wType:告警类型,vType:病毒类型.
输入virus名,zVirus=qVirus(dsVirus),qVirsu∈QVirus,dsVirus∈DsVirus,zVirus∈ZVirus.
2.3.2 自动化组合关联分析
自动化关联分析主要基于内置的场景定义来实现,各场景的定义如下:
(1)场景一:恶意程序的蔓延范围分析.
通过查询样本MD5值或恶意域名,自动分析邮箱接收情况及终端设备恶意程序的安装情况.输入值为:样本MD5/DNS
1)当输入值为样本MD5值时(查询携带恶意样本的收件人邮箱及受害IP情况):
基本关联结果z1=qMd5(dsMd5),z1∈ZMd5,再进行第2次关联IP和DNS,即z2=qIP(z1×dsIP)∪qDns(z1×dsDns),qIP∈QIP,qDns∈QDns,z2∈ZIP∪ZDns.第3次关联IP和DNS,即z3=qIP(z2×dsIP)∪qDns(z2×ds-Dns),qIP∈QIP,qDns∈QDns,z3∈ZIP∪ZDns.
2)当输入值为域名时(产生可疑或恶意域名请求的IP感染病毒及同类型病毒感染终端IP的情况):
当输入为DNS,产生输出z1=qDns(dsDns),z1∈ZDns.再继续和IP以及MD5进行关联输出,z2=qIP(z1×dsIP)∪qDns(z1×dsDns),qIP∈QIP,qDns∈QDns,dsIP∈DsIP,dsDns∈DsDns,z2∈ZIP∪ZDns,输出病毒名称和域名,然后继续进行第3次关联,z3=qVirus(z2×dsVirus)∪qDns(z2×dsDns),qVirus∈QVirus,dsVirus∈DsVirus,输出被影响的IP.
(2)场景二:重要系统的安全状态分析.
主要是重要业务资产安全风险如弱口令、明文密码泄露、暴力破解情况及恶意软件感染情况.输入值为:IP地址.通过IP得到z=qIP(dsIP),qIP∈QIP,dsIP∈DsIP,然后进行二次关联MD5、DNS以及病毒名,如果z≠Φ,则z2=(qMd5(z1×dsMd5)∪qDns(z1×dsDns)∪qVirus(z1×dsVirus)),qMd5∈QMd5,dsMd5∈DsMd5,qDns∈QDns,dsDns∈DsDns,qVirus∈QVirus,dsVirus∈DsVirus.
(3)场景三:重要系统的安全端口分析.
对重要系统IP的开放端口情况进行安全分析是否存在风险行为如弱口令、明文密码、暴力破解等.输入值为:IP地址/port.
当输入值为IP值时(输入重要系统的IP地址查找是否存在外联或代理、恶意软件下载等行为相关的端口号信息,同时自关联出使用相同端口号的可疑风险重要系统IP地址).
通过IP得到z1=qIP(dsIP),z1中如果存在端口,则z2=qPort(z1),并可以继续查询下去.
当输入值为端口值时(输入端口查看是否存在外联或代理、恶意软件下载等行为的重要系统IP地址,同时自关联出这些风险系统IP地址是否还存在其他可疑端口号).
通过port可得到z1=qPort(dsPort),再通过IP继续查询,z2=qIP(z1),如果z2≠Φ,一直继续下去.
(4)场景四:告警准确性辅助分析决策.
从不同的维度对告警信息进行验证,找到关联线索.
输入值为:IP,Z=qIP(dsIP),∃dns∈z,IP∈z,且dns≠Φ、IP≠Φ,则z2=(qDns(z1)∪qIP(z1)).
(5)场景五:常见高危木马、后门、病毒开放端口关联分析.
输入值为:MD5/端口号/IP
1)当输入值为MD5时(查询相关恶意威胁类型及关联的端口)
Z1=qMd5(dsMd5),得到受害IP及攻击IP等信息,然后再次关联IP,z2=qIP(z1xdsIP),然后重复场景3.
2)当输入值为端口号时(查询使用同端口下的资产所中的高危木马后门等情况及同种类型的恶意软件下的终端感染情况)
Z1=qPort(dsPort),z1={protocol,asset IP,src IP,dest IP,wPass,cPass,vRisk},protocol:协 议,asset IP:资产IP,Psrc IP:源IP,dest IP:目标IP,wPass:弱口令,cPass:明文密码,vRisk:暴力破解.二次关联受害IP/攻击IP以及恶意类型,输出MD5值、IOC信息以及受影响的用户IP,即z2=(qMD5(z1×dsIP)∪qDns(z1×dsIP)),z3=qMD5(z2×dsMd5),最终得到主机地址、告警类型、受害IP、攻击IP、组织信息等.
3)当输入值为IP时(查询指定资产下的高危木马后门病毒关联端口情况)
该种情况对IP地址直接关联和重复关联即可,即:
Z1=qIP(dsIP),z2=qIP(z1×dsIP),然后重复场景三.
该模块提供对用户域名访问记录、IP已开端口、样本云查杀日志等数据的关联查询.用户可以通过查询掌握当前和历史与线索相关联的其它数据信息.其中域名解析记录是客户端域名访问记录;已开端口记录是IP地址已开放访问的端口号;样本外联是计算机上恶意样本的网络外联行为;样本来源是计算机上恶意样本下载的来源url等信息,如图3所示.
图3 数据查询模块Fig.3 Data query modules
可视化系统分为7个部分:顶栏(包含分析、显示、协同、文件)、缩略图、标签栏、主画布、查询表单栏、详细信息栏、底栏(包含节点列表、连线列表、操作历史、时间轴).如图4所示.
图4 网络威胁可视化分析系统界面Fig.4 User Interface of network threat visualization analysis system
手动查询模式下,当查询类型为域名、IP、样本MD5这3种类型之一时,则显示“自动关联分析”勾选框,勾选即可进入自动关联分析查询,如图5所示.
图5 手动查询界面Fig.5 Manual query interface
1)域名自动关联分析:选择域名,在查询值输入框输入目标域名,分析模型可选线索扩展、背景研判、线索落地,如图6所示.
图6 域名自动关联分析界面Fig.6 Domain name automatic association analysis interface
线索扩展:按照线索扩展的业务场景,将此场景下惯用的经典分析方法固化为查询模型,自动查询目标域名相关的兄弟域名、样本外联、Whois、DNS解析记录、子域名、样本外联的目的IP等线索,并自动形成关系网络,以期查询到该域名相关的IP和域名,进而扩展线索.
背景研判:按照背景研判的业务场景需求,将此场景下惯用的经典分析方法固化为查询模型,自动查询目标域名相关的兄弟域名、样本外联、Whois、DNS解析记录、目的IP、子域名、归属地等线索,并自动形成关系网络,以期查询到该域名有通讯和外联的IP、域名和所在位置,进而对目标域名进行研判.
线索落地:按照线索落地的业务场景需求,将此场景下惯用的经典分析方法固化为查询模型,自动查询目标域名相关的样本下载、样本外联、上网行为、客户端IP等线索,并自动形成关系网络,以期查询到该域名相关的客户端IP,进而锁定地理位置范围.
2)IP自动关联分析:使用方式及目的同域名自动关联分析.
3)样本MD5自动关联分析:使用方式及目的同域名自动关联分析.
画布右上角查询框表单栏内,选择自动查询.依次选择查询类型和查询结果,点击开始查询,即开始对画布上类型相同的节点做相同的递归查询.下图中是对www.baidu.com正向解析后画布上所有的域名节点做DNS正向解析的结果,如图7所示.
图7 自动查询界面Fig.7 Automatic query interface
本系统通过对网络信息事件相关信息的直观展示和网络安全相关业务建模,降低了事件调查人员的技术门槛,使得普通的安全运维人员即可完成相关工作.通过常见网络安全事件调查方式的分析固化,在面对类似的安全事件无需重复操作,而是直接展现事件的基本情况,迅速完成调查研判工作.在网络安全事件调查中将威胁、资产和情报信息结合,在时间调查中实现了对事件全貌的还原,帮助加快做出响应决策.
本系统的实现提升了威胁事件分析及溯源的工作效率,降低威胁事件分析及溯源的人力成本,保障了生产业务连续稳定运行,提升了经济效益.