破解TLS加密数据的一种实现(移动端+PC端)

上次分享了破解手机端加密数据的思路,就是使用中间人代理进行破解,网络安全把这种做法叫做man-in-the-middle,今天讲一下如何来实现。

恰巧2016年3月2号,360推送了一则关于代号溺亡的漏洞的消息,其本质讲的就是我们这篇文章所讨论的问题,但是我们干的是正经事。

既然涉及到中间人,我需要一个代理软件充当中间人的角色,这里我们选用软件fiddler,该软件是一个轻量级的抓包软件,但其同时实现了中间代理的的功能。抓包软件还是使用wireshark。至于为什么不直接使用fiddler来直接抓包分析,是因为fiddler毕竟是轻量级的(或者哥就是爱用wireshark),很多功能不如wireshark支持的广泛,比如长连接的功能,而且我们这里也只是使用其作为代理以及制作证书的功能。当然fiddler也有很多自身的优点和不足,后续我们会一点点看到。

本次实验的软件是全球最大的正版音乐服务平台spotify,使用该软件进行测试的原因是在测试中我需要确认其中的加密流是否为音频流。

在前面的文章中已经对SSL等相关知识以及解密原理已经做了详细的阐述,忘记的可以回顾一下。

这篇文章要分两个方面来讲移动端和PC端,整体的思想都是一样,实现会略有差别。

先说说移动端,通常的抓包环境如图1所示:

图1

即手机连上路由设备,在转发设备上部署Libpcap抓取手机IP的报文。

而现在我们需要在PC上部署代理软件,即fiddler,因为数据会走代理服务器PC,因此在PC上安装wireshark进行抓包,不再使用转发机器上的Libpcap抓包环境。

现在要做以下几件事情:

1,设置fiddler,如下图

安装完fiddler之后做如图2,图3所示的设置:路径Tools->FiddlerOptions

图2

图3

图4

HTTPS选项勾选上CaptureHTTPS,选择from remote clients only(实际过程中并不能过掉本机的报文,汗);Connection选项选择allow remote compute to connect。HTTPS那个页面有关证书可能跟你的不一样,我在图4所示的页面下载了fiddler的一个插件进行证书而生成和私钥的导出,因为fiddler自带的证书生成器,不支持导出私钥功能,下载后在windows上安装即可。

2,给手机设置代理,长摁住所连接的wifi->显示高级->然后设置代理,如图5:

图5

图6                           图7

代理服务器主机名就是你要链接的代理服务器IP地址;因为fiddler默认端口是8888,因此这里面代理服务器的端口设置为8888.

在手机浏览器输入PC IP加上端口号,进入相关页面下载证书,图中蓝色的Fiddler RootCertificate,安装,证书用途为app。如果你的手机没有设置密码策略,在安装证书的时候可能会提示你设置密码,设置即可。如图6和图7所示。

3,设置wireshark和fiddler进行关联,在Preferences->Protocols->ssl中新建,如图8

图8

图9

其中的mypem.txt文件是fiddler给出的私钥,具体制作的步骤是,当你做好1,2步的设置后,使用手机去访问该APP的时候,在fiddler的log页面会自动生成私钥(这就是第一步中安装插件的作用),将图9中红线部分标出的私钥存储在一个文本文件中即可,但是格式如下,用私钥把中间哪一行替换掉:

-----BEGIN PRIVATE KEY-----

Base64 encoded private key here

-----END PRIVATE KEY-----

至此,完成设置,重启fiddler,打开wireshark,为减少杂包的干扰,我们只抓8888端口的报文,如图10所示:

图10

使用wireshark抓取解密报文如图11所示

图11

我们可以看到绿色的http报文即为解密后的报文,在TLS握手之后。如果没有解密,这个包是加密的,颜色是灰色的TLS报文。这是直观上的感受。判断捕获的数据有没有解密,可以看TLS握手中的client key exchange报文,图12中红线表示的部分为解密后的数据,图13中红线表示的部分为没有解密的数据。

图12

图13

图14解释了为什么抓取8888端口的原因。因为只有手机和fiddler之间的通信(代理前)是经过解密的,因此要抓取这两者之间通信的报文,而fiddler使用8888端口和手机进行通信,因此使用8888端口。而fiddler和Server之间通信是没有解密的,fiddler端口也是随机的,因此没有必要获取这部分数据。其实同一份数据经过网卡两遍,一遍加密了,一遍没有加密,这也是抓取8888端口,过滤无用数据的原因。

图14

这种方式破解加密数据并不是一直有效,原因之一,

先了解SessionId的用处,即流关联。可参考相关文章。如果你所抓的第一个SSL加密包有相应的SessionID的话,表明这条流重用了前一个流协商的参数,而fiddler不知道这些从参数,那么相关数据就没法解密,图15是没有重用的情况,Session ID 为0,如果重用,会有一长串的字符。当然不能解密的原因还有很多,希望大家多多共享。

图15

移动端的就是这么多,PC端和移动端思路是一致的。但是实现方面略有差别,我这里面简单说一下。如果将PC软件和fiddler部署在一台PC机上面,如图14所示,应用软件和fiddler的通信,是进程间的通信,使用的是回环地址127.0.0.1,是不经过网卡的,也就是说wireshark是无法获取相应的解密数据包的。那么解决思路如下:

1,将wireshark的默认winpcap删除,安装Npcap进行抓包,原因就是windowsTCP/IP协议栈没有实现网络回环接口,详情参考https://wiki.wireshark.org/CaptureSetup/Loopback,不做过多解释。

2,使用两台PC机器,这里面和手机端抓包就对应上了,其中一台PC最为fiddler代理,另外一台PC相当于手机,具体参考手机的1,2,3步设置,PC代理设置应该都会。

整体的架构如图16:

图16

以上内容就是对移动端和PC端解密SSL流量的实际实现做了说明,其实是非常粗略和简单的。为什么这么说,是因为在实际的抓包过程中,我发现使用fiddler代理之后只抓到加密的图片报文,相应音频wireshark没有捕获到,经过排查,确立的原因是这部分流量不走HTTP代理,也就是说HTTP代理不支持这部分流量的转发,因此8888端口也就捕获不到。所以如果想要类似于这种流量的加密数据,那么可以将fiddler替换成sock代理,当然,相应的代理机器需要安装证书制作软件了。如果谁有兴趣,可以分享一下。

其实上述的内容给了我们一个启示,就是走代理并不安全,即使你的数据是加密的,常见的场景的我们很多人喜欢翻墙。你可能觉得,解密数据需要给你下证书,其实下证书可以神不知鬼不觉,当然也不尽然,下证书的策略基本可以利用到安全中的社会学攻击,本质可以理解为人性的弱点吧,我发现自己摇身一变成为了哲学家。大家看看这篇文章http://my.oschina.net/CasparLi/blog/488298?fromerr=NqwEdtDw,看完之后别太愤青。大家开始的时候都是流氓,有的人有了钱变得绅士了,有的人还是老样子,面对流氓有办法吗。

以上内容如有错误之处还请指出。

时间: 05-04

破解TLS加密数据的一种实现(移动端+PC端)的相关文章

移动端破解TLS加密的数据的设计思路

本文主要讲解了破解移动端HTTPS数据的思路,今天跟大家分享一下. 在上一篇文章中,讲述了如何通过浏览器和wireshark之间的关系,来破解利用浏览器访问的加密数据,在那篇文中曾提到过,中间截获的数据是没有办法解密,其实也不准确.举个栗子,如果在局域网中,能够通过共享等方式拿到那个环境变量为SSLKEYLOGFILE对应的文件,还是能够解密相应的数据流量的,当然还有其他的解决思路,这就是我们这次会涉及到的内容.但是这次的重点是移动端如何破解TLS加密数据,毕竟移动为王. 由于这块内容比较多,准

破解TLS:这么做真的有利于安全吗?

由于使用TLS的恶意软件和网络钓鱼不断增加,部分安全专家都在寻求解决方案,其中之一是以破解TLS,使他们可以监视到从他们的网络进出的所有的流量. 破解TLS一般是通过加载检验性的CA证书来完成,通过你的TLS检验设备来动态生成证书.来自CA的公钥加载到网络上的所有客户端.当一个域被请求时,一个证书随之生成,并返回给请求方.请求者对TLS检测设备的可信连接,然后设备就会发起一个到目的地的连接.用户对所请求的资源有"信任"连接,安全团队就可以对整个会话进行监视.通常被称为中间人,如下图所示

黑客破解网络密码的10种方法

破解网络密码—暴力穷举  密码破解技术中最基本的就是暴力破解,也叫密码穷举.如果黑客事先知道了账户号码,如邮件帐号.QQ用户帐号.网上银行账号等,而用户的密码又设置的十分简单,比如用简单的数字组合,黑客使用暴力破解工具很快就可以破解出密码来.因此用户要尽量将密码设置的复杂一些. 破解网络密码—击键记录 如果用户密码较为复杂,那么就难以使用暴力穷举的方式破解,这时黑客往往通过给用户安装木马病毒,设计“击键记录”程序,记录和监听用户的击键操作,然后通过各种方式将记录下来的用户击键内容传送给黑客,这样

关于javax.crypto.BadPaddingException: Blocktype错误的几种解决方法

关于javax.crypto.BadPaddingException: Blocktype异常的几种解决办法 转载请注明出处 1.异常描述:最近做项目为了增强数据传输的安全性用到了RSA加密.即android客户端将要传送的信息,用私钥通过RSA非对称加密算法加密后,传到服务器端(PC端).服务器端用对应(密钥)的公钥来解密时解密失败,抛出"javax.crypto.BadPaddingException: Blocktype"异常. 2.异常原因:Android系统使用的虚拟机(da

JavaScript - 收藏集 - 掘金

Angular 中的响应式编程 -- 浅淡 Rx 的流式思维 - 掘金第一节:初识Angular-CLI第二节:登录组件的构建第三节:建立一个待办事项应用第四节:进化!模块化你的应用第五节:多用户版本的待办事项应用第六节:使用第三方样式库及模块优化用第七节:给组件带来活力Rx--隐藏在 Angular 中的利剑Redux你的 A... Electron 深度实践总结 - 前端 - 掘金思维导图 前言: Electron 从最初发布到现在已经维护很长一段时间了,但是去年才开始慢慢升温.笔者个人恰好

以直播透视互联网

1.为什么写<以直播透视互联网>呢? 进入21世纪以来,尤其以互联网为发展的行业高速发展,出现了以BAT(百度.阿里巴巴.腾讯)为代表互联网行业的巨头,而当今以直播行业为例,更为突显互联网的高速发展,短短数年时间,从无到有,甚至诞生直播从业者的这个职业. 本人虽说没有经历过从事互联网的创业的经历,但跟我在同一时代的人对互联网你可比我体验感触颇深.我们每一天都在使用互联网,已经离不开手机.电脑.平板等终端设备给我们的生活带来的便利.我们无时不刻不在享受互联网所给我们的生活带来的便利,这些也在深深

高并发IM系统架构优化实践

互联网+时代,消息量级的大幅上升,消息形式的多元化,给即时通讯云服务平台带来了非常大的挑战.高并发的IM系统背后究竟有着什么样的架构和特性 本文要点: 网易云信整体架构解析 云信中的客户端连接和接入点管理 服务化和高可用 网易IM云分层架构图解析 底层客户端SDK,覆盖了安卓,iOS,windows PC桌面端,web网页端和嵌入式设备等多个平台.在SDK层使用的网络协议有4层的TCP协议和基于7层的Socket.IO协议,后者专门用于Web SDK中提供长连接能力:除了集成到应用App中的SD

安卓逆向之基于Xposed-ZjDroid脱壳

http://bbs.pediy.com/thread-218798.htm 前言 之前介绍了普通常见的反编译模式 但对于使用了 360加固 棒棒 爱加密 等等的加固应用就没办法了. 你会发现反编译出来的dex 只有几个类 逻辑都是调用so 真正的dex会被加载到内存中隐藏起来 加固应用都是多dex这种形式 要想拿到他真正的dex 需要进行脱壳处理  基本原理都是从内存中dump 我一般会先用工具来尝试 不行的话就得上 IDA(反汇编神器)超级强的一个工 具 杀手级别 贯穿移动端 PC端的逆向

高性能 CSS3 动画

高性能移动Web相较PC的场景需要考虑的因素也相对更多更复杂,我们总结为以下几点: 流量.功耗与流畅度. 在PC时代我们更多的是考虑体验上的流畅度,而在Mobile端本身丰富的场景下,需要额外关注对用户基站网络流量使用的情况,设备耗电量的情况. 关于流畅度,主要体现在前端动画中,在现有的前端动画体系中,通常有两种模式:JS动画与CSS3动画. JS动画是通过JS动态改写样式实现动画能力的一种方案,在PC端兼容低端浏览器中不失为一种推荐方案. 而在移动端,我们选择性能更优浏览器原生实现方案:CSS