摘" 要:文章针对恶意流量的特点建立完善的分析系统,以自动分析流量包基本信息,识别数据包的IP,判断流量包中的网络攻击意图;同时,对特定协议的传输文件进行识别提取,提取流量包中的敏感信息,并基于分析结果给予用户相应提醒。使用时,用户只需要将流量包上传,系统就可以自动分析、识别是否存在恶意流量,并提取敏感信息。通过一系列测试证明,系统所有功能均能正常运行,基本可以满足用户的日常使用需求。
关键词:恶意流量;敏感信息;提取文件
中图分类号:TP311.1" " 文献标识码:A 文章编号:2096-4706(2024)19-0175-05
Design and Implementation of a System Based on Malicious Traffic Analysis and Sensitive Information Extraction
LONG Huaqiu1, Long Yuhang2, Liang Jiahao1, YAN Zijun3
(1.School of Electronics and Information Engineering, Wuyi University, Jiangmen" 529020, China; 2.Jiangmen Yian Technology Co., Ltd., Jiangmen" 529020, China; 3.Ministry of Open Education, Jiangmen Open University, Jiangmen" 529000, China)
Abstract: This paper establishes a comprehensive analysis system based on the characteristics of malicious traffic, so as to automatically analyze the basic information of traffic packets, identify the IP of the data packets, and determine the network attack intent in the traffic packets. At the same time, it identifies and extracts transmission files of the specific protocol, extracts sensitive information from the traffic packets, and reminds users based on the analysis results. The users only need to upload traffic packets and then the system could automatically analyze and identify the presence of malicious traffic, and extract sensitive information. Through a series of tests on the system, it is verified that all functions of the system can operate normally and basically meet the daily using needs of users.
Keywords: malicious traffic; sensitive information; file extraction
0" 引" 言
随着信息技术的飞速发展,网络已经成为人们日常生活和商业活动中不可或缺的一部分。然而网络的普及也使网络攻击与威胁的概率增加,如分布式拒绝服务攻击、恶意软件传播等[1]。网络攻击是指针对连接到网络上的计算机信息系统,其他运用在生活中的联网基础设施,以及计算机网络或个人电脑设备等的攻击动作[2]。网络流量分析是安全威胁检测的一个重要研究方向[3]。基于恶意流量分析及敏感信息提取系统的开发,不仅可以让用户能够便捷地得到流量分析的结果,也能够让用户清晰直观地了解到流量中是否存在敏感信息泄露的可能性,还能让用户提高对互联网的认识,加强网络安全意识,避免受到网络安全攻击,进而避免遭受网络攻击导致的损失。
1" 系统分析
1.1" 系统的需求分析
尽管现在已经有了不少成熟完善的流量分析软件,但是目前市面上还是比较缺少在线分析流量的平台,且目前绝大多数的在线分析流量平台都是针对网站的流量监控,缺少面向个人用户的在线平台,导致这部分用户的需求没有得到满足。本系统的目的就是针对急需使用流量分析,但是没有安装软件环境条件的用户的需求,设计一个在线分析流量包的平台,只需要将需要分析的流量包上传至平台,就会得到分析结果。流量分析及敏感信息提取系统的需求分析如表1所示。
1.2" 系统流程分析
本系统的开发流程大致包括上传流程和系统操作流程。
1.2.1" 上传流程
在用户上传文件时,系统需要对上传请求进行判断,如果请求是GET,将会返回上传页面,用户需要重新上传文件。如果请求是POST,那么就会获取上传文件。在获取文件之后,会判断上传表单是否有效,如果无效,则会返回失败信息,并要求用户重新上传文件;如果有效,则会生成随机文件名,最后返回上传文件的成功信息。
1.2.2" 系统操作流程
当用户访问系统时,首先需要进行文件上传,在文件上传后,系统会自动对文件内容进行分析和提取,当系统分析和提取完成后,可以查看分析和提取的结果。
2" 系统设计
本系统主要是为目标用户提供在线的基于恶意流量分析及敏感信息提取功能的系统。
2.1" 系统总体设计
本系统总体架构设计采用了Bootstrap框架,该框架有跨浏览器兼容、组件模块化、UI组件丰富、样式库丰富和易于定制等特点,便于快速搭建开发系统[4]。使用了ECharts作为制作图标的插件,为项目提供丰富的数据可视化功能;另外Bootstrap框架还依赖于JQuery库,JQuery是一种流行的JavaScript库,可以简化DOM操作、事件处理、Ajax请求等常见任务,使得开发人员可以更加高效地编写JavaScript代码;利用了Gunicorn服务器,它是一种流行的部署工具,可以管理多个进程,提供高并发性能,并提供诸如负载均衡、自动重启等功能,使得Python Web应用程序的部署和运行更加稳定和高效[5]。
2.2" 系统结构
系统的主要功能模块有:上传文件、源IP和目的IP、流量统计、协议统计、恶意流量分析和敏感信息提取的展示等,功能设计需要合理,使得各个功能模块之间不会有大的冲突,考虑到每个功能模块之间的耦合程度,尽量避免其中一个模块出现故障之后导致其他的功能模块也出现问题。系统结构如图1所示。
3" 系统实现
3.1" 文件上传功能实现
文件上传功能是本系统的基础,当用户上传文件时,上传页面会提供给用户一个文件上传表单,供用户选择合适的文件进行上传,用户上传文件时系统会判断上传文件是否符合要求,如果符合就将文件上传至服务器,如果不符合则会返回错误信息,让用户重新上传文件。该功能的核心代码包括上传后缀名校验、获取文件后缀、生成随机的字符串文件名。
3.2" Web数据分析功能实现
该功能包括数据包过滤和信息提取、整理数据和去重、组装数据、返回结果。数据包过滤和信息提取实现如下:
1)遍历数据包列表。程序使用for循环遍历传入的数据包列表PCAPS中的每个数据包。
2)检查数据包协议和内容。对于每个数据包,程序首先检查是否同时包含了TCP和Raw层,这通常表示了HTTP流量。如果数据包满足条件,则继续提取源IP地址、目标IP地址、源端口号和目标端口号等信息。
3)识别HTTP流量。如果数据包的源端口号或目标端口号为80或8080,则被识别为HTTP流量。
4)存储IP地址、端口号和ID。对于识别为HTTP 流量的数据包,程序将提取的IP地址和端口号与一个自增的ID绑定,并将这些信息存储在列表ip_port_id_list中。
3.3" FTP协议分析功能实现
本功能设置了三个参数:PCAPS、host_ip和tfport[6]。PCAPS是一个数据包捕获文件列表,host_ip是目标主机的IP地址,tfport是端口21或23。函数首先检查tfport的值,以确定协议是FTP还是Telnet。如果值不是21也不是23,则协议被归类为“其他”。然后,函数初始化一个名为ip_port_id_list的空列表和一个名为id的变量,将其设置为0。它遍历PCAPS列表中的每个数据包,并检查它是否包含TCP和原始层。如果包含,函数会检查源IP和目标IP地址以及源和目标端口[7]。
3.4" 敏感信息提取功能实现
根据各种涉及含有敏感信息的协议采用不同方法的分析,主要提取协议中含有的相关敏感信息,比如Telnet、FTP、Mail和HTTP等协议中的账号和密码。原理是从协议中提取账号和密码信息,并将其存储到“sendata_list”列表中通过正则表达式匹配。
主要用遍历传入的网络数据包列表,并尝试从中提取各种协议中的账号和密码信息,包括Telnet、FTP、Mail和HTTP协议。对应的函数如下:
def sen_data(PCAPS, host_ip):
sendata_list = list()
webdata = web_data(PCAPS, host_ip)
maildata = mail_data(PCAPS, host_ip)
telnetdata = telnet_ftp_data(PCAPS, host_ip, 23)
ftpdata = telnet_ftp_data(PCAPS, host_ip, 21)
选取Telnet协议介绍账号密码检测流程,如下:
1)正则表达式模式:定义了两个正则表达式模式telnet_pattern1和telnet_pattern2,用于匹配Telnet数据中的用户名和密码。telnet_pattern1匹配登录用户名,而telnet_pattern2匹配密码。
2)数据解析:遍历Telnet数据列表telnetdata中的每个元素。将Telnet数据转换为十六进制表示,并使用正则表达式模式来查找用户名和密码。如果找到了用户名和密码的信息,程序会将其解码为字符串,并添加到结果中。
敏感信息提取功能实现页面如图2所示,可以看到系统提取到的敏感信息的详细情况。
3.5" 恶意流量分析功能实现
网络安全攻击种类众多,如XSS攻击或者SQL攻击需要有针对性地分开识别。本功能主要是根据可疑端口判断是否有木马病毒、根据Web内容来匹配常见Web攻击、根据FTP登录失败次数判断FTP暴力破解攻击[8]。实现方法是调用Scapy库进行数据包的分析,提取TCP层信息和Web数据,使用正则表达式进行数据匹配,统计出现次数并加以警告提示[9]。分析过程如下:
1)读取警告信息文件。程序首先打开一个名为WARN的文件,路径./app/utils/protocol/WARN。使用UTF8编码读取文件内容。通过readlines()方法逐行读取文件内容,并将每一行的警告信息存储在一个列表中,该列表称为warns。
2)构建警告字典。创建一个空字典WARN_DICT,用于存储警告信息,其中键是端口号,值是与之相关联的警告信息。对于warns列表中的每一行使用strip()方法去除行首尾的空白字符。使用split(:)方法根据冒号将字符串分割,以提取端口号和相应的警告信息。将端口号转换为整数类型,并将端口号与警告信息建立映射关系,存储到WARN_DICT字典中。
3)迭代数据包。创建一个空列表portwarn_list,用于存储端口警告信息。对于传入的数据包列表PCAPS中的每个数据包检查数据包是否包含TCP协议。如果是TCP数据包,则提取源IP地址、目标IP地址、源端口号和目标端口号。根据配置条件(比如源IP地址或目标IP地址等),检查端口号是否存在于WARN_DICT中,若存在则表示该端口号对应有警告信息。如果存在警告信息,则将相关信息添加到portwarn_list中。
4)返回结果。返回存储了端口警告信息的列表portwarn_list。
恶意流量分析功能实现页面如图3所示,可以看到系统提取到的恶意流量的详细情况。
3.6" 文件提取功能实现
本功能主要通过正则表达式和字符串操作来解析网络流量中的各种协议数据,并根据协议规范构造本地文件名,将文件数据保存到本地,并记录文件名、大小等信息。该功能针对Web协议和FTP协议是不同的,对应的函数为def web_file(PCAPS, host_ip, folder),def ftp_file(PCAPS, host_ip, folder)。
3.7" 流量分析功能实现
本功能主要是对流量包进行分析统计,通过分析IP层数据包,获取本机的IP地址,统计本机与其他主机之间的数据包流入和流出情况,统计本机与其他主机之间数据包的流向和数量,以及统计捕获的网络数据包中各种协议类型的流量大小[10]。
流量分析功能实现主要是通过时间流量统计函数和数据流量统计函数来实现。时间流量图核心代码如下:
def time_flow(PCAPS):
time_flow_dict = collections.OrderedDict()
start = PCAPS[0].time
time_flow_dict[time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(PCAPS[0].time))] = len(corrupt_bytes(PCAPS[0]))
for pcap in PCAPS:
timediff = pcap.time - start
time_flow_dict[float(%.3f%timediff)] = len(corrupt_bytes(pcap))
return time_flow_dict
3.7.1" 时间流量统计函数(time_flow)
步骤如下:
1)初始化时间流量字典。创建一个有序字典time_flow_dict,用于存储时间流量信息。字典的键是时间戳,值是对应时间戳的数据包大小。
2)获取起始时间戳。从传入的数据包列表PCAPS中获取第一个数据包的时间戳,并将其作为起始时间。
3)遍历数据包列表。使用for循环遍历数据包列表中的每个数据包。
4)计算时间差。对于每个数据包,计算其时间戳与起始时间戳的时间差(以秒为单位)。
5)更新时间流量字典。将时间差作为键,该时间点的数据包大小作为值,存储到时间流量字典中。
6)返回时间流量字典。返回存储了时间流量信息的有序字典time_flow_dict。
3.7.2" 数据流量统计函数(data_flow)
步骤如下:
1)初始化数据流量字典。创建一个字典data_flow_dict,用于统计数据包的流入(IN)和流出(OUT)数量。
2)遍历数据包列表。使用for循环遍历数据包列表中的每个数据包。
3)检查IP层。对于每个数据包,检查其是否包含IP层。
4)判断数据包流向。如果数据包的源IP地址是指定的主机IP地址,则认为是流出的数据包,将流出计数器增加。如果数据包的目标IP地址是指定的主机IP地址,则认为是流入的数据包,将流入计数器增加。
5)返回数据流量字典。返回存储了流入和流出数据包数量的字典data_flow_dict。
通过这些函数,可以对网络数据包的时间流量和数据流量进行统计,以便进行进一步的分析和可视化。
4" 结" 论
本系统实现了基于恶意流量分析及敏感信息提取的功能,解决了目前缺少针对个人用户的在线分析流量包平台,利用Bootstrap、ECharts、Flask和Gunicorn服务器等相关技术和开源库,经过反复的测试和改进完善,成功实现了流量分析、识别恶意流量、提取敏感信息等功能,并且系统运行稳定。
参考文献:
[1] 陆勰,徐雷,张曼君,等.攻防对抗中的加密恶意流量分析技术 [J].信息安全与通信保密,2022(3):71-79.
[2] 宋宇波,樊明,杨俊杰,等.一种基于拓扑分析的网络攻击流量分流和阻断方法 [J].信息网络安全,2020,20(3):9-17.
[3] 罗秀春,陈睿智.人工智能在网络流量分析中的研究与应用 [J].通信技术,2022,55(2):258-264.
[4] 叶惠仙,沈文杰.基于Bootstrap+spring boot框架的在线考试系统开发 [J].网络安全技术与应用,2019(12):54-57.
[5] 曾圣钊.基于Docker的智能云平台系统的设计与实现 [D].广州:华南理工大学,2022.
[6] 林嘉燕.基于Wireshark的文件传输协议研究 [J].内江师范学院学报,2012,27(8):25-28.
[7] 孙韩林,金跃辉,高雪松,等.FTP协议的测试及分析 [J].计算机工程,2008,34(23):133-135+138.
[8] 林松.基于机器学习的网络流量分类和异常检测技术研究与实现 [D].南京:南京邮电大学,2023.
[9] 何红艳.基于组合学习的网络异常流量检测分析方法研究 [D].秦皇岛:燕山大学,2023.
[10] 杨泷.网络流量分析系统的设计与实现 [D].长春:吉林大学,2018.
作者简介:龙华秋(1988—),男,汉族,广东吴川人,工程师,硕士,研究方向:信息安全;龙雨航(1999—),男,汉族,广东湛江人,工程师,本科,研究方向:信息安全;梁嘉浩(2002—),男,汉族,广东江门人,本科在读,研究方向:计算机系统管理;燕紫君(1993—),男,汉族,湖北仙桃人,讲师,硕士,研究方向:计算机系统管理。
基金项目:2023年校级高等学校大学生创新创业训练计划项目;五邑大学2022年度校级本科高质量课程建设与创新创业教育建设改革项目(KC2022014)