南京邮电大学网络信息安全课程实验:网络数据包捕获WireShark(实验一)
- 系列前言
- 实验目标
- 实验环境
- 实验一过程记录
- 目标一:使用正确的姿势打开WireShark
- 目标二:只捕获TCP的流量包
- 目标三:观察一个TCP包中的TCP包头、IP包头信息
- 目标四:捕获一次TCP三次握手过程
- 目标五:尝试利用WireShark分析流量
- 学校官网登录
- 163门户网站的抓包
- 流量捕捉——https密文包的捕捉
- 流量解析
- 支付宝网站的抓包
- 实验要求部分
- 扩展部分
- 实验二过程记录
系列前言
目前已经写了的两个系列,IDA权威指南读书笔记和人工智能的大创研究都已经鸽了好久了,主要是暑假的时候在忙其他事情,这两个系列接下来也会抽空写写,但接下来的主要精力是将《自己动手写操作系统》这本书的代码理解一下,然后可能还会看一下《软件调试》这本书之后才会仔细去阅读IDA权威指南。
然后就是随着学校开学了,我想开一个新的系列,把学校要求做的实验的实验过程记录到网络上来,一方面是为了监督自己,将实验尽可能做的完美,另一方面也是想扩充一下学校的实验资料。当然,我的水平十分有限,也希望看到的童鞋谅解,有什么不足之处请留言指出。
实验目标
本实验是网络安全课程的第一个实验,包括两个部分:
- WireShark抓包实验
- 使用WinDump抓取一个端口号的TCP三次握手
这两个实验还是比较简单的。
实验环境
第一个实验用到的软件是WireShark这个著名的软件,是一个跨平台的软件,所以第一个实验其实对操作系统并没有什么要求。
但是第二个实验需要用到WinDump这个程序,从名字上也可以知道,这个软件是特定于Windows的,当然Linux、Unix中肯定也有对应的软件,但是既然实验要求了使用WinDump的话,就不要去瞎折腾了吧。
所以本次实验使用到的环境是:WireShark中文版+Windows10+WinDump
实验一过程记录
目标一:使用正确的姿势打开WireShark
可能在某些电脑上会出现如上情况,WireShark没有网卡,这时候不要慌,直接在管理员权限下在PowerShell中输入
net start npf
即可
重启一下WireShark即可发现对应的网卡接口
由于我现在在使用WiFi模式,所以使用对应的网卡WLAN2,可以看到,现在WireShark正在捕获网络流量。
但是这里的流量包括了UDP和TCP的协议。
目标二:只捕获TCP的流量包
在实验里面我们只要求捕获TCP的流量,所以接下来我们要设置捕获过滤器:在菜单栏中选中捕获->选项->对应网卡输入过滤器设置即可:
需要注意的是WireShark中的过滤器有两种:显示过滤器和捕获过滤器。上面展示的正是捕获过滤器的设置方法。
显示过滤器的设置方法如下:
两套过滤器所使用的规则是一致的。而区别正如同
目标三:观察一个TCP包中的TCP包头、IP包头信息
选中一个TCP数据包,点击中间的窗口,并选中相应的协议,即可看到TCP流量的详细信息:
在TCP数据包里面的控制数据包括:
- 源端口、目的端口
- 序列号长度
- 滑动窗口长度等信息
对于我们来说一般只需要关注源端口和目的端口即可,另外的信息是TCP协议实现相关的参数。
接下来我们以同样的套路来粗看一下IP流量包的内容是什么
这里的内容也是和IP协议的具体实现有关,比较需要注意的是源IP地址和目的IP地址。
目标四:捕获一次TCP三次握手过程
这里的捕获我建议使用一次HTTP通讯的流量来查看TCP的三次握手过程,因为这样能让捕获并且显示的流量不那么复杂,这里我就选择学校官网的加载界面来展示,首先打开南邮正方的首页(在WireShark监视下),并查看网页的IP地址。
在WireShark中的显示过滤器中写入相应的IP过滤。
在上图中的头三个TCP流量即为三次握手的流量(seq,ack两个参数也符合TCP协议中的相关定义)
目标五:尝试利用WireShark分析流量
学校官网登录
这里设置一下对应的过滤方式。
可以看到对应的包。
从流量分析可以知道,txtUserName是用户名,TextBox2是密码,txtSecretCode是验证码。
这里说一句题外话,其实在现代浏览器的开发工具里面也有,比如FireFox的开发工具。
163门户网站的抓包
首先是163邮箱的门户网站www.mail.163.com,对于这个网站的抓包和学校门户网站的抓包过程不太一致,这里可以分成两个阶段,实验里只要求了第一个阶段,第二个阶段是我自己感兴趣研究的,这里我都写出来给大家看一下
流量捕捉——https密文包的捕捉
首先是通过工具查看一下门户网站的IP地址
但是有两个问题:
- 在WireShark里面并没有对应的IP的数据包,这里考虑到可能是163的网络架构比较复杂,是从其他地方get到html和js等相关文件的。
- 接下来扩大过滤范围,将所有的HTTP包全部放出来,但是仍然没有,这个就比较奇怪。
到这里发现不太对劲,后来经过检查,发现了163的门户网站采用的是基于TLS的HTTPS协议。
所以WireShark没办法进行解析,后来根据HTTPS协议的特点,设置了如下显示过滤器
后来结合DNS查询工具,果然发现了一些东西:
到目前为止,我们分析到了被加密过的流量包,学校的实验就 已经完成了。接下来我们尝试一下解密一下这些数据包。
流量解析
这里的部分是自己感兴趣做的,学校实验并不要求。
Firefox和Chrome等浏览器支持将对话时使用的TLS密钥进行导出,方法为在系统变量里面设置一个变量。
其中值为已存在的文件。在WireShark中填入对应的文件路径。
需要注意的是协议这里还有可能是SSL协议。这时候WireShark中就有相应的流量包了。
同样抓包抓到了对应的上传的用户名和密码。
不过密码应该是经过二次加工了,就是不太了解是用了HASH算法还是其他的加密算法,这个东西就要细挖前端的JS文件了,这里就不展开了。
支付宝网站的抓包
实验要求部分
在支付宝页面采用的是HTTP2协议。
同样使用了TLS协议加密。
扩展部分
这里说一个坑,就是Firefox的会话密钥在浏览器关闭时才写入文件中,所以正确的解密SSL的方式为:抓包->登录->关闭浏览器->进行解密。这里我搞了好久…还一度以为是通过JS文件将密钥清除了。
然后就看到了对应的登录数据包。
需要注意的是,WireShark中HTTP2的数据包报文头和数据是分开传输的,所以找数据的时候是分开的,…我个人感觉这个体验很不舒服。
然后就可以在DATA数据包里面找到对应的发送数据了。
对比一下在Firefox上的数据
搞定。
同样的,密码我估计也是通过HASH算法储存的…这里默默吐槽一下学校的教务系统
实验二过程记录
这里推荐一下WinDump的使用指南:
https://blog.csdn.net/xiaoxu0123/article/details/4544064
根据指南的使用说明,采用如下参数即可收集到对应的三次握手过程:
WinDump -c 3 -n tcp and host 118.126.90.129
顺便说一下,这个工具着实难用,在有Wireshark的情况下还是GUI界面比较香一点点。