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

文章目录

  • 背景及现状
  • 加密恶意流量特征分析
    • 特征类别
    • 特征提取
  • 加密恶意流量检测流程
    • 数据采集
    • 特征工程
    • 模型训练
  • 参考资料

背景及现状

为了确保通信安全和隐私以及应对各种窃听和中间人攻击,HTTPS逐渐全面普及,越来越多的网络流量也被加密,然而,攻击者也可以通过这种方式来隐藏自己的信息和行踪,通过给恶意软件穿上一层名为TLS/SSL的马甲来将其伪装成正常流量进行攻击感染,逃避检测。
近年来,针对加密恶意流量的检测一直是网络安全领域关注的焦点,目前主流的攻击检测手段有两种:解密后检测和不解密检测。业界网关设备主要使用解密流量的方法检测攻击行为,但这种解方法会消耗大量的资源,成本很高,同时也违反了加密的初衷,解密过程会受到隐私保护相关法律法规的严格限制。出于保护用户隐私的考量,不解密进行流量检测的方法逐渐被业界研究人员关注起来,这种方案通常仅被允许观测网络出口的加密通信流量(443端口),但无需对其进行解密,通过利用已经掌握的数据资源,对加密流量进行判别。

加密恶意流量特征分析

特征类别

加密恶意流量特征可以通过解析HTTPS数据包头部信息来获取,而包含这些信息的TLS握手协议在网络中通过明文传输,因此可以使用wireshark等工具捕获网络数据包生成pcap文件,再进行进一步的特征提取。需要关注的加密恶意流量特征可分为以下3类:

  • 数据元统计特征:数据包大小、到达时间序列和字节分布。
  • TLS特征:客户端提供的加密套件和TLS扩展、客户端公钥长度、服务器选择的加密套件、证书信息(是否为非CA自签名、在SAN X.509扩展中的数目、有效期等)。
  • 上下文数据特征:可细分为DNS数据流和HTTP数据流特征。其中,DNS特征关注DNS响应中域名长度、域名中数字与非数字字符长度比、TTL值、DMS响应返回的IP地址数、域名在Alexa网站中的排名情况;HTTP特征关注出入站HTTP的多个字段(Set-Cookie、Location、Expires、Content-Type、Server等)以及HTTP响应码。

特征提取

Joy是Cisco开源的加密流量分析系统的前期预研项目,用于从实时网络流量或pcap文件中提取数据特征,包含clientHello, serverHello, certificate和clien-tKeyExchange等信息,然后用JSON表示这些数据特征,它还包含可以应用于这些数据文件的分析工具sleuth。
Joy除了关注数据包大小和一些与时间有关的参数等传统流量特征,还通过解析加密连接的初始数据包,充分利用未加密字段,从加密包中提取上一小节中的数据特征元素。
Joy在ubuntu环境下的配置命令如下:

sudo apt-get install build-essential libssl-dev libpcap-dev libcurl4-openssl-dev
git clone https://github.com/cisco/joy.git
cd joy
./config
make

简单使用Joy的方法:

# 使用Joy从data目录下的pcap文件中提取tls/dns/http类数据特征,提取出的json结果文件保存在feature目录下
./joy output=features bidir=1 tls=1 dns=1 http=1 data/*
# 使用sleuth分析提取所需的具体特征信息
./sleuth bin/features/* --select "tls{cs,c_extensions,c_key_length,s_cs,s_extensions,s_cert[{validity_not_before,validity_not_after}]}"

加密恶意流量检测流程

数据采集

可以借助Wireshark等工具,通过设置一定过滤规则,分别获取公共网络中的良性流量和恶意流量,从而将检测工作转化为机器学习中常见的二分类问题。

特征工程

与上一大节中阐述的内容相似,在确定特征类别之后进行相应的提取,然后根据特征属性、特征与类别的相关性对数据进行预处理(考虑因素较多,有待进一步学习),最后生成一个以不同网络数据流为列向量、数据流的不同特征为行向量的特征矩阵,供后续处理分析。

模型训练

这一部分要采取合适的汲取学习算法作为分类器对样本数据进行训练,生成相应的分类模型。常用的分类算法包以下几种:

  • l1正则化的逻辑回归算法(l1-logistic regression
  • 支持向量机(SVM
  • 随机森林(random forest
  • 极端梯度提升(XGBoost

参考资料

[1] Anderson B , Mcgrew D . Identifying Encrypted Malware Traffic with Contextual Flow Data[C]// the 2016 ACM Workshop. ACM, 2016.
[2] Anderson B , Paul S , Mcgrew D . Deciphering Malware’s use of TLS (without Decryption)[J]. Journal of Computer Virology and Hacking Techniques, 2016.
[3] 骆子铭, 许书彬, 刘晓东. 基于机器学习的TLS恶意加密流量检测方案[J]. 网络与信息安全学报, 2020(1):77-83.
[4] Cisco:Joy_using_manual

你可能感兴趣的:(#,加密恶意流量检测,网络,python)