APT威胁检测之flash类检测方法

flash沙箱分析威胁原理
简介:flash样本在沙箱中模拟真实物理环境运行样本,抓取样本执行过程的行为然后通过抓取的信息判断该样本是否有威胁的过程。
分析首先流量经过DPI技术还原,还原出flash类型(*.swf)的文件,然后通过综合调度模块把swf文件导入Flash沙箱,Flash沙箱经过自己的分析引擎确定是否有威胁。FLash沙箱,即是安装了flash分析环境的虚拟机。
Flash沙箱中主要的几个分析模块——lightspark,ffdec,libemu和自己开发的HOOK以及监控程序。
1 Lightspark:是swf文件的播放器,可以仿真flash执行环境(有lightspark的多个版本(对应多个flash发行版本),根据样本的版本需求选则用哪个版本去执行样本。是为了检测出各个版本上漏洞利用的行为,很多恶意样本是先检测环境、如果环境不满足则不执行),Lightspark模拟执行,通hook lightspark的函数和自己开发程序抓取swf样本在内存中的字节码。字节码的格式如下:(例)

   "\xbe\x1f\x5e\x89\x76\x09\x31\xc0\x88\x46\x08\x89\x46\x0d\xb0\x0b"    
        "\x89\xf3\x8d\x4e\x09\x8d\x56\x0d\xcd\x80\x31\xdb\x89\xd8\x40\xcd"    
        "\x80\xe8\xdc\xff\xff\xff\x2f\x62\x69\x6e\x2f\x6c\x73\x00\xc9\xc3";  
##############一段shellcode###############################
##############一个liunx命令‘ls’##########################

2 Ffdec:FFdec是一个免费开源的swf反编译软件
3 Libemu: 是基于对x86汇编语言的解析和模拟执行。与qemu不同的是libemu只是模拟器,不是虚拟机。只能完成对内存和CPU的简单模拟,不能完全模拟执行,作用是判断一段字串是不是shellcode。
4 静态检测:按flash样本的结构,在内存(堆栈)中抓取结构体中各个端的值然后交给libemu检测。
5 熵值:计算抓取字节码的熵值
一个具体检测流程结构图:
APT威胁检测之flash类检测方法_第1张图片
检测流程:
flash的样本进入沙箱后,主要两条检测路线:静态检测与动态检测。
动态检测:样本进入后同时被分到两个进程lightspark和ffdec,
(1)直接把样本静态反编译了,在libemu中仿真执行,查找shellcode。
(2)在lightspark中真实的打开该swf的样本,监控程序会在内存中抓取字节码,如:
“\xbe\x1f\x5e\x89\x76\x09\x31\xc0\x88\x46\x08\x89\x46\x0d\xb0\x0b”
“\x89\xf3\x8d\x4e\x09\x8d\x56\x0d\xcd\x80\x31\xdb\x89\xd8\x40\xcd”
“\x80\xe8\xdc\xff\xff\xff\x2f\x62\x69\x6e\x2f\x6c\x73\x00\xc9\xc3”;
抓取字节码并判断是否是可以执行的字节码,可以执行的字节码片段放入ffdec继续反编译,在反编译后抓取“关键字”,计算“关键字”的熵值和其他字节码(重复)的熵值,再把字节码放入libemu中检测,最终给出一个风险等级。
静态检测:在lightspark中抓取的数据部分的字节码,计算字节码的熵值和导入libemu中检测,给出一个风险级别。
抓取flash样本中的字节码,(字节码对应应用层程序是——swf,可执行脚本,可执行指令,关键函数调用等)。抓取的字节码分配给各个引擎去检测,
关键字,抓取关键字,通过反编译和监控程序抓取关键字。(如图2)
APT威胁检测之flash类检测方法_第2张图片
基于本技术的Flash沙箱存在的缺陷:
1 平台:只限于X86的windows平台
2 编码/加密:对多次编码或加密的数据无能为力,抗混肴能力(这是黑/白混战的一个博弈点,无谁高谁低)
3 检测手段:找出可疑的恶意代码,并不能肯定就是攻击。
4 误报率:误报率控制是一个问题

你可能感兴趣的:(网络安全-APT,apt,flash)