From ca272b2f3cd5a76ed62ba6e88cb3ad9414e332b9 Mon Sep 17 00:00:00 2001 From: firmianay Date: Sat, 31 Mar 2018 21:27:09 +0800 Subject: [PATCH] update 5.4 --- CONTRIBUTION.md | 2 +- SUMMARY.md | 1 + doc/5.0_vulnerability.md | 5 +++ doc/5.4.1_soot.md | 10 +++++ doc/5.4_dataflow_analysis.md | 75 +++++++++++++++++++++++++++++++++++ doc/5_advanced.md | 1 + pic/5.4_overview.png | Bin 0 -> 45387 bytes 7 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 doc/5.4.1_soot.md create mode 100644 pic/5.4_overview.png diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md index 5a304ea..9871ae7 100644 --- a/CONTRIBUTION.md +++ b/CONTRIBUTION.md @@ -66,7 +66,7 @@ - 在开始编写某一个内容之前,请先在下面的表格里注明,以避免重复和冲突。如果是已经完成的章节,则可以直接进行修改。 - 每个章节开头需要有一个目录,增加或删除内容时需要做相应的修改,GitHub 独特的页面跳转写法是:大写换小写,空格换“-”,然后删掉除下划线以外的其他字符。 - [中文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines)。 -- 可能用到的几个网站:[Graphviz](https://www.graphviz.org/),[asciiflow](http://asciiflow.com/),[asciinema](https://asciinema.org/)。 +- 可能用到的几个网站:[Graphviz](https://www.graphviz.org/),[asciiflow](http://asciiflow.com/),[asciinema](https://asciinema.org/),[ProcessOn](https://www.processon.com)。 - 如果你新添加一个章节,需要在 **SUMMARY.md** 和章节所属部分相应的文件中添加条目。 - 新增第六章题解篇,收集各种好题的 Writeup,应力求详细,且能提供程序供实际操作,一个 md 只写一题,所有文件上传到目录 `src/writeup`,题目最好来自 [CTFs](https://github.com/ctfs)。 - 新增第七章实战篇,CTF 之后,总是要回到现实中,对真实存在的漏洞进行分析利用,还是一样力求详细,并提供程序复现,一个 md 写一个漏洞,所有文件上传到 `src/exploit`(程序太大的可附上网盘链接),参考 [exploit-db](https://www.exploit-db.com/)。 diff --git a/SUMMARY.md b/SUMMARY.md index a15e417..d0c6e7f 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -104,6 +104,7 @@ GitHub 地址:https://github.com/firmianay/CTF-All-In-One * [5.3.3 KLEE](doc/5.3.3_klee.md) * [5.3.4 S²E](doc/5.3.4_s2e.md) * [5.4 数据流分析](doc/5.4_dataflow_analysis.md) + * [5.4.1 Soot](doc/5.4.1_soot.md) * [5.5 污点分析](doc/5.5_taint_analysis.md) * [5.5.1 动态污点分析](doc/5.5.1_dyn_taint_analysis.md) * [5.6 LLVM](doc/5.6_llvm.md) diff --git a/doc/5.0_vulnerability.md b/doc/5.0_vulnerability.md index 4dbda3c..5a5afa7 100644 --- a/doc/5.0_vulnerability.md +++ b/doc/5.0_vulnerability.md @@ -5,6 +5,7 @@ - [源代码漏洞分析](#源代码漏洞分析) - [二进制漏洞分析](#二进制漏洞分析) - [运行系统漏洞分析](#运行系统漏洞分析) +- [参考资料](#参考资料) ## 软件漏洞分析的定义 @@ -59,3 +60,7 @@ | 授权认证测试 | 认证测试通过了解运行系统的授权、认证工作流程来尝试规避运行系统的授权、认证机制 | 检测运行系统中授权、认证机制中潜在的漏洞 | 分析结果较为准确 | 该类技术需要深入了解运行系统的授权认证工作,需要较多的人工参与分析工作 | Nessus, WebScarab | | 数据验证测试 | 数据验证测试目的在于发现由于运行系统没有正确验证来自客户端或外界的数据而产生的安全漏洞。该类技术主要通过构造特定的输入以检测是否可以触发运行系统的某些特定类型安全漏洞 | 检测运行系统中授权、认证机制中潜在的漏洞 | 技术比较成熟,可用工具较多,操作简单 | 分析结果误报率比较高 | MVS, AppScan | | 数据安全性验证 | 数据安全性验证旨在发现威胁运行系统内部数据自身安全性的漏洞 | 检测运行系统中在存储和传输数据时潜在的漏洞 | 技术比较成熟,可用工具较多,操作简单 | 分析结果误报率比较高 | WireShark | + + +## 参考资料 +- 《软件漏洞分析技术》 diff --git a/doc/5.4.1_soot.md b/doc/5.4.1_soot.md new file mode 100644 index 0000000..d63c0aa --- /dev/null +++ b/doc/5.4.1_soot.md @@ -0,0 +1,10 @@ +# 5.4.1 Soot + +- [参考资料](#参考资料) + + +## 参考资料 +- https://github.com/Sable/soot/ +- [A Survivor's Guide to Java Program Analysis with Soot](http://www.brics.dk/SootGuide/) +- [Analyzing Java Programs with Soot](http://www.iro.umontreal.ca/~dufour/cours/ift6315/docs/soot-tutorial.pdf) +- [The Soot framework for Java program analysis: a retrospective](http://sable.github.io/soot/resources/lblh11soot.pdf) diff --git a/doc/5.4_dataflow_analysis.md b/doc/5.4_dataflow_analysis.md index d587caf..4dd6f93 100644 --- a/doc/5.4_dataflow_analysis.md +++ b/doc/5.4_dataflow_analysis.md @@ -1 +1,76 @@ # 5.4 数据流分析 + +- [基本原理](#基本原理) +- [方法实现](#方法实现) + + +## 基本原理 +数据流分析是一种用来获取相关数据沿着程序执行路径流动的信息分析技术。分析对象是程序执行路径上的数据流动或可能的取值。 + +#### 数据流分析的分类 +根据对程序路径的分析精度分类: +- 流不敏感分析(flow insensitive):不考虑语句的先后顺序,按照程序语句的物理位置从上往下顺序分析每一语句,忽略程序中存在的分支 +- 流敏感分析(flow sensitive):考虑程序语句可能的执行顺序,通常需要利用程序的控制流图(CFG) +- 路径敏感分析(path sensitive):不仅考虑语句的先后顺序,还对程序执行路径条件加以判断,以确定分析使用的语句序列是否对应着一条可实际运行的程序执行路径 + +根据分析程序路径的深度分类: +- 过程内分析(intraprocedure analysis):只针对程序中函数内的代码 +- 过程间分析(inter-procedure analysis):考虑函数之间的数据流,即需要跟踪分析目标数据在函数之间的传递过程 + - 上下文不敏感分析(context-insensitive):将每个调用或返回看做一个 “goto” 操作,忽略调用位置和函数参数取值等函数调用的相关信息 + - 上下文敏感分析(context-sensitive):对不同调用位置调用的同一函数加以区分 + +#### 检测程序漏洞 +由于一些程序漏洞的特征恰好可以表现为特定程序变量在特定的程序点上的性质、状态或取值不满足程序安全的规定,因此数据流分析可以直接用于检测这些漏洞。 + +例如指针变量二次释放的问题: +```c +free(p); +[...] +free(p); +``` +使用数据流分析跟踪指针变量的状态,当指针 p 被释放时,记录指针变量 p 的状态为已释放,当再次遇到对 p 的释放操作时,对 p 的状态进行检查。 + +有时还要考虑变量的别名问题,例如下面这样: +```c +p = q; +free(q); +[...] +*p = 1; +``` +这时就需要建立别名关系信息来辅助分析。 + +再看一个数组越界的问题: +```c +a[i] = 1; +``` +使用数据流分析方法一方面记录数组 a 的长度,另一方面分析变量 i 的取值,并进行比较,以判断数据的访问是否越界。 + +```c +strcpy(x, y); +``` +记录下变量 x 被分配空间的大小和变量 y 的长度,如果前者小于后者,则判断存在缓冲区溢出。 + +总的来说,基于数据流的源代码漏洞分析的原理如下图所示: + +![](../pic/5.4_overview.png) + +- 代码建模 + - 该过程通过一系列的程序分析技术获得程序代码模型。首先通过词法分析生成词素的序列,然后通过语法分析将词素组合成抽象语法树。如果需要三地址码,则利用中间代码生成过程解析抽象语法树生成三地址码。如果采用流敏感或路径敏感的方式,则可以通过分析抽象语法树得到程序的控制流图。构造控制流图的过程是过程内的控制流分析过程。控制流还包含分析各个过程之间的调用关系的部分。通过分析过程之间的调用关系,还可以构造程序的调用图。另外,该过程还需要一些辅助支持技术,例如变量的别名分析,Java 反射机制分析,C/C++ 的函数指针或虚函数调用分析等。 +- 程序代码模型 + - 漏洞分析系统通常使用树型结构的抽象语法树或者线性的三地址码来描述程序代码的语义。控制流图描述了过程内程序的控制流路径,较为精确的数据流分析通常利用控制流图分析程序执行路径上的某些行为。调用图描述了过程之间的调用关系,是过程间分析需要用到的程序结构。 +- 漏洞分析规则 + - 漏洞分析规则是检测程序漏洞的依据。对于分析变量状态的规则,可以使用状态自动机来描述。对于需要分析变量取值的情况,则需要指出应该怎样记录变量的取值,以及在怎样的情况下对变量的取值进行何种的检测。 +- 静态漏洞分析 + - 数据流分析可以看做一个根据检测规则在程序的可执行路径上跟踪变量的状态或者变量取值的过程。在该过程中,如果待分析的程序语句是函数调用语句,则需要利用调用图进行过程间的分析,以分析被调用函数的内部代码。另外,数据流分析还可以作为辅助技术,用于完善程序调用图和分析变量别名等。 +- 处理分析结果 + - 对检测出的漏洞进行危害程度分类等。 + + +## 方法实现 +#### 程序代码模型 + +#### 代码建模 + +#### 漏洞分析规则 + +#### 静态漏洞分析 diff --git a/doc/5_advanced.md b/doc/5_advanced.md index e91af57..a345e51 100644 --- a/doc/5_advanced.md +++ b/doc/5_advanced.md @@ -14,6 +14,7 @@ - [5.3.3 KLEE](5.3.3_klee.md) - [5.3.4 S²E](5.3.4_s2e.md) - [5.4 数据流分析](5.4_dataflow_analysis.md) + - [5.4.1 Soot](5.4.1_soot.md) - [5.5 污点分析](5.5_taint_analysis.md) - [5.5.1 动态污点分析](doc/5.5.1_dyn_taint_analysis.md) - [5.6 LLVM](5.6_llvm.md) diff --git a/pic/5.4_overview.png b/pic/5.4_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..2d3d90a07f0be1fc93c364cebcf40a238e5292e6 GIT binary patch literal 45387 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