网络流量处理及分析工具

概念介绍

joy/README.md at master · cisco/joy (github.com)

Joy 是一个 BSD 许可证开源软件包,用于收集和分析网络数据,重点是网络数据特征的探索。本文档介绍了如何使用、安装、构建和修改 Joy。

1.1.1 为什么选择 Joy?

Joy包含了一个数据收集程序joy和一些数据分析程序,包括sleuth。前者是用C99编写的,它读取原始网络流量或数据包捕获文件,然后以JavaScript对象表示法(JSON)格式输出观察到的流量摘要;见图1.1的例子。该程序还可以以遥测收集器模式运行,并接收IPFIX或Netflow版本9数据包;在该模式下,它将遥测转换为JSON描述的流,这些流是由遥测导出程序观察到的。sleuth程序读取流量的JSON描述,根据其命令行指定过滤流量,并打印出选定流量的描述,或者它可以按部分3所述选择、汇总或分析流量。

1.1.1 为什么选择Joy? Joy对于收集、分析和探索网络数据非常有用。它的JSON输出格式灵活,非常适合许多数据分析工具和现代编程环境,如Python和scikit-learn,并且它使用流导向模型,既方便又概念上熟悉。它能够在保留隐私的同时获取网络元数据,方法是避免大量数据捕获并通过匿名化地址和用户名。它还意识到几个重要的协议,包括HTTP、TLS、DNS和DHCP,从能够记录其会话元数据元素在其JSON格式的意义上。它也很容易扩展;JSON优雅地处理可选或额外的数据,捕获工具具有C预处理器接口,有助于捕获新数据元素。Joy不像wireshark、tshark或tcpdump那样了解那么多的协议,所以后者可能更适合于详细的人驱动的特定数据包捕获文件的取证分析。然而,Joy更适合于分析许多会话或许多数据包捕获文件。流,在积极心理学中,是指一个人在进行活动时完全沉浸在充满活力的专注、深度参与和快乐的感觉中的状态。这第二种含义激发了这个软件包名称的选择。

1.1.2 伦理 Joy旨在用于网络和安全研究、取证以及(小规模)网络监控,以检测漏洞、威胁和其他未经授权或不想要的行为。研究人员、管理员、渗透测试人员和安全运营团队可以充分利用这些信息,以保护被监控的网络,并且在漏洞的情况下,通过改善防御姿态,造福更广泛的社区。像任何网络监控工具一样,Joy可能会被滥用;不要在您不是所有者或管理员的任何网络上使用它。

1.2 网络数据背景

流量是一组具有共同特征的数据包,称为流量键。在Joy中,流量键是传统的网络五元组:源地址和目的地址、源端口和目的端口(对于TCP和UDP流量)以及协议号。象征性地,流量键是元组(源地址,目的地址,协议号,源端口,目的端口)。如上所定义,流量是单向的;它的所有数据包都朝同一个方向移动。交互式网络会话通常涉及双向流量,这在1.2.1节中有所描述。在本文档中,我们有时使用术语“流量”来指代描述流量的数据记录;这种约定在计算机网络中很常见。下表显示了Joy使用的JSON格式中的流量键字段以及一些其他重要字段:

JSON元素数据元素备注
源地址互联网协议地址
目的地址互联网协议地址
协议号
源端口TCP或UDP端口
目的端口TCP或UDP端口
出字节sa→da的字节数任何协议
出包数sa→da的数据包数
开始时间从纪元以来的秒数
结束时间从纪元以来的秒数
数据包数据包长度、方向和时间的数组
入字节sa←da的字节数仅双向流量
入包数sa←da的数据包数

纪元由POSIX定义为协调世界时(UTC),星期四,1970年1月1日00:00:00。默认情况下,joy不报告数据包数组中数据字段长度为零的TCP数据包。所有的TCP会话都是从包含两个这样的数据包的握手开始的,大多数TCP会话包括'ACK数据包',这些数据包不包含数据,仅用于确认由另一方发送的数据的接收。有关更多信息,请参见第2.3.2节。

1.2.1 双向流量

默认情况下,joy捕获单向流量,但在许多情况下,双向流量更有趣;bidir=1选项(第2.3.4节)会导致程序将同一会话中的任何单向流量缝合在一起。双向流量由一对单向流量组成,它们的源地址和目的地址及端口被颠倒,并且它们的时间跨度重叠。也就是说,如果出和入是单向的,那么它们的组合是双向流量,当

入源地址 = 出目的地址,入目的地址 = 出源地址, 入源端口 = 出目的端口, 入目的端口 = 出源端口,(1.1) 入协议号 = 出协议号, 入开始时间 > 出开始时间, 入开始时间 < 出结束时间。

图1.3a显示了两个单向流量及其双向组合之间的关系,图1.3b显示了Joy输出双向流量的一个例子。Joy的约定是,在双向流量中,从源地址(sa)流向目的地址(da)的数据包是出站的,从da流向sa的数据包是入站的;每当在JSON模式中使用出和入时,都暗示了这种方向性。双向流量有时被称为双流。

1.2.2 流量过期

在网络监控中,等待长时间流量完成之前才使其流量记录可用是不可取的。一些流量的持续时间几乎与它们连接的操作系统的正常运行时间一样长。为了避免这种无限期等待流量数据,监控系统采用超时方法:当流量在非活动超时期间不活动,或者当它处于活动状态并且持续时间超过活动超时期间时,就会导出流量记录。joy捕获工具使用这些约定,非活动时间为十秒,活动时间为三十秒。也就是说,如果流量在十秒钟内不活动,或者如果它处于活动状态达三十秒,就会创建流量记录。流量记录指示发生了上述哪种条件,在顶层的过期类型元素中显示:

• "expire type": "i" 表示非活动到期, • "expire type": "a" 表示活动到期。

sleuth程序默认将具有匹配流量键的连续流量缝合在一起。可以关闭时间顺序缝合(见第3.2.8节),这有助于理解Netflow或IPFIX监控系统的超时逻辑如何影响数据捕获。然而,在大多数情况下,应该使用时间顺序缝合。这在监控私有网络时尤其重要,因为经过活动时间限制的流量可能看起来来自私有网络之外。更具体地说:缺乏时间顺序缝合可能使看起来有违反私有网络访问控制策略的流量。TCP SYN标志可以用作健全性检查,因为被活动超时截断为两个更多流量记录的长时间运行的TCP流量将只在第一个流量记录中包含SYN标志。

第2章 The joy tool

2.1 概览

调用joy的命令行语法是

joy [选项] [文件1 [文件2 ...]]

默认情况下,它的输出是以GZIP压缩的JSON格式,使用第5节中描述的格式。未压缩的输出或bz2压缩的输出可以作为编译时选项(见文件src/include/output.h)。有许多软件工具可以处理GZIP压缩的数据,尤其是在Linux和其他POSIX环境中,如gunzip、zless和zcat。下面是一个示例调用,它将joy应用于离线模式,并使用gunzip将其输出转换为未压缩的形式:

joy bidir=1 browse.pcap | gunzip {"version":"1.74","interface":"none","promisc":0,"output":"none", ... } {"sa":"10.0.2.15","da":"74.125.228.207","pr":6,"sp":43039,"dp":443, ... } {"sa":"10.0.2.15","da":"74.125.228.195","pr":6,"sp":54210,"dp":443, ... } {"sa":"10.0.2.15","da":"74.125.228.104","pr":6,"sp":47443,"dp":443, ... } ...

2.1.1 配置对象

在初始化和任何其他输出之前,joy会写出一个JSON对象,描述其完整的配置以及生成它的joy程序的版本。这些信息很重要,因为选项会影响流对象中可以出现的数据元素。分析joy JSON输出的程序应该检查配置对象,并确保它们不会将其作为流对象进行处理,它们应该通过检查对象顶层的version字段的存在来进行这一点。一个配置对象的注释示例:

{ "version": "1.74", // joy程序的版本 "interface": "none", // 未指定输出接口 "promisc": 0, // 没有使用混杂模式 "output": "none", // 未指定输出;将使用stdout "outputdir": "none", // 未指定输出目录 "username": "none", // 未指定用于特权降低的用户名 ... }

配置对象中的JSON名称是本章定义的joy命令名称。

2.1.2 子网文件

有些选项会导致joy从文件中读取一系列子网,并在sa和/或da位于这些子网之一时执行特定处理。子网文件的格式由文件internal.net展示:

# 用于地址匿名化的子网 # 10.0.0.0/8 # RFC 1918地址空间 172.16.0.0/12 # RFC 1918地址空间 192.168.0.0/16 # RFC 1918地址空间

每一行包含一个地址作为点分四元组,或者是一个子网作为点分四元组后跟一个斜杠和一个0到32之间的数字,或者是空的。井号字符和其后面该行的任何字符都被忽略,空行也是如此。

安装和部署Linux (Ubuntu)

(中间需要重启一次reboot)

#环境依赖 安装中需要重启服务器
sudo apt-get install build-essential libssl-dev libpcap-dev libcurl4-openssl-dev#Download, Configure and Make Joy
git clone https://github.com/cisco/joy.git#Configure
cd joy
./configure --enable-gzip#build
make clean;makesudo ./install_joy/install-sh.....
A new SSH key was generated, and its private key was installed in
the /usr/local/etc/joy directory.  To use this key to authenticate scp
connections to a server that copy the JSON files, you will need to
provide the public key upload-key.pub to the server administrator,
as it needs to be installed in the ./ssh/known_hosts file.
=====================

Joy的使用example

参考链接:https://github.com/cisco/joy/wiki/Usage

要了解 Joy 的配置方式,请阅读配置文件 "options.cfg"。要在离线模式下处理 pcap 文件,请运行:[joy]$ bin/joy [ OPTIONS ] filename [ filename2 ... ]

例如:

[joy]$ bin/joy bidir=1 output=data.json filename

要在在线模式下运行数据包捕获,请使用相同的命令格式,但在 OPTIONS 中包含 interface= 命令,并省略命令行中的文件名。例如:

[joy]$ sudo bin/joy interface=eth0 bidir=1 output=data.json

有许多命令行选项。为了避免在命令行上输入所有选项,您可以让程序读取配置文件。此类文件在分发时包含在内,路径为 install/options.cfg。如果您想更改程序默认设置(您可能需要这样做,以便捕获您感兴趣的数据),请复制配置文件。通过创建具有不同名称的本地副本,您的配置在更新 Joy 软件包时不会被覆盖。f

cd /joy/bin#方式1
./joy tls=1 bidir=1 dist=1 num_pkts=50 zeros=0 retrans=0 entropy=1 /home/yangshanshan/joy/test/pcaps/tls10.pcap | gunzip  > test-multi.json#方式2
./joy output=test_easy.gz /home/yangshanshan/joy/test/pcaps/tls10.pcapgunzip test_easy.gz

 分析Joy提取结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序发送订阅消息

小程序后台。订阅消息里面&#xff0c;新建一个消息模板 小程序代码&#xff0c;登录后&#xff0c;弹出订阅信息 requestSubscribeMessage: function () {wx.requestSubscribeMessage({tmplIds: [-323232-32323], // 替换为你的模板IDsuccess(res) {// 用户订阅结果console.l…

第22讲:文件操作

文章目录 第22讲&#xff1a;文件操作1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 二进制文件和文本文件&#xff1f;4. 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开和关闭 5. 文件的顺序读写5.1 顺序读写函数介…

PyQt5开发笔记:1.环境搭建与界面美化

推荐视频教程&#xff1a; https://www.bilibili.com/video/BV1LT4y1e72X?p23&vd_source7ab611f3afb3d469faad93d3996f99ba 一、打开网址&#xff0c;点击下载 https://build-system.fman.io/qt-designer-download 下载后&#xff0c;点开exe 不推荐&#xff1a;http…

每周算法:次小生成树

题目链接 秘密的牛奶运输 题目描述 农夫约翰要把他的牛奶运输到各个销售点。 运输过程中&#xff0c;可以先把牛奶运输到一些销售点&#xff0c;再由这些销售点分别运输到其他销售点。 运输的总距离越小&#xff0c;运输的成本也就越低。 低成本的运输是农夫约翰所希望的…

【面试】介绍一下HotSpot虚拟机

目录 1. 说明2. 起源与发展3. 技术特点3.1 热点代码探测技术3.2 内存管理3.3 垃圾收集器3.4 并发和多线程支持3.5 指令重排优化 4. 执行模式与性能 1. 说明 1.HotSpot虚拟机是一款由Oracle JDK和OpenJDK广泛使用的Java虚拟机&#xff08;JVM&#xff09;。2.HotSpot虚拟机凭借…

react 动态form表单

需求在日常开发中反复写form 是一种低效的开发效率&#xff0c;布局而且还不同这就需要我们对其封装 为了简单明了看懂代码&#xff0c;我这里没有组件&#xff0c;都放在一起&#xff0c;简单抽离相信作为大佬的你&#xff0c;可以自己完成&#xff0c; 首先我们做动态form …

Gartner发布电信运营商应对持续变化的网络安全环境指南:现代云安全与网络安全的五大核心挑战

所有组织的云和网络都面临着高级威胁。作为网络安全的关键参与者&#xff0c;电信运营商的 CIO 需要了解行业面临的挑战&#xff0c;并了解应采用哪些解决方案来实现方法的现代化。 主要发现 电信运营商 (CSP) CIO 如果不能调整其安全策略来保护其环境&#xff0c;那么他们将会…

单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.13数组

C语言中&#xff0c;有一类数据结构&#xff0c;它可以存储一组相同类型的元素&#xff0c;并且可以通过索引访问这些元素&#xff0c;没错&#xff0c;这类数据结构就是数组。数组可以说是C语言中非常重要的数据结构之一了。使用数组可以是程序逻辑更加清晰&#xff0c;也更加…

IDEA 中导入脚手架后该如何处理?

MySQL数据库创建啥的&#xff0c;没啥要说的&#xff01;自行配置即可&#xff01; 1.pom.xml文件&#xff0c;右键&#xff0c;add Maven Project …………&#xff08;将其添加为Maven&#xff09;【下述截图没有add Maven Project 是因为目前已经是Maven了&#xff01;&…

react useState基本使用

1. React Hooks介绍 React Hooks是React 16.8版本引入的新特性&#xff0c;它允许在不编写类的情况下使用state和其他React特性。Hooks的引入极大地简化了组件的编写&#xff0c;使得函数式组件能够拥有类似类组件的功能。 1.1 函数式组件与类组件的区别 函数式组件与类组件…

LNMP安装部署

yum -y install ncurses ncurses-devel bison cmake openssl-devel gcc gcc-c make 方法二

差旅游记|绵阳印象:与其羡慕他人,不如用力活好自己。

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 来绵阳之前同事就问: “雷工&#xff0c;能吃辣嘛&#xff1f;”。 “还行&#xff0c;能吃点辣。” “那你去了四川别说能吃点辣&#xff0c;那边的能吃点比跟你说的能吃点不太一样” 01 你好 今天打车&#xff0c;上…

这篇文章让你彻底了解如何实用tcpdump 抓包

直接看例子&#xff1a; tcpdump tcp-i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap &#xff08;1&#xff09;tcp∶ ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置&#xff0c;用来过滤数据报的类型 &…

Go 语言中常量和变量的定义、使用

Go 语言&#xff0c;作为一种现代编程语言&#xff0c;以其简洁性和高效性赢得了开发者的青睐。在 Go 语言中&#xff0c;常量与变量作为存储和操作数据的基本元素&#xff0c;扮演着至关重要的角色。通过正确理解和使用常量与变量&#xff0c;开发者可以编写出更加健壮和高效的…

「多客」圈子论坛社区交友系统开源版小程序源码|圈子社区系统

简述 社交圈子论坛系统是一种面向特定人群或特定话题的社交网络&#xff0c;它提供了用户之间交流、分享、讨论的平台。在这个系统中&#xff0c;用户可以创建、加入不同的圈子&#xff0c;圈子可以是基于兴趣、地域、职业等不同主题的。用户可以在圈子中发帖、评论、点赞等互…

抖音太可怕了,我卸载了

这两天刷短视频&#xff0c;上瘾了&#xff0c;太可怕了。 自己最近一直在研究短视频制作&#xff0c;所以下载了抖音&#xff0c;说实话&#xff0c;我之前手机上并没有抖音&#xff0c;一直在用B站。 用了两天抖音&#xff0c;我发现&#xff0c;这玩意比刷B站还容易上瘾啊…

国产GPU算力公司及产品

目前&#xff0c;中国有多家从事国产算力GPU研发与生产的企业&#xff0c;以下是一些代表性的公司及其相关产品概述&#xff1a; 景嘉微&#xff1a; 近期&#xff0c;景嘉微宣布成功研发了“景宏系列”AI算力产品&#xff0c;该系列面向AI训练、AI推理、科学计算等领域&#x…

Centos 7下的VulFocus靶场搭建详细教程

一、靶场介绍 自带 Flag 功能&#xff1a;每次启动 flag 都会自动更新&#xff0c;明确漏洞是否利用成功。带有计分功能。兼容 Vulhub、Vulapps 中所有漏洞镜像。 二、下载安装 下载 VMware 软件下载 centos镜像 三、Docker知识 学习链接&#xff1a;https://www.runoob.c…

chrome调试手机网页

前期准备 1、 PC端安装好chrmoe浏览器 2、 安卓手机安装好chrmoe浏览器 3、 数据线 原文地址&#xff1a;https://lengmo714.top/343880cb.html 手机打开调试模式 进入手机设置&#xff0c;找到开发者模式&#xff0c;然后启用USB调试 打开PC端chrome调试功能 1、点击chr…

【康耐视国产案例】AI视觉相机创新 加速商超物流数智化转型

连锁商超/零售店正面临着因消费者购物习惯改变等挑战&#xff0c;迎来了以新兴技术崛起而催生的数字化物流体系转型需求。物流行业与AI机器视觉的深度融合&#xff0c;解决了传统机器视觉识别速度慢、环境要求高、定制化部署耗时过多等痛点&#xff0c;大大提高了物流供应链的效…