二进制分析的根本目的是分析它的真正的功能。比如一个正在运行的看似正常运作的二进制程序,但是里面含有一个附加的后门?
对于下面所涉及的知识概述:
- 基本概念和二进制格式
- 分析思路
- GUN-Linux二进制分析工具链
- 反汇编
- 代码注入
- Pin构建二进制插桩的方法
- libdft构建动态污点分析
从基本的反汇编 -> 高级二进制分析
主要的特点:
- 如何插桩二进制程序
- 如何使用动态污点分析来跟踪执行过程中的使用
- 使用符号执行来自动生成漏洞利用程序
二进制分析的作用:
- 恶意软件对其自身进行混淆,并应用反分析技术来干扰分析,因此需要更复杂的二进制分析方法
- 同时也可以增强现有二进制程序的安全性:插桩,确保虚函数调用目标是合法的
- 分析方法与函数调用,再进行插桩使得原始语义保留
一个值得思考的问题:C/C++ -> 机器代码
问:如何知道编译后的程序与高级源代码是否具有相同的语义?
- 编译器错误error
- 细微的实现错误
- 二进制级别的后门
- 恶意寄生虫
在嵌入式系统中,有无数的二进制文件,由于源程序的丢失,或私有
=>无法从源码级别评估安全性。如何在二进制级别上分析和修改程序。
二进制分析 | 逆向工程 | 反汇编
- 静态分析
- 不运行:一次分析整个bin,不依赖CPU
- 动态分析
- 运行:了解进行时状态
- 遗漏一部分有趣的内容
挑战:
- 无符号信息
- 无类型信息
- 无高级抽象
- 位置相关的代码和数据
四个部分:
- 二进制格式
- 二进制分析
- ELF格式
- PE格式
- libbfd二进制和数据
- 二进制分析基础
- Linux二进制分析
- 反汇编与二进制分析基础
- 简单的ELF代码注入
- 高级二进制分析
- 自定义反汇编
- 二进制插桩
- 动态污点分析
- 基于libdft的动态污点分析
- 符号执行原理
- 使用triton实现符号执行
评论(0)
暂无评论