第三章:利用恶意软件网络识别攻击活动


前言

  恶意软件网络分析可以将恶意软件数据集转化为有价值的威胁情报,揭示对抗性攻击活动、常见的恶意软件手段和恶意软件样本来源。包括分析恶意软件样本组通过共同属性相互关联的方式,无论这些共享属性是内嵌的IP地址、主机名、可打印字符串、图形或类似的信息。可以使用这些连接来帮助区分哪些是对你的组织发起的协同攻击,哪些是由不同犯罪动机的攻击者发起的攻击。


------《基于数据科学的恶意软件分析》

1.与从恶意软件里提取威胁情报相关的网络分析理论

  网络是连接对象(称为节点)的集合。节点之间的链接称为边,节点和边之间的互连结构,可以揭示恶意软件的详细信息。当使用网络来分析恶意软件时,可以将每个单独的恶意软件定义为节点,将刚兴趣的关系(如共享代码或网络行为)定义为边。相似的恶意软件文件共享边,因此当我们应用力导向网络时,它们就会聚集在一起。或者,将恶意软件样本和属性都视为节点。例如回连IP地址有节点,恶意软件样本也有节点。每当恶意软件样本回连到特定IP地址时,它们都会连接到该IP地址节点。
  恶意软件网络可能比一组简单的节点和边更复杂。具体地说,可以将属性附加到节点或边,例如两个相互连接的样本所共享代码的百分比。边的一个常见属性是权重,权重越大表示样本之间的关联性越强。节点可能有自己的属性,比如它们所代表的恶意软件样本的文件大小,但这些仅被称为属性。
  二分网络是一个所有节点可以划分为两个分区(组)的网络,其中任何一个部分都不包括内部连接。这种类型的网络可以用来展示恶意软件样本之间的属性。如图为一个二分网络的例子,其中恶意软件位于底层分区,而样本“回连”到的域名(为了与攻击者通信)位于另一个分区。回连域名永远不会直接连接到其他回连域名,恶意软件样本也永远不会直接连接到其他恶意软件样本,这就是一个二分网络的特点。即使是这样一个简单的可视化示意图也显现了一则重要的情报:基于恶意软件样本共享的回连服务器,可以猜测样本_014和样本_37D可能是同一攻击者部署。
在这里插入图片描述
  随着网络中节点和连接的数量越来越多,我们可能就只想知道恶意软件样本之间是如何关联的,而并不想清楚地知道所有属性之间的关系。我们可以创建一个二分网络投影来检查恶意软件样本的相似性,这是二分网络的更简单的版本,如果部分节点在一个分区(属性分区)中有共同的连接节点,我们就在另一个分区将这部分节点连接起来。

2.使用可视化来识别恶意软件样本之间关系的方法

  当使用网络分析方法来对恶意软件的共享属性进行分析时,会发现将严重依赖网络可视化软件来创建于目前所示类似的网络。那么如何从算法的角度来实现这些网络的可视化。最重要的是,进行网络可视化的主要挑战是网络布局,决定是在二维还是三维坐标空间中呈现网络中每个节点的过程,这取决你的可视化效果是二维还是三维的。当你在网络中放置节点时,理想的方法是将它们放置在一个坐标空间中,这样它们彼此之间的可视距离就与它们在网络中的最短路径距离是成正比的。也就是说彼此两跳的节点之间可能相距两英寸,而相距三跳的节点之间可能相距约三英寸。这么做使得我们将相似节点簇的可视化效果与它们的实际关系进行精确对应。然而,这样的可视化效果通常是难以实现的,尤其是处理三个以上节点的情况。
  事实证明,通常情况下,不可能完美地解决这个网络布局问题。不幸的是,我们只能最小化而不能消除失真,这也是使得失真最小化成为网络可视化算法的主要目标之一。为了尽可能地最小化布局失真,计算机科学家经常使用力导向布局算法。力导向算法是对弹簧力和磁力的物理模拟。将网络中的边模拟为物理弹簧,往往可以得到较好的节点定为,因为这是通过模拟弹簧的推和拉来试图实现节点和边之间的均匀长度。当你压缩或者拉伸弹簧时,它会试图恢复到平衡状态时的长度。这些性质与我们想要达到的网络中所有边长度相等的效果密切相关。

3.使用Python和各种开源工具包从恶意软件中创建、可视化和提取情报来进行数据分析和可视化

  使用开源Python网络分析库NetworkX和开源网络可视化工具包GraphViz创建恶意软件关系网络。

4.共享代码分析

  假设你在网络上发现了一个新的恶意软件样本,你将如何分析它?你可以将样本提交给多引擎反病毒扫描器(如VirusTotal),以了解它属于哪个恶意软件家族。然而,这样的结果往往是不清楚或者是模糊的,因为搜索引擎经常用“agent”之类的通用术语来标记恶意软件,而这些术语毫无意义。你可以通过在CuckooBox或其他的恶意软件沙箱中运行该样本,获得一份关于恶意软件样本回连服务器和其他行为的内容有限的检测报告。当这些方法不能提供足够的信息时,可能需要通过逆向工程对样本进行分析。在此阶段,共享代码分析可以极大地改善你的工作流程。通过揭示与新的恶意软件样本较为相似的之前分析过的老样本,从而揭示它们共享的代码,共享代码分析允许你复用以前的分析结果对新的恶意软件进行分析,这样就不同从头分析。了解此前看到的恶意软件的来源信息,也可能帮助找出可能部署恶意软件的人。
  共享代码分析,也称为相似性分析, 通过估计它们共享的预编译源代码的百分比来比较两个恶意软件样本的过程。它不同于共享属性分析,共享属性分析是根据恶意软件的外部属性(例如,它们所使用的桌面图标,或者回连的服务器)来比较恶意软件样本。在逆向工程中,共享代码有助于识别可以一起分析的样本(因为它们来自相同的恶意软件工具包,或者是相同恶意软件家族的不同版本),这可以确定是否为相同的开发人员部署的一组恶意软件样本。从可视化中可以看到,自动化共享代码分析技术可以快速发现恶意软件家族的存在,这些家族通过手工分析可能需要几天或几周的时候才能发现。

5.构建相似图

  首先,通过提取我们想要使用的特征来估计样本共享的代码量。这些可以是前面描述的任何特征,例如基于导入地址表的函数、字符串、N-gram指令或者是N-gram动态行为。这里,以可打印字符串为例子,因为它们的执行效果好,并且易于提取和理解。一旦我们提取字符串特征,我们需要遍历每一对恶意软件样本,使用Jaccard系数来比较它们的特征。然后需要构建一个代码共享图。为此,需要确定一个阈值,该阈值定义了两个样本共享代码的比例-这里取得是0.8,如果给定的一对恶意软件样本的Jaccard系数值比这种值要大,将在它们之间创建一个连接进行可视化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值