zoukankan      html  css  js  c++  java
  • wireshark之文件还原

    本文涉及相关实验:wireshark之文件还原

    实验目标:

    黑客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。

    这个技术你学会了吗?加入网安实验室,1300+网安技能任你学!
    合天智汇:合天网络靶场、网安实战虚拟环境
  • 相关阅读:
    深入理解Java并发之synchronized实现原理
    Untracked Files Prevent Checkout move or commit them before checkout
    java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transation read-only status server
    Java 实例
    java队列——queue详细分析
    Jquery 获取table当前行内容
    Java list 分页(多种方式)
    获取当天的开始时间、结束时间等等的一个工具类
    java list按照元素对象的指定多个字段属性进行排序
    [译] OpenStack Kilo 版本中 Neutron 的新变化
  • 原文地址:https://www.cnblogs.com/hetianlab/p/14442473.html
Copyright © 2011-2022 走看看