CTF—wireshark之文件还原

简介:

本示例主要介绍了wireshark文件还原技术,通过本实验的学习,你能够了解wireshark的使用方法,
能够通过分析还原网络数据发送现场,并将发送的信息通过wireshark和winhex还原成原文件。

【Wireshark】

Wireshark从功能上来看,只是监听网络流量信息并完整的记录下来,起到还原现场的作用。Winhex是一款非常优秀的16进制收费的编辑器。

题目

黑客A通过ARP欺骗,使用wireshark获取了整个局域网内的网络流量信息。
无意之中,他发现有人在某个网站上上传了一份文件。
但是他不知道怎么样通过wireshark去还原这份文件,
没办法,他将监听到的数据包保存为了一份wireshark的监听记录,
将通过以下三个任务完成那份上传文件的还原。

(1)对抓到的包进行显示过滤,找到关键信息。

(2)对信息进行跟踪,确定上传文件的TCP流,并保存为二进制原始文件。

(3)对文件中上传文件的信息进行处理,去掉多余的包头和包尾,得到原始文件。

任务描述:使用wireshark导入监听数据包,对数据进行显示过滤,提取出来关键信息。

  1. 打开catchme.pcapng,双击即可。会发现数据记录一共有148条。
    如果单纯的从开始到结尾去一条一条的审计,是非常费力的事情。
    而且实际操作过程中,大部分情况会多于148条记录。
    在这里插入图片描述
  2. 此处,利用Wireshark提供的强大的过滤显示功能。
    在filter中可以定义显示的数据包类型。
    此处上传时访问的是网站,因此在filter中输入http进行协议过滤,
    输入回车或者点击工具栏旁边的“APPLY”按钮,就可以完成Http协议数据包的过滤显示。
    在这里插入图片描述
  3. 从题目我们可以明确,上传时访问的是个网站,因此我们需要进行协议过滤。
    在filter中输入http,表示我们要显示所有使用http协议的数据包。
    输入回车,或者点击旁边的APPLY按钮,就可以进行显示过滤。
    在这里插入图片描述

从图上下方我们可以看到,数据包由原来的148个变成了32个。这样就很容易帮我们分析了。

  1. 仔细分析,我们会在末尾左右的第143条数据记录中的info中看到upload这个词,我们怀疑这条就是涉及到上传的数据包。
    在这里插入图片描述
    如果你在此之前有些编写网站的经验,就会知道上传文件提交可以使用post一个表单的形式。
    所以,你也可以使用包过滤显示,选出所有使用post方法提交的数据包。我们可以输入http.request.method==”POST”进行包过滤。
    这时候的显示如下:
    在这里插入图片描述
    看到了吧,这时候只显示了唯一一条记录,就是我们刚才找到的序号为143的记录,是不是快了很多啊。
    因此,掌握数据包过滤,是熟练掌握wireshark的必备技能之一。

任务描述:确定POST这条数据包是否上传了文件,若存在则将数据dump出来。

  1. 虽然我们看到了有upload关键字,有post方法,但是我们不能确定是不是真的就是上传文件的那个请求。我们来分析一下。双击该行。弹出协议分析框。点击+号,将子栏展开。在这里插入图片描述
    我们可以看到,确实是上传了文件,而且文件名是bingo.png。原来他上传的是一张图片。在上方红色部分,我们可以看到由于文件比较大,TCP协议对其进行了切片,一共切了5个片。我们点击下方的各个Frame,就可以看到每个包中的内容。

问题来了,能不能将这几个切片还原成一个流式会话,这样我们就能看到一个会话过程,而不是需要一个一个的去点击。

Wireshark还真可以做到。

  1. 关闭这个界面,回到我们过滤后的那个POST包,右键Follow TCP Stream在这里插入图片描述
    这时候我们会看到:在这里插入图片描述
    整个会话都被还原了出来。
    我们看到了png的原始信息。继续往下拉,我们会看到有关蓝色的显示,这是服务器给我们的回应。
    我们的图片信息保存在请求部分,因此可以过滤掉响应部分。在这里插入图片描述
    因为文件肯定比响应大,所以我们选择6010那个。这时候就没有响应部分出现了。

  2. 保存原始文件,以便下一步处理。
    我们已经知道,请求部分中包含了文件的原始信息。因此,我们可以先保存下来,然后处理一下,得到原始文件。

    我们选择raw类型进行保存,表示使用二进制形式保存文件。
    在这里插入图片描述
    保存为任意格式的文件,这里我们保存为temp.bin

任务描述:使用winhex对文件进行最终处理,并保存文件。

  1. 将刚才保存的temp.bin用winhex打开。

会看到,文中包含请求信息和我们的图片信息,以及文件结尾的尾部信息。我们需要做的事情是确定图片文件的原始信息头和尾,去掉多余部分。在这里插入图片描述
在这里插入图片描述
2. 回到wireshark中,会看到我们刚才的tcp stream流中,关于图片的头部分在这里插入图片描述
在content-type: image/x-png后面有两个换行符,然后开始我们的原始文件。换行符用十六进制表示是 0D 0A.因为有两个,所以,我们在图片附近寻找0D 0A 0D 0A.后面的部分就表示图片的开始。

  1. 回到winhex中,我们找到了上述数字在这里插入图片描述
    这时候我们需要去掉图片以上的部分。在00000000偏移处点击alt+1,表示选块开始。
    在这里插入图片描述
    在我们找到的0D 0A 0D 0A处的最后一个0A处点击alt+2.表示选块结束。这时候,我们就选中了图片之前的多余部分。在这里插入图片描述
    按下delete键,选择yes。
    在这里插入图片描述
    这时候文件中的多余头部已经被删除在这里插入图片描述
  2. 回到wireshark中,我们看看图片传送完毕之后的尾部部分在这里插入图片描述
    我们可以看到,这次是一个换行符。后面有些文件结束标志-------------,我们同样删除它们。

在这里插入图片描述
这时候我们的文件中就仅仅是原始图片的内容了。Ctrl+S保存。在这里插入图片描述
最激动人心的一步来了。将我们的temp.bin改为temp.png,打开看下:在这里插入图片描述
祝贺你,已经完成了我们本节课的实验,拿下神秘的key~~~


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部