利用背景流量数据(contexual flow data)识别TLS加密恶意流量

识别出加密流量中潜藏的安全威胁具有很大挑战,现已存在一些检测方法利用数据流的元数据来进行检测,包括包长度和到达间隔时间等。来自思科的研究人员扩展现有的检测方法提出一种新的思路(称之为“data omnia”),不需要对加密的恶意流量进行解密,就能检测到采用TLS连接的恶意程序,本文就该检测方法进行简要描述,主要参照思科在AISec’16发表的文章《Identifying Encrypted Malware Traffic with Contextual Flow Data》[1][2][3]。

图1 TLS加密恶意流量检测流程

首先,分析百万级的正常流量和恶意流量中TLS流、DNS流和HTTP流的不同之处,具体包括未加密的TLS握手信息、TLS流中与目的IP地址相关的DNS响应信息(如图2)、相同源IP地址5min窗口内HTTP流的头部信息;然后,选取具有明显区分度的特征集作为分类器(有监督机器学习)的输入来训练检测模型,从而识别加密的恶意流量。本方法区别于已有研究方法的地方就是利用TLS流相关背景流量信息(包括DNS响应、HTTP头部等)辅助加密恶意流量检测。

图2 TLS流和背景DNS流量

(红色数据用于链接TLS流和DNS流、绿色数据表示背景信息、未标记颜色的数据表示TLS未加密的头部信息)

思科研究人员自己写了一款基于libpcap的通用工具,用于分析并提取捕获到的数据流(恶意流量和正常流量)的数据特征,包含clientHello, serverHello, certificate和clien-tKeyExchange等信息。

1. 恶意流量

采集环境:ThreatGRID[4],一种商业的沙箱环境,提供恶意软件分析功能

采集时间:2016年1月-2016年4月

说明: 沙箱环境接受用户提交(user submissions),每个用户提交允许运行5min,所有的网络活动被记录用于分析。

2. 正常流量(DMZ区流量,本文认为该区域包含少量的恶意流量)

采集环境:某大型企业网络的DMZ区某5天的数据量

采集时间:2016年4月

文中对恶意/正常流量中TLS流及背景流量信息(DNS响应信息、HTTP头部信息)进行统计分析,寻找恶意流量和正常流量中具有明显区分度的数据特征以及相应特征值的规律性。

1. TLS握手信息:

选取拥有完整TLS握手信息的TLS流作为研究对象,通过分析TLS握手信息发现,恶意流量和正常流量使用的加密套件(ciphersuites)、支持的扩展(extensions)等方面有很大不同,详见表1。

表1 恶意流量与正常流量TLS握手信息区别

2. DNS响应信息:

通过选取和目的IP地址相关的包含DNS响应信息的数据流作为研究对象,提取响应的域名信息进行分析。DNS域名信息也可以从SNI(Server Name Indication)扩展和SANs(subject alternative names)中得知,但由于TLS版本信息等原因,这些字段有时候是不存在的。

通过分析数据发现, 恶意流量与正常流量的区别主要表现在: 域名的长度、数字字符及非数字或者字母(non-alphanumeric character) 的字符占比、DNS解析出的IP数量、TTL值以及域名是否收录在Alexa网站等。

域名的长度:正常流量的域名长度分布为均值为6或7的高斯分布(正态分布);而恶意流量的域名(FQDN全称域名)长度多为6(10)。

数字字符及非字母数字(non-alphanumeric character) 的字符占比:正常流量的DNS响应中全称域名的数字字符的占比和非字母数字字符的占比要大。

DNS解析出的IP数量:大多数恶意流量和正常流量只返回一个IP地址;其它情况,大部分正常流量返回2-8个IP地址,恶意流量返回4或者11个IP地址。

TTL:正常流量的TTL值一般为60、300、20、30;而恶意流量多为300,大约22%的DNS响应汇总TTL为100,而这在正常流量中很罕见。

域名是否收录在Alexa网站:恶意流量域名信息很少收录在Alexa top-1,000,000中,而正常流量域名多收录在其中。

3. HTTP头部信息:

选取相同源IP地址5min窗口内的HTTP流作为研究对象,通过分析HTTP头部信息发现,恶意流量和正常流量所选用的HTTP头部字段有很大区别。详见表2。此外,正常流量HTTP头部信息汇总Content-Type多为image/*而恶意流量为text/*、text/htmlcharset=UTF-8或者text/html;charset=UTF-8

表2 恶意流量与正常流量HTTP头部信息区别

1. 实验数据集

选取拥有完整TLS握手信息且有DNS响应和HTTP头部信息的数据流进行分析建模。

选取的特征值包括两部分(这里不赘述数据特征的表示方法,详见论文):

(1)可直接观测到的元数据:包长度、包到达间隔时间以及字节分布。

(2)第三章节提到TLS握手信息及对应的背景流量包含的数据特征,包括ciphersuitesextensionspublic key length等。

分析工具:Python 和 Scikit-learn[5]

2. 实验过程:

本文利用10折交叉验证(10-fold cross-validation)和l1正则化的逻辑回归算法(l1-logistic regression)来进行分类(即判断加密流量是否是恶意的)。文中也针对不同数据特征的组合的分类结果进行了统计(图7-Table 1),可以发现利用背景流量信息进行分类的模型不仅准确率会更高,而且参数会更少(根据交叉验证形成模型参数平均计算可得)。

图7中Table 2 列出了对判别正常流量和异常流量影响权重比较大的数据特征。这些特征很容易解释为什么网络流是恶意的或者是正常的,例如绝大多数的恶意流量样本不会和排名top-1,000,000的网站进行通信。

图3 实验结果分析

文中提到,使用FDR(伪发现率,False Discovery Rate)作为假设检验错误率的控制指标(FDR不超过0.00%)。

我们收集的特征数据除了用于构造机器学习模型之外,还有其它的一些启示。

  1. Client端的client-hello中的SNI与sever端的certificate中包含的SAN都表示服务器主机名,两者的差异性可以用于恶意流量检测;
  2. HTTP流中的User-Agent和从TLS流中ciphersuites和advertised extensions推测出的User-Agent的差异性也可以用于恶意流量检测。

3. 实验验证:

为了防止过拟合,除了上面提到的交叉验证方法之外,我们额外收集了2016年5月这个月期间相同企业网络中DMZ区的流量,用第五章节训练形成的模型来进行验证。从Table 3中可以看到,结合TLS流的背景流量信息DNS响应和HTTP头部信息进行分类的效果最好,即报警数最少。当l1-logistic regression classifier的阈值(Probability of malicious)为0.95时,该分类器只有86个报警(包括29个独立目的IP地址和47个独立的源IP地址),其中有42个报警看似是“误报”。经过分析发现,这些“误报”中,主机是一直和Goolge和Akamai服务器通信,但是从该TLS流的背景流量HTTP流(contexual HTTP)中发现,其与可疑域名进行通信(HTTP中的Host字段),经VirusTotal确认,有50%的反病毒引擎认为和该域名相关的可执行程序是恶意的,这也进一步说明了该模型的有效性。

图4 实验数据验证

[1]  Identifying Encrypted Malware Traffic with Contextual Flow Data

http://dl.acm.org/citation.cfm?id=2996768

[2] 不解密数据竟也能识别TLS加密的恶意流量?http://www.freebuf.com/news/108628.html

[3] 传输层安全协议抓包分析SSL/TLS http://www.freebuf.com/articles/network/116497.html

[4]  Cisco AMP Threat Grid  http://www.threatgrid.com , 2016.

[5]  F. Pedregosa, G. Varoquaux, A. Gramfort, V. Michel, B. Thirion, O. Grisel, M. Blondel, P. Prettenhofer, R. Weiss, V. Dubourg, J. Vanderplas, A. Passos, D. Cournapeau, M. Brucher, M. Perrot, and E. Duchesnay. Scikit-learn: Machine Learning in Python. JMLR, 12:2825-2830, 2011.

识别TLS加密恶意流量的更多相关文章

  1. 利用背景流量数据(contexual flow data) 识别TLS加密恶意流量

    识别出加密流量中潜藏的安全威胁具有很大挑战,现已存在一些检测方法利用数据流的元数据来进行检测,包括包长度和到达间隔时间等.来自思科的研究人员扩展现有的检测方法提出一种新的思路(称之为“dataomni ...

  2. netsniff恶意流量识别和匹配解读

    代码整体框架 流量扫描函数调用 加载配置文件的代码调用 获取扫描的条数 重点匹配函数 流量eg:'\x00\x04\x00\x01\x00\x06\x00\x16>\x10\x1d>SW\ ...

  3. EKFiddle:基于Fiddler研究恶意流量的框架

    转载自FreeBuf.COM EKFiddle是一个基于Fiddler web debugger的,用于研究漏洞利用套件.恶意软件和恶意流量的框架. 安装 下载并安装最新版本的Fiddler http ...

  4. MQTT TLS 加密传输

    MQTT TLS 加密传输 Mosquitto原生支持了TLS加密,TLS(传输层安全)是SSL(安全套接层)的新名称,生成证书后再配置一下MQTT代理,本文主要介绍Mqtt如何实现双向认证和单向认证 ...

  5. SSL/TLS 加密新纪元 - Let's Encrypt

    转自: https://linux.cn/article-6565-1.html SSL/TLS 加密新纪元 - Let's Encrypt 根据 Let's Encrypt 官方博客消息,Let's ...

  6. TLS加密远程连接Docker

    <Docker远程连接设置>一文讲述了开启Docker远程连接的方法,但那种方法不安全,因为任何客户端都可以通过Docker服务的IP地址连接上去,今天我们就来学习Docker官方推荐的安 ...

  7. 快速识别Hash加密方式hashid

    快速识别Hash加密方式hashid hashid工具是用来识别不同类型的散列加密,进而判断哈希算法的类型.该工具的而语法格式如下所示: hashid [option] INPUT 其中,option ...

  8. 对Elastic集群内部配置TLS加密通信及身份验证

    1.介绍 官方宣布从6.8和7.1开始,免费提供多项安全功能.其中包括tls加密通信,基于角色访问控制等功能. 可以使用企业CA证书来完成这一步骤,但是一般情况下,我们可以通过elasticsearc ...

  9. 开源项目SMSS发开指南(四)——SSL/TLS加密通信详解

    本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵 ...

随机推荐

  1. 设计模式之——visitor模式

    visitor模式,又叫访问者模式,把结构和数据分开,编写一个访问者,去访问数据结构中的元素,然后把对各元素的处理全部交给访问者类.这样,当需要增加新的处理时候,只需要编写新的 访问者类,让数据结构可 ...

  2. python3.7.2 ssl版本过低导致pip无法使用的问题

    环境:系统是centos6.6,python:python3.7.2 问题:安装好python3.pip后,在通过pip install xx 安装模块时,发现无法安装的问题,提示版本太低,系统默认的 ...

  3. day17(JDBC入门&jdbcUtils工具介绍)

    day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url ...

  4. linux进程间通讯的几种方式的特点和优缺点

    # 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系.# 有名管道 (named pipe) : 有名管道也是 ...

  5. zookeeper集群-solrcloud集群

    本文只写具体的搭建过程,具体原理请看官网文档.国内博客都是基本上都是通过tomcat搭建的solr,本文是通过内部集成的jetty容器搭建. 一.zookeeper集群搭建 1.安装JAVA环境,版本 ...

  6. C++中定义NULL的头文件

    NULL不是C语言基本类型,其定义在stddef.h文件中,作为最基本的语言依赖宏存在.但是随着C/C++的发展,很多文件只要涉及了系统或者标准操作都会将NULL作为标准宏声明或者包含.所以几乎包含任 ...

  7. CCF地铁修建

    问题描述 A市有n个交通枢纽,其中1号和n号非常重要,为了加强运输能力,A市决定在1号到n号枢纽间修建一条地铁. 地铁由很多段隧道组成,每段隧道连接两个交通枢纽.经过勘探,有m段隧道作为候选,两个交通 ...

  8. appscan 9.0.3.10 版本下载

    http://download4.boulder.ibm.com/sar/CMA/RAA/07ukf/0/ 其他版本下载 https://www.cnblogs.com/hua198/p/100447 ...

  9. 企业级服务元年:iClap高效解决手游更新迭代问题

    2006年至今,手游市场经历了不少变革,从WAP站到2009年智能手机时代来临,2012大量资本涌入国内手游行业,到2014年手游市场趋于成熟,细分市场成为追逐热门,在2015年优胜劣汰的资本寒冬浪潮 ...

  10. QML基本可视化元素--Text

    一个Text项目可以显示纯文本或者富文本 1.     可以使用Html标记:text: “<b>HELLO</b>” 2.     宽度和高度(width, height): ...