David Brumley et al.@CMU
背景
程序中一些隐藏的行为只有正确出发时才能被激活。
某个特定的日子
某个特定的网站
某个特定的命令
(时间,系统时间,网络输入)
bot就有很多隐藏的行为,之前的工作[4]针对的就是bot。
[4] Automatically dissecting malicious binaries
现在的方法
手动查找,繁琐
解决的问题
自动检测并分析这些trigger-based behavior。
具体目标(在一个可控的环境中):
1、发现行为的存在
2、找到触发行为的条件
3、找到满足这个条件的输入
方法
Dynamic binary instrumentation and mixed concrete and symbolic execution
使用到的技术如下:
Formal verification
symbolic execution
binary analysis
whole system emulation
dynamic instrumentation
定义trigger-type,这样就知道那些是trigger-input(从trigger-type而来的输入),比如说针对网络输入这个trigger-type,那所有的网络输入都可标记为trigger-input,根据symbolic execution的原理,将这些trigger-input标记为符号变量,然后依赖于trigger-input的代码进行符号执行,不依赖的进行具体执行。这就是一种混合执行的模式。
关键问题就是找出trigger-input,trigger-type也不过是给出一个找到trigger-input的方向。
方法 - 步骤关键点、难点及问题
1、里面说到path predicate解析出input之后,就去Runner里面跑(在一个可控的环境中),那么跑出问题来谁来分析,怎么确定那就是个问题呢。
2、最初要做trigger type specification,就是对trigger type的描述,其中主要的功能就是要将trigger type与对应的input实际存储位置关联起来。
3、Mixed Execution Engine
3.1 IR
先做了一个优化,二进制代码x86指令很复杂,在其之上做symbolic execution很复杂,因此现将x86指令转化为了IR中间语言。
这里有一个问题,就是没有源代码的话,去挖掘其中的路径可能非常复杂,这个对于byte code上不知道是否适用。
3.2 dynamic binary instrumentation
Static binary instrumentation被认为不可能的任务,而且binary当中有packing和obfuscation因此难上加难。
首创性
在binary之上实现混合执行
在source code之上的混合执行工具[6, 14]
工具
MineSweeper
自动检测结束后,能为手动分析提供有价值的信息,关于潜在的trigger-based代码路径。