1、暗网背景介绍
暗网是深网中的一小部分,是必须通过特殊的软件、特殊的配置才能访问的拥有特殊域名的Web站点,搜索引擎无法对其进行直接检索。它的网址不同于一般的网址,它以顶级域名后缀“.onion”结尾,且一般的浏览器无法对其进行访问,只有通过暗网的浏览器才能进行访问,比如Tor浏览器。Tor是一个自由软件,它专注于提供对互联网的匿名访问,可以让用户匿名上网。由于Tor网络经过了多层次的加密,网站无法跟踪其用户的地理位置和IP,用户也无法获取网站主机的有关信息。因此,黑暗网络用户之间的通信是高度加密的,用户可以以保密的方式交流、共享文件、发布博客等,同时也会被用于非法交易、非法论坛以及恐怖分子的介质交流等。
访问Tor网络的时候,需要在客户端上安装一个Tor浏览器,然后浏览器连接到Tor输入节点,该节点又连接到Tor中继节点。连接将通过多个中继节点,每一步都增加了另一层安全性并重新加密了数据,最终到达要访问的目标网站。如图1所示:
图1 Tor网络访问拓扑图
为了进一步提高访问的私密性,可以在浏览器中配置代理访问Tor入口节点,常见的代理方式包括Shadowsocks翻墙代理和VPN代理。
2、暗网内部模拟环境搭建
2.1 拓扑图
本实验为尽可能模拟真实的暗网访问,并在不同的网络访问之间抓取Tor流量数据,搭建了完整的暗网访问环境,包括:
4. 自建的内网目的服务器或者外网的目的服务器。其中,自建的访问终端搭建了3种不同的访问方式:
图2:自建的暗网访问环境拓扑
基于以上拓扑,可以抓取如下类型的流量:
(https://www.unb.ca/cic/datasets/tor.html),我们抓取的Tor流量也包括如下7类的数据:浏览器上网、电子邮件、聊天、音频流、视频流、FTP、VoIP以及P2P等。
2.2 三种Tor连接方式的典型流量
3、实验数据
3.1 实验总体流程
暗网的实验是在公司自建的AI训练平台上进行的,AI训练平台的整体流程图如下图3所示:
图3 AI训练平台流程图
本次暗网实验,是从暗网环境抓取pcap数据开始,经过下载暗网的pcap、pcap包分析、流量数据处理、流量特征提取、AI模型训练几个步骤,生成暗网的AI模型。
3.2 实验数据
通过搭建暗网环境,抓取到的实验数据集详细分类信息如下:
表1 实验采集数据集
流量类型 | 流量总量(单位: MB) |
Tor_pcaps(Tor直连流量) | 17075 |
Tor_Shadowsocks_pcaps(Shadowsocks代理流量) | 16220 |
VPN_pcaps(VPN代理流量) | 4484 |
Benign_pcaps(非Tor流量) | 10114 |
对于加密流量的机器学习检测,通常有两种特征提取方式:
本文的实验分别基于以上两种特征提取方式进行AI模型的验证。
4、基于数据流上包统计特征构建模型
4.1 模型评价指标
模型评价一般分为两类:功能指标和性能指标。功能指标用于对模型的识别效果进行评价,性能指标用于对识别效率进行评价。在本次实验中,使用精确率、召回率、准确率以及F1值等功能指标来衡量模型的检测能力。
4.2 模型训练
基于数据流上包的统计特征,提取特征向量之后得到的训练样本如表2所示:
在数据集的模型训练中,选择目前流行度较高的XGBoost、LightGBM、RandForest以及Logistic Regression分类算法进行模型训练,且全部采用算法模型的默认参数进行训练。在数据集的划分中,训练集:测试集:验证集按照4:2:2的比例进行划分,并在训练过程中采用10折交叉验证进行模型训练和结果评估。
基于数据流上包的统计特征对各模型进行训练后,在测试集上得出的评价指标如表3所示:
表3 不同算法模型在测试集上的评价结果1
分类模型 | Accuracy | Recall | Precision | F1-score |
XGBoost | 0.99983076 | 0.99582853 | 0.99963828 | 0.99771797 |
LightGBM | 0.99981829 | 0.99350040 | 0.99835846 | 0.99590395 |
Random Forest | 0.99979157 | 0.99414401 | 0.99969957 | 0.99688789 |
Logistic Regression | 0.98330245 | 0.87101271 | 0.95909096 | 0.90579628 |
从结果中可以看到,XGBoost、LightGBM以及Random Forest的各个功能评价指标都达到理想的效果,而LogisticRegression相对较差,其中Recall仅0.87,表明该模型对Tor流量的检出能力不如另外三个模型。
为进一步对模型进行更加准确的评价,将各个模型的ROC曲线图以及混淆矩阵图进行展示,如图5和图6所示,class 0: 白样本,class 1:Tor直连样本,class 2:Shadowsocks代理样本,class 3: VPN代理样本。
图6 模型 ROC混淆矩阵图
从表3指标评价结果表、ROC曲线以及混淆矩阵图综合来看,XGBoost、LightGBm以及Random Forest在Tor流量的综合检出能力以及各个类别的检出能力上都表现较好,而Logistic Regression则更容易产生误报。
4.3 模型在公开数据集上的验证
模型训练的数据都是在实验环境抓取的,除了对实验数据进行交叉验证之外,我们也利用CIC Tor2016公开数据集
(https://www.unb.ca/cic/datasets/tor.html)验证了模型的检测效果。
该数据集包含22GB的Tor以及nonTor流量,其中Tor流量12GB,nonTor流量9.9GB,Tor流量包含7类:浏览器、电子邮件、聊天、音频流、视频流、FTP、VoIP以及P2P。4.2中所训练的模型在CIC Tor 2016中的TCP/UDP表现如表5所示:
表4 模型在CIC Tor 2016数据集测试结果
模型 | 数据集总量(单位:个) | 准确率(%) | 误报率(%) |
XGBoost | 31494 | 99.9841 | 0.0159 |
LightGBM | 31494 | 99.9841 | 0.0159 |
Random Forest | 31494 | 99.9809 | 0.0191 |
Logistic Regression | 31494 | 85.2766 | 14.7234 |
从表中可以看到,XGBoost、LightGBM误报率都较低,为0.0159%,而Logistic Regression误报达到了14.7234%。
其中,XGBoost、LightGBM将nonTor预测为Tor直连数量为3,将Tor直连预测为nonTor数量为2;Random Forest将nonTor预测为Tor直连数量为4,将Tor直连预测为nonTor数量为2;Logistic Regression将nonTor预测为Tor直连数量为4556,将Tor预测为nonTor数量为80。另外除了Logistic Regression出现了一次将nonTor预测为Tor非直连的情况,其它三种模型均无被预测为Tor非直连的情况。
5、基于加密协议TLS/SSL协议构建模型
基于加密应用协议TLS/SSL进行特征提取,不仅利用了数据流上包的统计特征,而且利用了加密协议TLS/SSL通信特征,并关联DNS上下文统计特征,构建AI训练的特征工程。
5.1 模型训练
表5 基于TLS/SSL并关联DNS上下文统计特征构建的样本
样本类别 | 样本数量 |
白样本 | 194952 |
Tor | 12035 |
shadowsockets | 8021 |
以上数据的降维分布,如图7所示:
图7 样本t-SNE数据分布图
在该数据集的模型训练中,选择目前流行度较高的XGBoost、LightGBM、RandForest以及Logistic Regression分类算法进行模型训练,且全部采用算法模型的默认参数进行训练。在数据集的划分中,训练集:测试集:验证集按照4:2:2的比例进行划分,并在训练过程中采用10折交叉验证进行模型训练和结果评估。模型评价指标采用4.1节中描述的四种功能评价指标。
对各模型进行训练后,在测试集上得出的评价指标如表6所示:
表6 不同算法模型在测试集上的评价结果2
分类模型 | Accuracy | Recall | Precision | F1-score |
XGBoost | 0.99997861 | 0.99977728 | 0.99999229 | 0.99988475 |
LightGBM | 0.99997861 | 0.99977728 | 0.99999230 | 0.99988474 |
Random Forest | 0.99993346 | 0.99935500 | 0.99997604 | 0.99966532 |
Logistic Regression | 0.99973386 | 0.99792784 | 0.99954118 | 0.99873235 |
从结果中可以看到,各个模型在各个功能评价指标上表现都较好。为进一步对模型进行更加准确的评价,将各个模型的ROC曲线图以及混淆矩图进行展示,如图7和图8所示。class 0: 白样本,class 1:Tor直连,class 2:Shadowsocks。
图9 四种模型混淆矩阵图
从表6模型评价指标结果以及图8的ROC曲线以及图9的混淆矩阵图中可以看到,各模型在数据集上的表现都较为稳定,且检测能力较好。
5.2 模型在公开数据集上的验证
模型训练的数据都是在实验环境抓取的,除了对实验数据进行交叉验证之外,同样利用CIC Tor2016公开数据集(https://www.unb.ca/cic/datasets/tor.html)验证了模型的检测效果。
该数据集包含22GB的Tor以及nonTor流量,其中Tor流量12GB,nonTor流量9.9GB,Tor流量包含7类:浏览器、电子邮件、聊天、音频流、视频流、FTP、VoIP以及P2P。
5.1节所训练的模型在CIC Tor 2016中的测试结果如表7所示。
根据表7中的结果,训练模型在CIC Tor 2016数据集的测试中,LightGBM误报率最低,Logistic Regression的误报率则在0.481 %。
表7 模型在CIC Tor 2016中的误报率
模型 | 数据总数(单位:个) | 准确率(%) | 误报率(%) |
XGBoost | 2700 | 99.963 | 0.037 |
LightGBM | 2700 | 100.0 | 0.0 |
Random Forest | 2700 | 99.926 | 0.074 |
Logistic Regression | 2700 | 99.519 | 0.481 |
其中,XGBoost将nonTor预测为Tor直连数量为0,将Tor直连预测为nonTor数量为1;LightGBM无预测出错的情况;Random Forest将nonTor预测为Tor直连数量为0,将Tor直连预测为nonTor数量为2;Logistic Regression将nonTor预测为Tor直连数量为1,将Tor预测为nonTor数量为12。另外训练的四种模型都没有出现被预测为Tor非直连的情况。
6、总结
我们按照暗网的常见网络拓扑,搭建的实验环境,利用公司自建的AI训练平台,验证了基于数据流包统计特征和基于加密协议TLS/SSL结合数据流包统计特征、关联DNS上下文统计特征的2种AI模型。
这2种模型都分析了数据集的t-SNE降维分布、模型在不同机器学习算法上的交叉验证结果、在公开数据集上的测试结果,最终结果表明用AI方法来识别暗网流量是可行的,在有些机器学习算法上表现优异,准确率高达99.8%以上。而且使用AI多分类模型,能够区分暗网的3种连接方式:直连、Shadowsocks代理和VPN代理。
评论