由HTTPS抓包引发的一系列思考(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数据
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能否轻易获得局域网内部其他主机的数据包呢?(如果可以………我那存有两毛钱巨款的账户的信息安全该咋办?)
问题的答案是——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后进行系统登录、转账业务等敏感操作将是多么危险!!!!一不小心账号和密码就被监听了!
由HTTPS抓包引发的一系列思考(HTTPS解密)相关推荐
- Https/Tcp抓包工具Charles、fiddler,ping (网络诊断工具),Android平台HTTPS抓包解决方案及问题分析HttpCanary
市面上已经有一些弱网络模拟工具,比如微软的Network Emulator for Windows Toolkit(NEWT),Facebook的Augmented Traffic Control(A ...
- fiddler教程:抓包带锁的怎么办?HTTPS抓包介绍。
点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 介绍Fiddler的HTTPS抓包功能." 这里首先回答下标题中的疑问,fiddler抓包带锁的原因是HTTPS流量抓包功能开启, ...
- Charles 4.2.1 HTTPS抓包
Charles 4.2.1 HTTPS抓包 Charles iPhone抓包 Mac必须与iPhone连接同一WiFi Proxy -> SSL Proxying Settings -> ...
- 移动端https抓包那些事--进阶篇
上一次和大家介绍了手机端https抓包的初级篇,即在手机未root或者未越狱的情况下如何抓取https流量,但是当时分析应用时会发现,好多应用的https的流量还是无法抓取到,这是为什么呢? 主要原因 ...
- 移动端https抓包那些事--初级篇
对于刚刚进入移动安全领域的安全研究人员或者安全爱好者,在对手机APP进行渗透测试的时候会发现一个很大的问题,就是无法抓取https的流量数据包,导致渗透测试无法继续进行下去. 这次给大家介绍一些手机端 ...
- fiddler设置https抓包
代理端口设置:127.0.0.1:8888 https抓包设置 模拟post请求: http://xxx.xxxx.com/portal/login.htm Cookie: xxxx account= ...
- http抓包实战 pdf_实战 Wireshark https 抓包 2, 再抓 Moka 蹭 OurATS 的小尾巴
在昨天的文章 实战 Wireshark https 抓包,抓住 Moka 蹭 OurATS 的小尾巴 里,我们通过 chromium-browser 的 SSLKEYLOGFILE 环境变量特性,实现 ...
- IOS https抓包及10.3.3版本证书不生效问题解决
Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 官网下载安装Charles: https://www.charlesproxy.com/download/ 2. HTTP抓 ...
- https抓包_浅谈HTTPS抓包原理,为什么Charles能够抓取HTTPS报文?
Charles作用其实相当于拦截器,当客户端和服务器通信时,Charles其实会先接收到服务器的证书,但是它会自己生成一个证书发送给客户端(不管是Web端或App应用),也就是说它不仅仅是拦截,甚至还 ...
最新文章
- 【RocketMQ工作原理】消息的消费
- 住房要注意用电安全-记录一下失火
- synchronized的基本语法
- jvm(11)-晚期(运行期)优化
- 计算机c语言二级试题及答案,计算机c语言二级考试试题及其答案.doc
- Delphi中动态调用DLL的方法
- sql server tcp 信号灯超时时间已到_「图文详解」TCP为啥要3次握手和4次挥手?3次挥手不行吗?...
- 【C】揭秘rand()函数;
- NOIP2015运输计划
- java(jdk) 8u45 正式版_缺氧正式版,草图分享(克莱)
- Java和JavaScript中使用Json方法大全
- 啊哈C语言——让计算机多彩的开口说话
- win10怎么一键释放运行内存
- java垃圾回收的优点和原理_Java垃圾回收器的方法和原理总结
- 解决thinkpad或者其他笔记本电脑无线网络不可用问题
- docker安装torna1.16.2
- Arduino ESP32 WIFI 蓝牙模式触控按键切换
- Linux部署springboot项目(从安装java开始)
- 新电脑自带的office密钥在哪里?
- xp计算机能装win系统吗,自己用的电脑要装系统,XP, Win7, Win10到底选哪个?解救小白篇...
热门文章
- 画个火山图,标记下基因的名字
- 中山大学附属第一医院精准医学研究院 消化系统肿瘤研究于君课题组招聘启事...
- 高颜值网易云音乐第三方播放器 YesPlayMusic Mac中文版 支持m1
- 中小学python、人工智能书籍(2022.02.02)
- 【ES11(2020)】Dynamic Import 动态引入
- linq 查出一条最大的记录_洛龙是最大的湾鳄吗?当然不是,比它更大的至少还有6条...
- asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程
- 前端工作笔记-element ui弹窗嵌套并获取输入
- Spring Boot中配置嵌入式Servlet容器修改配置
- C++与QML信号交互(非Q_PROPERTY法)