Malware traffic analysis

| 分类 Infosec  | 标签 Malware 

image Nazca: Detecting Malware Distribution in Large-Scale Networks, last update (2017.9.27)

1. 本文概要

Paper Reading notes on:

Nazca: Detecting Malware Distribution in Large-Scale Networks

2. 传统方法

drive-by download attack 的过程可以被分为3个步骤:

  1. 利用阶段(exploitation phase): 通过利用漏洞让客户机执行shellcode代码
  2. 安装阶段(installation phase): shellcode被执行,开始从远程下载恶意软件
  3. 控制阶段 (control phase): 恶意软件产生流量与控制端进行通信

传统论文方法大多数工作主要是针对阶段1,3进行检测,如检测跨站脚本,挂马网页等,然后就是从主机发出的流量进行检测,如IDS,杀毒软件等。

3. 论文特色

  1. 传统恶意软件检测算法主要在检测恶意软件已经被下载到用户电脑上之后产生的流量, 然而很少有研究去检测恶意软件是从哪儿被下载的。(针对阶段2)
  2. 提出了Nazca检测系统,detects infections in large scale networks。
  3. 利用了图的关联特性,可以检测出未知的malware,0-day

4. Nazca工作原理

通常在阶段2,shellcode会发出HTTP请求,并从远程服务器下载恶意软件。由于是HTTP请求,和其他正常的请求很类似,所以很难被发现。论文的intuition 就是:好吧,少量的恶意软件我可能发现不了,但是很多主机都在请求某个恶意软件,那么就很可疑了。(Instead, when considering many malware downloads together – performed by different hosts, but related to a single campaign – a malware distribution infrastructure becomes visible. )

Nazca主要负责在一个网络中检测HTTP请求,更具体的是下载可执行软件的HTTP请求。和普通HTTP下载不同的是,恶意软件下载有很多防御技术,1)domain fluxing, 2) malware repackaging 3) malware droppers for multiple installations. 作者表示,其方法可以对上述防御技术兼容。

Nazca检测主要分为两个部分,1)candidate selection(也叫做过滤阶段) 用 4个小节提出的一系列方法检测URIs,这些URIs表现出一些恶意行为。

4.1 节检测文件变异:某网址下载所对应的文件hash值,如果超过n那么就是一个candidate。

4.2 节检测恶意CDN: 通过6个特征(Domain关联度,不同TLD的个数等)学习出的决策树来进行分类。

4.3 节检测dedicated malware host:所谓Dedicated malware host就是专门保存恶意软件的主机,这些主机一般藏在多重redirection之后,并且host的内容相对传统网站内容更少。

4.4 节检测Exploit/Download host: 如果恶意软件作者利用的shellcode从一个hardcoded User-agent进行下载恶意软件,所产生的http请求是特别的:对于一个destination,采用的User-agent是不同于浏览器的User-agent。

2) Detection step, 运用1)产生的URIs,构建恶意邻居图,如果一个节点在恶意邻居图里面,那么这个图的其他节点很有可能也是恶意的。 可以看出1)这个步骤是为了过滤掉正常的,剩下恶意的方便后续分析。

4.1 Nazca检测内容和特征提取

Nazca检查MIME类型1只要不在白名单中,那么就会提取:

  1. 目的IP和源IP
  2. 目的端口和源端口
  3. URI
  4. HTTP头部的User-Agent
  5. 解压后文件的前 k 字节的哈希值

论文focuses on HTTP 流量是因为:we observed that it is the protocol of choice for the vast majority of malware in current circulations.

4.2 恶意域名检测

恶意软件为了躲避杀毒软件的查杀,使用不同的技术(malware hosting tries to evade blacklisting by using multiple domains, servers, payloads, file names, and URL paths),作者在论文中针对恶意软件的:1)server-side polymorphism 2)multiple domains 进行了分析和处理。

所谓 server-side polymorphism就是恶意软件使用不同的加密key对软件进行加密或者攻击者准备多种变种恶意软件,每次下载不同的软件,从而达到绕过杀毒软件的signature库的目的。 作者使用的检测方法是:看一个下载记录与URI的关联情况,以及从URI处下载不同软件的数量。

检测恶意的CDN(区分正常的和恶意的CDN是非常重要的)。

检测步骤:

  1. 检测CDNs

如果相同1个文件的hash值对应多个不同的URIs,那么这些URIs的域名就属于一个簇。如果不同的2个簇里面都至少存在一个相同的域名,那么这两个簇就被连接起来。最后形成的这些簇就是CDNs.

  1. 区分恶意和正常CDNs

采用方法:机器学习

提取特征:1) 域名关联度: 有些恶意软件作者为了节省开支,用同一个IP来host不同domain names,那么这个特征就是: hosts数目除以domains数。 2) 不同的TLD域名个数:合法的CDN通常使用一个TLD或者一个TLD下面的不同sub domain,恶意的CDN通常使用多个不同的TLD(开源软件镜像除外) 3)匹配的URI和文件个数:合法的CDNs通常为了高效维护,采用的目录结构和文件名都一样。相反恶意软件为了防止blacklisting,通常采用不同的文件名和URI。 4)同一域名下的不同URI数量:恶意软件的网站目录结构复杂性低于其他正常域名(有例外,但很少)。 5)文件类型比例:正常CDNs通常有不同的文件类型,然而恶意的CDN大多数情况下只有可执行文件。

4.3 构建恶意邻居图

恶意邻居图:指关于某个可疑候选者一系列的恶意行为图(无向图)。

节点内容包括:IP地址,域名,FQDN(Fully Qualified Domain Name)s, URLs, URL paths, file names,下载文件的hash值。

初始节点可以是一个恶意的域名,或者恶意的FQDN。当一个新的节点来的时候,要把其加入图中,依据的是节点之间的关系:要么是URL相同,要么是域名相同等等。

论文作者根据这个生成的图,为每个恶意候选者计算一个分数。如果图中的恶意节点(经过阈值判断过)较多的话,那么这个节点很肯能就是恶意的。同时从图的连接性来看,可以关联出不能被其他方法检测出来的未知恶意软件。

4.4 适用范围

论文方法适用于HTTP based malwares。 不能够检测HTTPS,加密协议,不能够检测依赖于其他正常网站(Google Drive, Dropbox等)来发布的恶意软件。

为什么不用HTTPS?

  1. 自签名证书,浏览器会报警,降低恶意软件感染率
  2. 权威机构对恶意网站前面不感兴趣,会破坏自身声誉
  3. 降低恶意软件性能

如何逃过论文方法检测:

  1. 采用加密协议
  2. 使用Skype等合法软件

Refs

[1] Invernizzi L, Miskovic S, Torres R, et al. Nazca: Detecting Malware Distribution in Large-Scale Networks[C]//NDSS. 2014, 14: 23-26.

  1. Content-type is header field defined in MIME specification. 

Posted by 灵犀一点00 - 2017-03-01
如需转载,请注明: 本文来自 Jasonzhuo's Blog