Tan's Blog.

软件安全分析的主要方法

字数统计: 844阅读时长: 2 min
2019/06/06 Share

主要方法与技术

软件逆向分析并不是一种单项技术,其涉及的技术和方法很多。按照分析方式的不同,可以将软件逆向分析分为静态和动态两大类。静态分析主要是直接对软件的可执行代码进行分析;而动态分析是通过直接运行软件,然后监测软件运行过程,实施分析。在实际分析过程中,主流的思路是以动态分析为主,一方面利用模糊测试等技术构造执行的不同路径,另一方面也利用静态分析手段弥补动态分析过程中的不足,优化和提升动态分析的能力。

反汇编与反编译

反汇编与反编译是软件逆向分析的第一步,将完全不可读的二进制可执行程序转变为用户基本可读、功能等价的汇编代码或其他高级语言代码。

程序调试

程序调试是通过实际运行软件,利用断点、单步执行等方式对软件执行过程进行细粒度分析的过程。一般性的应用软件调试借助于WinDbg等就可实现,对于操作系统驱动程序等内核代码的调试较为复杂,需要借助于SoftICE或者VMware+WinDbg等调试工具。
与传统的静态分析方法相比,程序调试的优点在于它可避免用户对指令的复杂推理分析过程,可以直接对每条指令的执行结果进行分析。

程序切片

程序切片通过分析程序代码之间的依赖关系来分析指令的相关性,从而帮助用户提取其所感兴趣的代码片段。

污点传播分析

污点传播分析将所感兴趣的数据做标记,然后通过分析对该污点数据的处理过程,根据每条指令的污点传播规则,分析数据的传递关系。

符号执行

符号执行的基本思想是用符号变量作为输入参数,对程序进行模拟执行,然后对程序的执行路径进行分析,并提取路径中的约束条件,通过对约束进行求解实现对程序安全性及路径可达性等分析。

模糊测试

模糊测试的基本思想是通过构造各种不同的输入参数,尽可能触发执行软件的各种路径,通过对执行结果的监测来实现相关的分析或检测目标。

应用

恶意软件分析

恶意软件的分析过程是不可能依赖源代码的,因此,对恶意软件的分析只能依赖于软件逆向分析。

网络协议逆向分析

当前网络空间中的绝大多数应用都要依赖于网络和网络协议,通过网络协议逆向分析可以提取出网络协议中数据包格式、关键字、协议状态机等信息,从而对僵尸网络设计抑制机制。

软件漏洞分析与利用

对于软件漏洞的发现方式有多种,比如模糊测试、预先筛选可疑代码等。

CATALOG
  1. 1. 主要方法与技术
    1. 1.1. 反汇编与反编译
    2. 1.2. 程序调试
    3. 1.3. 程序切片
    4. 1.4. 污点传播分析
    5. 1.5. 符号执行
    6. 1.6. 模糊测试
  2. 2. 应用
    1. 2.1. 恶意软件分析
    2. 2.2. 网络协议逆向分析
    3. 2.3. 软件漏洞分析与利用