摘要:二进制分析技术通常用于对应用程序进行安全审核和漏洞测试。通过分析过去20年中学术界发表的数百本学术论文,采用了二元法规的相似性的相似性和比较。相似性和比较的技术挑战是什么,以及下面的研究指示。我希望本文在这方面可以为技术研究人员提供参考。
在对二进制应用程序的安全分析过程中,二进制代码相似性的比较程度是重要的技术手段之一。基于这项技术,它可以实现对极端恶意代码的跟踪。该技术的基本理论基于源代码中的属性(恶意代码,已知漏洞,脆弱性修复补丁))。即使相同的源代码编译了不同的二进制代码(CPU体系结构,OS,编译选项等。二进制中存在很大的差异),这也存在于二进制代码中(似乎是胡说八道,否则会出现汇编问题的问题和施工工具)。因此,如果在一个示例二进制文件中已知上述属性,则如果发现检测到另一个二进制代码,则认为检测到二进制代码。
我们知道,编译和生成二进制代码的有许多影响因素。相同的一组源代码可以基于不同因素生成许多不同的二进制程序。
CPU架构:X86,ARM,MIPS,PPC,RISC-V;
体系结构数字:32bits,64位;
OS:Linux,Windows,Android,Hongmeng,VXWork;
汇编选项:O0?O3;
安全汇编选项:bind_now,nx,pic,pie,pie,relro,sp,fs,ftrapv等;
根据这些选项,可以有5x2x5x4x8 = 1600组合。从此可以看出,二进制代码相似性比较技术的相似性在学术或工业界方面是一种挑战技术。但是,根据广泛的应用前景,学术界一直在不断地探索和研究新方法,而不是解决这一技术挑战的20年,还取得了某些结果。Herethere是对二进制代码相似性的粗略理解。
源代码到二进制代码生成过程
在从源代码中生成二进制汇编的过程中,有许多信息有助于理解代码的意图,例如:函数名称,可变名称,数据结构定义,可变类型定义,注释信息,注释信息等,因此对于计算机而言,此信息不是必需的,但是此信息对于了解人类的代码非常有帮助,这极大地增强了二进制代码语义理解的困难。了解二进制代码,二进制代码将被混淆,因此将存在混淆的二进制代码和编译器编译的二进制代码。
从历史记录出版的双重代码相似性的统计数据来看,有61个相似性比较方法的二进制代码。在不同研究场所发表的这些数百篇论文包括计算机安全,软件工程,编程语言和机器学习。在计算机科学领域,它主要发表在IEEEE S&P,ACM CCS,USENIX SECurity,Usenix Security,Usenix Security,Usenix Security,Usenix Security,NDSS,ACSAC,RAID,ESORICS,ASIACCS,DIMVA,ICSE,FSE,ISSTA,ASES,ASE,MSR和其他主题。
输入比较:一个-to -One(21种),一个-to -Many(30种),多匹配物(10型);
比较方法:大多数方法使用单一类型的比较:相似性(42种类型),等效(5型)和相同(2种类型);即使该方法中仅使用一种类型的比较,输入也相对差异。
粒度分析:分为输入粒径和方法粒度;8中有不同的粒径,是指令级别,基本快速,功能和相关集,执行轨迹和过程。最常见的输入粒子是函数(26),然后是整个程序(25)及其相关的基本基础块(4)。最常见的方法粒子是函数(30),然后是基本块(20);
语法相似性:代码的相似性代表语法方法,更具体地说,它们比较了指令序列。最常见的是,序列中的指令在虚拟地址空间中是连续的,并且属于同一函数。
语义相似性:语义相似性是指代码比较是否具有相似的效果,语法相似性是指代码表示的相似性。有26种计算语义相似性的方法。大多数方法都用基本块捕获语义语义,因为基本的语义语义是基本的,因为基本块是没有控制的直线代码。有三种捕获语义的方法:指令分类,输入输出对和符号公式。
结构相似性:结构相似性计算二进制代码图上的相似性。它在语法和语义相似性之间,因为图可以捕获相同代码的多个句子,并且可以通过语义信息注释。结构性相似性可以是在不同的图表上计算。COMON控制流程图CFG,ICFG控制流程图ICFG,呼叫图CG;(sub-)相同结构的图 - 大多数结构相似性方法是检查相同结构的更改。路径相似性和嵌入图片。
基于功能的相似性:计算相似性的常见方法(28)以二进制代码为矢量或一组功能表示,因此相似的二进制代码具有相似的功能向量或功能。此处最多的应用是使用机器学习来使用机器学习达到。
哈希匹配相似性:对于多维矢量数据的快速匹配,局部敏感的哈希算法LSH通常用于实现。
跨架构比较方法:对于不同CPU体系结构的两个-in -in -Made代码的相似性,通常可以通过计算语义相似性来计算语义相似性来实现。方法是通过将其转换为中间语言IR来处理它这与体系结构无关(7种类型),另一种是使用特征类似的方法(9种类型)。
分析类型:从分析类型的角度来看:静态分析,动态分析和数据流分析:
抗逆性方法:语法相似性方法通常标准化指令以最大程度地减少语法差异;33方法是使用指令进行标准化的。特别是包括操作编号删除方法,操作的归一化方法以及票据的轶事。
时间,出版,出版,技术和技术方法摘要
不同的双制代码相似性比较方法的比较方法
从上表中,我们可以看到二进制代码的相似性主要用于漏洞搜索,然后进行补丁分析和恶意代码分析。
对于上述不同的技术和方法,请评估鲁棒性,准确性评估和比较以及性能指标的三个维度。结果如下:
摘要:双制代码相似性和比较技术。随着研究的连续性,尽管学术界已经取得了一定的进步和结果,但仍有许多挑战等待克服。二进制代码比较的小片段。比较,数据相似性比较,语义关系,可伸缩性,混乱,比较方法等是连续研究的方向。
参考:“二进制代码相似性的调查”
本文分享了华为云社区的“双重代码相似代码相似性相似性相似性”的摘要研究摘要,作者:安全技术猿。