Paolo Comparetti@SecLAB & UCSB
背景
静态分析平台可以防御packing和obfuscation技术。但是在小段时间里只能执行一小部分代码。
很多恶意代码都共享代码段。
现在的方法
1、提高代码覆盖率方面
为了提高静态分析平台中的代码覆盖率,使用多路径(强制)执行,可是代价却很昂贵。
[3, 4](把conditional branch的条件取反)[5](强制执行某条路径)
2、行为模型自动抽取方面
一些签名自动抽取 byte strings [7],token sequences [8], control flow graph [9], 但是没有语义;有语义的code template[10]和malware blueprints[11],但是只对一种实例(instantiation)建模。
解决的问题
提高静态分析工具中的代码覆盖率,降低分析的成本。
本文的方法
1. Reanimator - (虽然不能发现新的恶意行为)
利用动态执行时发现的恶意行为,对恶意行为对应的二进制部分进行抽取并建模;然后利用这些模型来静态检查其他例子(已经被Unpack的了)中有没有相同但在动态执行的时候没有被检查出来的恶意行为(Dormant Functionality)。
2. 自动建模 - functionality-aware
关键的步骤
1、malware phenotype - 用语言定义specification,描述安全相关行为
[12, 13, 14]
2、与phenotype对应的代码级别的模型genotype