洋葱路由(Dark Web)简介
访问原理
部分网络只能通过Tor(“洋葱路由”项目)和I2P(“隐形网计划”)等网络访问。用户广泛使用洋葱浏览器和Tor可访问的站点,站点可以通过“.onion”域名识别。Tor专注于提供对互联网的匿名访问,而I2P则专注于匿名网站托管。分层加密系统使得基于洋葱路由访问网站的用户的身份和位置保持匿名,无法被追踪。洋葱路由中的加密技术通过大量中间服务器发送用户数据,保护了用户身份并保障匿名。传输的信息只能由路径中的后续节点解密,而这些节点通向出口节点。因为系统过于复杂,所以几乎不可能再生节点路径并逐层解密信息。由于高层次的加密,网站无法跟踪其用户的地理位置和IP,用户也无法获取网站主机的有关信息。因此,用户之间的通信是高度加密的,允许用户以保密方式交流、发博客以及共享文件。
下图为洋葱路由连接原理和网络拓扑图。
洋葱路由带来的网络安全问题
许多黑客通过洋葱路由网络出售服务,他们或独自行动或团体行动。这些黑客团体包括xDedic、hackforum、Trojanforge、Mazafaka、dark0de和TheRealDeal。针对金融机构和银行的网络犯罪和黑客服务也通过洋葱路由提供。各国政府和私营组织已经开始尝试监测这项活动。互联网规模的DNS分布式反射拒绝服务(DRDoS)攻击也通过利用洋葱路由实现。此外洋葱路由网络中还存在许多诈骗类.onion站点,用户下载网站提供的工具后,电脑会感染特洛伊木马或被植入后门。
项目实施步骤
该项目的意义在于使用流量检测的方法区分出正常网络行为产生的网络流量和通过洋葱路由访问的网络流量
项目所使用的数据集和工具
机器学习框架: scikit-learn csv格式数据集处理: Pandas 流量特征提取工具: CICflowmeter 流量采集工具: Wireshark ![在这里插入图片描述](https://img-blog.csdnimg.cn/7c559e8f16e643ebb985a1d6c01f6430.png](https://img-blog.csdnimg.cn/94dd3fb331104765815122e29215648d.png)
In [ ]
#安装相关的第三方包
!pip install scikit-learn
!pip install pandas
!pip install cicflowmeter
In [ ]
流量采集实现
笔者的Wireshark安装于Ubuntu系统中,在Ubuntu可以使用apt-get直接安装Wireshark和其对应的服务

In [ ]
!sudo apt-get update
!sudo apt-get install wireshark
启动Wireshark需要请求使用管理员权限,如果未通过管理员权限启动会出现找不到采集端口的问题

In [ ]
!sudo wireshark
如下图所示,启动Wireshark后需要选择端口进行抓包
一般直接选择对连接到因特网的网卡进行抓包 抓包后保存为pcap格式

对采集到的流量特征提取
接下来将使用CICflowmeter工具对流量进行特征提取
CICflowmeter是一款流量特征提取工具,该工具输入pcap文件,输出pcap文件中包含的数据包的特征信息,共80多维,以csv表格的形式输出。
CICflowmeter提取的都是传输层的一些统计信息,以一个TCP流或一个UDP流为一个单位。 TCP流以FIN标志为结束,UDP以设置的flowtimeout时间为限制,超过时间就判为结束。 在一个TCP流中有很多个数据包,先三次握手而后传输信息再四次挥手。 统计一个流中的统计信息作为提取的特征。 统计的特征都分前后向,规定由源地址到目的地址为正向,目的地址到源地址为反向。 为每个流构建一个标志叫Flow ID:192.168.31.100-183.232.231.174-46927-443-6,由源地址、目的地址、协议号组成。

In [ ]
#!cicflowmeter -f *.pcap -c *.csv #通过该命令将pcap格式的流量抓包文件转化为csv格式的特征文件(*号为文件名)。

上图为CICflowmeter工作时的输出。通过CICflowmeter我们可以从抓包文件中得到具有八十多个特征的csv格式数据集。 不过,在本次任务中我们不需要自行收集流量数据,加拿大网络安全研究所提供了使用相同工具和方法生成的数据集,数据集名称为ISCXTor2016。

数据集预处理
在数据集中存在空值或无限值的情况,在这种情况下需要对数据集进行预处理以防止在后面的步骤中出现错误。 首先需要引入第三方包

In [1]
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn import linear_model
import numpy as np
from sklearn.utils import shuffle
from sklearn import svm
from sklearn import preprocessing
读取数据集并去除空值,注意!需要将特征和标签分离,避免在归一化的过程中出现错误

In [4]
file = pd.read_csv(‘data/data150018/SelectedFeatures-10s-TOR-NonTOR.csv’,skipinitialspace=True)
print(file.columns)
with pd.option_context(‘mode.use_inf_as_na’, True):
file = file.dropna()
#file = shuffle(file)
y = file.iloc[:,-1]
standard_scaler = StandardScaler()
Index([‘Source IP’, ‘Source Port’, ‘Destination IP’, ‘Destination Port’,
‘Protocol’, ‘Flow Duration’, ‘Flow Bytes/s’, ‘Flow Packets/s’,
‘Flow IAT Mean’, ‘Flow IAT Std’, ‘Flow IAT Max’, ‘Flow IAT Min’,
‘Fwd IAT Mean’, ‘Fwd IAT Std’, ‘Fwd IAT Max’, ‘Fwd IAT Min’,
‘Bwd IAT Mean’, ‘Bwd IAT Std’, ‘Bwd IAT Max’, ‘Bwd IAT Min’,
‘Active Mean’, ‘Active Std’, ‘Active Max’, ‘Active Min’, ‘Idle Mean’,
‘Idle Std’, ‘Idle Max’, ‘Idle Min’, ‘label’],
dtype=‘object’)
对特征进行归一化,并转化为Pandas中的DataFrame

In [5]
allX = file.drop([‘Source IP’,‘Destination IP’,‘label’],axis=1)
column = allX.columns
将X和Y连接后使用sklearn中的model_selection模块划分训练集和测试集

In [6]
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(allX, y,test_size=0.25)
数据降维和模型训练
由于原始数据维度较大,为了降低训练时间开销,在这里通过PCA方法对数据进行降维。值得注意的是训练集和测试集需要分别进行降维,避免训练集的信息泄露至测试集中。

In [7]
from sklearn.decomposition import PCA
feature_reducted_train_data = PCA(n_components=24).fit_transform(x_train)
feature_reducted_test_data = PCA(n_components=24).fit_transform(x_test)
引入和建立多个不同的机器学习模型

In [8]
from sklearn.ensemble import AdaBoostClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn import svm
#使用KNN算法进行训练和预测
knn = KNeighborsClassifier(n_neighbors=2)
knn.fit(feature_reducted_train_data, y_train)
knn_predict = knn.predict(feature_reducted_test_data)
#使用Adaboost算法进行训练和预测
randomforest = AdaBoostClassifier()
randomforest.fit(feature_reducted_train_data, y_train)
randomforest_predict = randomforest.predict(feature_reducted_test_data)
#使用SVM算法进行训练和预测
svm_object = svm.SVC(kernel=‘linear’, max_iter=1000000,C=0.1)
svm_object.fit(feature_reducted_train_data, y_train)
svm_predict = svm_object.predict(feature_reducted_test_data)
使用classification_report进行结果评估
In [ ]
from sklearn import metrics
print(metrics.classification_report(y_test, knn_predict))
print(metrics.classification_report(y_test, randomforest_predict))
print(metrics.classification_report(y_test, svm_predict))
请点击此处查看本环境基本用法.
Please click here for more detailed instructions.

基于网络安全问题的洋葱路由流量识别相关推荐

  1. 洋葱网络流量识别方案

    洋葱网络Tor流量检测方案 1.Tor简介 Tor通过连接一系列虚拟隧道从而允许组织和个人通过公共网络共享信息而不会损害隐私.同样,Tor是一种有效的审查规避工具,允许其用户访问其他被阻止的目的地或内 ...

  2. medRxiv | 基于网络的人类冠状病毒的药物重定位

    随着新型冠状病毒(2019-nCoV)感染肺炎疫情持续发展,武汉.全国各地以及全球的疫情牵动着每一个人的心.2020年2月5日medRxiv发表了研究工作"Network-based Dru ...

  3. 网络管理员在预先分配和识别作为_14个网络管理员必备的最佳网络流量分析工具,收藏了...

    企业网络每天都会产生大量数据.企业可以分析这些数据,以深入了解网络运行情况或发现安全威胁.网络流量分析(NTA)解决方案允许网络管理员收集流经网络的流量数据.这些工具通常用于识别性能问题和/或发现安全 ...

  4. 网络管理员在预先分配和识别作为_网络管理员必备流量分析工具,果断转发收藏!...

    企业网络每天都会产生大量数据.企业可以分析这些数据,以深入了解网络运行情况或发现安全威胁.网络流量分析(NTA)解决方案允许网络管理员收集流经网络的流量数据.这些工具通常用于识别性能问题和/或发现安全 ...

  5. matlab 神经网络dpi,基于DPI和BP神经网络的P2P流量识别研究

    研究与开发 现代计算机 2019.04 上 文章编号:1007-1423(2019)10-0031-05 DOI:10.3969/j.issn.1007-1423.2019.10.007 基于 DPI ...

  6. linux选择最短路径sdn,基于网络流量的SDN最短路径转发应用

    原标题:基于网络流量的SDN最短路径转发应用 网络的转发是通信的基本功能,其完成信息在网络中传递,实现有序的数据交换.通过SDN控制器的集中控制,可以轻松实现基础的转发算法有二层MAC学习转发和基于跳 ...

  7. 《基于深度学习的加密流量识别研究》-2022毕设笔记

    参考文献: 基于深度学习的网络流量分类及异常检测方法研究_王伟 基于深度学习的加密流量分类技术研究与实现_马梦叠 基于深度学习的加密流量识别研究综述及展望_郭宇斌 基于深度学习的加密流量算法识别研究_ ...

  8. 【网络流量识别】【深度学习】【一】IRNN和LSTM—网络入侵检测系统深度学习方法的比较分析(N-IDS):N-IDS 的深度学习

    说在前面:由于博主刚入门学习网络流量识别和检测这块,所以对于一些介绍里面的理论知识可能会全部摘抄下来,不过本系列写着写着基础知识就会少了.然后写方法,简单写一下方法的原理和原理图,最后说一下数据集和结 ...

  9. 用姓名字段统计人数_基于 Wide amp; Deep 网络和 TextCNN 的敏感字段识别

    数据治理 (Data Governance) [1]作为一种数据管理的重要一环,主要目的在于保证数据在整个生命周期内的高质量性.数据治理的核心包括:数据的可用性 (Availability),易用性 ...

最新文章

  1. OWASP top 10 (2017) 学习笔记--失效的身份验证
  2. python3 修饰器_【python3】修饰器简单理解
  3. CRMEB支付状态未改变
  4. java super.getclass_Java Class 类 getSuperClass()方法及示例
  5. 综合场景搞清楚同步 异步 阻塞 非阻塞
  6. 计算机硬件密码,计算机硬件技术基础综合性实验任务书(08)密码门锁的模拟_C
  7. Ubuntu Git安装与使用
  8. 读《JavaScript语言精粹(修订版)》心得
  9. 联想打印机驱动安装报错
  10. 互联网防骗指南[摘录58同城]
  11. 微信公众号获取AppID和AppSecret
  12. CVPR21-无监督异常检测《CutPaste:Self-Supervised Learning for Anomaly Detection and Localization》
  13. uniapp获取手机可接收的所有的WiFi名称与信号强度
  14. 另类解决部分黑苹果Monterey下蓝牙睡眠后启动异常缓慢的问题
  15. 用Scipy实现K-means聚类算法
  16. Adobe带你解锁办会新技能
  17. 优秀课程案例|如何用scratch画柱形统计图
  18. dammit! (靠!)
  19. val什么意思vb中的属性值_VB: ByVal是什么意思
  20. linux常见命令之wc命令用法。

热门文章

  1. html文件汉字乱码
  2. 高质量音频混音算法及应用
  3. Linux 挂载硬盘
  4. Ubuntu下挂载win7的磁盘分区
  5. Open Financial System X Metaverse Pro: Providing One-Stop XMETA Digital Asset Management Servic
  6. JavaScript实现九九乘法表
  7. 几何级数的计算机验证法c语言解析,c语言编程20例.doc
  8. canvas简单的实现画笔功能
  9. python异常(虫师《selenium3自动化测试实战--基于Python语言笔记7》)
  10. 金斧子note(Technical support)