TLSfeat
自动化、高性能、全维度TLS加密流量特征提取软件
“Coming up with features is difficult, time-consuming, requires expert knowledge. 'Applied machine learning' is basically feature engineering”(特征提取不仅困难而且耗时,同时需要专家知识。应用机器学习本质上是特征工程). - Andrew Ng

简介

特征提取是分析加密流量的关键,也是机器学习流水线最为耗时的一个步骤。识别TLS协议并提取特征非常困难,不仅需要精通TLS协议同时工作量巨大,并且要处理真实网络流量的错误数据、未遵循协议规范等复杂场景。数据科学家们关注结构化数据,而非二进制流量。

TLSfeat是一款面向数据科学家和研究人员使用的自动化、高性能、全维度加密流量特征提取软件,旨在显著减少特征提取时间,加速机器学习模型构建。 TLSfeat可在Linux、OSX等操作系统以及x86、M1等指令集运行,并已在大量公开数据集进行测试。

TLSfeat是一款免费软件,使用的许可证为CC BY-NC-ND 4.0。软件二进制包(x86_64 Linux)及文档下载地址:

TLSfeat使用非常简单,一条命令行即可提取文件夹所有pcap全部特征,并生成机器友好的JSON文件。

tlsfeat -d /opt/pcaps -o /opt/featsout -t 8
  • -d: pcap文件夹路径
  • -o: 特征文件存放路径
主要功能

  • TLS协议识别与解析(TLS 1.2协议)
  • 输入: 多pcap
  • 输出: JSON文件
  • 提取特征
    • 基础特征: 五元组(源IP、源端口、目标IP、目标端口、时间戳)、持续时间等
    • 统计特征: 包数,包长度与包达到间隔时间的max, min, mean, std
    • 时序特征: 包长度与包到达间隔时间时序特征
    • 载荷特征: payload的字节分布、方差与墒
    • TLS特征: 版本、加密套件、SNI、扩展字段、证书数量等
    • 证书特征: 序列号、版本号、生效及过期时间、颁发者与主题信息、Subject Alternative Names、公钥信息
    • 其它:JA3, JA3s
  • 鲁棒性
    • 未完全遵循协议规范的TLS流量
    • Multi Handshake Message
    • 重传数据
解密

给定client random和premaster key,TLSfeat可实现自动化批量解密TLS流量,生成机器友好的JSON输出。该功能目前在测试中,支持TLS 1.2。TLSfeat解密功能 解决了Wireshark无法批量自动化解密等问题。

    加密算法
  • 对称加密: AES GCM, AES CCM, AES CBC, CHACHAPOLY
  • 哈希算法: SHA1, SHA256, SHA384
  • 扩展模式: extended master, CBC Encrypt-Then-Mac
    加密套件
  • TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256
  • TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
  • TLS-ECDHE-ECDSA-WITH-AES-256-CCM
  • TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384
  • TLS-DHE-RSA-WITH-AES-256-CBC-SHA256
  • TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA
性能

TLSfeat已在公开数据集进行大量测试(表格数据来源测试文档 )。

特征列表

下表展示了TLSfeat提取特征,以及TLSfeat与Joy和Zeek的对比。

基础特征

特征名 特征描述 示例 TLSfeat Joy Zeek
stream_index TLS流在pcap序列号 3
src_ip 源IP "192.168.0.102"
dest_ip 目标IP "8.8.8.8"
src_port 源端口 65543
dest_port 目标端口 443
timestamp TLS流第一个包时间戳(纳秒) 1609779662027198000
duration TLS流持续时间(秒级) 3.418913024 ✅*

统计特征

特征名 特征描述 示例 TLSfeat Joy Zeek
pkt_num 包数 498
pkt_up_num 上行包数 167
pkt_down_num 下行包数 331
pkt_len_sum
pkt_len_max
pkt_len_min
pkt_len_mean
pkt_len_std
包总字节数
包最大字节数
包最少字节数
包平均字节数
包字节数方差
468196.0
1514.0
54.0
940.15261044
644.58199213












pkt_len_up_sum
pkt_len_up_max
pkt_len_up_min
pkt_len_up_mean
pkt_len_up_std
上行包总字节数
上行包最大字节数
上行包最少字节数
上行包平均字节数
上行包字节数方差
9397.0
227.0
54.0
56.26946108
16.96471757












pkt_len_down_sum
pkt_len_down_max
pkt_len_down_min
pkt_len_down_mean
pkt_len_down_std
下行包总字节数
下行包最大字节数
下行包最少字节数
下行包平均字节数
下行包字节数方差
458799.0
1514.0
54.0
1386.09969789
178.69711171












pkt_iat_sum
pkt_iat_max
pkt_iat_min
pkt_iat_mean
pkt_iat_std
包到达时间总和
包最大到达时间
包最小到达时间
包平均到达时间
包到达时间方差
468196.0
1514.0
54.0
940.15261044
644.58199213












pkt_iat_up_sum
pkt_iat_up_max
pkt_iat_up_min
pkt_iat_up_mean
pkt_iat_up_std
上行包到达时间总和
上行包最大到达时间
上行包最小到达时间
上行包平均到达时间
上行包到达时间方差
468196.0
1514.0
54.0
940.15261044
644.58199213












pkt_iat_down_sum
pkt_iat_down_max
pkt_iat_down_min
pkt_iat_down_mean
pkt_iat_down_std
下行包到达时间总和
下行包最大到达时间
下行包最小到达时间
下行包平均到达时间
下行包到达时间方差
468196.0
1514.0
54.0
940.15261044
644.58199213













SPLT时序特征

特征名 特征描述 示例 TLSfeat Joy Zeek
mc_len 包长度时序特征 [0.03571429,
0.00595238, ...]
mc_time 包到达时间特征 [0.97101449,
0.01242236, ...]

载荷特征

特征名 特征描述 示例 TLSfeat Joy Zeek
bd_dist 载荷字节分布 [0.00414469,
0.00409936, ...]
bd_std 载荷方差 0.00010651
bd_entropy 载荷墒 7.99946506

TLS特征

特征名 特征描述 示例 TLSfeat Joy Zeek
tls_version TLS版本 TLSv1.2
tls_client_cs TLS候选加密套件 ["TLS_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA",...]
tls_num_client_cs TLS候选加密套件数量 21
tls_server_cs TLS加密套件 TLS_ECDHE_RSA_WITH
_AES_128_CBC_SHA256
tls_certs_num 证书数量 2
tls_server_name SNI(Server Name Indicator) "admink.com"

证书特征

特征名 特征描述 示例 TLSfeat Joy Zeek
version 版本号 3
serial 序列号 "09F26104C9915B4002221385C422A23A"
not_before 生效时间 2020-12-25 00:00:00
not_after 过期时间 2021-12-24 23:59:59
validity_days 有效时间(天数) 365
issuer_country
issuer_state
issuer_city
issuer_org
issuer_org_uni
issuer_common
颁发者信息 "TrustAsia TLS RSA CA"
subject_country
subject_state
subject_city
subject_org
subject_org_uni
subject_common
主体信息 "admintk.com"
pubkey 公钥类型 RSA
pubkey_len 公钥长度 2048
pubkey_param 公钥参数 65537