本文涉及相关实验:wireshark之文件还原 https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182014122315591000001&pk_campaign=toutiao-wemedia
实验目标:
黑客A通过ARP欺骗,使用wireshark获取了整个局域网内的网络流量信息。无意之中,他发现有人在某个网站上上传了一份文件。但是他不知道怎么样通过wireshark去还原这份文件,没办法,他将监听到的数据包保存为了一份wireshark的监听记录,打算去向你请教。你能帮助他找到那份上传的文件吗?
我们的任务分为3个部分:
1. 对抓到的包进行显示过滤,找到关键信息。
2. 对信息进行跟踪,确定上传文件的TCP流,并保存为二进制原始文件。
3. 对文件中上传文件的信息进行处理,去掉多余的包头和包尾,得到原始文件。
1.1 实验任务一
任务描述:使用wireshark导入监听数据包,对数据进行显示过滤,提取出来关键信息。
1. 打开catchme.pcapng,双击即可。会发现数据记录一共有148条。如果单纯的从开始到结尾去一条一条的审计,是非常费力的事情。而且实际操作过程中,148条记录,已经算是很少的了。
2. 好在wireshark为我们提供了强大的过滤显示功能。我们在filter中可以定义显示出来什么样的数据包。
3. 从题目我们可以明确,上传时访问的是个网站,因此我们需要进行协议过滤。在filter中输入http,表示我们要显示所有使用http协议的数据包。输入回车,或者点击旁边的AppLY按钮,就可以进行显示过滤。
从图上下方我们可以看到,数据包由原来的148个变成了32个。这样就很容易帮我们分析了。
4. 仔细分析,我们会在末尾左右的第143条数据记录中的info中看到upload这个词,我们怀疑这条就是涉及到上传的数据包。
如果你在此之前有些编写网站的经验,就会知道上传文件提交可以使用post一个表单的形式。所以,你也可以使用包过滤显示,选出所有使用post方法提交的数据包。我们可以输入http.request.method==”POST”进行包过滤。这时候的显示如下:
看到了吧,这时候只显示了唯一一条记录,就是我们刚才找到的序号为143的记录,是不是快了很多啊。因此,掌握数据包过滤,是熟练掌握wireshark的必备技能之一。
1.2 实验任务二
任务描述:确定POST这条数据包是否上传了文件,若存在则将数据dump出来。
1. 虽然我们看到了有upload关键字,有post方法,但是我们不能确定是不是真的就是上传文件的那个请求。我们来分析一下。双击该行。弹出协议分析框。点击+号,将子栏展开。
我们可以看到,确实是上传了文件,而且文件名是bingo.png.原来他上传的是一张图片。在上方红色部分,我们可以看到由于文件比较大,TCP协议对其进行了切片,一共切了5个片。我们点击下方的各个Frame,就可以看到每个包中的内容。
问题来了,能不能将这几个切片还原成一个流式会话,这样我们就能看到一个会话过程,而不是需要一个一个的去点击。
Wireshark还真可以做到。
2. 关闭这个界面,回到我们过滤后的那个POST包,右键Follow TCP Stream
这时候我们会看到:
整个会话都被还原了出来。我们看到了png的原始信息。继续往下拉,我们会看到有关蓝色的显示,这是服务器给我们的回应。我们的图片信息保存在请求部分,因此可以过滤掉响应部分。
因为文件肯定比响应大,所以我们选择6010那个。这时候就没有响应部分出现了。
3. 保存原始文件,以便下一步处理。我们已经知道,请求部分中包含了文件的原始信息。因此,我们可以先保存下来,然后处理一下,得到原始文件。
我们选择raw类型进行保存,表示使用二进制形式保存文件。
保存为任意格式的文件,这里我们保存为temp.bin
1.3 实验任务三
任务描述:
使用winhex对文件进行最终处理,并保存文件。
1. 将刚才保存的temp.bin用winhex打开。
会看到,文中包含请求信息和我们的图片信息,以及文件结尾的尾部信息。我们需要做的事情是确定图片文件的原始信息头和尾,去掉多余部分。
2. 回到wireshark中,会看到我们刚才的tcp stream流中,
关于图片的头部分
在content-type: image/x-png后面有两个换行符,然后开始我们的原始文件。换行符用十六进制表示是 0D 0A.因为有两个,所以,我们在图片附近寻找0D 0A 0D 0A.后面的部分就表示图片的开始。
3. 回到winhex中,我们找到了上述数字
这时候我们需要去掉图片以上的部分。在00000000偏移处点击alt+1,表示选块开始。
在我们找到的0D 0A 0D 0A处的最后一个0A处点击alt+2.表示选块结束。这时候,我们就选中了图片之前的多余部分。
按下delete键,选择yes。
这时候文件中的多余头部已经被删除
4.回到wireshark中,我们看看图片传送完毕之后的尾部部分。
我们可以看到,这次是一个换行符。后面有些文件结束标志-------------,我们同样删除它们。
这时候我们的文件中就仅仅是原始图片的内容了。Ctrl+S保存。
最激动人心的一步来了。将我们的temp.bin改为temp.png.打开看下:
祝贺你,已经完成了我们本次实验,拿下神秘的key。