一、wireshark
笔记本电脑一台,安装parallels desktop虚拟机,配置win10系统。下载并安装wireshark,使用Wireshark捕获以太网数据,可以捕到自己的数据包;也可以去捕获同一局域网内,在知道对方IP地址的情况下,捕获到对方的数据包。
1.wireshark界面功能模块
- 主窗口
打开wireshark 后的抓包主界面如图所示,其主窗口由如下部分组成:
菜单栏:Wireshark的标准菜单栏。 工具栏:常用功能快捷图标按钮。 过滤工具栏:减少查看数据的复杂度。 Packet List面板:显示每个数据帧的摘要。 Packet Details面板:分析封包的详细信息。 Packet Bytes面板:以十六进制和ASCII格式显示数据包的细节。 状态栏:分组、已显示、已标记帧的数量,配置文件。
- 菜单栏
文件:包括打开、合并捕捉文件,保存、打印,导出捕捉文件的全部或部分。 编辑:包括查找包,时间参考,标记一个多个包,设置预设参数。 视图:控制捕捉数据的显示方式,包括颜色,字体缩放,将包显示在分离的窗口,展开或收缩详情面版的树状节点。 跳转:包含到指定包的功能。 捕获:控制抓包的对话框,包括接口,选项,开始、停止、重新开始和过滤器。 分析:包含处理显示过滤,允许或禁止分析协议,配置用户指定解码和追踪TCP 流等功能。 统计:包括的菜单项用户显示多个统计窗口,包括关于捕捉包的摘要,协议层次统计等。 帮助:包含一些辅助用户的参考内容。如访问一些基本的帮助文件,支持的协议列表,用户手册。
- 工具栏
工具栏按钮功能与下图分别进行对应说明:
第一部分:启动捕获、停止捕获、重新捕获、接口列表; 第二部分:打开文件、保存文件、关闭文件、重新加载文件; 第三部分:查找包、向前查找、向后查找,查找指定的包、跳到第一个包、跳到最后一个包; 第四部分:自动滚屏着色; 第五部分:放大、缩小、普通大小、帮助。
- 过滤工具栏
过滤工具栏的过滤方式主要有以下四种:过滤源IP、目的IP。在wireshark的过滤规则框Filter中输入过滤条件,如查找目的地址为192.168.101.8的包,则输入
ip.dst==192.168.101.8;查找源地址为ip.src==1.1.1.1
;端口过滤。如过滤80端口,在Filter中输入
tcp.port==80
,可以把源端口和目的端口为80的包都过滤出来,使用tcp.dstport==80
只过滤目的端口为80的,tcp.srcport==80
只过滤源端口为80的包;协议过滤。直接在Filter框中直接输入协议名;
http模式过滤。如过滤get包,
http.request.method=="GET"
,过滤post包,http.request.method=="POST"
;连接符and的使用。过滤两种条件时,使用and连接,如过滤ip为192.168.101.8并且为http协议的,
ip.src==192.168.101.8 and http
。
- Packet List面板
面板用表格的形式显示了当前捕获文件中的所有数据包,该面板中共有七列,每列内容如下所示:
No(Number)列:包的编号。该编号不会发生改变,即使使用了过滤也同样如此; Time列:包的时间戳。时间格式可以自己设置; Source和Destination列:显示包的源地址和目标地址; Protocol列:显示包的协议类型; Length列:显示包的长度; Info列:显示包的附加信息。
在该面板中,可以对面板中的列进行排序、调整列位置、隐藏列、显示列、重命名或删除列等操作。下面以例子的形式将分别介绍在该面板中可操作的功能。
- Packet Details面板
面板分层次地显示了一个数据包中的内容,并且可以通过展开或收缩来显示这个数据包中所捕获到的全部内容。在Packet Details面板中,默认显示的数据的详细信息都是合并的。如果要查看,可以单击每行前面的小三角展开帧的会话。
- Packet Bytes面板
该面板显示了一个数据包未经处理的原始样子,也就是其在链路上传播时的样子。
在该面板中的数据以十六进制和ASCII格式显示了帧的内容。当在Packet Details面板中选择任意一个字段后,在Packet Bytes面板中包含该字段的字节也高亮显示。
- Wireshark状态栏介绍
状态栏是由两个按钮和三列组成的,状态栏中每部分的作用:
按钮一 专家信息按钮
。该按钮的颜色是为了显示包含在专家信息窗口中最高水平的信息。专家信息窗口可以提醒用户,在捕获文件中的网络问题和数据包的注释
按钮二 捕获文件注释按钮
。单击该按钮,可以添加、编辑或查看一个捕获文件的注释。该功能只可以在以.pcapng格式保存的捕获文件使用。第一列(获取字段、捕获或捕获文件信息):当在捕获文件中选择某个字段时,在状态栏中将可以看到文件名和列大小。如果点击Packet Bytes面板中的一个字段,将在状态栏中会显示其字段名,并且Packet Details面板也在发生着变化。
第二列(包数):当打开一个捕获文件时,在状态栏中的第二列将显示该文件的总包数。显示了捕获的数据包数量、显示包数和加载时间。如果当前捕获文件中有包被标记,则状态栏中将会出现标记包数。
第三列(配置文件):表示当前使用的文件。在上图的状态中,表示正在使用Default 文件。文件可以创建,这样就可以自己定制Wireshark的环境。
2.使用wireshark捕获登陆数据
由于容易泄漏个人信息,这里主要是总结一下步骤和分析方法,抹掉网址和ip,截图较少。
使用Wireshark分析HTTP数据包,并截获账号密码。因为Http基本都是明码的,所以在两个ip端口之间传送的私密信息数据包很容易被截获,以下是分析实验,目的是截取用户在某网站登录的账号和密码。
为了定向截获网络数据包的内容,首先需要明确数据包源地址和目的地址。源地址为本机的ip地址,使用cmd,输入“ipconfig”可以获取本机所有网络接口的详细信息。
之后需要确定目标地址的ip,可以通过命令提示符的“ping”命令,获取网站的ip地址。
得到了源地址和目标地址,接下来开始监控网络数据包。为了减少数据量,需要关闭所有的浏览器并清除浏览器记录等,然后开始对本机以太网进行监控。
然后打开浏览器,输入网址,进行用户登录(当然wireshark也可以监听捕获他人的ip)。
- 登录成功后,停止Wireshark对网络的监听,然后选择“Filter”,筛选“HTTP”协议内容。然后选择搜索按钮,输入搜索条件筛选“ip.src==xxx.xxx.xxx.xxx&&ip.dst==xxx.xxx.xxx.xxx”, 查看所有的数据包,找到Info内容中含有“POST”“HTTP/1.1”字样的数据包,这个数据就是输入账号、密码后,本地IP向网站地址IP提交的包含个人信息的数据包,通过分析数据包的内容,便可以得到想要截获的账号、密码。
找到需要的包后双击打开,在最后一项中,包含有用户输入的账号、密码,这是用户在网页输入账号密码并点击登录后,本机向服务器提交的请求,因为没有加密,所以容易获取,由此可见该网站有一定的安全漏洞。
3.分析数据包
选取在Wireshark中捕获的一个数据包。从该界面可以看出显示了五行信息,各行信息如下所示:
Frame:物理层的数据帧概况。 Ethernet II:数据链路层以太网帧头部信息。 Internet Protocol Version 4:互联网层IP包头部信息。 Transmission Control Protocol:传输层的数据段头部信息,此处是TCP协议。 Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议。
- 帧、包、段展开内容(以登陆成功页面为例)
a.物理层数据帧
Frame 7: 376 bytes on wire (3008 bits), 376 bytes captured (7312 bits) on interface 0 7号帧,线路上传输376字节,实际捕获376字节。 Interface id: 0 接口id Encapsulation type: Ethernet (1) 封装类型 Arrival Time: 捕获日期和时间 [Time shift for this packet: 0.000000000 seconds] Epoch Time: 1521005911.238411000 seconds [Time delta from previous captured frame: 0.000343000 seconds] 与前一帧的时间间隔 Frame Number: 7 帧序号 Frame Length: 376 bytes (3008 bits) 帧长度 Capture Length: 376 bytes (3008 bits) 捕获长度 [Frame is marked: False] 此帧是否做了标记:否 [Frame is ignored: False] 此帧是否被忽略:否 [Protocols in frame: eth:ethertype:ip:tcp:http:urlencoded-form] 帧内封装的协议层次结构 [Coloring Rule Name: HTTP] 着色标记的协议名称 [Coloring Rule String: http || tcp.port == 80] 着色规则显示的字符串
b.数据链路层以太网帧头部信息
Ethernet II, Src: xxx, Dst: xxx Destination:xxx 目标MAC地址 Source: xxx 源MAC地址 Type: IP (0x0800)
c.互联网层IP包头部信息
Internet Protocol Version 4, Src: xxx.xxx.xxx.xxx, Dst: 202.205.232.202 Version: 4 互联网协议IPv4 Header length: 20 bytes IP包头部长度 Differentiated Services Field: 0x00 (DSCP: cs0; ECN: Not-ECT) 差分服务字段 Total Length: 362 IP包的总长度 Identification: 0x6536 (25910) 标志字段 Flags: 0x02 (Don‘t Fragment) 标记字段 Fragment offset: 0 分的偏移量 Time to live: 64 生存期TTL Protocol: TCP (6) 此包内封装的上层协议为TCP Header checksum: 0x0000 [validation disabled] 头部数据的校验和
d.传输层TCP数据段头部信息
Transmission Control Protocol, Src Port:8080,Dst Port:51979, Seq: 1, Ack: 952, Len: 366 Source port: 8080 源端口号 Destination port:51979 目标端口号 Sequence number: 1 (relative sequence number) 序列号(相对序列号) [Next sequence number: 367 (relative sequence number)] 下一个序列号 Acknowledgment number: 952 (relative ack number) 确认序列号 Header length: 32 bytes 头部长度 Flags: 0x018 (PSH, ACK) TCP标记字段 Window size value: 65535 流量控制的窗口大小 Checksum: 0x8265 [unverified] TCP数据段的校验和
4.wireshark还可以捕获连接建立中三次握手、四次挥手的过程,这里不再赘述,操作过程参见csdn博客:Wireshark抓包分析TCP 3次握手、4次挥手过程, 以及TLS协议报文解析。
二、burpsuite
笔记本电脑一台,下载安装burpsuite free edition,软件界面如下:
Burpsuite是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务:请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登陆表单,执行会话令牌等多种的随机性检查。
1.软件功能
- proxy—Burpsuite带有一个代理,通过默认端口8080上运行,使用这个代理,我们可以截获并修改从客户端到web应用程序的数据包。
- Spider–Burpsuite的蜘蛛功能是用来抓取Web应用程序的链接和内容等,它会自动提交登陆表单(通过用户自定义输入)的情况下。Burpsuite的蜘蛛可以爬行扫描出网站上所有的链接,通过对这些链接的详细扫描来发现Web应用程序的漏洞 。
- Scanner–它是用来扫描Web应用程序漏洞的,在测试的过程中可能会出现一些误报,因为自动扫描器扫描的结果不可能完全100%准确。
- Intruder–此功能可用于多种用途,如利用漏洞,Web应用程序模糊测试,进行暴力破解等。
- Repeater–此功能用于根据不同的情况修改和重放相同的请求次数并进行分析。
- Sequencer–此功能主要用来检查Web应用程序提供的会话令牌的随机性,并执行各种测试。
- Decoder–此功能可用于解码数据找回原来的数据形式,或者进行编码和加密数据。
- Comparer–此功能用来执行任意的两个请求,响应或任何其它形式的数据之间的比较。
2.工作流程
图片来源于一篇博客,我认为比较系统地描述了burpsuite软件的测试流程。
3.登陆信息重放实验
a.设置浏览器的代理服务器和端口为127.0.0.1:8080,注意保持一致。
proxy(代理)—opitions,其中running要勾选才可以监听。
- 浏览器—工具—internet选项—局域网设置—代理服务器(设置代理就是把浏览器发的数据包通过burpsuite,被burpsuite拦截)
b.打开飞牛网,进行用户名、密码登陆- 这时burpsuite已经成功拦截到登录信息。
c.把不需要的请求“forward”掉,然后筛选请求地址。
发现成功捕获到了登录数据,用户名(抹掉)和明文的密码。
4.篡改、转发请求测试
代理服务器和burpsuite的配置与3类似。
a.在淘宝中搜索nike,观察正常的搜索结果。
b.在burpsuite中点击proxy(代理)—opitions,其中running要勾选才可以监听。
c.在淘宝中再次搜索nike,发现burpsuite中已经截获到数据包。
d.把不需要的请求“forward”掉,然后筛选请求地址。
最后筛选出了一个请求地址,将其中的搜索关键字由“nike”改为“vans”,并发回服务器,观察结果。
结果是页面中的搜索项和搜索结果都变成了“vans”。
5.利用同样的原理进行操作,可以使登录页面的请求结果变成“用户名/密码错误”。