全系统污点分析需要完成以下几点:
1. 标记某个来自I/O device的数据为污点
2. 可以监视全系统的执行,知道哪一块代码在传播了污点数据。要实现这一点,需要基于qemu.
Qemu的动态翻译系统,把目标的CPU指令翻译成host的CPU指令,翻译好的指令会被存储在一个cache中,以提高效率。
目前,QEMU有两种模式:emulated mode (禁用KQEMU)和virtualized mode (启用KQEMU)
我们对qemu做了修改,使得它在运行时可以在两种模式之间切换:当需要执行分析指令时,跑emulated mode,否则跑virtualized mode.

1. Shadow Memory

我们使用一个影子内存来映射内存的每个字节和cpu寄存器的状态。
每个被taint的字节,都关联一个数据结构,这个数据结构存储它的taint source和一些其他备用信息。
影子内存以一个类似page-table的结构存储,这使得在实际应用中,影子内存并不需要占用太大空间。

2. Taint Sources

在当前的设计和实现中,我们把键盘、网卡和硬盘的数据作为污点。污点源的粒度也可以更细一点,比如我们可以选择一个函数的输出、内核的某个数据结构。
选择键盘作为污点源很简单,只需要监测虚拟键盘就行,我们可以检测到keylogger的存在。
选择网络作为污点源有些麻烦,对于ICMP/TCP/UDP要有不同的策略。
选择硬盘作为污点源,我们可以以sector为单位。

3. Taint Propagation

污点源确定之后,我们需要跟踪每条操作污点的指令,进一步确认指令产生的结果是否被污染了。
在QEMU中,目标CPU的指令被分为一些微操作,这些微操作分为3类:数据转移操作、算数操作、什么都不做的操作。
我们对数据转移操作和算术操作进行instrument.
对数数据转移操作来说,只有源点被污染,目标点才会被污染。
对于算数操作来说,任何一个操作数被污染,操作结果就被污染。

3.1 Constant function

有些指令总是产生相同的结果,比如“xor eax eax”.
这种类型的指令,如果输入是tainted,输出就不是tainted.

3.2 Table lookup

有时候一个tainted的值被用来当做一个非tainted的内存区域的指针。
考虑到这种情形,我们制定规则如下:
如果内存的index是tainted,结果也是tainted.

3.3 Propagating to I/O devices

taints有时候回传播到磁盘或者网卡上。
传播到磁盘上,可能会导致一个tainted page被交换,或写入到文件。
我们通过一个数据结构,保存tainted data的文件位置,如果这些数据重新被读入内存,内存的相应数据被标记为tainted。
当产生taint graph时,我们只对被写入文件的tainted data感兴趣,但是由于某些内存数据作为虚拟内存也会经常被写入文件,我们需要能够区分这两种情况。

4. Code Origin Resolution

4.1 Resolving process and module information.

我们观察到某条指令访问了某个数据。进一步我们需要知道这条指令是哪个进程的。
为此我们需要在内存地址和操作系统模块信息之间建立一个映射。我们通过一个内核模块收集和更新内存地址和操作系统模块信息之间的映射。当一个进程创建或删除时,会调用内核模块的回调函数,当一个进程的模块载入时,也会调用内核模块的回调函数。

4.2 Resolving filesystem and network information.

当tainted data被写入硬盘或网络时,我们希望知道它被写入到了那个文件,我们需要建立硬盘block和文件路径的映射。
当tainted data被发送到网络时,我们希望知道它是通过那个连接发送的,我们只需要检查下报文的头部信息就可以知道了。

全系统动态污点分析-概要相关推荐

  1. android全系统动态二进制分析--CopperDroid

    1. 简介 CopperDroid通过直接监测System call,不但可以判断操作系统的一些动作(比如进程创建.文件创建),还可以判断进程内部的动作(比如短信发送,这种行为和android的对象有 ...

  2. 动态污点分析——用于商用软件漏洞的自动检测分析和签名生成【论文概述】

    技术概览:动态污点分析技术是旨在通过对运行时间内重写二进制代码的表现进行分析,从而检测和过滤攻击行为并以此提高系统安全性.通过试验表明,动态污点分析技术能够检测出绝大多数的软件漏洞,如果使用混合检测器 ...

  3. 动态污点分析隐式流--动静结合的解决方法

    隐式流 我们知道,对于动态污点分析来说,检测所有的信息流动是不可能的.因为污点只沿着实际执行的路径流动,特别地,动态污点分析会漏报一些implicit flows(控制流). 关于隐式流,参考之前的文 ...

  4. 动态污点分析——隐式流造成的漏报和误报

    污点分析面临 2 个问题:污染过度(overtainting)和污染缺失(undertainting). 其中,污染过度是将一个与污点输入无依赖关系的数据变量标记为污点属性,即产生误报. 而污染缺失则 ...

  5. 打造一个实际的全系统污点分析系统--Towards Practical Taint Tracking

    全系统动态污点分析的难点 典型的全系统污点分析都是基于QEMU(一个硬件仿真器)实现的.然而硬件仿真是很慢的,为了提升性能,现在的实现一般都只对和tagged data交互的代码使用仿真,这种方法可以 ...

  6. MATLAB自动控制:分析系统动态特性(超调量,上升时间,峰值时间,调整时间)和静态特性(稳态误差)

    之前看到过一篇介绍已知传递函数分析系统动态特性和静态特性的博客,但那个代码只能分析标准形式的传递函数,最终响应值为1,然而,如果传递函数化为标准形式之后分子上还有常系数,则其最终响应值不为1,用原代码 ...

  7. 网络安全通识全解|第17期 了解污点分析

    随着互联网+.云计算.移动智能终端等技术的发展, 软件系统对信息安全的需求越来越高,信息流分析可以有效保证计算机系统中信息的保密性和完整性. 污点分析是常见的信息流分析手段,是分析代码漏洞.检测攻击方 ...

  8. 系统级性能分析工具perf的介绍与使用

    测试环境:Ubuntu16.04 + Kernel:4.4.0-31 apt-get install linux-source cd /usr/src/tools/perf make &&am ...

  9. linux 解析pdf下载工具,Linux高级系统级性能分析工具-perf.pdf

    Linux高级系统级性能分析工具-perf Linux 的系统级性能剖析工具‐perf (二) 承刚 TAOBAO  Kernel Team chenggang.qin@ 第三章  Perf top ...

最新文章

  1. 初三女生学计算机专业,江西中专初三毕业学计算机专业适宜女生吗
  2. const、static、内部链接属性和外部链接属性整理
  3. bzoj1212: [HNOI2004]L语言
  4. Java 编程的动态性,第3部分: 应用反射--转载
  5. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): dao.UserDao.selectU
  6. opencv python教程简书_Python-OpenCV —— 基本操作一网打尽
  7. Android特效 五种Toast详解
  8. 关于网页js判断“客户端设备类型是移动端还是PC端“的解决方法?
  9. 探探经营范围变更:新增演出经纪和电信业务
  10. 如何将多个word文档的内容合并到一个文档 多html转word
  11. 12. 切勿对STL容器的线程安全性有不切实际的依赖
  12. python打包不能在其他电脑打开_pyinstaller打包python+opencv 无法在别人电脑上正常运行 问题所在:opencv_ffmpeg341_64.dll...
  13. PHP文件运行步骤及数据库的连接
  14. Android逆向实战篇(Luac文件解密)
  15. getParameterValues
  16. win10系统进行电脑分盘
  17. excel切片器_如何快速做出酷炫的Excel动态图表?
  18. 微信小程序闭环处理 App -- 小程序 -- 企业微信 + 公众号
  19. Spring Boot项目@RunWith注解报错
  20. try/catch 的解释与用法

热门文章

  1. python解不定积分_python快速求解不定积分和定积分
  2. 如何用PPT来实现三维3D效果,附参数设置详解
  3. 串口接收数据转换成double型
  4. C# break ,continue, return
  5. 快速幂(一个简单快速适合整数幂次的运算)
  6. (七)Netty与零拷贝
  7. python对比柱状图_python 绘制分组对比柱状图
  8. 企业千人千面管理模式_金山云助力新零售:如何让零售企业实现“千人千面”...
  9. 推荐系统学习(四)推荐系统学习资料(补充中...)
  10. pandas判断dataframe中一列是否为日期格式