基于动态分析的反沙箱对抗技术
摘要
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.