欢迎访问Sunbet,Sunbet是欧博Allbet的官方网站!

首页Sunbet_安全防护正文

通过感知哈希算法跟踪视觉相似图像的恶意软件活动

b9e08c31ae1faa592020-03-0522恶意软件

介绍 恶意文档中通常会带有攻击者伪造的一些常见应用程序的图像,其目的是诱使用户执行某些操作,例如禁用Microsoft Office的只读模式(受保护的视图),或是启用宏等。在执行恶意活动时,攻击者往往会重复使用或稍微修改这些图像,借以逃避通过哈希值对其活动的跟踪。本文将描述如何通过感知哈希算法跟踪及检测在涉及视觉相似的恶意文档的活动中分布的恶意软件家族,同时我们还发布了一个名为graph_similar_document_images.py的脚本来应用此技术。 常见应用程序图像 我们从2019年检测到的250个恶意文档样本中,识别出了32个不同的常见应用程序图像,如下表所示。

攻击者最常见的诱骗手段是声称文档“受保护”(13个变体),其次是声称文档与查看的软件版本不兼容(10个变体)。 加密哈希函数 哈希值常用于文件校验或签名,也是威胁情报中常见的一类指示类型。通过一定的哈希算法(典型的有MD5,SHA-1等),能将一段较长的数据映射为较短的哈希值,它的一个特点是唯一性,只要输入的数据发生了微小变化,哈希值也会跟着改变,此属性能用于创建已知恶意文件的指示符(即哈希值),但对跟踪恶意文件中携带的图像来说却不太好使,因为攻击者只要对图像做细微修改就能产生完全不同的哈希(这被称为雪崩效应),这也意味着使用从文件内容中得出的哈希值来跟踪图像的重用并不是一个可靠的解决方案。 示例– 2019年QAKBOT系列活动 2019年10月起,有攻击者展开了Qakbot威胁活动,QakBot是一种能窃取用户凭证的银行木马。图1-3显示了攻击者通过编码的方式随机生成蓝色小圆圈(红圈中所示)、进而阻止通过哈希函数进行跟踪的过程。 尽管图像之间的视觉差异很小,但由于JPEG文件的编码方式,这些改动也能极大改变文件的组成,如图5所示。

【胖猴小玩闹】智能门锁与BLE设备安全Part 1:BLE协议栈与Android BLE接口简介 1、概述 最近受疫情影响,已经在家办公了很长一段时间,正好借此机会把此前的工作进行了一番整理,并挑选出来了一部分可以公开的题材,最终形成了这个专题的文章。 在我们的计划中,这个专题有两个主线,分别是: a. BLE设备安全研究 b. 智能门锁的安全研究 其中,智能门锁是我们的主要研究目标,但由于很多智能门锁在蓝牙BLE这块的设计或多或少地有些小问题,所以我们就将一些BLE设备也单独拿出来,作为另一个线索,用以帮助专题内容的展开叙述。 这个系列,我们取名为《胖猴小玩闹》,因为在整个专题中出现的各种案例或者已经修复,或者危害程度不高,所以我们将这些无伤大雅的小打小闹统一称为“小玩闹”。 作为这个专题的第一篇文章,我们将这篇中简要叙述一下BLE协议和Android关于BLE相关的接口,这些内容比较倾向于基础知识,在专题后续的文章中有很多处都会用到这些知识点。当然,

图5 –图1和图2的字节可视化,由binvis.io生成。

感知哈希算法 我们可以通过使用可比较的感知哈希算法代替原本的算法,最简单的感知哈希算法之一是“平均哈希”(Average Hash),它产生的是一个8字节的哈希值。为了演示其工作原理,我们使用Johannes Buchner的Python库ImageHash,来计算QakBot活动中其中一幅图像的平均哈希值。
>>> from PIL import Image
>>> import imagehash
>>> a = imagehash.average_hash(Image.open('sample (1).jpg'))
>>> print(a)
0000c0d3dedc4000
要计算平均哈希,首先需要将图像的大小调整为8×8像素,然后将其转换为灰度来减少颜色的数量,之后是计算图像的平均颜色值。最后,对于每个像素的颜色值,如果高于平均值,则设置为1,如果低于平均值,则设置为0。我们可以打印出一个网格来显示其工作原理。
>>> print(a.hash)
[[False False False False False False False False]
 [False False False False False False False False]
 [ True  True False False False False False False]
 [ True  True False  True False False  True  True]
 [ True  True False  True  True  True  True False]
 [ True  True False  True  True  True False False]
 [False  True False False False False False False]
 [False False False False False False False False]]
哈希值0000c0d3dedc4000是从上到下每行的位的十六进制表示,这意味着可以使用汉明距离之类的字符串度量来计算两个哈希之间的距离,从而确定一对平均哈希的相似程度。让我们计算来自QakBot活动中另一个样本的哈希值,然后计算它们的距离。
>>> b = imagehash.average_hash(Image.open('sample (2).jpg'))
>>> print(b)
0000c0d3dedc4000
>>> a-b
0
尽管MD5值不同,但两个图像的“平均哈希值”却匹配。 通过GRAPH_SIMILAR_DOCUMENT_IMAGES.PY脚本的应用实例 我们可以使用感知哈希算法和字符串度量来识别视觉上相似的恶意文档。我们编写了一个名为graph_similar_document_images.py的脚本,将这种方法应用于社会工程图像的检测和识别中。 该脚本首先使用LibreOffice将文档转换成Office Open XML (OOXML)格式,以便可靠地提取嵌入的图像。这一步是必要的,因为大多数恶意文档都使用旧的复合文件二进制文件格式(CFBF)。该脚本提取任何嵌入图像后,会计算它们的平均哈希值,然后计算每个图像哈希之间的距离。最后,如果距离满足相似阈值(默认为87.5%),脚本将图像绘制成图像哈希相似图,如图6和图7所示。