[我研究]Automatically Identifying Trigger-based Behavior in Malware

时间:2023-01-23 20:05:25

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-inputtrigger-type也不过是给出一个找到trigger-input的方向。

方法 - 步骤关键点、难点及问题

1、里面说到path predicate解析出input之后,就去Runner里面跑(在一个可控的环境中),那么跑出问题来谁来分析,怎么确定那就是个问题呢。

2、最初要做trigger type specification,就是对trigger type的描述,其中主要的功能就是要将trigger type与对应的input实际存储位置关联起来。

3Mixed Execution Engine

3.1 IR

先做了一个优化,二进制代码x86指令很复杂,在其之上做symbolic execution很复杂,因此现将x86指令转化为了IR中间语言。

这里有一个问题,就是没有源代码的话,去挖掘其中的路径可能非常复杂,这个对于byte code上不知道是否适用。

3.2 dynamic binary instrumentation

Static binary instrumentation被认为不可能的任务,而且binary当中有packingobfuscation因此难上加难。

 

首创性

binary之上实现混合执行

source code之上的混合执行工具[6, 14]

 

工具

MineSweeper

自动检测结束后,能为手动分析提供有价值的信息,关于潜在的trigger-based代码路径。