欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 基于HTTPS流量信息识别移动应用的方法独创技术15095字

基于HTTPS流量信息识别移动应用的方法

2021-02-15 05:15:28

基于HTTPS流量信息识别移动应用的方法

  技术领域

  本发明涉及流量分析技术领域,尤其涉及数据抓包领域,具体是指一种基于HTTPS流量信息识别移动应用的方法。

  背景技术

  随着互联网技术的发展,网络数据流量越来越大,这对数据包流量分析提出了极大的挑战。而基于数据面的数据包处理框架(Data Plane Development Kit,DPDK)成为数据包分析的主流方法。使用DPDK提供的快速收发包接口在用户态进行抓包分析,同时结合数据包深度检测技术(Deep Packet Inspection,DPI),针对不同的网络协议在应用层载荷(例如HTTP、DNS等)进行深度检测,通过对报文的有效载荷检测决定其合法性。如果数据包是经过加密传输的,则采用DPI方式的流控技术则无法识别。

  现在很多移动应用,为了本身数据传输的安全性,会使用HTTPS协议进行数据交互。一旦移动应用使用了HTTPS进行传输,对于一些流量分析和安全监控领域,这些移动应用就是一种盲区,几乎是一无所知。HTTPS的安全基础是SSL,所以HTTPS协议中一定含有服务器域名指示(Server Name Indication,SNI)信息。SNI是一项用于改善SSL/TLS的技术,它允许客户端在发起SSL握手请求时(具体说来,是客户端发出SSL请求中的ClientHello阶段),提交请求的域名信息,从而使得服务器能够切换到正确的域并返回相应的证书。

  发明内容

  本发明的目的是克服了上述现有技术的缺点,提供了一种满足安全性好、操作简便、适用范围较为广泛的基于HTTPS流量信息识别移动应用的方法。

  为了实现上述目的,本发明的基于HTTPS流量信息识别移动应用的方法如下:

  该基于HTTPS流量信息识别移动应用的方法,其主要特点是,所述的方法包括以下步骤:

  (1)分析收集到的网络公开信息或抓取包,得到域名和移动应用的键值对样本库,创建数据库和表;

  (2)完成程序运行环境配置;

  (3)初始化DPDK的环境抽象层,初始化网卡和CPU核队列,连接键值对数据库,启动核上线程;

  (4)接收流量数据存入不同核队列,取出流量数据包,按照协议栈分析定位到应用层数据的起始位置;

  (5)对应用层数据进行分析,按照HTTPS会话中第一个数据包的结构进行解析,获取其中的SNI;

  (6)匹配识别到的SNI和样本库,查询定位移动应用。

  较佳地,所述的步骤(3)具体包括以下步骤:

  (3.1)根据系统的运行参数,将域名规则和移动应用名的映射表读到内存中;

  (3.2)初始化DPDK的环境抽象层环境;

  (3.3)初始化接收队列和发送队列,初始化内存池,初始化网卡接口;

  (3.4)启动CPU核上线程。

  较佳地,所述的步骤(4)具体包括以下步骤:

  (4.1)根据MAC地址以及源地址和目标地址的端口计算五元组的Hash值;

  (4.2)通过Hash映射到对应的逻辑核的接收队列;

  (4.3)将数据包加入至接收队列,相同会话的数据包在逻辑核上的线程中处理;

  (4.4)处理线程从队列中取出数据包,根据网络层和传输层的五元组信息构建会话对象,加入会话对象管理器。

  较佳地,所述的步骤(5)具体包括以下步骤:

  (5.1)判断应用层数据包数据一个字节是否符合握手协议,如果是,则继续步骤(5.2);否则,丢弃数据包;

  (5.2)判断剩余数据包长度是否满足SSL头部和握手协议头部的大小,如果是,则继续步骤(5.3);否则,丢弃数据包;

  (5.3)解析SSL头部和握手协议头部,判断握手协议是否为ClientHello,如果是,则继续步骤(5.4);否则,丢弃数据包;

  (5.4)解析握手协议ClientHello数据包,按照字节内容依次获取客户端版本号、32位随机数、会话ID、密码套件、压缩内容和扩展字段;

  (5.5)判断是否有扩展字段,如果是,则解析扩展字段;否则,丢弃数据包;

  (5.6)判断扩展字段类型是否为0,如果是,则即为扩展信息SNI;否则,丢弃数据包。

  较佳地,所述的步骤(6)具体包括以下步骤:

  (6.1)匹配内存域名规则和移动应用名映射表,判断是否匹配成功,如果是,则继续步骤(6.2);否则,将SNI单独存入数据库,进行后续分析。

  (6.2)获取对应移动应用名,通过SNI和移动应用名生成结果集,将结果集存入数据库。

  较佳地,所述的步骤(1)的表包括域名规则及移动应用名映射表、SNI和移动应用名结果表和未识别的SNI的采集表。

  较佳地,所述的步骤(2)的程序运行环境配置包括创建大页空间、加载驱动模块和网卡绑定驱动。

  较佳地,所述的步骤(3)的初始化DPDK的环境抽象层包括轮询模式驱动初始化、CPU内核和DPDK线程绑定、设置HugePage大页内存。

  采用了本发明的基于HTTPS流量信息识别移动应用的方法,从HTTPS网络数据流量中解析识别出服务器名称指示SNI,把SNI和不断累积的域名和移动应用名样本库进行碰撞,最后识别出具体移动应用的方法。本发明能构建完成如下的移动应用和域名的映射关系样本库,从网络数据流量中获取HTTPS的SNI,适用范围广泛。

  附图说明

  图1为本发明的基于HTTPS流量信息识别移动应用的方法的解析SNI的数据流程图。

  图2为本发明的基于HTTPS流量信息识别移动应用的方法的HTTPS获取SNI逻辑图。

  图3为本发明的基于HTTPS流量信息识别移动应用的方法的SNI定位移动应用逻辑图。

  具体实施方式

  为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。

  本发明的该基于HTTPS流量信息识别移动应用的方法,其中包括以下步骤:

  (1)分析收集到的网络公开信息或抓取包,得到域名和移动应用的键值对样本库,创建数据库和表;

  (2)完成程序运行环境配置;

  (3)初始化DPDK的环境抽象层,初始化网卡和CPU核队列,连接键值对数据库,启动核上线程;

  (3.1)根据系统的运行参数,将域名规则和移动应用名的映射表读到内存中;

  (3.2)初始化DPDK的环境抽象层环境;

  (3.3)初始化接收队列和发送队列,初始化内存池,初始化网卡接口;

  (3.4)启动CPU核上线程;

  (4)接收流量数据存入不同核队列,取出流量数据包,按照协议栈分析定位到应用层数据的起始位置;

  (4.1)根据MAC地址以及源地址和目标地址的端口计算五元组的Hash值;

  (4.2)通过Hash映射到对应的逻辑核的接收队列;

  (4.3)将数据包加入至接收队列,相同会话的数据包在逻辑核上的线程中处理;

  (4.4)处理线程从队列中取出数据包,根据网络层和传输层的五元组信息构建会话对象,加入会话对象管理器;

  (5)对应用层数据进行分析,按照HTTPS会话中第一个数据包的结构进行解析,获取其中的SNI;

  (5.1)判断应用层数据包数据一个字节是否符合握手协议,如果是,则继续步骤(5.2);否则,丢弃数据包;

  (5.2)判断剩余数据包长度是否满足SSL头部和握手协议头部的大小,如果是,则继续步骤(5.3);否则,丢弃数据包;

  (5.3)解析SSL头部和握手协议头部,判断握手协议是否为ClientHello,如果是,则继续步骤(5.4);否则,丢弃数据包;

  (5.4)解析握手协议ClientHello数据包,按照字节内容依次获取客户端版本号、32位随机数、会话ID、密码套件、压缩内容和扩展字段;

  (5.5)判断是否有扩展字段,如果是,则解析扩展字段;否则,丢弃数据包;

  (5.6)判断扩展字段类型是否为0,如果是,则即为扩展信息SNI;否则,丢弃数据包;

  (6)匹配识别到的SNI和样本库,查询定位移动应用;

  (6.1)匹配内存域名规则和移动应用名映射表,判断是否匹配成功,如果是,则继续步骤(6.2);否则,将SNI单独存入数据库,进行后续分析。

  (6.2)获取对应移动应用名,通过SNI和移动应用名生成结果集,将结果集存入数据库。

  作为本发明的优选实施方式,所述的步骤(1)的表包括域名规则及移动应用名映射表、SNI和移动应用名结果表和未识别的SNI的采集表。

  作为本发明的优选实施方式,所述的步骤(2)的程序运行环境配置包括创建大页空间、加载驱动模块和网卡绑定驱动。

  作为本发明的优选实施方式,所述的步骤(3)的初始化DPDK的环境抽象层包括轮询模式驱动初始化、CPU内核和DPDK线程绑定、设置HugePage大页内存。

  本发明的具体实施方式中,公开了从HTTPS网络数据流量中识别具体移动应用的方法。其具体包括以下步骤:

  步骤一,通过收集网络公开信息或者在移动应用使用过程中抓取包进行分析得到域名和移动应用的键值对样本库。随着数据样本的增加,定位移动应用更加准确。

  步骤二,完成程序运行环境配置:创建大页空间,加载驱动模块,网卡绑定驱动

  步骤三,初始化DPDK的环境抽象层(其中包括轮询模式驱动初始化、CPU内核和DPDK线程绑定、设置HugePage大页内存等系统初始化),初始化网卡和CPU核队列,连接键值对数据库,最后启动核上线程。

  步骤四,接收流量数据按照五元组存入不同核队列,核逻辑线程从核队列中取出流量数据包,按照协议栈分析,定位到应用层数据的起始位置。

  步骤五,接着步骤四,对应用层数据进行分析,因为SNI信息在HTTPS在第一个数据包(ClientHello)内,根据HTTPS数据包的特征值判断该数据流量是否是需要解析,然后按照HTTPS会话中第一个数据包的结构进行解析(具体解析步骤参见具体实施方式),从而获取其中的SNI。

  步骤六,用识别到的SNI去样本库进行匹配查询是否可以定位移动应用,如果不能定位移动应用,可以记录该域名,后续可以通过手动定位来完善扩充样本库,从而为未知移动应用定位。

  本发明的从HTTPS网络数据流量中识别具体移动应用的方法,其中,包括以下步骤:

  1、创建数据库和表:

  创建域名规则和移动应用名的样本库,其中主要有三张表:域名规则和移动应用名映射表、SNI和移动应用名结果表以及未识别的SNI的采集表。

  2、配置程序运行环境:

  程序主要在Linux环境下运行,在运行前需要根据NUMA设置内存大页,然后加载DPDK的生成驱动模块,最后把网卡和驱动模块绑定,这样就可以接收网卡中的流量,然后把它映射到大页中,减少内存复制,提高流量处理能力。

  3、DPDK初始化:

  根据系统的运行参数,将域名规则和移动应用名的映射表读到内存中,初始化DPDK的环境抽象层环境(主要是哪个网卡端口绑定哪个逻辑线程在哪个逻辑核上运行),接着初始化每个核的接收队列和发送队列,初始化内存池,初始化网卡接口,最后启动CPU核上线程。

  4、数据包解析:

  从网卡接收到数据包根据协议栈来解析,首先根据MAC地址以及源地址和目的地址的端口计算五元组的Hash值,通过该Hash映射到对应的逻辑核的接收队列,然后把数据包加入到该接收队列,此后,相同会话中的数据包就在该逻辑核上的线程中处理,保证了CPU核的亲和性。处理线程从队列中取出数据包,然后根据网络层和传输层的五元组信息构建会话对象,加入会话对象管理器,方便回收。

  5、SNI识别:

  在同一个会话中,获取应用层数据的起始地址和长度,为了说明方便从抓包如下:

  选中二进值数据为应用数据。

  首先,判断应用层数据包数据一个字节是否握手协议(0x16),如果不是数据包丢弃。

  其次,判断剩余数据包长度是否满足SSL头部和握手协议头部的大小,如果不是数据包丢弃。

  接着,解析SSL头部和握手协议头部。0x16 0x03 0x01 0x02 0x00是SSL头部,0x16表示类型,0x03 0x01表示版本,0x02,0x00表示长度。0x01 0x00 0x01 0xfc是握手协议头部,0x01表示握手协议的类型0x00 0x01 0xfc表示握手协议的长度。判断0x01就是ClientHello,如果不是数据包丢弃。

  最后,解析握手协议ClientHello数据包,按照字节内容依次获取客户端版本号(0x030x03)、32位随机数、会话ID(2个字节长度+内容)、密码套件((2个字节长度+内容)、压缩内容((2个字节长度+内容)和扩展字段((2个字节长度+内容)等,当存在扩展字段的情况下解析扩展字段,扩展字段的结构是类型+2个字节长度+内容,当类型为0是,其内容进一步信息就是SNI。

  6、SNI和移动应用名对比:

  当获取服务器名称指示(Server Name Indication SNI)后,与内存域名规则和移动应用名映射表进行匹配,匹配方式主要是后缀匹配,如果匹配成功后,取得对应移动应用名,拿SNI和移动应用名生成结果集。把该结果集存入数据库,方便后续查看流量中识别的SNI及其对应的移动应用名。如果失败,则把SNI单独存入数据库,做后续分析。

  7、未识别的SNI的采集和归类总结:

  对未识别的SNI进行单独存储,后续进行离线算法统计和人工标注,生成新的域名规则和移动应用名映射关系,不断扩充域名规则和移动应用名映射表。

  采用了本发明的基于HTTPS流量信息识别移动应用的方法,从HTTPS网络数据流量中解析识别出服务器名称指示SNI,把SNI和不断累积的域名和移动应用名样本库进行碰撞,最后识别出具体移动应用的方法。本发明能构建完成如下的移动应用和域名的映射关系样本库,从网络数据流量中获取HTTPS的SNI,适用范围广泛。

  在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

《基于HTTPS流量信息识别移动应用的方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)