利用背景流量数据(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.

转载于:https://www.cnblogs.com/bonelee/p/9604530.html

识别TLS加密恶意流量相关推荐

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

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

  2. 利用机器学习方法检测识别TLS加密恶意流量

    摘要:本文总结提出了一种主流的机器学习加密流量分析的方法 如何在不侵犯个人隐私的前提下,在加密流量中检测恶意攻击行为,为了找到一种切实可行的"在加密流量中检测恶意攻击行为"的方法, ...

  3. 基于机器学习和背景流量数据的加密恶意流量检测

    文章目录 1 加密流量现状 1.1 加密流量检测的必要性 1.2 加密恶意流量的检测方法 2 加密流量特征分析 2.1 可观察的数据元统计特征 2.1.1 传统流数据 2.1.2 字节分布 2.1.3 ...

  4. 加密恶意流量检测思路分析

    文章目录 背景及现状 加密恶意流量特征分析 特征类别 特征提取 加密恶意流量检测流程 数据采集 特征工程 模型训练 参考资料 背景及现状 为了确保通信安全和隐私以及应对各种窃听和中间人攻击,HTTPS ...

  5. 翻译:Identifying Encrypted Malware Traffic with Contextual Flow Data利用上下文流数据识别加密恶意软件流量

    利用上下文流数据识别加密恶意软件流量 blake anderson思科blake.anderson@cisco.com 摘要 识别加密网络流量中包含的威胁是一组独特的挑战.监视此通信量以防威胁和恶意软 ...

  6. 【毕业设计】机器学习恶意流量识别检测(异常检测) - 网络安全 信息安全

    文章目录 1 简介 1 背景 2 恶意软件加密流量介绍 2.1 恶意软件分类 2.2 恶意软件加密通信方式 3 加密HTTPS流量解析 3.1 Https简介 4 流量解析 4.1 流量解析日志生成 ...

  7. 【安全资讯】调查显示,近半数恶意软件藏身TLS加密通信

    作者|nana 来源| 数世咨询 发布时间|2021-04-28 最新研究显示,46%的恶意软件使用加密协议来逃避检测.与攻击者控制的服务器通信,以及渗漏数据. 攻击者大量使用传输层安全(TLS)加密 ...

  8. 极验创始人吴渊:恶意流量威胁新趋势,揭秘网络黑产3大核心本质

    记者 | 邓晓娟 出品 | CSDN云计算(ID:CSDNcloud) 天下没有免费的午餐,更没有免费的流量.以电商为例,最疯狂的时候,某电商平台单个获客成本接近400元.作为互联网的稀缺资源,流量的 ...

  9. 极验创始人吴渊:恶意流量威胁新趋势,洞察网络黑产3大核心本质

    天下没有免费的午餐,更没有免费的流量.以电商为例,最疯狂的时候,某电商平台单个获客成本接近400元.作为互联网的稀缺资源,流量的成本不断冲击着企业运营红线. 而就当企业盯着成本.守着转化时,网络黑产已 ...

最新文章

  1. 企业管理:高层不狠,中层不坏,累死三军
  2. 【转载】微服务,我们需要哪些基础框架?
  3. Winform中实现ZedGraph中曲线右键显示为中文
  4. VTK:BrownianPoints布朗点用法实战
  5. python数据分析天气预报论文_用python+sklearn(机器学习)实现天气预报数据 模型和使用...
  6. spring集成mq_使用Spring Integration Java DSL与Rabbit MQ集成
  7. python 文本处理库_实用又好用,6 款 Python 特殊文本格式处理库推荐
  8. 计算圆弧与矩形相交_【技术】新型七层矩形卷边工艺实践
  9. Vue学习笔记(一)—— 常用特性
  10. python创建和删除文件有什么区别_python创建和删除文件
  11. 七点建议帮助您部署云存储
  12. 【对讲机的那点事】维修对讲机你会拆卸电路板上的集成电路块吗?
  13. access日期如何增加年数_MATLAB的时间与日期
  14. unix支持哪些原始文件系统操作_UNIX环境高级程序设计(APUE)第4章第1部分:文件系统基础知识...
  15. 阿里巴巴java规范_《阿里巴巴 Java开发手册》常用规范
  16. 淘宝商品历史价格接口/商品历史价走势接口对接代码分享
  17. 批流融合系统-SparkV2/Beam
  18. Java LPT,使用Java对LPT端口进行编程。真?
  19. Python爬虫学习笔记(实例:淘宝商品信息定向爬虫)
  20. 组播——IGMP Snooping

热门文章

  1. 电脑的发展史_电脑比手工刺绣效率提高1000倍!2019中国鲁绣传承创新大会在阳信举办...
  2. mysql搜索规则_MySQL基于规则优化
  3. TestNG测试框架之失败测试重跑
  4. html追加行clone,jQuery - 使用.clone()方法克隆拷贝元素
  5. oracle最大值填充,Oracle sequence值到了最大值的处理
  6. java account函数的_用Java进行同时函数调用 - java
  7. smarty中打印php变量,smarty用php标签怎么输出变量
  8. docker容器重启后数据丢失
  9. 升职加薪必看!如何试出一个Java开发者真正的水平
  10. 机器学习(MACHINE LEARNING)MATLAB求解利润最大化问题【线性规划】