【网络BSP开发经验】网络流量应用识别技术

文章目录

  • 网络流量应用识别技术
    • 背景
    • 应用识别基本原理
    • 应用识别主流技术方向
      • 特征识别技术
        • 单报文解析
        • 流特征解析
      • 关联识别技术
        • DNS关联识别
      • 行为识别技术
    • 应用识别框架介绍
    • 应用特征提取经验
      • tcpdump 抓包方式
          • 默认启动
          • 监视指定网络接口的数据包
          • 监视指定主机的数据包
      • 禁用特征提取
      • 加速特征提取
      • 在线时长特征提取

网络流量应用识别技术

背景

儿童上网保护和智能QOS功能作为路由器常见的两个功能,对于应用流量识别的准确度和识别效率具有很高的要求,原有识别框架总体是基于openwrt的oaf框架以及iptables的部分识别,如图所示:

在这里插入图片描述

该框架存在以下几个问题:

1) 解包路径冗余,儿童上网保护与智能QOS以及大量的iptable规则,解包流程多次重复,导致解析效率降低,代码难以维护。

2)与设备强耦合。针对单一报文特征进行解析,对于复杂的特征现有框架单一描述。

应用识别基本原理

应用流量识别的基本原理是在网络报文的netfilter的链中挂上钩子,在钩子中对报文进行解析,然后与应用特征进行对比,如果对比成功则做出相应动作。

下图是linux netfilter在网络层的实现细节:

在这里插入图片描述

netfilter在网络层安装了5个钩子,对应5个链,还可以通过编写内核模块来扩展这5个链的功能。

五个链(chain)及对应钩子
PREROUTING --> NF_INET_PRE_ROUTING

INPUT --> NF_INET_LOCAL_IN

FORWARD --> NF_INET_FORWARD

OUTPUT–> NF_INET_LOCAL_OUT

POSTROUTING --> NF_INET_POST_ROUTING

挂载点解析:

PRE_ROUTING:路由前。数据包进入IP层后,但还没有对数据包进行路由判定前。

LOCAL_IN:进入本地。对数据包进行路由判定后,如果数据包是发送给本地的,在上送数据包给上层协议前。

FORWARD:转发。对数据包进行路由判定后,如果数据包不是发送给本地的,在转发数据包出去前。

LOCAL_OUT:本地输出。对于输出的数据包,在没有对数据包进行路由判定前。

POST_ROUTING:路由后。对于输出的数据包,在对数据包进行路由判定后。

路由判定:

从上图可以看出,路由判定是数据流向的关键点。

第一个路由判定通过查找输入数据包IP头部 的目的IP地址 是否为本机的IP地址,如果是本机的IP地址,说明数据是发送给本机的。否则说明数据包是发送给其他主机,经过本机只是进行中转。

第二个路由判定根据输出数据包IP头部 的目的IP地址 从路由表中查找对应的路由信息,然后根据路由信息获取下一跳主机(或网关)的IP地址,然后进行数据传输。

数据包流向 从图中可以看到,三个方向的数据包需要经过的钩子节点不完全相同:

发往本地:NF_INET_PRE_ROUTING -->NF_INET_LOCAL_IN

转发:NF_INET_PRE_ROUTING -->NF_INET_FORWARD -->NF_INET_POST_ROUTING

本地发出:NF_INET_LOCAL_OUT -->NF_INET_POST_ROUTING

那么为了实现为了处理所有的报文,应用识别的回调函数一定需要挂载在POST_ROUTING链上,因为应用识别需要关注的是路由器转发以及自己发出的所有报文,如果在PRE_ROUTING链上挂载,那么路由器自己作为DNS服务器发出的DNS报文就没有办法解析,所以为了解析所有报文应用识别报文需要放到POST_ROUTING上。

应用识别主流技术方向

特征识别技术

特征识别技术是业务感知应用识别最基本的技术手段,它通过识别非加密报文中的特征信息来确定业务流量所对应的应用。不同的应用通常会采用不同的协议,而不同的应用协议具有各自的特征,这些特征可能是特定端口,特定字符串,或者特定比特序列。除了检测报文中的传统五元组信息外,特征识别技术还会检测报文的应用层信息以获取更多的用于识别应用的特征。

此外某一些应用协议的特征并不会在单个报文中体现,或者从单个报文仅仅存在弱特征,要完整描述这个流则需要多个报文特征,此时就需要对多个报文进行分析,才可以识别出应用。

在这里插入图片描述

单报文解析

单报文解析目前常见的两种解析模式:

1)标准协议解析:

目前支持HTTP,HTTPS,QUIC等标准协议的解析,以及拼多多,迅雷等私有协议的解析。

典型特征报文:虎牙禁用特征

在这里插入图片描述

上图是 单报文匹配中 通过URL禁用虎牙报文。

2)特征序列解析

特征序列的匹配核心不在于五元组信息中,而是在报文的有效载荷中,对于大多的游戏数据报文都会采用私有协议,这种协议特征明显体现在报文载荷存在固定的格式,可以以此作为该应用的报文特征。

在这里插入图片描述

典型报文特征 王者荣耀1号加速特征

在这里插入图片描述

流特征解析

基于单报文的特征识别,在特征序列长度不够时,可能存在误判情况,会发送误判,于是需要综合一条流上的多个序列特征来判断。所以基于快照表项来完成多特征匹配。如下图所示,当报文进入会首先判断报文是否以及加入候选快照表项中,如果不存在才会进行匹配,如果匹配上就会将这条流加入候选快照链表中。当全部匹配完成后就会将这条流从候选快照表项取出放入快照表项。当后续这条流再次进入就可以直接判定:

在这里插入图片描述

典型报文特征 腾讯通用1号加速特征:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关联识别技术

关联识别技术主要用于识别多通道协议的应用。

采用多通道协议传输语音,视频和文件的应用越来越多。多通道协议的控制通道和数据通道是分开的,如FTP,SIP,H323,这些协议通过控制通道协商用来建立数据通道的通信参数(如端口信息等),通过数据通道传输具体的业务数据。特征识别技术可以识别出控制通道的应用与非加密的数据通道的应用,但是对于加密数据通道是没有很好的办法的。

关联识别技术的前提依然是特征识别,首先通过特征识别技术识别出控制通道报文承载的应用,同时从控制通道报文中提取数据通道信息并记录在应用识别关联表中,后续通过关联表识别出数据通道报文并标记位相应的应用,从而实现对于多通道协议报文的应用识别。

在这里插入图片描述

DNS关联识别

DNS 关联识别主要是提取DNS回包中的信息来进行IP与APP之间绑定。通过解析DNS协议中的URL字段匹配到具体的应用,再将所有返回的IP放入快照表,之后与这些IP的通信的时候就可以完成应用识别。

典型报文特征:穿越火线禁用特征

在这里插入图片描述
在这里插入图片描述

如图当检测到带有ap6.ssl.msdk.qq.com的DNS会话,就将该会话中解析出的IP加入禁用快照则可以完成穿越火线的禁用。

行为识别技术

互联网上还有一些更为复杂的应用,很难更具特征关键字作为识别的特征,还有很多应用的通信时加密的,数据加密将导致特征模糊化而无法识别。已有特征识别技术无法基于常规特征识别出这些复杂应用,而行为识别技术通过提取报文的行为特征来识别出报文承载的应用,不同的应用可以利用的行为特征不尽相同。要准备识别一个应用必须抓取海量的流量样本,分析提取出独特的行为特征。

通过上下行流量比例、报文发送频率、报文长度变化规律等,都是可以利用的行为特征。行为识别技术通过综合考察和选择多种行为指标特征指标实现精准的应用识别。

应用识别框架介绍

针对上述问题,我们新框架需要完成以下几个重要的功能点:

1)报文解析流程设备无关化

2)输出报文解析统计数据

3)流量重放

整体应用识别框架可以分为三个部分:

1)报文解析引擎:负责报文解析匹配,输入skb,输出flow_info,flow_info中包含匹配到的应用信息,特征库序号以及smac.然后基于次应用识别引擎开发跨平台报文分析工具,支持流量重放分析。

2)策略执行器:根据报文解析引擎返回的结果对报文进行相关处理(DROP 或者 MARK)

3)用户态接口:解密解析用户态特征库文件,然后通过接口将特征加载到内核态,以及设置禁用信息,设置加速模式接口。

在这里插入图片描述

新框架具有以下几个优点:

  1. 解析路径统一,只挂一个HOOK点,提高解析效率,增强代码可维护性。
  2. 支持流量回放,提升新协议开发与app适配效率。
  3. 支持流量信息分析统计,输出统计信息,便于调试。
  4. 基于流特征的信息匹配,可以匹配更加复杂的特征。
  5. 采用快照缓存机制,提升报文转发效率。

经过比较采用新框架的情况下整体转发性能提升40%以上。

在这里插入图片描述

应用特征提取经验

tcpdump 抓包方式

用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

默认启动
tcpdump

普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

监视指定网络接口的数据包
tcpdump -i eth1

如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。

监视指定主机的数据包

打印所有进入或离开sundown的数据包.

tcpdump host sundown

也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包

tcpdump host 210.27.48.1

打印helios 与 hot 或者与 ace 之间通信的数据包

tcpdump host helios and \( hot or ace \)

截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)

打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.

tcpdump ip host ace and not helios

如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

截获主机hostname发送的所有数据

tcpdump -i eth0 src host hostname

监视所有送到主机hostname的数据包

tcpdump -i eth0 dst host hostname

监视指定主机和端口的数据包

如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令

tcpdump tcp port 23 and host 210.27.48.1

对本机的udp 123 端口进行监视 123 为ntp的服务端口

tcpdump udp port 123

所以抓包一般就是抓取指定网卡指定主机的包

比如要抓取连接WIFI设备IP为192.168.9.100的包 抓包命令为:

tcpdump -i wl0.0 host 192.168.9.100

需要保存为pcap文件则命令为

tcpdump -i wl0.0 -w xxx.pcap host 192.168.9.100

禁用特征提取

禁用的特征提取关键在于提取应用打开的时候的关键报文特征,完成识别后将相关的IP加入到快照列表中,即可完成对于这个应用的禁用。

以小红书和王者荣耀的禁用为例:

禁用最常见的特征是基于DNS特征禁用,也就是需要抓取应用在打开与登陆阶段的DNS报文进行分析,找出关键URL,加入特征库进行测试。

在这里插入图片描述

分析小红书的dns报文,发现大量出现xiaohongshu,xhscdn字段,解析带这样URL的DNS,然后将其中解析出的IP全部加入禁用快照中,然后进行测试,然后小红书的禁用就完成了。

王者荣耀是另外一种常见禁用特征:

这种是基于报文内部特征进行的禁用需要挨个网络流进行分析,找到特征明显的网络流然后进行禁用。

在这里插入图片描述

加速特征提取

加速特征关键需要抓取在游戏过程中的报文,分析在游戏过程中占比较大的几种报文,分析这些报文的特征然后进行标记。或者说找出这几条流建立基于的DNS报文,然后将该IP对应的流加入队列也可以完成加速。

以王者荣耀为例:

在王者荣耀对局的时候的报文进行统计学分析:

在这里插入图片描述

几乎所有报文集中在123.151.69.28

追踪这条流

在这里插入图片描述

可以发现这条流的报文数据部分具有固定的协议特征,提取该协议特征。其他几条流也差不多。

综合分析之后发现王者荣耀对局共有5条流特征,包括两条 腾讯通用特征以及三条王者荣耀独有特征。所以可以将跟踪到的数量用来判断特征是否仍然有效。

对英雄联盟也用同样的方式进行分析:

在这里插入图片描述

其主要分布在两个IP上追踪这两条流

一条是腾讯通用流量 特征是固定33 66 00 0b:

在这里插入图片描述

一条是UDP数据流

在这里插入图片描述

这条数据流的IP经过分析是通过DNS协议解析出来的

所以来说一般的游戏加速特征提取也就是这两种通用的方式,一种是游戏中的主要报文具有特定的格式,需要分析出游戏中占主要部分的流量特征,这条流需要时连续快速的,另外一种时游戏全程和一个固定IP通信,这种需要分析这个IP的来源,一般是通过DNS获取的。

在线时长特征提取

一般而言在线时长特征可以复用禁用与加速特征,如果不行再抓包分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/205700.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Small Data Transmission (二)具体过程

这篇是SDT相关的具体过程,包括RRC层初始化SDT 的条件,MAC 层初始化SDT过程的判断,CG-SDT的具体过程,TA Validation for CG-SDT, CG-SDT TA 验证的路径损耗参考推导,SDT Uplink Time Alignment,RRC inactive中的CG based PUSCH传输和RA based PUSCH传输,依次看下。 初始…

简历上的工作经历怎么写

通过了简历筛选,后续的面试官会仔细阅读你的简历内容。他们在找什么呢?他们希望搞清楚你在某一段经历中具体干了什么,并且判断你的能力具体达到了什么水平。 简历在线制作下载:百度幻主简历 面试官喜欢具体的经历 越具体&#x…

计算机网络(二)

(八)客户端软件设计的细节 A、解析协议号 客户端可能会需要通过协议名指定协议,但是Socket接口是用协议号指定的,这时候我们就需要使用getprotobyname()函数实现协议名到协议号的转换,该函数会返回一个指向protoent的…

第三方实验室LIMS管理系统源码,asp.net LIMS源码

LIMS实验室信息管理系统源码 LIMS系统的功能根据实验室的规模和任务而有所不同,其系统主要功能包括:系统维护、基础数据编码管理,样品管理、数据管理、报告管理、报表打印、实验材料管理、设备管理等。它可以取代传统的手工管理模式而给检测实验室带来巨…

基于SSM框架的餐馆点餐系统的设计

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

什么是Anaconda?作用是?使用python必须要安装嘛?

一、什么是Anaconda以及其作用? 通俗来讲,Anaconda算是一个环境容器,也可以叫环境管理器。 作用:可以在Anaconda容器中为python项目创建不同的环境。在各个不同环境中可以安装不同版本的包并且各个环境互不影响。可以在使用不同项…

唯品会年度特卖大会㊙内购清单㊙

唯品会年度特卖大会㊙内购清单㊙ 内部员工亲友专享,实实在在省钱,❌抢完不补! 今晚8点开抢,提前收藏>> https://t.vip.com/Im3KlTnDSJ8 2023年唯品会年度特卖大会热门会场推荐 1.唯品会年度特卖大会 限时加码!瓜分百万津贴!抢海量…

java论坛数据以及搜索接口实现

一. 内容简介 java论坛数据以及搜索接口实现 二. 软件环境 2.1 java 1.8 2.2 mysql Ver 8.0.13 for Win64 on x86_64 (MySQL Community Server - GPL) 2.3 IDEA ULTIMATE 2019.3 2.4d代码地址 三.主要流程 3.1 创建数据库,创建数据表 3.2 开始编写接口,并测…

字节大佬整理测试用例编写规范

目录 1.1目的 1.2使用范围 二 测试用例编写原则 2.1系统性 2.2连贯性 2.3全面性 2.4正确性 2.5符合正常业务惯例 2.6仿真性 2.7容错性(健壮性) 三 测试用例设计方法 3.1 等价类划分法: 3.2 边界值分析法: 3.3 因果图…

拼多多工作制;奥特曼回归;拼多多市值;雷军回应组装厂;| 每日科技小评

今日科技圈速览 马斯克称人工智能比核弹更危险奥特曼完整备忘录曝光 :未来发展有三大优先事项AI(人工智能)新锐巨头OpenAI的新董事会或许没有给投资者留下一席之地阿里巴巴市值又反超拼多多,长远来看拼多多和阿里巴巴哪个市值高&…

YOLO改进系列之ParNetAttention注意力机制

ParNet注意力是一种用于自然语言处理任务的注意力机制,它是由谷歌在2019年提出的。ParNet注意力旨在解决传统注意力机制在处理长序列时的效率问题。传统的注意力机制在计算注意力权重时,需要对所有输入序列的位置进行逐一计算,这导致了在长序…

JS中的类型转换

该节会全面介绍强制类型转换的优缺点 1、值类型转换 将值从一种类型转换为另一种类型通常称为类型转换,这是显式的情况;隐式的情况称为强制类型转换 JS中的强制类型转换总是返回标量基本类型值(参见第 2 章),如字符…

5 存储器映射和寄存器

文章目录 5.3 芯片内核5.3.1 ICache5.3.2 DCache5.3.3 FlexRAM 5.4 存储器映射5.4.1 存储器功能划分5.4.1.1 存储器 Block0 内部区域功能划分5.4.1.2 储存器 Block1 内部区域功能划分5.4.1.3 储存器 Block2 内部区域功能划分 5.5 寄存器映射5.5.1 GPIO1的输出数据寄存器 5.3 芯…

如何使用内网穿透实现无公网ip环境访问VScode远程开发

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

leetCode 78.子集 + 回溯算法 + 图解

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1…

Jmeter无法录制Chrome和Edge浏览器问题:ERR_SSL_PROTOCOL_ERROR

问题描述: Jmeter使用的是5.6.2,设置了代理proxy,添加了crt证书,但是录制时,在火狐浏览器可以正常录制,但在chrome和Edge上时,访问网站,回车后,一直是空白页面。 在谷歌…

TA-Lib学习研究笔记——Volume Indicators (四)

TA-Lib学习研究笔记——Volume Indicators (四) 1.AD Chaikin A/D Line 量价指标 函数名:AD 名称:Chaikin A/D Line 累积/派发线(Accumulation/Distribution Line) 简介:Marc Chaikin提出的一…

【前端开发】Next.js与Nest.js之间的差异2023

在快节奏的网络开发领域,JavaScript已成为构建可靠且引人入胜的在线应用程序的标准语言。然而,随着对适应性强、高效的在线服务的需求不断增加,开发人员通常不得不从广泛的库和框架中进行选择,以满足其项目的要求。Next.js和Nest.…

每日一练2023.11.30——验证身份【PTA】

题目链接 :验证身份 题目要求: 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5&a…

【动态规划】01第 N 个泰波那契数(easy)

题目链接 :leetcode第 N 个泰波那契数 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求第n个数的泰波那契数。 由题可得: 我们可以把它改写为&#…