简单的活着

毕业论文

Posted on By Mista Cai

基于动态分析的反沙箱对抗技术

摘要

ABSTRACT

1 绪论

1.1 课题意义与背景

1.2 国内外研究现状

1.3 论文研究内容

1.4 论文组织结构

2 基于动态分析的反沙箱对抗技术设计

本章首先对基于动态分析的反沙箱对抗的相关技术进行介绍,随后阐述该技术的设计目标和和核心方法。最后,详细介绍该技术的系统架构和各个系统功能模块。

2.1 INTEL PT

英特尔新推出的第六代处理器系列(以前称为Skylake)具有称为PT的新硬件功能,可用于有效收集运行时分支信息。

乍一看,它类似于现有技术,如最后分支记录(LBR)和分支跟踪消息(BTM)。但是,就可以记录的跟踪信息的类型和数量而言,PT更快,更灵活。虽然LBR也很快,但它只允许存储有关最新(最多)32个分支的信息。因此,当涉及到跨越多个函数的广泛控制流的重建时,其适用性受到限制。另一方面,BTM对可记录的分支数量没有实际限制,但这是以对整个系统产生巨大性能影响为代价的。

PT对分支存储没有大小限制并且快速记录消除。

  • 它不是将所有数据写入虚拟内存,而是直接在物理内存中记录跟踪信息。这可以保持缓存清洁并避免TLB污染。
  • 另外,使用基于Packet的输出方案,大大减少了所需的存储器带宽。
  • 不是为每个采用的分支存储完整的源地址和目的地地址,而是仅捕获完全重建控制流所必需的最小所需信息。
  • 虽然这需要额外的解码器和分解能力来解释记录的数据,但这使得该方法在性能和存储器消耗方面非常有效。
  • 英特尔提供了库libipt,其中包含使用该技术的参考解码器实现。

一旦启用跟踪,处理器就会记录当前指令指针和处理器模式(16,32,64位模式),以通知解码器有关起始点的信息。之后,只有在解码器重建实际控制流时需要才会记录其他跟踪信息:

  • 如果遇到条件分支,则会记录一个位,指示是否采用了分支,
  • 在间接分支的情况下,存储完整的目标地址,
  • 在中断或异常的情况下,存储源和目标地址,
  • 如果切换处理器模式,则再次记录当前指令指针以及有关新处理器模式的信息。

除了这些数据,PT可以以不同的方式配置,以记录更多的数据,如有关代码执行的性能信息。但是,就我们的目的而言,这还不相关。我们可以参考英特尔文档以获取更多信息。

通过基于CR3的当前值,特权级别或当前存储区域进行过滤来进一步减少收集的数据量,甚至可以降低已经很小的性能影响。还必须通过设置物理地址表来指定CPU应如何以及在何处存储记录的分支数据。每个表条目定义相应输出存储区的位置和大小。每个表中的最后一个条目指定下一个表的位置。只要表中定义的所有区域都已填满,处理器就会自动切换到下一个表。由于表可以指向自身,因此也可以使用圆形输出区域。

2.2 HV-based monitor

2.3 符号执行

2.4 系统设计目标

目前的问题和挑战。

路径探索技术通过探索多条路径,增加覆盖率,解决沙箱逃逸。但是目前相关技术是污点追踪,符号执行等重量级技术,影响了动态分析的有效性。

2.4 系统核心方法

优势,如何解决挑战。

2.5 系统架构

2.6 系统功能模块

2.7 小结

3 基于动态分析的反沙箱对抗技术实现

3.1 PT虚拟化

3.2 nitro

libvmi python,不用dump,直接读取

3.3 符号执行

3.4 小结

4 基于动态分析的反沙箱对抗技术测试与分析

4.1 测试环境

4.2 参考sp07

5 总结及展望

致谢

参考文献

[1] Jon Oberheide and Charlie Miller. 2012. Dissecting The Android Bouncer. (2012). Talk at SummerCon 2012, Brooklyn, New York.