wireshark导出数据包(wireshark导出指定列)

文章前言

网络安全是当今互联网时代中不可忽视的问题,随着网络技术的不断发展,网络攻击手段也变得越来越复杂和隐蔽,因此网络安全工作者需要具备一定的技术能力和工具使用能力,其中WireShark是一款广泛使用的网络协议分析工具,可以帮助用户深入了解网络数据包的传输过程,从而提高网络安全防护的能力。本文将介绍WireShark的对象导出功能,帮助读者更好地利用这一功能进行网络数据包分析和安全防护工作

文件传输

用户使用各种不同的应用程序传输文件时在传输层走的协议大多都是TCP协议,有时候一个文件可能会使用一个数据报文完成传输,有时候也可能会因为数据体量较大导致需要分割为多个报文进行传输操作,而这些报文依旧保持一定的序列进行传输,我们将这些有顺序的数据包就被称作流,Wireshark的\\”流跟踪(TCPStream)\\”功能可以将捕获到所有的通信数据包重组成完整的会话或者文件并对其进行还原操作

对象导出

对象定义:如果两台设备在网络中有进行文件传输,那么这个传输的文件就是对象

报文示例:https://wiki.wireshark.org/SampleCaptures

使用WireShark打开数据报文,之后使用Wireshark提供导出对象的功能,文件—导出对象

wireshark导出数据包(wireshark导出指定列)

之后可以看到使用HTTP协议进行传输的文件对象如下:

wireshark导出数据包(wireshark导出指定列)

之后使用\\”Save\\”保存对象到本地

wireshark导出数据包(wireshark导出指定列)

图片文件如下所示:

wireshark导出数据包(wireshark导出指定列)

数据流类

首先使用显示过滤器对数据包进行过滤处理

wireshark导出数据包(wireshark导出指定列)

之后选取文件获取数据包进行跟踪其数据流

wireshark导出数据包(wireshark导出指定列)

在下图中的左下角选择一个方向的数据流

wireshark导出数据包(wireshark导出指定列)

这里我们选择回显数据包的数据流,同时在右下角显示或保存数据选择\\”原始数据\\”

wireshark导出数据包(wireshark导出指定列)

将文件保存为bin文件,使用notepad++打开文件后会看到如下内容

wireshark导出数据包(wireshark导出指定列)

清除上面的响应头部分,之后将文件保存为xxx.jpg,查看原图后可以得到如下结果:

wireshark导出数据包(wireshark导出指定列)

多文件类

这里我们以一个CTF题目为例来介绍如果传输过程中数据报文过大进行数据拆分后我们如何将其进行还原出源文件的过程:

题目描述:抓到一只苍蝇!

题目文件:misc_fly.p.capng—https://pan.baidu.com/s/1kVyyCbt

解题步骤:首先使用wireshark打开对应的流量数据包misc_fly.pcapng

wireshark导出数据包(wireshark导出指定列)

使用HTTP过滤一下协议

wireshark导出数据包(wireshark导出指定列)

根据数据流,从中发现请求参数中一个\\”fly.rar\\”的关键字眼,size为525701,md5值为\\”e023afa4f6579db5becda8fe7861c2d3\\”,而考虑到我们的题目\\”抓到一只苍蝇!\\”,多半和这个上传的压缩包有关系

wireshark导出数据包(wireshark导出指定列)

下面就是要还原出这个压缩包了,首先我们过滤一下请求类型:

http.request.method==\\\"POST\\\"

wireshark导出数据包(wireshark导出指定列)

从数据包的结构上看应该就是第二至第六个数据包是数据传输的过程,之后点开第二个可以看到MediaType的长度为131436

wireshark导出数据包(wireshark导出指定列)

第二到第五个都是一样的长度,第六个为1777,应该是剩余的最后一部分数据

wireshark导出数据包(wireshark导出指定列)

但是131436*4+1777=527521,这与之前给出的fly.rar的长度525701差1820,由于每个包都包含头信息,所以1820/5 = 364,即每个包的头信息为364

wireshark导出数据包(wireshark导出指定列)

每个包都做同样的操作即可得出5个文件,再将这个文件按顺序拼接即可

wireshark导出数据包(wireshark导出指定列)

wireshark导出数据包(wireshark导出指定列)

wireshark导出数据包(wireshark导出指定列)

之后将5个文件进行合并为一个fly.rar文件,这里我们直接使用Linux的cat命令来完成

cat 1 2 3 4 5 > fly.rar

wireshark导出数据包(wireshark导出指定列)

之后计算一下md5,可以看到md5值正确

md5sum fly.rar

wireshark导出数据包(wireshark导出指定列)

之后我们直接打开压缩包时会发现有问题:

wireshark导出数据包(wireshark导出指定列)

这是因为设置了伪加密,需要修改加密位,将0×84位置改为0×80即可

wireshark导出数据包(wireshark导出指定列)

wireshark导出数据包(wireshark导出指定列)

之后重新打开压缩包

wireshark导出数据包(wireshark导出指定列)

查看文件发现是一个二进制文件:

wireshark导出数据包(wireshark导出指定列)

之后使用binwalk查看文件信息,发现其中包含多个png文件

binwalk flag.txt

wireshark导出数据包(wireshark导出指定列)

之后使用foremost分离文件

formost flag.txt

wireshark导出数据包(wireshark导出指定列)

之后从众多的png文件中发现一张二维码

之后扫描二维码获取到flag

文末小结

本篇文章我们介绍了WireShark在进行数据报文分析时如果发现有数据传输时如何将传输的文件进行还原出来的两种方法,其中单个大文件的分包传输可能还需要一些复杂的操作步骤和计算过程,在处理时需要尤为注意一下

原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34245.html

(0)
七芒星实验室's avatar七芒星实验室
上一篇 2024年4月13日 下午7:26
下一篇 2024年4月13日 下午7:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注