阅读:Predicting the Resilience of Obfuscated Code Against Symbolic Execution Attacks via Machine Le...

一、来源

1、2017,the 26th USENIX Security Symposium
2、作者:Sebastian Banescu, Technische Universität München; Christian Collberg, University of Arizona; Alexander Pretschner, Technische Universität München
3、主题:机器学习、逆向工程、混淆代码、符号执行攻击、弹性

二、摘要

1、内容
        软件混淆转换代码,使逆向工程更加困难。但是,众所周知,如果有足够的资源,攻击者将成功地对混淆程序进行逆向工程。因此,软件混淆的一个公开挑战是估计混淆程序能够承受给定的逆向工程攻击的时间。本文提出了一个通用框架,用于选择最相关的软件功能来估计自动攻击的工作量。我们的框架使用这些软件功能构建回归模型,可以预测不同软件保护转换对自动攻击的弹性。为了评估我们的方法的有效性,我们在一个案例研究中实例化它,该案例研究使用基于符号执行的攻击来预测对一组C程序进行反混淆处理所需的时间。为了训练回归模型,我们的系统需要大量的程序作为输入。 因此,我们实现了一个可以生成大量任意复杂的随机C函数的代码生成器。我们的结果表明,在符号路径约束的图形表示中,社区结构的数量等特征比用于测量控制流混淆效果的其他特征(如圈复杂度)更适合于预测反混淆时间。我们的最佳模型能够预测基于符号执行的反混淆攻击的秒数,对于我们数据集中80%的程序,其准确率超过90%,其中还包括几个实际的散列函数。

三、引言

1、内容
        如果可以进行安全密钥存储,软件开发人员通常使用加密技术保护高级功能和内容。然而,在这种情况下使用密码技术存在一些风险,即必须对代码和数据进行解密才能执行,最终用户设备可以分别使用它们。如果最终用户是恶意的,那么他们就可以访问未加密的代码或数据,例如,通过转储运行客户端软件的设备的内存。恶意最终用户被称为端到端(MATE)攻击者,其功能包括从静态分析到动态修改可执行代码和内存的所有内容(例如,调试、篡改代码和数据值,探测任何硬件数据总线等)。
        为了提高针对MATE攻击者的标准,混淆工具使用代码转换来修改原始代码,以便在保留程序功能的同时更难分析和篡改。 在文献中已经提出了可证明安全的代码混淆,但是,它仍然是不切实际的[3,6,7]。另一方面,自20世纪90年代初以来已经提出了数十种实际的混淆变换[14],然而,它们的安全保障尚不清楚。
        研究人员和实践者都在努力评估不同混淆代码转换的强度。虽然已经提出了许多方法(见第2节),但是,尽管在这一领域做了大量工作,最近一项关于常见的混淆转换和反混淆攻击的调查表明,经过二十多年的研究,我们仍然缺乏可靠的概念来评估代码混淆抵御攻击的弹性[42]。
        本文做出以下贡献:

  • 用于选择与预测软件保护抵御自动攻击的弹性相关的程序功能的通用框架。
  • 一个免费的C程序生成器,用于创建4500多个不同程序的数据集,以对我们的方法进行基准测试。
  • 一个涉及23000多个混淆程序的案例研究,我们在其中构建并测试回归模型,以预测混淆程序对符号执行攻击的弹性。
  • 一组高度相关的特性,用于预测基于符号执行的攻击效果。
  • 一种模型,可以预测几种代码混淆技术对基于符号执行的攻击的弹性,对于我们数据集中80%的程序,其准确率超过90%。
            本文的其余部分安排如下。第二节介绍了相关工作。第3节描述了框架和C程序生成器。第4节描述了案例研究。第5节提出结论和展望今后的工作。第6节中进行致谢。有关数据集和软件工具可用性的详细信息,请参见第7节。
四、相关问题

1、生成器中创建的程序数据集较为简单,在现实中并不适用。
2、为什么选择符号执行来进行检验。

你可能感兴趣的:(阅读:Predicting the Resilience of Obfuscated Code Against Symbolic Execution Attacks via Machine Le...)