【技术分享】通过Shellcode聚类识别定向攻击(APT)相关的恶意代码

https://p1.ssl.qhimg.com/t01e6bbde791c063c1f.png


背景

APT 过程的关键环节

洛马的Kill Chain模型

武器构建

伪装的正常文档捆绑漏洞利用代码

载荷投递

发送带捆绑了恶意附件的邮件到目标

突破利用

目标尝试点击打开邮件附件,触发漏洞或代码执行机制,如果是内存类的漏洞,可能的Shellcode会得到执行

http://p8.qhimg.com/t010f8b3ed3a7b8894c.jpg

图片来源:http://www.darkreading.com/attacks-breaches/deconstructing-the-cyber-kill-chain/a/d-id/1317542

https://p3.ssl.qhimg.com/t01c5dd14d24c83aebc.png

鱼叉邮件攻击中所使用的漏洞

http://p8.qhimg.com/t016a278a1b1dfc8b45.png

漏洞利用与shellcode

Shellcode:什么和为什么

基本上就是一段不需要操作系统负责加载执行的机器码

内存破坏类Exploit的必要组件,相对独立

1)漏洞利用成功以后第一阶段执行的指令,开辟通信通道连接到C&C服务器

2)获取其他恶意组件代码执行,包括后门远控及各种专用恶意组件


方法

样本集

关注鱼叉攻击中被高频使用的RTF文件

11672 个样本文件

绝大多数收集自VirusTotal, 40%被捆绑了已知的Exploit

漏洞在样本中分布

http://p8.qhimg.com/t01b5fa4564051d6388.png

https://p2.ssl.qhimg.com/t0147a7aa6a17b27d69.png

使用IDA反汇编二进制数据

通过IDC脚本调用MakeCode()来查找和生成ASM代码

idaw.exe -c -A -S “extract_sc.idc offset” binary_data.dat

http://p7.qhimg.com/t01819e6ce314bf4465.png

Shellcode检测和抽取演示

http://p8.qhimg.com/t01c4de90c75055cd6a.png

http://p4.qhimg.com/t01b2a95003f9ac83b9.png

http://p5.qhimg.com/t01a8011c38e8a4a769.png

Shellcode抽取

抽取统计

一半样本只包含一段Shellcode

另一半样本包含两段Shellcode

http://p1.qhimg.com/t01324802d7c131ee19.png

http://p0.qhimg.com/t01a53a74de48033f98.png

Shellcode 聚类

N-gram feature

http://p7.qhimg.com/t01596c4205ae8692f1.png

两阶段的 K-means 聚类

第1阶段挑出小簇

第2阶段划分剩下的大簇

http://p9.qhimg.com/t0149160b860efab894.png

http://p7.qhimg.com/t01dcaaeaed225e9444.png

统计

http://p6.qhimg.com/t01422aa1b39dbe6279.png


分析

两个基本假设

高级恶意代码有其独特的Shellcode

APT攻击由于其定向性涉及的恶意代码数量比一般攻击要少得多

http://p2.qhimg.com/t019a7ab06ee98edbb9.png

已知的

Cluster 60

Sample 数量: 1

258fc73ce3ba011948f8704bbe3d87bc

www.agv-us.com

58.158.177.102

http://p9.qhimg.com/t01e897d1832df60e53.png

数据来源: Alienvault

Cluster 100

Sample 数量: 4

F845e5cc072360fa6ef1b8d50f9491ec

194.28.172.58

http://p2.qhimg.com/t01c728b0b98f068668.png

数据来源: Alienvault

360威胁情报中心的判定

https://p0.ssl.qhimg.com/t01bff18a630cf231c1.png

未知的

Cluster 108

6 shellcodes

217.91.17.152:443 216.70.141.250:80 msnmail.mobwork.net

Cluster 56

2 shellcodes

firewall.happytohell.com

Cluster 65

6 shellcodes

boy-girl2013.narod2.ru

结论

一个简单有效的方法

通过Shellcode聚类识别定向攻击(APT)相关的恶意代码是一个有效的方法

可能漏过许多,但误报很少

单维度的数据异常不够

假设1并不一定正确

Shellcode可能并没有全部被抽取

聚类算法可以再优化

团队介绍

360天眼实验室

360企业安全集团的安全研究机构

关注恶意代码及APT攻击事件分析

2015年5月发布海莲花团伙的报告

(完)