恶意软件检测 - 论文《lazy-binding control flow graph and deep learning》阅读

20200828 -

0. 引言

本篇文章介绍《Auto-detection of sophisticated malware using lazy-binding control flow graph and deep learning》的阅读过程,因为本身对CFG的内容比较感兴趣,所以在此记录。

1. 论文概要

本篇论文发表于Elsevier2018年Computers & Security,从论文名字来看是一篇利用CFG和深度学习来进行恶意软件检测的内容。
摘要(经过自己阅读后凝练):当前反病毒软件大多数还是使用基于指纹的方式,但是较为成熟的软件可以通过多态、拟态来伪装自己,现在有一种被称为DEC的方法,被恶意软件用来加壳或者调用外部代码。现在多采用基于行为的方式来针对这一问题进行检测,其中控制流程图作(CFG)作为一种捕获软件行为的代表性方式被重点研究。但是,现在又很多二进制分析软件所生成的CFG并不能非常准确的反映出DEC方法的行为。而且这种方法在生成CFG时需要耗费大量的时间。
因此该篇论文提出一种lazy-binding CFG的方法来反应DEC的行为,同时利用深度学习的方法实现图片分类。


从上述的描述来看,该篇论文并不是针对通用性的恶意软件检测,而是利用CFG的方法来检测使用了DEC方法的恶意软件。

2. 背景内容

  1. 使用模式匹配的方法,无法解决混淆的样本问题,所以学术界寄希望于一个能够捕获样本执行流程的模型;其中CFG被广泛应用。程序的CFG一个有向图,被个节点代表着原始文件的一个指令。(这里跟我的理解有点不一样,可能我直接把ida pro中生成的代码块形式的图当作CFG了,不过这里的确需要多看看其他的论文来验证一下)。
  2. 生成CFG的方法,可以采用IDA pro或者jakstab,不过这篇论文说这两种方法都不适用于混淆的方法。该篇论文使用了BE-PUM的方法,该方法在产生的CFG上,每个指令都带有相应的环境变量。

3. 关键方法

3.1 CFG的重构

如何从原始二进制文件中重构CFG是基于行为检测的第一步。针对这种DEC方法的恶意样本,因为IDA pro采用了一种绑定的手段(这个技术不是很理解,看来学习的东西很多啊),导致每个地址的指令是固定的,但是恶意样本可以在执行时对某处指令进行修改(这个可以实现吗,它能够知道自己的指令地址?还是说我没又理解透彻),这种就导致构造出来的CFG图不够准确。所以本篇论文中采用了BE-PUM的方法来重构这部分内容。

3.2 将CFG转化为图像

将CFG转化为图像的方法是先将其转化为邻接矩阵,因为每个指令都可以被视为一种状态,为了避免内存用量过大的可能性,采用MD5作为hash函数(但是这种哈希函数,是不是不如ssdeep这种LSH更好呢)。然后经过一系列的运算后得到一个图像。

3.3 CNN

该篇论文采用了yolo系统的技术,通过目标检测与识别的方法来进行检测,而并不是简单的图像识别的内容。

4. 简单总结

这篇论文并没有深入来进行阅读,只是简单了解了大致流程,可能如果是我的话,我在最后的实验就直接使用了一种CNN图形分类的方法完事了,但是它这里变成了目标检测,通过目标框的内容进行实践。
不过,具体做了什么我还没有具体来了解。论文虽然写了28页,但是后面很多页都被图片占领了。


总结下来,收获如下:
1)利用BE-PUM来构造CFG,但其实我看过一些论文,关于CFG构造的过程部分,使用的方法并不一致
2)利用CNN目标检测的方法,而不是图像检测的方法,虽然我没有去看它到底要干什么,但是我在想,这种方法是不是也能作为关键序列的识别呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值