首页 > 其他分享 >Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件

Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件

时间:2024-11-14 18:16:42浏览次数:3  
标签:TLS 文件 Cyberchef HTTP args cyberchef 如下 数据包

本文将介绍一种手动的轻量级的方式,还原HTTP/TLS协议中传输的文件,为流量数据包中的文件分析提供帮助。

如果捕获的数据包中存在非文本类文件,例如png,jpg等图片文件,或者word,Excel等office文件异或是其他类型的二进制文件或者编码文件。如果想要了解这些非文本文件中的内容,往往需要将这些文件提取出来,使用特定的软件进行打开。

如何从PCAP或者pcapng数据包中提取这些文件内容,在之前的文章中《自动还原pcap数据包中文件的几种方法》,这里,介绍了借助Wireshark本身的能力以及scapy等编程的方式还原数据包中的文件内容,针对一些常见协议的批量化处理,借助Wireshark已有的功能以及scapy编程都是不错的方式。但是此种方法存在如下问题:

  • 需要Wireshark能够支持某些传输文件协议的文件导出,例如HTTP,SMB等。但是如果Wireshark不支持该种协议的解析怎么办?
  • 如果数据包中的文件数据不完整怎么办?出现大量重传,丢包等情况。
  • Wireshark协议解析出错怎么办?由于现实场景中,Wireshark很多时候会解析出错,导出的文件也不乏错误场景。
  • scapy编程方式需要针对每一种协议,指定文件的开始和结束。对于一些scapy不能够解析的协议,则并不容易在程序中识别文件的开始和结束。况且编程的方式需要针对每一种文件传输情况编写代码,稍显繁琐。

如下将介绍针对HTTP以及TLS手动的轻量级还原文件的方法。

HTTP

wrieshark 本身提供了导出HTTP文件的能力,如下图1:
在这里插入图片描述
图1
如果该功能正常,则可以直接使用。如果该功能不正常,例如丢包或者数据不完整导致文件解析出现错误或者异常数据导致文件解析出错,则无法直接导出,这个时候本文所提供的方法就能派上用场。当然不仅如此,后文中所介绍的方法在一些文件显示方面比值wireshark也是存在优势的。

提取图片文件

HTTP传输图片的数据包下载链接见这里,对应第7号流,如下图2:
在这里插入图片描述
图2
首先拷贝文件传输的相关数据,由于HTTP协议为文本协议,因此cyberchef是支持对于HTTP协议头部的处理的,因此follow TCP dump,按照原始数据显示后,全选拷贝作为cyeberchef 的输入,关于cyberchef的详细介绍,详见我的专栏《Cyberchef 从入门到精通教程
》,这里,如下图3:
在这里插入图片描述图3
RAW格式的显示内容为16进制的字符串,因此需要先将16进制字符串转换成为对应的16进制数值(即每两个字符构成一个十六进制的数值),同时去除HTTP的头部,则会得到最终的数据内容,如下图4:
在这里插入图片描述
图4
相关模块解释如下:

  • from hex模块将字符串转换为对应的数值。
  • 第一个strip http headers 去除http request的头部,第二个strip http header 去除http response的头部 。
    -cyberchef提供的 render image模块可以直接解析并显示JPEG图像数据。
    其对应的cyberchef的脚本为:
[
  { "op": "From Hex",
    "args": ["Auto"] },
  { "op": "Strip HTTP headers",
    "args": [] },
  { "op": "Strip HTTP headers",
    "args": [] },
  { "op": "Render Image",
    "args": ["Raw"] }
]

可以看到使用cyberchef 能够直接将16进制数据显示图像文件,这个是其优点之一。

gzip压缩

前一个实例中HTTP并没有使用压缩传输,这个例子讲述HTTP压缩传输的场景。关于Gzip的原理,详见我之前的文章《网络传输中的那些编码之-gzip编码》,这里。HTTP传输传使用gzip压缩数据包下载链接见这里。如下图5:
在这里插入图片描述
图5
同样的follow tcp dump,以raw格式显示之后全选作为cyberchef的输入,如下图6:
在这里插入图片描述
图6
同样的需要先将16进制字符串转换成为对应的16进制数值(即每两个字符构成一个十六进制的数值),去除HTTP的头部,然后解压缩,则会得到最终的数据内容,如下图7:
在这里插入图片描述
图7
如果对应的数据中使用了特殊的编码,则可以使用cyberchef中的encoding模块进行相应的编解码。关于cyberchef的更多使用方法介绍,详见我的专栏《Cyberchef 从入门到精通教程》,这里

gzip/chunk

前一个实例中HTTP并没有使用chunk传输,这个例子讲述HTTP chunk传输的场景。关于chunk传输的原理,详见我之前的文章《网络传输中的那些编码之-chunk传输编码》,这里。HTTP传输使用chunk和gzip数据包下载链接见这里。如下图8:
在这里插入图片描述
图8
同样的follow tcp dump,以raw格式显示之后全选作为cyberchef的输入,如下图9:
在这里插入图片描述
图9
将16进制字符串转换成为对应的16进制数值(即每两个字符构成一个十六进制的数值),去除HTTP的头部,然后chunk重组,解压缩,则会得到最终的数据内容,如下图10:
在这里插入图片描述
图10
其对应的cyberchef的脚本为

[
  { "op": "From Hex",
    "args": ["Auto"] },
  { "op": "Strip HTTP headers",
    "args": [] },
  { "op": "Strip HTTP headers",
    "args": [] },
  { "op": "Dechunk HTTP response",
    "args": [] },
  { "op": "Gunzip",
    "args": [] }
]

可以看到cyberchef对于HTTP协议的支持还是非常全面的,因此在HTTP协议处理方面使用cyberchef非常的便捷。

TLS

和HTTP协议不同的是,Wireshark并没有提供导出TLS证书的能力。在之前的文章中《提取pcap网络数据包中数字证书各属性字段信息》,这里,介绍了使用Wireshark lua插件提取流量中的数字证书,这个在批量提取的场景下,还是非常的便捷。但是有的时候只需要提取流量中少数的证书文件,这个时候可以采用手动的方式。

TLS数据包下载链接见这里,如下图11:
在这里插入图片描述
图11
追踪流会显示该流上所有的数据,由于我们只需要证书的数据,因此可以直接拷贝wireshark解析的字段。

以hex stream拷贝作为cyberchef的输入,如下图12:
在这里插入图片描述
图12
将其另存为证书文件,如下图13:
在这里插入图片描述
图13
上述方式还原证书文件还是非常的方便和快捷,适合还原少数证书的场景。

总的来说,通过cyberchef和wireshark相配合,能够提高分析pcap数据包的效率。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里

标签:TLS,文件,Cyberchef,HTTP,args,cyberchef,如下,数据包
From: https://blog.csdn.net/javajiawei/article/details/143752882

相关文章

  • 服务器漏洞修复:TLS 1.0 已启用、HSTS、CSP
    1、TLS1.0已启用描述:此Web服务器支持通过TLS1.0加密。TLS1.0不被认为是“强密码术”。根据PCI数据安全标准3.2(.1)的定义和要求,在保护从网站往返的敏感信息时,TLS1.0并不被认为是"强加密"。根据PCI,"2018年6月30日是禁用SSL/早前TLS并实施更安全的加密协......
  • .Net 与TLS版本的兼容性
    ‌.NETFramework与TLS版本的兼容性主要取决于.NETFramework的版本。‌.NETFramework版本与TLS版本的兼容性‌.NETFramework3.5及更早版本‌:这些版本不支持使用传输层安全性(TLS)系统默认版本作为加密协议‌1。‌.NETFramework4.0及以上版本‌:这些版本默认支持TLS......
  • SSL 固定(SSL Pinning)是一种提高应用程序安全性的技术,用于防止中间人攻击(MITM,Man-in-th
    SSL固定(SSLPinning)是一种提高应用程序安全性的技术,用于防止中间人攻击(MITM,Man-in-the-Middleattacks)和证书伪造攻击。它通过将服务器的SSL/TLS证书或其公钥“固定”到客户端应用程序中,确保客户端在与服务器通信时只信任特定的证书或公钥,从而降低了遭遇伪造证书或中间人攻击的......
  • TLS 1.3(Transport Layer Security 1.3)是最新版本的传输层安全协议,用于加密互联网上的
    TLS1.3(TransportLayerSecurity1.3)是最新版本的传输层安全协议,用于加密互联网上的数据传输。它在许多方面比其前身TLS1.2更安全、更高效。TLS1.3引入了一些重大变更,以提高安全性、减少连接延迟,并简化协议的实现。让我们从“是什么”、“怎么样”和“为什么”这几个角度来深......
  • 【链路层】空口数据包详解(1):LE未编码物理层的数据包格式
    目录一、概述1.1.数据包结构1.2.传输特性二、前导码(Preamble)2.1.功能2.2.长度2.3.位同步2.4.重要性三、接入地址(AccessAddress)3.1.周期性广播序列中的接入地址3.2.其他广播信道数据包的接入地址3.3.链路层状态与接入地址生成3.4.接入地址要求3.5.......
  • --kubeconfig 参数和 tlsCertFile 与 tlsPrivateKeyFile
    在Kubernetes中,--kubeconfig参数和tlsCertFile与tlsPrivateKeyFile参数的主要作用和区别可以总结如下:--kubeconfig 参数主要作用:提供一个kubeconfig文件,其中包含了Kubelet与KubernetesAPI服务器通信所需的所有配置信息。这个文件通常包含API服务器的地址......
  • 【GiraKoo】线程本地存储(Thread Local Storage, TLS)
    【技术分享】线程本地存储(ThreadLocalStorage,TLS)在项目开发中,遇到了关于TLS相关的问题。为了了解该机制的用途,在微软的官网查找了一些资料。本文参考官方文档,简单介绍一下TLS的用途与使用方法。微软官方文档链接一、简介线程本地存储(TLS),可以使多个线程,通过TlsGetValue函......
  • USB协议详解第22讲(USB包-数据包及重传机制)
    USB协议详解第22讲(USB包-数据包及重传机制)1.数据包的分类数据类包有DATA0数据包、DATA1数据包、DATA2数据包、DATAM数据包。2.数据类包的组成我们今天看数据类包的详细结构,数据包的内容由PID域+数据域+16bitCRC域组成,下图为数据包各个域和抓包协议的对应图。3.数据包的功能......
  • 鸿蒙网络编程系列35-通过数据包结束标志解决TCP粘包问题
    1.TCP数据传输粘包简介在本系列的第6篇文章《鸿蒙网络编程系列6-TCP数据粘包表现及原因分析》中,我们演示了TCP数据粘包的表现,如图所示:随后解释了粘包背后的可能原因,并给出了解决TCP传输粘包问题的两种思路,其中一种就是指定数据包结束标志,本节将通过一个示例演示这种思路......
  • 【Azure Developer】System.Net.WebException: The request was aborted: Could not c
    问题描述在Azure中,使用操作系统为WinServer2019和WinServer2012的虚拟机,同样代码可以链接同一个AzureServiceBus。Win2019成功运行,但是在Win2012上报错:CouldnotcreateSSL/TLSsecurechannel. 问题解答WinServer2012默认不支持TLS1.2,可以通过安装 Update3140245 ......