机器学习网络流量识别的应用

一、概述

1.1 网络流量概述

网络流量是指在计算机网络中传输的数据量和类型,包括所有的进出流量,如用户请求、数据传输、协议交换等。
(网络流量 是所有数据在网络中的传输,涵盖了多种类型的流量。是相对更底层的应用)

网络流量和网络安全的关系: 网络流量的管理和监控是确保网络安全的关键部分.
网络安全:旨在保护网络和其数据免受未经授权的访问、攻击、损坏或滥用。网络安全措施包括防火墙、入侵检测系统、加密、身份验证等。

1.1.1 网络流量

网络流量 是一个广泛的概念,涵盖所有形式的网络数据传输,包括正常用户流量、管理流量等。

  • 网络流量 是所有数据在网络中的传输,涵盖了多种类型的流量。

特征:

  • 类型:可以是正常的用户流量、管理流量、控制流量等。
  • 监控:网络流量监控涉及分析流量的源、目的、协议、频率等。

“网络流量监控可以帮助识别机刷流量”

1.1.2 机刷流量

机刷流量 是特定类型的网络流量,由自动化工具生成,主要用于抓取数据执行特定任务

  • 机刷流量 是由自动化工具生成的网络流量,特定于数据抓取和自动化任务。

机刷流量 是 网络流量 的一个子集,指的是特定的自动化流量。

特征:

  • 自动化:由脚本或机器人生成,通常不涉及人工操作。
  • 模式:可能表现出一致的访问模式,如高频率请求、相同的请求模式等。
  • 目的:可以用于数据抓取、价格监控、竞争分析、广告欺诈等。

影响:

  • 负载:机刷流量可能导致服务器负载增加,影响正常用户的体验。
  • 数据安全:可能导致数据泄露或被滥用。

定义:这是识别和分类自动化流量的过程,包括检测由爬虫、机器人或脚本生成的流量。
目标:识别哪些流量是由自动化工具生成的,并与正常的用户流量区分开来。
方法:使用各种技术和算法(如行为分析、请求模式识别、IP 地址监控等)来检测机刷流量。

1.1.3 反爬

是一种保护机制,旨在识别和阻止机刷流量,防止自动化工具对网站内容进行抓取。

反爬 针对的是机刷流量,它通过各种技术手段来识别和阻止这些自动化请求,从而保护网站的内容和资源。

  • 反爬 是防止机刷流量的措施,旨在保护网站和应用的数据不被自动化工具非法访问或抓取。

特征:

  • 技术措施:包括验证码、IP限制、行为分析、动态内容加载等。
  • 目标:保护网站数据不被未经授权的爬虫或自动化工具抓取。

影响

  • 防护:通过识别和阻止爬虫流量,保护网站的数据安全和性能。

三者的关系:

网络流量 监控可以帮助识别机刷流量,反爬技术则通过分析和过滤这些流量来减少其影响。

1.1.4 反爬与机刷流量识别

机刷流量识别(Bot Traffic Identification)、反爬(Anti-Scraping)

可以将机刷流量识别视为反爬的一个重要组成部分或上游步骤

1. 关系

机刷流量识别 是 反爬 的前提和基础步骤。通过识别机刷流量,系统能够更准确地实施反爬策略。
识别:首先,需要通过各种检测技术识别出哪些流量是由自动化工具产生的。这包括分析流量模式、行为特征等。
响应:一旦识别出机刷流量,就可以应用反爬策略来阻止这些自动化工具。反爬措施可能包括发放验证码、限制访问频率、阻止特定IP等。

2. 总结

  • 机刷流量识别 是识别自动化流量的过程,它为 反爬 提供了必要的信息和基础。
  • 反爬 策略利用这些识别信息来防止自动化工具抓取数据,保护网站免受机刷流量的影响。

3. 具体流程

数据收集:收集所有进入网站的流量数据,包括用户请求和行为。
流量分析:分析这些流量数据,以识别异常模式和行为特征。
机刷流量识别:使用机器学习算法、规则引擎等工具识别出哪些流量是由自动化工具生成的。
实施反爬措施:对识别出的机刷流量实施反爬技术,例如发放验证码、限制请求频率、阻止访问等。

1.2 网络流量数据分类方法

网络流量的数据分类的主要方法有 (1)误用检测 (2)异常检测(3)状态完整协议分析

误用检测也称为签名检测,根据预先定义的签名和过滤器,以有效的确定已知的入侵,但对于匿名入侵却无法检测,过度依赖于人为更新语料库。异常检测不是未知入侵的可靠检测方法,误报率高。市场上的大多数商业工具都是误用检测和异常检测的结合体。常用的强有力方法是状态完整协议分析,其使用软件供应商专有设计的功能来确定特定约定和应用程序的差异。

1.3 异常检测的定义和方法

机器学习方法是目前用于IDS的突出方法。基于机器学习的网络流量数据分类大概可分为三种:聚类、传统机器学习分类方法和深度学习。
(1)聚类:无监督学习,如K-Means,FCM等;
(2)传统机器学习分类方法:半监督学习,如SVM,RF,GBT等;
(3)深度学习:监督学习,如DNN,CNN,RNN等;

1.4 异常检测的意义

异常数据检测非常重要。因为数据中的异常转化为各种应用领域中重要(且通常至关重要)可操作的信息。例如,计算机网络中的异常流量模式可能意味着被黑客攻击的计算机正在向未经授权的目的地发送敏感数据。异常 MRI 图像可能表示存在恶性肿瘤。信用卡交易数据中的异常可能表明信用卡或身份盗窃或航天器传感器的异常读数可能表示航天器某些部件存在故障。

1.5 相关概念

  • IDS
    IDS(Intrusion Detection System,入侵检测系统)是一种用于监视和分析计算机网络或系统中的活动,以识别和响应潜在的安全威胁或攻击的技术。
    IDS 可以帮助检测和记录异常或恶意行为,从而保护系统免受未经授权的访问或损害。

二、基于机器学习的方法

what: 网络流量数据分类(基于机器学习)

1.1 聚类

1.2 深度学习

三、数据集

首先,对数据集进行预处理,即将字符串属性转换为数字属性。

主要有KDDCup-99数据集、NSL-KDD数据集,以及最近推出的数据集,即UNSW-NB15。

3.1 UNSW-NB15数据集

UNSW-NB15数据集被认为是评价现有和新型IDS方法的可靠数据集。该数据集有254w条记录49个特征,其中有9种常见攻击正常信息占数据集大小88%攻击信息12%

数据集以两种形式公开提供(1) 完整数据集;(2) 完整数据集的一小部分。一小组数据集有 175,341 条train记录和 82,332 条test记录。

ID Type Count Train (drop_duplicates) Test (drop_duplicates)
0 Normal 93000 56000 (51890) 37000 (34206)
1 Generic 58871 40000 (4181) 18871 (3657)
2 Exploits 44525 33393 (19844) 11132 (7609)
3 Fuzzers 24246 18184 (16150) 6062 (4838)
4 DoS 16353 12264 (3806) 4089 (1718)
5 Reconnaissance 13987 10491 (7522) 3496 (2703)
6 Analysis 2677 2000 (1594) 677 (446)
7 Backdoor 2329 1746 (1535) 583 (346)
8 Shellcode 1511 1133 (1091) 378 (378)
9 Worms 174 130 (127) 44 (44)
Total 257673 175341 82332

说明:

攻击类别 描述
正常 没有恶意活动的连接记录
模糊器 入侵者通过连接随机向网络提供数据来降低网络资源
分析 端口扫描、html文件渗透和垃圾邮件攻击属于分析攻击类别
后门 入侵者通过逃避基线安全性来访问特定的计算机
婴儿床 Dos是一种攻击,旨在降低网络资源,因此甚至合法用户也无法访问网络资源
通用 通用是对块密码的攻击
侦查 攻击者与目标系统密切合作,以捕获与漏洞相关的信息
壳码 用于开发软件漏洞的一小块程序
蠕虫 通过复制自己,蠕虫通过计算机网络分布

kaggle-UNSW_NB15数据集

  • 特征介绍 (49个)
    id,dur,proto,service,state,spkts,dpkts,sbytes,dbytes,rate,
    sttl,dttl,sload,dload,sloss,dloss,sinpkt,dinpkt,sjit,djit,
    swin,stcpb,dtcpb,dwin,tcprtt,synack,ackdat,smean,dmean,trans_depth,
    response_body_len,ct_srv_src,ct_state_ttl,ct_dst_ltm,ct_src_dport_ltm,ct_dst_sport_ltm,ct_dst_src_ltm,is_ftp_login,ct_ftp_cmd,ct_flw_http_mthd,
    ct_src_ltm,ct_srv_dst,is_sm_ips_ports,attack_cat,label

1.srcip: 源 IP 地址。
2.sport: 源端口号。
3.dstip: 目标 IP 地址。
4.dsport: 目标端口号。
5.protocol: 协议类型(如 TCP、UDP、ICMP)。
6.state: 连接状态(如 SYN、ESTABLISHED)。
7.duration: 连接持续时间。
8.totpkt: 总数据包数。
9.totbyte: 总字节数。
10.srcbyte: 从源 IP 地址发送的数据字节数。
11.dstbyte: 到目标 IP 地址的数据字节数。
12.sintpkt: 源到目标的数据包间隔。
13.dintpkt: 目标到源的数据包间隔。
14.smean: 源数据包的平均字节数。
15.dmean: 目标数据包的平均字节数。
16.smin: 源数据包的最小字节数。
17.dmin: 目标数据包的最小字节数。
18.smax: 源数据包的最大字节数。
19.dmax: 目标数据包的最大字节数。
20.srcip_last: 源 IP 地址最后一次出现的时间。
21.dstip_last: 目标 IP 地址最后一次出现的时间。
22.sport_last: 源端口号最后一次出现的时间。
23.dsport_last: 目标端口号最后一次出现的时间。
24.protocol_last: 协议类型最后一次出现的时间。
25.state_last: 连接状态最后一次出现的时间。
26.srcbyte_last: 从源 IP 地址发送的字节数最后一次出现的时间。
27.dstbyte_last: 到目标 IP 地址发送的字节数最后一次出现的时间。
28.sintpkt_last: 源到目标的数据包间隔最后一次出现的时间。
29.dintpkt_last: 目标到源的数据包间隔最后一次出现的时间。
30.smean_last: 源数据包的平均字节数最后一次出现的时间。
31.dmean_last: 目标数据包的平均字节数最后一次出现的时间。
32.smin_last: 源数据包的最小字节数最后一次出现的时间。
33.dmin_last: 目标数据包的最小字节数最后一次出现的时间。
34.smax_last: 源数据包的最大字节数最后一次出现的时间。
35.dmax_last: 目标数据包的最大字节数最后一次出现的时间。
36.srcip_count: 源 IP 地址的出现次数。
37.dstip_count: 目标 IP 地址的出现次数。
38.sport_count: 源端口号的出现次数。
39.dsport_count: 目标端口号的出现次数。
40.protocol_count: 协议类型的出现次数。
41.state_count: 连接状态的出现次数。
42.srcbyte_count: 从源 IP 地址发送的字节数的出现次数。
43.dstbyte_count: 到目标 IP 地址发送的字节数的出现次数。
44.sintpkt_count: 源到目标的数据包间隔的出现次数。
45.dintpkt_count: 目标到源的数据包间隔的出现次数。
46.smean_count: 源数据包的平均字节数的出现次数。
47.dmean_count: 目标数据包的平均字节数的出现次数。
48.smin_count: 源数据包的最小字节数的出现次数。
49.dmin_count: 目标数据包的最小字节数的出现次数。

kaggle-notebook

  • 包含了 数据样例、特征说明、模型构建全流程(相关包import、数据分析和基本的预处理、探索性数据分析、数据预处理、模型构建)、
  1. 数据维度信息:dataset shape: (2540043, 49)
  2. 数据类型统计:40个数字类型、9个分类列
  3. 数据重复检查duplicated: 4w多重复; 删除重复数据。
  4. 空值扎占比统计 和处理(给默认值)。
  5. 描述性分析)指的是对数据进行总结和描述的过程
  6. 对分类属性进行描述性分析)指的是对数据集中分类变量(如类别、标签或分组)的统计描述和总结
  7. 特征处理:二值、数字化等
  8. 数据检查。
  9. 数据 标准化、

3.1.1 预处理

  • Featutre Engineering
    c = a-b
    c = a/(b+1)

数值的加减乘除运算。

  • Target feature Encoding
    onehot 编码

  • Feature Scaling(特征缩放)
    标准化

3.1.2

四、特征选择和简化方法