论文阅读Revisiting BinaryCodeSimilarityAnalysis using InterpretableFeatureEngineering and LessonsLearned

在这里插入图片描述

论文标题:Revisiting Binary Code Similarity Analysis using Interpretable Feature Engineering and Lessons Learned
论文链接:https://arxiv.org/abs/2011.10749

论文概述:二进制代码相似度分析一直以来都广泛应用在各种安全领域,比如抄袭检测,软件产权保护以及漏洞发现等等。但由于种种原因,很难继续在该领域进行一些新的研究。首先,已有的大多数方法只关注于最终的结果,也就是利用各种不可解释的机器学习的技术提高二进制代码相似性分析的准确度。其次,大部分研究都没有开源其数据集和源码,导致其很难复现。最后,很多作者会使用不同的术语或者使用和以往研究相似的技术却不引用,导致这些工作很难复现或者扩展。

为了解决这些问题,我们从主流研究中后退一步,思考二进制代码相似检测的基础研究问题。为什么某种技术或特性比其他的表现出更好的结果?具体地说,我们通过在大规模基准数据集上利用可解释特征工程,对二进制代码相似检测使用的基本特征进行了首次系统性研究。我们的研究揭示了关于二进制代码相似性分析(BCSA)的各种有用的见解。例如,我们展示了一个简单的具有几个基本特征的可解释模型可以获得与最近的基于深度学习的方法相当的结果。此外,我们还说明了我们编译二进制文件的方式或底层二进制分析工具(如IDA Pro)的正确性会显著影响BCSA的性能。最后,我们公开了所有的源代码和基准数据集,并提出了该领域未来的发展方向,以帮助进一步的研究。

论文数据集:https://github.com/SoftSec-KAIST/BinKit
论文模型实现:https://github.com/SoftSec-KAIST/TikNib

对传统二进制相似性检测方法的回顾:
在这里插入图片描述
传统的二进制相似检测方法流程大概可以分为两个部分:二进制分析+相似性比较
由于相似性比较的方法主要依靠于二进制分析过程的特征提取,本文主要对二进制分析的特征提取过程进行了分析。
根据特征提取的过程,可以分为语义分析前的过程和语义分析后的过程。语义分析前的过程提取的特征主要是一些未经处理的信息,包括指令,控制流图,调用流图上的特征;语义分析后的特征则是一些更为复杂的特征,这篇文章后续所提出的可解释性预测模型主要使用的是语义分析前的特征。
下图列出了已有的方法所提取的特征:
在这里插入图片描述
除了特征以外,已有的方法还使用了各种各样的数据集:
在这里插入图片描述
但是这些数据集相对来说较小且不开源,为了方便以后的二进制代码相似分析方法的研究,本文提出了一个更为完整且系统的数据集以及一个可解释模型分析各个特征在二进制相似分析过程的可用性。

数据集
这篇文章开源了一个大数据集,由6个数据集组成。所有的数据集是由GNU软件包编译而成的,包括了8个编译架构,2个编译器(9个版本),4个优化选项(以上组成了NORMAL数据集),以及在NORMAL数据集基础上的SIZEOPT(使用Os选项)和二进制相似分析领域研究较少的PIE(随机地址),NOINLINE(不内联函数),LTO(链接时优化)和OBFUSCATION(混淆)数据集。
在这里插入图片描述
下图列出了各个软件包的详细信息:
在这里插入图片描述
各种特征对于相似性检测过程的作用
在这里插入图片描述
实现的设计:作者首先构造了两个数据集,N个相似的样本对和N个不相似的样本对,对这些样本对的特征使用Jaccard系数计算其相似度,然后单元格中的数字代表了相似样本对的相似度与不相似样本对的差。
可以看到,在所有的实验中,使用这些简单的数值型的统计数据在相似度检测这方面已经有很好的AUC,但我个人认为,这种N个相似对和N个不相似对的实验集构建方法不太符合实际二进制代码检测过程中的一对多的问题,但从其结果中也可以得到很多启发。
比如,在跨架构和跨优化选项的检测过程中,优化选项对这些特征的影响甚至要大于架构对这些特征带来的影响,比如O0vs.O3的AUC只有0.90,而跨架构的AUC都在0.98以上。
论文中还有更多的一些规律介绍,这里就不一一赘述。

总结
本篇文章只对其中一部分内容进行了介绍,有兴趣的读者可以直接阅读其论文,个人感觉其论文比较好懂而且也介绍了非常多的insight,非常值得一读。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值