其他分享
首页 > 其他分享> > 利用AI+大数据的方式分析恶意样本(三十)

利用AI+大数据的方式分析恶意样本(三十)

作者:互联网

文章目录

DeepReflect: Discovering Malicious Functionality through Binary Reconstruction

佐治亚理工学院

开源:https://github.com/evandowning/deepreflect

abstract

Deep learning has continued to show promising results for malware classification. However, to identify key malicious behaviors, malware analysts are still tasked with reverse engineering unknown malware binaries using static analysis tools, which can take hours.

Although machine learning can be used to help identify important parts of a binary, supervised approaches are impractical due to the expense of acquiring a sufficiently large labeled dataset.

To increase the productivity of static reverse engineering, we propose xxx: a tool for localizing and identifying malware components within a malicious binary.

To localize malware components, we use an unsupervised deep neural network in a novel way, and classify the components through a semi-supervised cluster analysis, where analysts incrementally provide labels during their daily work flow.

The tool is practical since it requires no data labeling to train the localization model, and minimal/noninvasive labeling to train the classifier incrementally.

In our evaluaton with five malware analysts on over 26k malware samples, we found that xxx reduces the number of functions that an analyst needs to reverse engineer by 85% on average.

Our approach also detects 80% of the malware components compared to 43% when using a signature-based tool(CAPA). Furthermore, xxx performs better with our proposed autoencoder than SHAP. This is significant because SHAP, a state-of-the-art method, requires a labeled dataset and autoencoders do not.

introduction

xxx能做以下五个事情:

  1. 识别恶意软件中的恶意活动
  2. 聚类相关的恶意软件组件
  3. 将分析师的注意力集中在重要事情上
  4. 揭示对不同恶意软件之间共享行为的见解家族
  5. 处理涉及混淆的对抗性攻击

一般来讲现实中恶意软件分析师的工作流程:

  1. 首先询问VT及其他组织,以确定是否见过这个特定样本,然而并没有
  2. 在自定义沙箱中执行样本以了解动态行为,然而没有显示恶意行为或拒绝执行
  3. 尝试脱壳和静态逆向工程,以了解其潜在行为
  4. 在IDA或BinaryNinja中打开脱壳的样本后,被数千个函数淹没,尝试运行各种静态签名检测工具识别特定恶意组件,无济于事
  5. 逐个查看函数,通过API调用和字符串过滤以尝试了解行为

xxx通过控制流图CFG和API调用的组合来识别这些具有相同行为的函数

样本通过该工具脱壳:
https://github.com/unipacker/unipacker

两个步骤:

首先作者定义的恶意行为的含义,We generate our ground-truth based on identifying core components of our malware’s source code.使用恶意软件核心组件的源代码生成ground-truth,例如C&C,拒绝服务,垃圾邮件,键盘记录,远程服务等。这些都可以通过MITRE ATT&CK框架轻松描述,旨在标准化术语和行为描述。

但是存在一种情况,通常能观察到在野恶意软件存在低级函数无法归因为高级描述,例如恶意软件可能会出于很多种不同的原因修改注册表项,但确定为什么修改会变得很困难,只能进行粗略标记。

An ensemble of autoencoders for online network intrusion detection. 2018 NDSS

A unified approach to interpreting model predictions. 2017

为了在二进制样本中定位恶意行为,特征必须一对一的映射回原样本,因此作者将每个二进制文件表示为一个m*c的矩阵,该矩阵使用c个特征来捕获前m个基本块以总结活动。c特征使用ACFG属性控制流图。选择ACFG特征是假设二进制在多个平台和编译器中保持一致

将m设置为20k个基本块,是因为95&的数据集样本具有20k或者更少的基本块,将c设置为18个特征:

自动编码器使用U-Net模型,U-Net的优点是其在编码器和解码器之间有跳过连接,样本可以使用它跳过某些特征的压缩以在x’中保持更高的保真度。

Convolutional networks for biomedical image segmentation

AE的目的是最小化重建损失,损失是输入和输出之间的公共L2损失。一旦经过训练,任何超过LMSE的ROI都会被突出显示,后续进行聚类。

使用PCA降维18到5,然后使用HDBSCAN算法聚类,HDBSCAN可以识别非凸集群与kmeans不同,并且可以自动选择集群密度的最佳超参数,与DBSCAN不同

https://github.com/scikit-learn-contrib/hdbscan

evolution

白样本收集地址:
https://download.cnet.com/windows/

UniPacker脱壳后又进一步过滤了没有没有有效起始地址且导入表大小为0的Pe的文件,使用sha256进行重复数据删除,仅接受小于3个引擎报毒的正常样本。

BinaryNinja进行反汇编提取特征,并根据基本块地址对每个特征向量排序。

对比工具:

对比结果:横线为80%的TPR

生成了22469个簇,最大的簇包含6321个函数,最小的簇包含5个。又59340个噪声点,

描述聚类质量存在问题,相同功能的却被聚在不同簇中,分析了3个case,主要是因为小地方存在差异,聚类算法过于敏感。

False positives exist in all security solutions.误报会出现在所有安全产品中。

作者又讨论了三个假阴性的案例,在恶意软件中很常用的CaptureVideo函数对受害者计算机进行增量截图,这些调用被混淆了;getcdkeys函数从受害者主机收集视频游戏安装密钥并将其发送到攻击者的C&C服务器,良性样本中也出现这种情况;DDOSAttack函数,可能是被遗漏,使用guilt by association启发式方法。

使用LLVM进行混淆,继续测试性能。

Obfuscator-LLVM – Software Protection for the Masses.

suggestion

这篇文章整体读下来,工作量很大,内容很详实。

标签:malware,函数,AI,恶意软件,样本,恶意,基本块,https
来源: https://blog.csdn.net/AcSuccess/article/details/118890121