渗透测试-由HTTPS抓包引发的思考

【声明】本文首发于FreeBuf:由HTTPS抓包引发的思考,属于FreeBuf原创奖励计划,未经许可禁止转载。

前言

在HTTP协议中,所有报文的发送、接收都是以明文的形式进行的。也就是说,在TCP/IP五层网络模型中,数据直接以明文的形式从应用层(HTTP)发送给传输层(TCP),之间没有任何加密过程。

这将带来以下三大风险:

HTTP风险 风险说明 HTTPS应对方法
窃听/嗅探风险 中间人可以截获客户端、服务器之间的通信数据,一览无遗 对数据使用密码加密算法进行加密
数据篡改风险 中间人截获数据之后,可以对数据修改之后再发送给对方 使用相关的数字签名算法,保障数据的完整性
身份伪造风险 通信双方无法识别对方的身份,中间人可趁机而入 通过颁发数字证书来证明对方的身份

而在渗透测试过程中,必不可少的操作就是使用BurpSuite、Fildder等抓包工具对应用程序的数据包进行拦截、观察和篡改。那么问题来了——对于使用HTTPS协议的站点,在BurpSuite中拦截到的数据包为何也是“明文传输”?如下图所示。
在这里插入图片描述
从大神那里获得解答:

(1) BurpSuite能抓到HTTPS协议的“明文数据”是因为BurpSuite在本地浏览器安装了自己的证书,作为中间人的它分别建立起了“客户端->代理服务器”、“代理服务器->服务端”两段HTTPS通道,BurpSuite获得Client消息后先解密后再重新加密,然后代替客户端发给服务端,这个过程中BurpSuite自然能获得明文。
(2) 但是如果使用WireShare来单纯监听、嗅探HTTPS协议的数据包的话,我们就会看到TCP携带的Data都是密文,是无法拿到明文数据的。

WireShark抓包

接下来当然是使用WireShare监听数据并观察分析下,先简单说下WireShare的基本使用。

首先开启WireShark并配置受监听的网卡:
在这里插入图片描述选择正在使用的网卡,双击WLAN开始监听:
在这里插入图片描述电脑中开启浏览器或其他应用的时候都会有流量产生,有流量产生就会被WireShark捕捉到。上图为刚刚开启WireShark后的捕捉状态,会抓到大量各种各样的流量,稍后我们会进行过滤操作。

HTTP站点

使用合天网安实验室的登陆页面作为观察对象。
在这里插入图片描述在CMD中Ping域名,获得站点IP地址 58.20.54.226
在这里插入图片描述
在WireShark中设置过滤规则“ ip.dst==58.20.54.226 ”,发现登录请求传输的账号密码信息:
在这里插入图片描述也可以选择资源为POST /sessions HTTP/1.1的流量然后鼠标右键选择追踪流->TCP流,可以看到用户名和密码等敏感信息可以被嗅探:
在这里插入图片描述查看前端代码,可发现该HTTP站点确实对账户密码做了前端加密后再进行传输:
在这里插入图片描述

HTTPS站点

看完上面HTTP站点的数据在WireShark中“裸奔”,接下来看看HTTPS站点是不是也如此。

选用站点“墨者学院”作为观察对象:
在这里插入图片描述
在WireShark中设置过滤规则“ ip.dst==113.200.16.234 ”,可发现HTTP站点的流量均给出了具体的请求资源地址(如上面的POST /sessions HTTP/1.1),而HTTPS站点传输的时候只提示为“Application Data”:
在这里插入图片描述继续选择任意协议为TLSv1的流量后右击选择追踪流->TCP流,发现数据均经过加密,根本看不懂:
在这里插入图片描述此处简述下HTTPS的通信过程:

  1. 服务端需要向CA机构申请数字证书,来证明自己身份的有效性;
  2. 当客户端发出请求时,服务端把自己的证书发给客户端,客户端使用CA的公钥验证服务端发过来的证书有效,认证了服务端的有效性,然后拿出数字证书中包含的服务端的公钥;
  3. 客户端根据与服务端协商的加密算法组件生成一个随机数作为对称加密的密钥,然后使用服务器发送过来的公钥对其加密,最后传递给服务端;
  4. 服务端用自己的私钥解密,拿到随机数(对称加密的密钥),之后客户端和服务端就用这个随机数进行对称加密通信。

关于通过WireShark分析HTTPS协议原理的过程可参考以下博文:使用WireShark深入理解HTTPS原理,此处不深入展开。

解密HTTPS数据

HTTPS协议使用了对称加密,客户端拥有并存储了对称加密的会话密钥,浏览器在接收到服务端发送回来的密文数据之后,会使用存储在本地的秘钥对数据进行解密。那么我们通过WireShark监听到的HTTPS站点的密文能否依靠此密钥进行自动解密?答案是——可以。

接下来我们来实际操作并验证下:

  1. 以windows系统+Chrome浏览器为例,首先要导出浏览器存储的密钥,通过计算机属性——高级系统设置——环境变量,新建一个变量名“SSLKEYLOGFILE”的变量,变量值是导出的密钥具体文件地址。在这里插入图片描述
  2. 设置后可以通过重启Chrome浏览器打开任意一个HTTPS网址,此时查看变量值对应路径,密钥成功导出到本地啦,已经生成sslkey.log文件:在这里插入图片描述
  3. 现在可以将密钥导入到Wireshark了,具体路径如下:菜单栏—>编辑—>首选项—>Protocols—>TLS/SSL(选择SSL还是TLS请根据实际情况):在这里插入图片描述
  4. 配置完成,来看下最终的实际效果(此处同样使用上文中“墨者学院”HTTPS站点作为测试对象,其初始的加密数据包状态可翻看前文):在这里插入图片描述
  5. 对比一下文章开头BurpSuite拦截到的数据包:在这里插入图片描述

【总结】至此,我们可以得知BurpSuite拦截HTTPS站点可获得明文数据包,并非因为HTTPS站点跟HTTP站点一样进行“裸奔”,而是BurpSuite代理服务器作为中间人,对HTTPS站点的数据包进行了解密。

监听局域网流量

既然HTTP协议和HTTPS协议的明文数据我们都有办法通过WireShark进行获取,那么问题来了——WireShark能否轻易获得局域网内部其他主机的数据包呢?(如果可以………我那存有两毛钱巨款的账户的信息安全该咋办?)

展开叙述之前,了解一篇网络基础的博文:路由器、交换机、集线器的区别

抓取局域网内其他主机的数据包有以下几种办法:

  1. 第一种,如果你和别人共同使用的那个交换机有镜像端口的功能(企业级路由才有镜像端口功能,我等屌丝用的TP-LINK无这个功能),这样你就可以把交换机上任意一个人的数据端口做镜像,然后你在镜像端口上插根网线连到你的网卡上,你就可以抓取别人的数据了;
  2. 第二种,把你们局域网的交换机换成一个集线器,这样的话所有的数据包都是通发的,也就是说,不管是谁的数据包都会路过这个集线器上的每一个计算机,只要你将网卡设置为混杂模式就能抓到别人的包(混杂模式就是指网卡能接受所有通过它的数据流,不管是什么格式,什么地址的);
  3. 第三种,利用MAC地址欺骗(即ARP欺骗),在局域网内发送ARP包,使其他计算机都误以为你是网关,这样的话,其他计算机都会将它们的数据包发送到你这里,你就可以抓到它们的包了(不过如果你用这种方法,建议还是自己写个程序比较好,现在很多无良工具都是截获别人的数据请求但不转发,最好转发一下,这样其它计算机就不会发现你在做MAC欺骗了);
  4. 第四种,Windows 10系统可以在一块真实无线网卡基础上再虚拟出一块无线网卡,支持网络共享,让电脑变身WIFI热点,我们把接网卡共享后设置其IP为192.168.XXX.XXX,让这个网卡做网关,别的电脑连上WIFI后都通过这个网卡上网,然后你就可以轻易的在这个网卡上捕获别的电脑的数据包。

上述四种方法,较易实现和验证为最后一种,下面进行实操。

  1. 要通过Win10系统自带的移动热点进行WIFI共享,首先确保WLAN网卡开启,WLAN网卡连接到其它无线WLAN网络上:
    在这里插入图片描述
  2. 移动热点即变为可开启状态,并点击编辑按钮进行SSID无线名称及连接密码进行设置即可:在这里插入图片描述
  3. 在网络连接设置页面上找到刚刚开启的虚拟AP网卡信息:在这里插入图片描述
  4. 在CMD窗口中使用ipconfig命令查询当前主机的IP,结果为:在这里插入图片描述
  5. 设置虚拟网卡的IP地址、子网掩码、DNS服务器地址如下,点击确认:在这里插入图片描述
  6. 选择WLAN 右键属性—>共享设置,选择共享并选择刚刚开启的无线AP热点,点击确认:在这里插入图片描述
  7. 通过手机或者其他支持WIFI上网的设备搜索该信号即可进行连接并上网,此处选择手机:在这里插入图片描述
  8. 查看手机连上电脑热点后分配到的IP地址: 在这里插入图片描述
  9. 在电脑打开WireShark,监听刚才开启的虚拟无线网卡:在这里插入图片描述
  10. 可以看到,成功监听到手机的数据包流量:在这里插入图片描述
  11. 进一步验证一下!!手机浏览器打开“合天网安实验室”站点的登录页面,并进行登录:在这里插入图片描述
  12. 在WireShark输入过滤规则“ip.src==192.168.137.251 and ip.dst==58.20.54.226”并查看登录请求包,成功监听到明文账号和密码信息(已做前端加密):在这里插入图片描述

至此,我们可以看到,手机平时在公众场合连接未知的WIFI后进行系统登录、转账业务等敏感操作将是多么危险!!!!一不小心账号和密码就被监听了!

发布了117 篇原创文章 · 获赞 84 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/weixin_39190897/article/details/103466623