可视化技术|从零开始学习恶意软件聚类可视化( 二 )


本文插图

打开net.png如下所示
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

最简单的可视化方法就是这么简单 , 当然还可以加上其他参数 , 使得绘出的图中添加边或节点的属性、颜色 , 线段粗细等等 。

  • 0x04
学习了可视化的方法之后 , 我们就可以来进行正式的归类工作了 。 其实只是在前面的代码的基础上进行自动的建立网络的工作 。
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

如果从二进制文件中提取处了域名 , 将调用add_node将其添加为节点 , 然后在恶意软件节点与提取出的域名之间建立边 。
这样画出来的网络就是我们的第一张图 , 图中可以体现恶意软件之间的聚类以及从中提取出的域名 。 另外 , 可以画出两种图 , 一张显示恶意软件之间的关系 , 一张用于显示域名之间的关系 。 所以需要添加以下代码
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

  • 0x05
然后我们进行测试
python test.py ../data a.dot b.dot c.dot
参数依次为恶意文件所在文件夹的路径 , 以及三张图的dot文件保存位置
运行中的过程如下
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

然后分别将dot文件解析为png格式的文件
第一张图如下所示

可视化技术|从零开始学习恶意软件聚类可视化
本文插图

部分放大的局部如下
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

蓝色椭圆为域名 , 黑色椭圆为恶意样本 。 图中将所有从中提取new.new域名的文件都连在了一起 。
B.png效果如下
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

可以很明显看到 , 将恶意样本根据共享的回连域名特征聚类在一起
【可视化技术|从零开始学习恶意软件聚类可视化】C.png如下所示
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

可以看到 , 上图体现了域名之间的关系 。
  • 0x06
除了域名之外 , 我们可以直接对可打印字符串作为特征 , 进行恶意样本之间的聚类 。
首先自然就是提取字符串的函数
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

这里为了进一步提高效率 , 可以在提取字符串之前 , 先判断文件是否为可执行文件 , 判断函数的逻辑很简单 , 就是看最开始的magic byte是否为MZ
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

  • 0x07
提取出字符串之后 , 我们怎么进行归类呢?或者换句话说 , 满足怎样的条件 , 我们在两个恶意样本之间添加一条边呢?
这里给出的方法是使用Jaccard系数 。
Jaccard系数是一种量化相似性的方法 。 其计算公式如下
可视化技术|从零开始学习恶意软件聚类可视化
本文插图

即两个集合A和B交集元素的个数在A、B并集中所占的比例
举个简单的例子:
比如A和B对于三本书的评价为A(1,1,0)和B(1,0,1) 。 PS:1代表喜欢 , 0代表不喜欢 。 可以得到J ≈ 0.3 , 这就说明两人相似度不高


推荐阅读