from:https://www.jiqizhixin.com/articles/2018-08-11-11

可以通过分析流量包来检测TOR流量。这项分析可以在TOR 节点上进行,也可以在客户端和入口节点之间进行。分析是在单个数据包流上完成的。每个数据包流构成一个元组,这个元组包括源地址、源端口、目标地址和目标端口。

提取不同时间间隔的网络流,并对其进行分析。G.He等人在他们的论文“从TOR加密流量中推断应用类型信息”中提取出突发的流量和方向,以创建HMM(Hidden Markov Model,隐马尔科夫模型)来检测可能正在产生那些流量的TOR应用程序。这个领域中大部分主流工作都利用时间特征和其他特征如大小、端口信息来检测TOR流量。

我们从Habibi等人的“利用时间特征来发现TOR流量的特点”论文中得到启发,并遵循基于时间的方法提取网络流,用于本文TOR流量的检测。但是,我们的架构使用了大量可以获得的其他元信息,来对流量进行分类。这本质上是由于我们已经选择使用深度学习架构来解决这个问题。

四、数据实验-TOR流量检测

为了完成本文的数据实验,我们从纽布伦斯威克大学的Habibi Lashkari等人[11]那里获取了数据。他们的数据由从校园网络流量分析中提取的特征组成。从数据中提取的元信息如下表所示:

表1:从[ 1 ]获得的元信息参数

除了这些参数之外,其他基于流的参数也包括在内。图4显示了一个数据集的样例。

图4:本文使用的数据集实例

请注意,源IP/端口、目标IP/端口和协议字段已经从实例中删除,因为它们会导致模型过拟合。我们使用具有N隐藏层的深度前馈神经网络来处理其他所有特征。神经网络的架构如图5所示。

图5:用于Tor流量检测的深度学习网络表示

隐藏层层数在2和10之间变化。当N=5时是最优的。为了激活,线性整流函数(Rectified Linear Unit, ReLU)用于所有隐藏层。隐藏层每一层实际上都是密集的,有100个维度。

Keras中的FFN的Python代码片段:

model = Sequential() model.add(Dense(feature_dim,  input_dim= feature_dim, kernel_initializer='normal', activation='relu')) for _ in range(0,  hidden_layers-1): model.add(Dense(neurons_num,  kernel_initializer='normal', activation='relu')) model.add(Dense(1,kernel_initializer='normal',  activation='sigmoid')) model.compile(optimizer='adam',  loss='binary_crossentropy', metrics=["accuracy"])

输出节点由Sigmoid函数激活。这被用来输出二分类结果-TOR或非TOR。

我们在后端使用带有TensorFlow的Keras来训练深度学习模块。使用二元交叉熵损失来优化FFN。模型会被训练不同次数。图7显示,在一轮仿真训练中,随着训练次数的增加,性能也在增加,损失值也在下降。

图7:网络训练过程中Tensorboard生成的静态图

我们将深度学习系统的结果与其他预测系统进行了比较。使用召回率(Recall)、精准率(Precision)和F-Score这些标准分类指标来衡量预测系统性能。我们基于深度学习的系统能够很好地检测TOR类。但是,我们更加重视非TOR类。可以看出,基于深度学习的系统可以减少非TOR类的假阳性情况。结果如下表:

表2:用于TOR流量检测实验的深度学习和机器学习模型结果

在各种分类器中,随机森林和基于深度学习的方法比其他方法更好。所示结果基于5,500个训练实例。本实验中使用数据集的大小相对小于典型的基于深度学习的系统。随着训练数据的增加,基于深度学习的系统和随机森林分类器的性能将会进一步提升。

但是,对于大型数据集来说,基于深度学习的分类器通常优于其他分类器,并且可以针对相似类型的应用程序进行推广。例如,如果需要训练检测使用TOR的应用程序,那么只需要重新训练输出层,并且其他所有层可以保持不变。而其他机器学习分类器则需要在整个数据集上重新训练。请记住,对于大型数据集来说,重新训练模型需要耗费巨大的计算资源。

尾记

每个企业面临的匿名流量检测的挑战是存在细微差别的。攻击者使用TOR信道以匿名模式偷窃数据。当前流量检测供应商的方法依赖于拦截TOR网络的已知入口节点。这不是一个可拓展的方法,而且很容易绕过。一种通用的方法是使用基于深度学习的技术。

本文中,我们提出了一个基于深度学习的系统来检测TOR流量,具有高召回率和高精准率。请下面的评论部分告诉我们您对当前深度学习状态的看法,或者如果您有其他替代方法。

References

[1]: Quamar Niyaz, Weiqing Sun, Ahmad Y Javaid,     and Mansoor Alam, “A Deep Learning     Approach for Network Intrusion Detection System,”  IEEE Transactions on Emerging     Topics in Computational Intelligence, 2018.

[2]: Daniel Gibert, “Convolutional Neural Networks     for Malware Classification,” Thesis 2016.

[3]: Wookhyun Jung, Sangwon Kim,, Sangyong Choi,     “Deep Learning for Zero-day     Flash Malware Detection,” IEEE security, 2017.

[4]: Paweł Kobojek and Khalid Saeed, “Application of Recurrent

使用深度学习检测TOR流量——本质上是在利用报文的时序信息、传输速率建模的更多相关文章

  1. AI安全初探——利用深度学习检测DNS隐蔽通道

    AI安全初探——利用深度学习检测DNS隐蔽通道 目录 AI安全初探——利用深度学习检测DNS隐蔽通道 1.DNS 隐蔽通道简介 2. 算法前的准备工作——数据采集 3. 利用深度学习进行DNS隐蔽通道 ...

  2. 使用深度学习检测DGA(域名生成算法)——LSTM的输入数据本质上还是词袋模型

    from:http://www.freebuf.com/articles/network/139697.html DGA(域名生成算法)是一种利用随机字符来生成C&C域名,从而逃避域名黑名单检 ...

  3. R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD, R-FCN系列深度学习检测方法梳理

    1. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation 技术路线:selec ...

  4. R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理

    1. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation 技术路线:selec ...

  5. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!

    DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!——和一个句子的分词算法CRF没有区别!注:传统DDos检测直接基于IP数据发送流量来识别, ...

  6. 深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

    作者简介:akshay pai,数据科学工程师,热爱研究机器学习问题.Source Dexter网站创办人. TensorFlow是Google的开源深度学习库,你可以使用这个框架以及Python编程 ...

  7. 深度学习vs机器学习 | 这些本质区别你知道多少?

    目录: 数据相关性 硬件依赖性 特征工程 解决问题方法 执行时间 可解释性 一.数据相关性 深度学习与传统机器学习最重要的区别是,随着数据量的增加,其性能也随之提高.当数据很小的时候,深度学习算法并不 ...

  8. 深度学习笔记 (二) 在TensorFlow上训练一个多层卷积神经网络

    上一篇笔记主要介绍了卷积神经网络相关的基础知识.在本篇笔记中,将参考TensorFlow官方文档使用mnist数据集,在TensorFlow上训练一个多层卷积神经网络. 下载并导入mnist数据集 首 ...

  9. 深度学习框架TensorFlow在Kubernetes上的实践

    什么是TensorFlow TensorFlow是谷歌在去年11月份开源出来的深度学习框架.开篇我们提到过AlphaGo,它的开发团队DeepMind已经宣布之后的所有系统都将基于TensorFlow ...

随机推荐

  1. 5+ App开发打包指南

    HTML5 Plus应用概述 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实 ...

  2. 【BZOJ】1875: [SDOI2009]HH去散步

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1875 注意的是路径不可以重复,所以这题把边看成点.每一条无向边拆成两条有向边. 令${F[ ...

  3. pymongo.errors.OperationFailure: Authentication failed.

    mongoDB有不同的认证机制,3.0版本以后采用的是'MONGODB-CR', 之前的版本采用的是'MONGODB-CR'. 所以,以我的版本情况,显然应该用'SCRAM-SHA-1' from p ...

  4. linux du

    命令参数: -a或-all  显示目录中个别文件的大小. -b或-bytes  显示目录或文件大小时,以byte为单位. -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文 ...

  5. 读书笔记《Spring Boot实战 —— Java EE 开发的颠覆者》

    Spring框架是轻量级的企业级开发一站式解决方案 Spring使用简单的POJO Plain Old Java Object 无限制的普通Java对象 Spring Framework Runtim ...

  6. django分页 Paginator

    分页功能是几乎所有的网站上都需要提供的功能,当你要展示的条目比较多时,必须进行分页,不但能减小数据库读取数据压力,也有利于用户浏览. Django又很贴心的为我们提供了一个Paginator分页工具, ...

  7. leecode第一百三十六题(只出现一次的数字)

    class Solution { public: int singleNumber(vector<int>& nums) { int len=nums.size(); ; ;i&l ...

  8. JNI手动释放内存(避免内存泄露)

    . 哪些需要手动释放? 不要手动释放(基本类型): jint , jlong , jchar 需要手动释放(引用类型,数组家族): jstring,jobject ,jobjectArray,jint ...

  9. nRF52832-PPI部分学习

    PPI部分学习思维导图 PPI原理 1.1PPI简介 PPI实现的就是通过初始化配置,将不同外设的事件和任务连接起来,让事件自动去触发任务的功能,PPI有多个通道, 每个通道包含一个EEP和TEP,使 ...

  10. Codeforces 985 E - Pencils and Boxes

    E - Pencils and Boxes 思路: dp 先排个序,放进一个袋子里的显然是一段区间 定义状态:pos[i]表示小于等于i的可以作为(放进一个袋子里的)一段区间起点的离i最近的位置 显然 ...