基于Wireshark验证网站口令认证传输方案
1.实验目的:
1.熟练掌握wireshark的使用方法
2.能够捕获网站登录的数据包并进行简单分析
3.理解口令认证过程中的网络监听威胁
4.理解通过网络热点上网的安全威胁
2.实验预习:
1.HTTP协议
2.基于用户名口令的身份认证原理:
基于口令的认证方式是较常用的一种技术。在最初阶段,用户首先在系统中注册自己的用户名和登录口令。系统将用户名和口令存储在内部数据库中,注意这个口令一般是长期有效的,因此也称为静态口令。当进行登录时,用户系统产生一个类似于时间戳的东西,把这个时间戳使用口令和固定的密码算法进行加密,连同用户名一同发送给业务平台,业务平台根据用户名查找用户口令进行解密,如果平台能恢复或接收到那个被加密的时间戳,则对解密结果进行比对,从而判断认证是否通过;如果业务平台不能获知被加密的时间戳,则解密后根据一定规则(如时间戳是否在有效范围内)判断认证是否通过。静态口令的应用案例随处可见,如本地登录Windows系统、网上博客、即时通信软件等。
3.实验内容:
1.电脑开启热点,捕获通过热点上网的手机上所输入的登录信息,分析口令认证明文传送数据。
2.电脑开启热点,捕获通过热点上网的手机上所输入的登录信息,分析口令的变换方法,并验证口令。
3.分析https保护的网站中的口令。
4.实验步骤:
(一)监听明文口令并进行验证
1.在电脑端开启热点,手机使用热点上网。可以再电脑端得到手机的ip地址。
2.在手机上通过浏览器访问网站A(自己选择,口令传输方式为明文即可。例如:www.lemonban.com),并输入用户名与口令进行登录。(用户名使用学号,口令可以任意输入),同时电脑端使用Wireshark进行捕包。
3.快速找到含有登录信息的数据包,指出登录信息并进行验证。通过抓包,我们可以快速的获取用户名与密码。
(二)监听变换后的口令并进行验证
1.在电脑端开启热点,手机使用热点上网。
2.在手机上通过浏览器访问网站B(自己选择,口令传输方式为变换即可,例如: http://test.lemonban.com/ningmengban/app/login/login.html),并输入用户名与口令进行登录。同时电脑端使用Wireshark进行捕包。
3.快速找到含有登录信息的数据包,指出变换后的登录信息,尝试进行具体变换方法的分析。为了知道网页对用户密码的加密方法,我们可以查看对应网站的源码。发现这里网站使用MD5加密,我们可以使用对应的工具网站对密码进行还原。如图,可以轻易的得知对应的密码原文。
(三)监听https网站口令(只使用电脑端即可)
1.通过浏览器访问使用具有用户登录界面的HTTPS方式进行连接的网站C(例如mail.besti.edu.cn,具体网站可自己选择)。
2.输入用户名与口令进行登录,同时启动Wireshark进行捕包。(用户名使用学号,口令可以任意输入)
3.电脑端停止Wireshark捕包。查看所捕获的数据包,分析与访问前两个网站数据包的区别。
通过抓包后发现,此网站没有抓到数据包,而抓到的是TCP与TLS数据包。这里我们主要介绍下TLS。
https中的TLS协议
1.简介:
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议.
安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。
该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
TLS协议为位于应用层与传输层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。
2.基于TLS的SSL握手过程:
1.客户端 发送 生成随机数(client random)和支持的加密方法给服务器
2.服务器 返回 双方使用的加密方法,使用的TLS版本号和一个随机数给客户端
3.服务器 给出 数字证书以及自身通过某种算法生成的参数到客户端
4.客户端 获取 服务器发送的pubkey 获取一个新的 pubkey发给服务器
5.服务器 返回 session ticket给客户端
3.分析Wireshake包
1.客户端发送 生成随机数(client random)和支持的加密方法 给 服务器
第一个握手包,因为是握手过程,密钥还没协商,这里还是使用明文传输,记录协议的数据载体就是明文的 SSL 握手协议。
2.服务器 返回 双方使用的加密方法,使用的tls版本号和一个随机数 给 客户端
加密套件(cipher suite):TLS+密钥交换算法+加密算法+认证算法
3.服务器 给出 数字证书以及自身通过某种算法生成的参数 到 客户端
4.client根据server返回值(随机数,加密套件)交换密钥
5.服务端收到这个报文后,会使用自己的私钥解开这个随机数。在这个阶段过后,服务端和客户端都有三个随机数:客户端随机数、服务端随机数和预备主密钥。在服务端收到了 Client Key Exchange 消息后,两端都按照相应的算法生成了主密钥,加密密钥交换完成。
6.后续分别通知对方,后续消息会加密后发送。
关于 Encryted Alert消息,警报消息经常只是客户端用来提示服务端 SSL 传输结束,对照抓包到的内容确实如此。所以这里只是 SSL 传输结束的一个信号。发出了 Encryted Alert 后客户端数据传输完毕,准备进入四次挥手断开 TCP 连接。