软件后门
-
定义:软件后门是指软件开发人员有意设计,可以对用户隐瞒的一些功能,往往这些功能用于软件产品应用之后的一些特殊目的。
-
优点
难发现:对于目前大规模的软件产品,难以对软件漏洞进行全面的检测。 易利用:如果是有意设计的软件后门,使用者可以充分利用软件产品的权限和资源,绕过系统的各种安全防护和安全检测机制。 难取证:无法证实此后门是开发者有意为之还是在设计上的一个漏洞。
- 总结:以漏洞形式存在的后门是目前软件产品中的重要安全威胁之一。
软件安全性分析得目标
-
软件安全性评估的做法:在各种技术手段的帮助下,借助人的经验和判断进行相关分析工作。
-
需要回答的三个问题:
存在问题:即目标软件中是否存在恶意功能,是否存在漏洞或者后门。 机理问题:即确定问题存在以后,进一步分析其具体是如何实现的或者是什么原因造成的。 对策问题:即根据其相关机理分析结果,提出相应的防御对策。
即对于软件安全分析需要经过三个步骤:
①发现问题或者找出问题;
②研究问题,找出问题的相关特性;
③通过研究问题得到的结果,提出对于的解决方案。
- 软件的逆向分析存在的问题:
指令代码的理解:指令数量规模大大超出了人的理解分析能力。 关联关系的抽取。 复杂逻辑的分析。
主要方法与技术
-
按照分析方式的不同,可以将软件逆向分析分为静态和动态两大类。
-
静态分析主要是直接对软件的可执行代码进行分析,一般是在对代码反汇编或反编译的基础上,对汇编代码或其他高级语言代码进行进一步的分析。
优点:可以对软件代码进行较为全面的整体性分析。 缺点:难以分析大规模、复杂的软件代码;如果软件有加壳等保护手段,则无法反汇编或者反编译,也无法进行静态分析;
- 动态分析是通过直接运行软件,然后监测软件运行过程,实施分析。
优点:减少分析中的推理分析过程,分析过程的复杂度更低,准确性更高。 缺点:每次分析只能针对动态执行的一条路径进行,分析的全面性较差。
- 由于静态分析和动态分析都有各自的缺点,因此在实际过程中,多是将二者结合起来,共同分析问题。
反汇编与反编译
-
反汇编和反编译是软件逆向分析的第一步,即将完全不可读的二进制可执行程序转变为用户基本可读、功能等价的汇编代码或其他高级语言代码。
-
反汇编是将可执行代码转换为可读的汇编代码。
-
反汇编既可以根据可执行代码文件执行静态反汇编,也可以根据程序动态过程执行的每一条指令进行动态反汇编。
-
反编译是将机器码、汇编代码转换成高级语言的逆向过程。
程序调试
-
程序调试是指通过实际运行软件,利用断点、单步执行等方式对软件执行过程进行细粒度分析的过程。
-
程序调试技术最早主要应用于程序开发过程中的错误修正。
-
一般的应用软件调试借助于WinDbg等工具软件就可以实现。
-
对于操作系统驱动程序等内核代码则需要借助于SoftICE或者VMWare+WinDbg等调试工具
-
优点:可以避免用户对指令的复杂推理分析过程,可以直接对每条指令的执行结果进行分析。
-
缺点:
每次分析只能分析一条执行路径,全面性较差。 软件自保护技术的应用可能阻碍调试; 调试仅能提供动态的细节信息,对用户而言,分析、理解难度仍很大。