僵尸网络多级控制关系可视化分析

2022-07-06 01:41付博扬严寒冰
信息安全研究 2022年7期
关键词:僵尸可视化节点

付博扬 严寒冰,2

1(北京航空航天大学计算机学院 北京 100191)

2(国家计算机网络应急技术处理协调中心 北京 100094)

从1993年首次出现bot的概念,到1999年第1个真正意义的恶意控制程序代码(bot程序)出现,僵尸网络已有近30年的历史.僵尸网络的最大特点是可以通过控制多台设备实现大规模攻击行为,其中最具代表性的是分布式拒绝服务(DDoS)攻击.稳定的僵尸网络被控设备由于在线时间长、带宽稳定、控制简单、对攻击者隐蔽性好等特性,成为攻击者构建攻击跳板的首选.

近年来信息化快速发展,互联网设备深入渗透到生活中.据Statista网站的调查[1]显示,截至2018年,中国已建立了近33亿个连接的庞大网络,预计到2025年该数字将达到接近160亿,这也导致僵尸网络中被控设备数量大幅度增长,网络上大规模攻击越发猖獗.据安全公司Imperva的调查[2]显示,在2019年的一起针对在线流媒体应用的大规模僵尸网络攻击中,短短13天内受控设备数量高达40多万台.

僵尸网络是一组被恶意软件攻击并控制的连接在互联网上的主机,用于执行一系列恶意活动.通常僵尸网络结构如图1所示,由1个主机(botmaster),1个或多个命令与控制(command&control,C&C)服务器以及大量受感染的机器人(bot)组成.主机常常隐藏在网络中,通过C&C服务器发布指令,机器人定期向给定域名或通过算法生成的C&C服务器发送心跳包并接受指令,如发动DDoS攻击等.

僵尸网络的主机通常尽可能使用少量流量与C&C服务器通信,且不与僵尸网络中的机器人直接连接,因此在网络中常常处于隐匿状态.这就导致仅通过对网络上的单个节点流量进行检测以发现异常,从而检测僵尸网络行为是不可行的,关闭流量异常节点的处置方法难以对整个僵尸网络造成打击.对于防守者而言,如何发现攻击者使用的可疑的僵尸跳板网络成为建立有效防御手段的重要步骤.

本文提出僵尸网络多级控制关系可视化分析系统.该系统可以基于流数据,判定僵尸网络中哪些节点是多级控制网络中的非顶层节点,从而发现网络设备之间的多级控制关系,定位可能处于跳板位置的C&C服务器节点,为后续溯源分析并发现隐藏的主机节点提供帮助.

1 研究现状

僵尸网络的出现已有近30年的历史,已经发展出多种完善的检测思路,主要分类如图2所示.bot分析类[3]的主要思路是利用蜜罐捕获僵尸网络,从静态代码层面或模拟环境运行层面分析僵尸网络的特征和行为模式.IDS类[4]根据数据获取方法检测僵尸网络.通过主动发送请求获得设备响应,从而查找在特定主机上运行的可疑程序和脚本的称为主动类;通过设备获取或嗅探获得数据,通过基于规则或异常的方法检测僵尸网络行为的称为被动类.框架设计类[5]主要针对经过加密等而难以有效检测的僵尸网络.这类方法利用各类数据挖掘方法,包括机器学习、统计学和数据库系统等检测僵尸网络行为,源数据大部分是现有数据集[6];也有部分研究者通过设置多台设备搭建内部网络,在该网络中的设备上运行开源僵尸网络代码捕获各个设备的流量,从而得到较完整的僵尸网络流量数据[7].

随着网络设备的快速发展,僵尸网络也在不断发展和变化.Mirai是一种广泛传播的代表性僵尸网络家族,自从于2016年由一个恶意软件研究小组首次披露以来,已被多次用于世界上的危险和大规模的DDoS攻击,包括2016年9月和10月的OVH攻击和Dyn攻击.目前Mirai的大量变体仍然是最活跃的家族之一,其他如Gafgyt,Mozi等家族也在不断向着更复杂、更隐蔽的方向进化.

Abbas等人[3]对Mirai家族和Qbot家族的17个僵尸网络变种进行了静态代码分析,挖掘出攻击者的视角、一般行为、使用技术和实现技术等.Shao等人[8]使用2种不同的配置探索自适应学习策略在僵尸网络检测中的有效性,使用真实抓取的网络数据验证所提出的自适应在线学习策略的性能.Panda等人[9]使用3种机器学习方法验证了所设计的特征子集选择方法以及僵尸网络检测系统的有效性.

为模拟僵尸网络中主机之间的连通性以及僵尸网络拓扑结构,基于图的方法被用于建立网络模型,这类方法通常使用如表1所示的基于图的特征分析节点关系[10].大部分研究者在设计基于图的僵尸网络模型时都会在表1的基础上做创新设计.例如,Wang等人[11]提出一种基于流和基于图的流量行为混合分析的僵尸网络自动检测模型.Daya等人[12]使用特征归一化,尽可能降低网络拓扑结构对行为和通信模式的影响.除此以外,也有部分研究者根据僵尸网络的行为特点,在特征选择上做创新.例如,Lagraa等人[13]没有使用表1中基于图的特征建立主机之间的通信特征,而是为每个主机生成多个图表.在该系统中,以2个IP在同一个时间窗口内的端口变化情况作为分析对象,对于每对产生了通信行为的IP都构造一个图,以源端口和目的端口的二元组作为图中节点,根据二元组的出现时间顺序构建有向图,通过比对不同图之间的编辑距离发现存在异常行为的IP.

表1 常用基于图的特征及说明

2 系统设计

本文提出的僵尸网络多级控制关系可视化分析系统结构图如图3所示.本文系统主要由3个模块组成:原始数据处理、Neo4j拓扑构建和D3可视化.

2.1 原始数据处理模块

2.1.1 七元组特征提取

由于流量巨大,为了确保可分析,取用僵尸网络的流数据.这些流数据携带了从一个网络节点转发数据包到另一个网络节点所需的基本IP层信息.为了筛选控制节点及其关系,从每条流数据中选择最具代表性的7个特征组成七元组si=(s_sipi,s_dipi,s_sporti,s_dporti,s_packetsi,s_bytesi,s_end_timei).其中,s_sipi和s_dipi分别表示源/目的IP,s_sporti和s_dporti分别表示源/目的端口号,s_packetsi和s_bytesi分别表示从s_sipi到s_dipi的包数和字节数,s_end_timei显示该条流数据传输的时间段.将1天以2小时为区间划分为12个时间段,通过DAYh-t显示该流数据出现在哪个时间段,其中h为第几天,t为所属时间段.例如,分析2022年1月的流数据,若其中1条流数据时间为“20220101 00:00:01”,则其对应的s_end_timei存储为“DAY1-1”.多个七元组合并为集合S.

2.1.2 同源数据聚合

2.1.3 筛选控制节点

以七元组的二元组(ip,port)为分析单位,对于每个二元组bi=(ipi,porti),定义连接的IP数量(不区分向内或向外)为该二元组的度.度既包含正向流,也包含反向流,而七元组数据集T是有向流数据,因此将T中的sip与dip、sport与dport互换,就形成反向流数据集T′,与原流数据集合并,形成双向流数据集TC.对合并后的新集合TC以二元组bi=(ipi,porti)为单位,统计包含bi在内的所有七元组中不同dipi的数量di,即为该二元组bi的度.

2.1.4 梳理控制关系

2.2 Neo4j拓扑构建模块

2.2.1 控制关系文件导入

Neo4j是一种高性能的图数据库,通过节点和关系这种结构化的形式对数据进行存储.相较于关系数据库,这种存储和管理数据并维护数据关系的方法在数据库查询时开销更低,因此很适合存储僵尸网络的节点和关系数据.Neo4j通过查询语法Cypher筛选用户限制条件下的节点和关系,并可视化展示出来.Cypher是一个描述性的图形查询语言,该语言可以直观描述图形情况,更符合人类自然语言,且不需要编写复杂的查询代码,可以极大减少筛选图中节点操作的负担.

对于量级较大的数据,Neo4j有多种导入方式,包括使用Cypher语言的load csv方式和使用官方的neo4j-import工具等.本文使用官方的neo4j-import工具导入控制关系文件,该工具需要将图中的节点和关系分别存入2个csv文件,通过输入指令即可导入.

2.2.2 生成拓扑图及json文件

图4为采用Neo4j的查询结果拓扑图示例.图中最上方是使用的Cypher语句,语义是查询存在向外控制关系且个数大于2的所有节点.图中圆点为节点,带有箭头的连线为控制关系,从控制节点指向被控制节点.从图4可以看出,面对节点数量上百甚至上千的僵尸网络中的控制关系,Neo4j的展示效果有限.图4是已经将Neo4j展示界面放大到最大的效果,仍然不能看到全部的控制关系,且该关系图中缺少后续分析需要的节点信息,所以需要考虑通过其他方法将控制关系可视化展示.

Neo4j本身具有数据导出功能,可以将Cypher语句的查询结果以csv,json等多种格式导出,形成关系文件.本文选择json格式将Neo4j通过Cypher查询语句筛选出来的节点间关系导出.

2.3 D3可视化模块

图5显示了通过Neo4j导出的关系文件中的1条控制关系数据,其中保留了节点和关系的标签和属性.在图5中,行3“p”后的大括号内包含1条完整的控制关系,分为2部分:第1部分给出了该条控制关系中的2个节点编号及其属性,在图中表示为第1个“start”和“end”后括号中的内容;第2部分给出了该条控制关系中的边的编号及其属性,在图中表示为行24“segments”后括号中的内容,因为是同一条控制关系,其中的“start”和“end”与第1部分中的“start”和“end”分别对应,行36“relationship”后括号中的内容包含了该条控制关系的属性.

在对导出的关系文件做可视化工作时,将文件中每条控制关系数据中第1部分的“start”,“end”提取去重后存储为图中的节点,对于第2部分中的“segments”,以起点(“start”)→控制属性(“relationship”)→终点(“end”)的形式存储为图中的边.绘制时通过查找边文件中的起点和终点即可在图上绘制出一条有向边.

文献[14]提供了使用JavaScript的函数库D3实现导出数据可视化的思路,将导出的关系文件作为D3可视化模块的输入,可得到不同功能的节点间关系的可视化展示.本文在文献[14]的基础上根据需求分析增加了如下功能:

1) 点击图中某节点显示该节点属性并一键打开该节点的所有相关流数据;

2) 显示节点间的控制方向;

3) 以不同颜色显示控制行为的出现天数,并可以只显示出现天数大于n天的结果;

4) 点击连线后以饼图显示控制行为出现的时间段.

图6为使用少量数据的可视化模块的主要功能展示.在该图中,节点及控制关系被显示在图的中心位置,蓝色点表示节点,不同颜色的连线表示节点间的控制关系,连线上的黑色箭头表示控制方向.图中左下角的图例说明了不同颜色连线的含义,由上至下分别表示1条控制关系出现1天至7天.当点击图中的某个节点时,图中右下角会显示该节点的全部属性,包括IP地址、出现时间、出现次数等.此时如果点击图中右侧的蓝色“打开该ip文档”,即可打开只包含与该节点相关的所有控制关系数据的csv文件.

图7为出现天数超过规定天数的控制行为的可视化显示,可以看出,该图只有从黄色至红色的连线,即只包含控制天数为5~7天的控制关系.通过该功能可以快速找到出现天数较多的控制行为,并从图中直观看出这些控制行为之间的多级控制关系.

通过点击任意控制关系可视化图中的某条连线,即在图的最下方以饼图的形式展示该条控制关系的出现时间段.以图8为例,黑色部分为出现时间,可以看出该条控制关系在多天相同时间段存在控制行为,因此该条控制关系中的控制节点对应IP被标记为高度可疑.

3 结果验证

本文采用实验室抓取到的明确包含僵尸网络流量的1个月的流数据进行分析,图9展示了其中某周发现的异常节点.从图9可以看出,节点①以桥梁的形式连接了右下角的节点群和左侧的其他节点.通过点击该节点,可仅高亮显示与该节点直接相连的其他节点和控制关系.点击节点①的同时,节点①附近通过白色方框显示出该节点对应IP地址,本文做了模糊处理.从图9可以看出,节点①与节点②③④直接相连,根据箭头方向(从控制端指向被控端)可以发现,节点①IP单方面被节点②③④IP控制,因此分别点击这3个节点做进一步分析.

图10展示了对图9中的节点④的进一步分析情况.可以看出,该节点除了对节点①存在控制行为外,左侧还存在多条红色(控制天数为7天的)向外控制关系,因此将该节点对应IP标记为高度可疑.

采用本文系统对1个月的流数据进行筛选后,共发现3个高度可疑存在多级控制关系的跳板节点,其中1个已被确认为僵尸网络控制端.由于流数据的粗糙性以及实际网络流量的未知性,本文系统的目的是尽可能发现存在多级控制关系的节点,以便报文数据分析以及实际取证溯源分析等工作的开展.

4 结束语

本文提出一个针对僵尸网络的多级控制关系可视化分析系统,包括原始数据处理、图数据库拓扑构建以及可视化分析.由于问题的复杂性,1个设备可能被多个僵尸网络控制,因而僵尸网络多级控制关系还需进一步分析和探索.本文系统可从以下2个方面作进一步优化:

1) 引入连接次数c作为保留高价值边的依据;

2) 将单次分析发现的多级控制关系以图的形式导出存储,如ip1→ip2→ip3,在后续数据分析中如果出现相同的图,如再次出现ip1→ip2→ip3,则可以判断存在长时间稳定多级控制行为,从而发现多次出现的相同事件.

此外,在本文系统的基础上,可以引入基于图的方法进一步区分节点的行为模式,划分出不同集群,即从可疑僵尸网络社区中选择出真正的僵尸网络社区,并进一步判断僵尸网络社区中每个节点所扮演的角色,包括主机、C&C服务器和受感染的机器人,使分析结果达到更高的正确率.

猜你喜欢
僵尸可视化节点
基于CiteSpace的足三里穴研究可视化分析
自然资源可视化决策系统
思维可视化
基于图连通支配集的子图匹配优化算法
自然资源可视化决策系统
笔记本电脑“僵尸”
结合概率路由的机会网络自私节点检测算法
面向复杂网络的节点相似性度量*
采用贪婪启发式的异构WSNs 部分覆盖算法*
在舌尖上筑牢抵御“僵尸肉”的防火墙