一种基于userId的Android应用流量过滤方法与系统转让专利

申请号 : CN202110136774.7

文献号 : CN112804251B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 余翔湛葛蒙蒙赵跃史建焘刘立坤王久金冯帅宋赟祖李精卫韦贤葵石开宇车佳臻

申请人 : 哈尔滨工业大学

摘要 :

一种基于userId的Android应用流量过滤方法与系统,属于网络安全技术领域。本发明包括以下步骤:步骤一、从Android设备中读取指定应用的userId;步骤二、使用iptables给指定userId打上流标签;步骤三、编写iptables规则,将带有所述流标签的userId的INPUT、OUTPUT数据包放入NFLOG消息池中,并为所述NFLOG消息池指定一个标号;步骤四、从所述NFLOG消息池中获取目标userId对应的纯净流量集。本发明解决了应用流量混杂在一个网络中导致应用网络流量无法进行准确分析的问题。

权利要求 :

1.一种基于userId的Android应用流量过滤方法,其特征在于,包括以下步骤:步骤一、从Android设备中读取指定应用的userId;

步骤二、使用iptables给指定userId打上流标签;

步骤三、编写iptables规则,将带有所述流标签的userId的INPUT、OUTPUT数据包放入NFLOG消息池中,并为所述NFLOG消息池指定一个标号;

所述iptables规则如下:

规则1:将入站流中带有流标签的数据包,放入指定标号的NFLOG消息池中;

规则2:将出站流中带有流标签的数据包,放入指定标号的NFLOG消息池中;

步骤四、从所述NFLOG消息池中获取目标userId对应的纯净流量集。

2.根据权利要求1所述一种基于userId的Android应用流量过滤方法,其特征在于:步骤一中所述userId获取路径是从Android设备的/data/system/packages.xml文件中获得的。

3.根据权利要求1所述一种基于userId的Android应用流量过滤方法,其特征在于:步骤二中所述流标签,通过iptables的CONNMARK进行设置。

4.根据权利要求1或3所述一种基于userId的Android应用流量过滤方法,其特征在于:所述NFLOG消息池中的标号为指定应用的userId。

5.根据权利要求4所述一种基于userId的Android应用流量过滤方法,其特征在于,步骤四中获取纯净流量集的步骤如下:

步骤四.一:将所述NFLOG消息池中的数据发送到虚拟网卡上;

步骤四.二:通过tcpdump从步骤四.一中所述虚拟网卡上抓取数据包并保存。

6.根据权利要求5所述一种基于userId的Android应用流量过滤方法,其特征在于:所述保存从虚拟网卡中抓取的数据包时存储的文件格式为“nflog:标号”。

7.根据权利要求5或6所述的一种基于userId的Android应用流量过滤方法,其特征在于:所述数据包中的数据包含链路层、网络层、传输层和应用层。

8.根据权利要求7所述的一种基于userId的Android应用流量过滤方法,其特征在于:步骤四.二中抓取数据包时改变链路层的头部为NFLOG的Linux内核网络过滤器的日志头。

9.一种基于userId的Android应用流量过滤系统,其特征在于:包括userId获取单元、iptables规则设置单元,以及流量获取与保存单元;所述userId获取单元用于获取指定应用的userId;所述iptables规则设置单元用于设定iptables规则,将所述userId的流打上流标签,将携带所述流标签的数据包放入NFLOG消息池,并为所述消息池设定标号;所述流量获取与保存单元用于从所述NFLOG消息池中获取userId对应的纯净流量集并保存;

所述iptables规则如下:

规则1:将入站流中带有流标签的数据包,放入指定标号的NFLOG消息池中;

规则2:将出站流中带有流标签的数据包,放入指定标号的NFLOG消息池中。

说明书 :

一种基于userId的Android应用流量过滤方法与系统

技术领域

[0001] 本发明涉及网络安全技术领域,尤其是涉及一种基于userId的Android应用流量过滤方法与系统。

背景技术

[0002] 随着互联网的迅速发展,各种各样的互联网应用不断产生,网络流量规模也随之增加,其中有很大一部分网络流量为Android应用流量,针对Android设备产生的网络流量
进行识别和分析,对网络流量管理和恶意流量检测具有重要意义。
[0003] Android设备在应用运行时,所有应用产生的网络流量都放到混合到一个网络中,因此无法对混合到一个网络中的单个应用的网络流量进行准确的分析。
[0004] 传统的网络应用流量过滤有一些方法。一种是基于端口的应用流量过滤,但随着各种互联网应用的迅速增加,端口过滤的方法会漏掉一些动态变化的端口上的流量。另一
种是通过人工方法进行网络流量提纯,即利用人的知识和经验对数据流量进行分析,但该
方法取决去人的知识结构和经验,费时费力,且对于一些私有协议或加密流量很难人为直
接进行有效的分析。
[0005] 因此需要对网络应用流量进行识别和检测时,这就需要获得指定网络应用的纯净流量。

发明内容

[0006] 本发明研发目的是为了解决上述技术问题,在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的
穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。
[0007] 本发明的技术方案:
[0008] 一种基于userId的Android应用流量过滤方法,包括以下步骤:
[0009] 步骤一、从Android设备中读取指定应用的userId;
[0010] 步骤二、使用iptables给指定userId打上流标签;
[0011] 步骤三、编写iptables规则,将带有所述流标签的userId的INPUT、OUTPUT数据包放入NFLOG消息池中,并为所述NFLOG消息池指定一个标号;
[0012] 步骤四、从所述NFLOG消息池中获取目标userId对应的纯净流量集。
[0013] 优选的,步骤一中所述userId获取路径为/data/system/packages.xml。
[0014] 优选的,步骤二中所述流标签,通过iptables的CONNMARK进行设置。
[0015] 优选的,步骤三中所述iptables规则如下:
[0016] 规则1:将入站流中带有流标签的数据包,放入指定标号的NFLOG消息池中;
[0017] 规则2:将出站流中带有流标签的数据包,放入指定标号的NFLOG消息池中。
[0018] 优选的,所述NFLOG消息池中的标号为指定应用的userID。
[0019] 优选的,步骤四中获取纯净流量集的步骤如下:
[0020] 步骤四.一:将所述NFLOG消息池中的数据发送到虚拟网卡上;
[0021] 步骤四.二:通过tcpdump从步骤四.一种所述虚拟网卡上抓取数据包并保存。
[0022] 优选的,所述保存从虚拟网卡中抓取的数据包时存储的文件格式为“nflog:标号”。
[0023] 优选的,所述数据包中的数据包含链路层、网络层、传输层、应用层。
[0024] 优选的,步骤四.二中抓取数据包时改变链路层的头部为NFLOG的Linux内核网络过滤器的日志头。
[0025] 一种基于userId的Android应用流量过滤系统,包括userId获取单元、iptables规则设置单元,以及流量获取与保存单元;所述userId获取单元用于获取指定应用的userId;
所述iptables规则设置单元用于设定iptables规则,将所述userId的流打上流标签,将携
带所述流标签的数据包放入NFLOG消息池,并为所述消息池设定标号;所述流量获取与保存
单元用于从所述NFLOG消息池中获取数据包并保存。
[0026] 本发明具有以下有益效果:
[0027] 1.快速过滤每个应用流量;
[0028] 2.对应用流量数据过滤更加快速精准;
[0029] 3.节约人工操作成本;
[0030] 4.对私有协议或加密流量进行直接有效的分析。

附图说明

[0031] 图1是一种基于userId的Android应用流量过滤方法的流程图。
[0032] 图2是一种基于userId的Android应用流量过滤系统的结构图。

具体实施方式

[0033] 为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图中示出的具体实施例来描述本发明。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范
围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的
概念。
[0034] 具体实施方式一:参照图1说明本实施方式,本实施方式的一种基于userId的Android应用流量过滤方法,包括以下步骤:
[0035] 步骤一、从Android设备中读取指定应用的userId(使用者辩证码);
[0036] 从Android设备的/data/system/packages.xml文件中获得所述的userId。/data/system/packages.xml由PackageManagerService.java生成,里面记录了系统当中安装的
APK的所有属性,权限等信息。当系统中的APK安装、删除、升级时,文件就会被更新:文件中
的信息分为以下几个部分:
[0037] 1)permission块:里面包含了系统中所有定义的权限的信息;
[0038] 2)package块:里面包含了系统中所有安装的app的详细信息;
[0039] 3)shared‑user块:里面包含了所有系统定义的shareuser的信息;
[0040] 4)keyset‑settings块:里面包含了已安装app签名的public key信息;
[0041] 所需的userId信息可以在package块中找到。
[0042] 步骤二、使用iptables给指定userId打上流标签;
[0043] 所述的流标签是通过iptables的CONNMARK来进行设置的,所述的流标签即为步骤1中所述的指定应用的userId。对userId打流标签的步骤如下:
[0044] 对应用流量打标签部分:
[0045] iptables‑A OUTPUT‑m owner‑‑uid‑owner 10246‑j CONNMARK‑‑set‑mark 10246
[0046] 根据标签过滤应用部分:
[0047] iptables‑A INPUT‑m connmark‑‑mark 10246‑j NFLOG‑‑nflog‑group 10246
[0048] iptables‑A OUTPUT‑m connmark‑‑mark 10246‑j NFLOG‑‑nflog‑gro up 10246
[0049] 其中10246为应用的userId,可根据不同的userId进行替换。
[0050] 步骤三、编写iptables规则,将带有所述流标签的userId的INPUT、OUTPUT数据包放入NFLOG消息池中,并为所述NFLOG消息池指定一个标号;
[0051] 所述的iptables规则包括如下规则:
[0052] 规则1,将入站流中带有流标签的数据包放入指定标号的NFLOG消息池中;消息池的标号为步骤1中所述的指定应用的userId。
[0053] 规则2,将出站流中带有流标签的数据包放入指定标号的NFLOG消息池中。所述的消息池的标号为步骤1中所述的指定应用的userId。
[0054] 步骤四、从所述NFLOG消息池中获取目标userId对应的纯净流量集。
[0055] 所述的纯净流量的获取步骤包括:
[0056] 步骤401,所述NFLOG消息池的数据被发送到一个虚拟网卡上;
[0057] 步骤402,通过tcpdump从所述的虚拟网卡上抓取数据包并保存。
[0058] 步骤401中,所述的虚拟网卡名为“nflog:标号”;
[0059] 步骤402中,所述的抓取到的数据包的链路层头部是NFLOG的Linux内核网络过滤器的日志头,网络层、传输层、应用层没有改动。
[0060] 具体实施方式二、参照图2说明本实施方式,一种基于userId的Android应用流量过滤系统,包括userId获取单元、iptables规则设置单元,以及流量获取与保存单元;所述
userId获取单元用于获取指定应用的userId;所述iptables规则设置单元用于设定
iptables规则,将所述userId的流打上流标签,将携带所述流标签的数据包放入NFLOG消息
池,并为所述消息池设定标号;所述流量获取与保存单元用于从所述NFLOG消息池中获取数
据包并保存为pcap文件。
[0061] 需要说明的是,在以上实施例中,只要不矛盾的技术方案都能够进行排列组合,本领域技术人员能够根据排列组合的数学知识穷尽所有可能,因此本发明不再对排列组合后
的技术方案进行一一说明,但应该理解为排列组合后的技术方案已经被本发明所公开。
[0062] 本实施方式只是对本专利的示例性说明,并不限定它的保护范围,本领域技术人员还可以对其局部进行改变,只要没有超出本专利的精神实质,都在本专利的保护范围内。