G.O.S.S.I.P 学术论文推荐 2021-04-16

发布于 2021-05-12 10:58 ,所属分类:论文学习资料大全

今天给大家推荐的是来自DSN 2021的论文“Hiding in the Particles”,文章将ROP与混淆技术相结合进行研究,来进行代码逻辑的保护。

Return-oriented programming (ROP)是我们再熟悉不过的代码重用技术了,通常用于攻击场景中exploit的实现。除了用于攻击,ROP也能用于防御,例如DSN 2015的Parallax(链接见文末)就采用ROP技术来实现隐式的代码完整性校验。而本文则是用ROP技术来增强代码混淆的强度,从而抵抗各种自动分析技术对程序实现细节的探索。


本文考虑的是具有丰富逆向经验、能通过静态和动态分析方式检查程序且知道程序所采用的混淆方法(不知道具体的混淆点)的攻击者。这类攻击者的目标定义为G1<Secret finding>(即程序对输入进行复杂对运算,攻击者要推出正确值)和G2<Code coverage>(尽可能覆盖所有可执行的路径)。


具体地,作者针对符号执行(SE)、动态符号执行(DSE)和污点驱动的简化(taint-driven simplification,TDE)这三种去混淆方法。作者在研究中还结合了ROPMEMU、ROPDissector这两种ROP-Aware技术,具体可以看相应参考文献了解。

作者设计并实现了图2所示的针对Linux二进制代码的重写工具。我们重点来ROP Encoder部分。其中Translation的单元是函数,一次对CFG中的一个基本块转换,把指令换成roplet序列(具体定义可以去)。在chain crafting过程中通过选取合适的gadget来减小每个基本块中的roplet。最后在materialization部分将ROP chain嵌入到二进制文件中,在数据段中为其分配空间,并用ROP chain的触发序列替换原始函数片段。

实验中,作者采用表1所示的配置,从Efficacy、Resilience和Deployability这三个维度进行评估,结果如下所示。结果显示,作者的这种ROP obfuscation确实极大地提升了反混淆攻击需要的计算资源,且实验效果比VM obfuscation效果更佳,开销也还是能够接受的。

这篇文章涉及比较多的技术细节,这里就不一一展开了,感兴趣的读者可以去阅读论文,也可以等到会议结束后去阅读开源的代码。


论文链接:https://arxiv.org/pdf/2012.06658.pdf

Github仓库:https://github.com/pietroborrello/raindrop

相关资源