前言

Wireshark是一款图形界面的网络嗅探器,支持多种平台,是网络流量分析的利器。它的创始人是Gerald Combs,前身是Ethereal,作为开源项目经过众多开发者的完善它已经成为使用量最大的安全工具之一。最近刚把《Wireshark网络分析就是这么简单》看完,写的很有意思,把一些心得和技巧分享一下,部分内容也也源自个人总结。本文所使用的Wireshark是2.4.0版,可以到官网下载:

https://www.wireshark.org/

一、网络分析

0×00:只抓包头

在进行网络分析时往往只需要知道两个节点是不是能够联通,具体的传输信息并不重要,所以抓包的时候可以设置只抓包头,这样就大大减少了数据包的大小,有利于数据分析。

设置方法:Capture(捕获)–>Options(选项)–>Snaplen(Snap长度)。

将这个值设置200以下就可以抓到所有网络层次的头信息了。

另外也可以直接点击任务栏里的快捷键,快速设置

0×01:只抓必要的包

我们可以设置抓包的filter,只抓一些感兴趣的包。

设置方法:Capture(捕获)–>Options(选项)–>Capture Filter(捕获过滤器)

在输入框里输入规则,然后点击开始即可,比如输入

dst host 220.181.111.188(捕获目标主机为220.181.111.188的数据包)

220.181.111.188是ping www.baidu.com的ip地址,不同地理位置ping的ip可能不一样,然后浏览器访问百度就可以看到我们想要的捕获结果。

0×02:过滤

使用过滤规则进行数据包筛选是Wireshark最强大的功能之一,比如如果知道问题发生的具体协议就可以以协议名称过滤。使用协议过滤时要注意协议之间的依赖性,比如NFS共享挂载失败,问题可能发生在挂载所用的mount协议,也可能发生在mount之前的portmap协议。

然后就是IP+端口的方式,一个比较简单的方法就是可以在感兴趣的数据包上右键然后点击“追踪流”,就可以看到与这对ip和端口的全部通信。

也可以在相应的包上右键–>Apply as Filter(作为过滤器应用)–>Selected(选中),Wireshark就可以自动生成相应的过滤规则。这里给出一些常用的规则。

过滤IP:

IP源地址:ip.src ==192.168.1.1

IP目的地址:ip.dst== 192.168.1.1

IP地址(包括源和目的):ip.addr== 192.168.1.1

过滤端口:

TCP端口:tcp.port==80

TCP目的端口:tcp.dstport == 80

TCP源端口:tcp.srcport == 80

UDP端口:udp.port eq 15000

TCP 1-80之间的端口:tcp.port >= 1 and tcp.port <= 80

过滤协议:

http、tcp、udp、arp、icmp、http、smtp、ftp、dns 等。

过滤MAC地址:

源MAC地址:eth.src==A0:00:00:04:C5:84

目的MAC地址:eth.dst==A0:00:00:04:C5:84

MAC地址(包括源和目的):eth.addr==A0:00:00:04:C5:84

过滤包长度:

整个UDP数据包:udp.length==20

TCP数据包中的IP数据包:tcp.len>=20

整个IP数据包:ip.len==20

整个数据包:frame.len==20

HTTP模式过滤:

请求方法为GET:http.request.method==“GET”

请求方法为POST:http.request.method==“POST”

指定URI:http.request.uri==“/img/logo-edu.gif”

请求或相应中包含特定内容:http contains “FLAG”

0×03:自动分析

Wireshark有强大的统计分析功能,可以帮助分析人员快速统计出一些基本信息。比如点击Analyze(分析)–>Expert InfoComposite(专家信息),就可以看到数据包的中的一些不同级别的信息统计,包含重传次数、链接建立次数、网络错误等,在分析网络性能时这个功能很有作用。

单击Statistics(统计)–>TCPStream Graph(TCP流图形),可以生成一些统计图表,比如下图表示171到192的数据传输过程,水平线表示短暂的停止过程。

此外还可以统计分层信息、网络会话列表、网络端点列表、ip地址统计列表、应用层数据包信息等。

0×04:搜索

按“Ctrl+F”Wireshark也可以进行关键字搜索,选择“分组详情”后才可以搜索数据包中的内容,这样的搜索可以在CTF中也许会有意外收获。

二、CTF

下面每一种对应的操作都会给出一到几个CTF题目的例子,帮助大家快速上手。

0×00:搜索

题目文件:key.pcapng——https://pan.baidu.com/s/1kVyyCbt

题目描述:flag被盗,赶紧溯源!

题目题解:

首先可以只将这个数据包当做文本文件打开,比如用一些notepad++编辑器,然后直接搜索

正经的做法就是用Wireshark自带的搜索功能找尝试查找一些关键词(比如key、flag、shell、pass等),往往直接搜索就能有意外收获。

然后跟进可疑的数据包

根据数据包特征,很明显看出这是一个菜刀连接一句话木马的数据包,然后往下找,即可看到读取的flag

0×01:文件提取

题目文件: caidao.pcapng——https://pan.baidu.com/s/1kVyyCbt

题目描述:有人偷偷下载了文件!

题目题解:

根据题意可能数据包中存在文件传输,尝试直接导出,选择File(文件)–>Export Objexts(导出对象),然后可以看到一些协议,比如选中http就可以看到通过http传输的一些文件,在右下角有导出按钮,可生生成相应的文件。但是本题中无法用此方法直接看到被下载的文件,因为有些文件是直接通过tcp或udp协议传输的,http协议只能看到的访问的链接,但不会看到传输的内容(比如你去访问放一个链接download.php?file=test.rar,通过上述导出对象的方式看不出来下载的文件的内容的),如下如所示。

这个时候就需要找到那个执行下载的数据包,找到数据传输的部分再导出,比如下面这个数据包

大概是一个菜刀下载的过程,在最后一个包可以看到下载的文件,直接右键点击“导出分组字节流”,然后保存为.tar.gz文件

本题中最后还要使用16进制编辑器去除开头和结尾的X@Y字符,这个是菜刀的特征符号,不是文件内容。

再或者一个简单的方法,右键“显示分组字节流”,去除前后各三个字节在解压缩

再复杂一点就是多个包的数据提取了,一个较大的文件其传输过程可能要经过多个数据包,比如下面这道题目。

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

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

题目题解:

首先用HTTP条件过滤一下

右键第一个包,追踪流

可以看到一些基本信息,首先这是一个POST数据包,发送了一些文件相关信息,包括名称(fly.rar)和大小(525701)等。接下来应该就是文件实际上传的数据包,将过滤条件改为

http.request.method==”POST”

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

第二到第五个都是一样的长度,第六个为1777,应该是剩余的最后一部分数据。但是131436*4+1777=527521!=525701,再看下第一个数据包

都知道rar文件头应该是Rar,但是选中的数据部分前面却多出了很多,简单计算一下一共多出了364,且364*5+525701=527521。所以多出的也许是某种校验数据,在导出的时候将其忽略。

每个包都做同样的操作即可得出5个文件,再将这个文件按顺序拼接即可。拼接的话可以使用16进制编辑器手动拼接,也可以使用linux下cat命令,比如“cat 1 2 3 4 5 > fly.rar”。这道题还设置了伪加密,需要修改加密位,将0×84位置改为0×80即可。

解压出来后是一个exe可执行文件,里面隐藏了一个png图片,是个二维码,扫描即可得到flag。

Flag:flag{m1Sc_oxO2_Fly}

0×02:信息提取

题目文件: sqlmap.pcap——https://pan.baidu.com/s/1kVyyCbt

题目描述:

题目题解:

数据包记录的是sqlmap获取flag的过程,使用http && http contains”flag”过滤一下

可以看出这是一个布尔盲注的过程,一位一位的读取flag,然后用二分法不断判断其ascii码的范围并最终确定这一位的值。第806个包是读取flag第一位的数据包

将其payload解码一下是这样的,判断其ascii码是否大于64

id=1 AND ORD(MID((SELECTIFNULL(CAST(`value` AS CHAR),0×20) FROM isg.flags ORDER BY `value` LIMIT0,1),1,1))>64

然后一直到836个包判断第一位ascii码值大于72,然后开始从高到低递减,判断其ascii码不大于73,则第一位的ascii码值是73,对应的字符为I。以此类推,其flag为ISG{BLind_SQl_InJEcTi0N_DeTEcTEd}。本题需要一定的耐心和SQL注入基础。但是这么做可能有些繁琐,其实pcap数据包可以直接用文本编辑器打开,就可以看到其中的http请求

所以可以使用字符串搜索的方式直接去查找其中的语句,然后判断flag,首先将原数据包中的http请求导出来,另存为sqli.pcap

导出后的文件为: sqli.pcap——https://pan.baidu.com/s/1kVyyCbt

再使用如下的Python脚本一键读取即可

ISG{BLind_SQl_InJEcTi0N_DeTEcTEd}

三、Tshark

Tshark是命令行版的Wireshark,相对于Wireshark它有更好地灵活性,结合脚本程序可以发挥巨大的威力,在安装Wireshark的时候就默认安装了Tshark。

如下是运行-h参数,具体的参数解释可以参考官方文档

https://www.wireshark.org/docs/man-pages/tshark.html

比如kali下的一个简单的使用示例(windows不知为何无法获取网卡)

-s 512:只抓取前512个字节

-i eth0:监听eth0网卡

Tshark的-z参数可以进行各种信息的统计,比如下面这条命令,统计每一秒钟里由ip为的192.168.228.128主机发出的http请求的次数

tshark -zio,stat,1.00,http&&ip.src==192.168.228.128

程序在监听的时候会不断输出拦截的数据信息

最后终止的时候则会给出一个报表

这些统计信息都可以直接写入报告或直接导入excel进行下一步处理。

四、使用Python进行数据包分析

Python本身也可以解析数据包,它可以向Wireshark一样将pcap数据包分层解析,然后进行数据处理,这里需要安装scapy模块,如果安装不成功可以在kali2.0里尝试运行。网络模型大家应该有所了解,按不同的标准有七层和五层的分法,Wireshark就是按不同层次解析数据。同理scapy也是如此,下面这段代码打开上文提到的sqlmap.pcap数据包后是这样的

scapy主要是分为Ethernet、IP、TCP、Raw这四层,每一层都有每一层的关键字,可以利用键值对的方式直接读取相应的内容。其实Python适合处理大量数据包的情况,比如需要从100个数据包中查找某个特征,使用Wireshark一个一个打开就不现实,可以写脚本批量处理。这里给出一个示例代码,其作用是将/root/pcap文件夹里的数据包全部读取一遍,查找其中存在长度为32的字符串的数据包,并将其写入到另一个文件夹中。(Python对pcapng格式的数据包处

测试数据包如下,是我们上文提到的几个数据包及两个测试数据包

20160813-084957.pcap/20160813-083457.pcap——https://pan.baidu.com/s/1kVyyCbt

然后执行代码运行

在result文件夹里可以看到20160813-084957.pcap中存在符合条件的字符串,并且生成了对应的txt文件。同理,我们可以改变查找的规则,在大量数据包中查找我们想要的信息。

五、合天相关课程推荐

这里推荐一下和本文相关的合天实验,可以进一步学习,巩固加强。

wireshark使用:

http://www.hetianlab.com/cour.do?w=1&c=C172.19.104.182015012915332000001

wireshark之显示过滤:

http://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015012315255900001

wireshark之文件还原:

http://www.hetianlab.com/expc.do?ec=ECID172.19.104.182014122315591000001

Wireshark使用技巧相关推荐

  1. Wireshark小技巧:将IP显示为域名

    "  本文介绍如何使Wireshark报文窗口的Source栏及Destination内的IP直接显示为域名,提升报文分析效率." 一个典型的Wireshark界面如下: 从这个图 ...

  2. Wireshark使用技巧之GeoIP显示IP地理位置及经纬度信息

    0x00 Wireshark使用技巧-GeoIP显示IP地理位置 说明 Wireshark软件通过安装第三方数据库是可以显示IP地址位置的. 所谓GeoIP,Geolocation IP,就是通过来访 ...

  3. 抓包工具介绍、手机抓包、wireshark使用技巧

    抓包工具介绍 (1).网页抓包工具 Chrome浏览器插件 FireBug 插件 HttpWatch Fiddler 在浏览器chrome和firefox中可以使用插件抓取网络包,httpwatch会 ...

  4. Wireshark使用技巧:提取VOIP通话中的音频流

    "Wireshark的RTP流分析功能实战." 在VOIP协议的分析过程中,常常会遇到一些标准协议承载的语音传输,如以SIP.H.323为控制协商协议,RTP为语音数据协议的VOI ...

  5. 干货:Wireshark使用技巧-显示规则

    " 介绍Wireshark对已有报文的显示进行控制的显示规则." 之前对Wireshark抓包时使用的过滤规则进行了介绍,本文介绍对已有报文的显示进行控制的显示规则.掌握了显示规则 ...

  6. 干货,Wireshark使用技巧-过滤规则

    "介绍Wireshark抓包时使用的过滤规则." 熟练使用Wireshark,对协议分析大有帮助.本文介绍抓取报文时使用的过滤规则和对已有报文的显示进行控制的显示规则. 01 - ...

  7. 手机数据抓包以及wireshark技巧

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  8. 简单的android ios抓包技巧

    android截包 以前写过一个android截包方法,不太实用.最新发现一个实用的方式. (1).网页抓包工具 Chrome浏览器插件 FireBug 插件 HttpWatch Fiddler 在浏 ...

  9. 9.WireShark学习-使用WireShark分析SYN-Flooding攻击

    使用WireShark分析SYNFlooding攻击 本文内容: 拒绝服务攻击的相关理论; 使用Hping发起SYN flooding攻击; Wireshark的流量图功能; SYN flooding ...

  10. 深信服新手入门指引——软件开发工程师自我修炼

    1 软件开发工程师 一.通用知识 (1)参考书籍: <代码大全>-了解好的代码该怎么写: <TCP/IP协议详解>卷一 - 掌握计算机网络理论知识 <Unix网络编程&g ...

最新文章

  1. Aerospike NoSQL 数据库介绍
  2. b树的阶数如何确定_通过一个示例来聊聊如何规划一个PLC项目
  3. php 覆盖相同键的值,php - PHP数组使用相同的字符串键组合值 - SO中文参考 - www.soinside.com...
  4. Android 在 Google 开发者大会上发布了哪些更新? | Google 开发者大会 2018
  5. mysql 生成 javabean_从MySQL快速生成JavaBean
  6. magento 客户表相关_第9章 相关性分析
  7. 怎么测试dpi测试软件,如何测试鼠标DPI?
  8. 操作系统原理、实现与实践课后习题参考答案(已完结)
  9. 河南2002年计算机比赛,河南省体育局竞技体育管理信息系统(TYMIS2003)
  10. 2016年美团校园招聘数据开发工程师笔试编程题
  11. 经济学中的M0 M1 M2 M3的含义
  12. 经典GIF表情包怎么做
  13. 【SHOI2008】【BZOJ1023】cactus仙人掌图
  14. 南京标志设计-logo设计(品牌形象核心部分)
  15. 海洋CMS忘记后台管理员密码解决方法
  16. 数组转化为集合的方式asList()
  17. 监控FTP服务状态,并自动重启servU
  18. Java核心技术·卷二·第一章笔记
  19. 晕菜了,TFS居然把vss里的那个rollback功能cut掉了,还好有人写了工具.
  20. 前端AI语音方面的实现

热门文章

  1. VIN码识别技术在移动端的应用
  2. Windows 操作系统
  3. 体脂秤里的测脂模块方案,测量体脂全靠它?
  4. 软件测试如何快速入门
  5. RabbitMQ的安装教程
  6. Qt和PyQt中的组合键输入捕获处理
  7. 微信公众平台测试账号本地配置
  8. 一年风雨几度寒,一杯浊酒敬虎年
  9. 什么是双活数据中心 ?双活数据中心有哪些优点​?
  10. 算法岗实习面试经历(机器学习/强化学习岗实习生)