加密阶段学习了https原理,现在开始尝试破解,工具主要是burp suite, fiddler/charles与之类似。

一些概念性的东西

中间人攻击

在中间人攻击中,攻击主机通常截断客户端和服务器的加密通信。攻击机以自己的证书替代服务器发给客户端的证书。通常,客户端不会验证该证书,直接接受该证书,从而建立起和攻击机的安全连接。这样,客户端发送的数据,都会被攻击机获取和解密。

Certificate Pinning

证书锁定Certificate Pinning是SSL/TLS加密的额外保证手段。它会将服务器的证书公钥预先保存在客户端。在建立安全连接的过程中,客户端会将预置的公钥和接受的证书做比较。如果一致,就建立连接,否则就拒绝连接。
Certificate Pinning在手机软件中应用较多。因为这些应用连接的服务器相对固定,可以预先将服务器的X509证书或者公钥保存在App中。例如,苹果应用商店Apple App Store就预置了这个功能。当使用中间人工具或者Fiddler之类的工具拦截数据,就会造成应用商店无法联网的情况。

https代理抓包原理

简单来讲,就是burp充当客户端与服务端通信,得到服务端的响应之后用自己的证书充当服务端与app通信。如果app不对证书进行验证,或应用使用系统的ca信任库进行验证,而系统又安装了burp的证书,burp就可以完成中间人的角色。

破解手段

根据不同的认证过程需要使用相应的手段进行破解。

使用系统CA库的破解

安卓浏览器,Mac下的Chrome浏览器都是使用系统的信任证书做验证。另外像下面这类代码请求https,应用也是通过系统信任证书做验证。

URL url = new URL(“https://www.baidu.com/“);
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.connect();
System.out.println(urlConnection.getResponseCode());

对于这种情况,将burp suite等工具的CA证书安装到系统中就可破解。如下是安卓上安装burp证书的过程。

  1. 导出burp CA证书
    点击Proxy -> Options 在Proxy Listeners 面板处的import/export CA certificate
    导出burp CA

  2. 将证书上传到手机,直接点击就可以安装了。

PC上的firefox浏览器维护着一套受信凭据,点击 首选项->高级->证书->查看证书,在证书机构中导入就可以了,如下图
Firefox导入证书

另外burp suite出于安全考虑,每次安装都会重新生成一套CA证书,所以如果重新安装了burp,要记得将系统中的CA证书更新。

接受所有证书的app

如果应用代码中使用如下代码,则会接受所有证书(不对证书做验证),此时直接通过代理就可以抓包。像这代码一般都是放在爬虫里抓数据的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static SSLSocketFactory trustAllSocketFactory() throws Exception{
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext sslCxt = SSLContext.getInstance("TLSv1.2");
sslCxt.init(null, trustAllCerts, null);
return sslCxt.getSocketFactory();
}

Certificate Pinning

前几年的app虽然也都用了https协议,但只需要简单地通过设置代理就能抓到;从去年开始遇到的几个app都不能走代理抓包了,一设置代理就说网络有问题,联不上网。
通过前面的学习总算知道是怎么回事了。原来他们都使用了证书绑定技术,证书绑定简单来说就是app只信任自己内置的证书,如果服务端的证书与app内的信任证书不符,客户端主动拒绝连接,从而造成“网络无法访问”。如下是引用自stackexchange的关于证书验证与绑定的相关评论。

Typically certificates are validated by checking the signature hierarchy; MyCert is signed by IntermediateCert which is signed by RootCert, and RootCert is listed in my computer’s “certificates to trust” store.

Certificate Pinning is where you ignore that whole thing, and say trust this certificate only or perhaps trust only certificates signed by this certificate.

So for example, if you go to google.com, your browser will trust the certificate if it’s signed by Verisign, Digicert, Thawte, or the Hong Kong Post Office (and dozens others). But if you use (on newer versions) Microsoft Windows Update, it will ONLY trust certificates signed by Microsoft. No Verisign, no Digicert, no Hong Kong Post office.

Also, some newer browsers (Chrome, for example) will do a variation of certificate pinning using the HSTS mechanism. They preload a specific set of public key hashes into this the HSTS configuration, which limits the valid certificates to only those which indicate the specified public key.

所以我们可以有以下几个方式破解:

  1. 李代桃僵
    反编译app, 替换cer为burp的证书后重新打包。如果有反二次打包机制,可以通过xposed hook相关方法来替换证书。
    另外可以从app内取出cer文件并导入浏览器,就可以用浏览器访问app的url。
  2. 釜底抽薪
    用xposed或修改smali控制创建连接的SSLSocketFactory,使它不加载信任库。

另外app内的证书可能有两种格式

  • .cer/.der
    如果是.der证书,按以下步骤

    1. 逆向,取出.cer证书文件
    2. 用burp的证书替换掉app内的证书,app重新打包
  • .bks
    如果是keystore文件就简单了,先取出来,如果是单向认证,用keytool把burp的证书导入使之成为truststore内的一条就可以了;
    如果是双向认证,除了加入truststore或替换cer文件,还要把keystore加入burp中,添加之前需要将它转换成pkcs12格式。如下图
    burp添加keystore

android 4.X通过设置wifi代理可以为所以应用设置代理,但在5.x版本中设置的wifi代理只能为浏览器使用,如果要为app设置代理需要root后安装全局代理工具(如proxydroid)。

突破https——https抓包相关推荐

  1. 如何使用charles对Android Https进行抓包

    2019独角兽企业重金招聘Python工程师标准>>> 如何使用charles对Android Https进行抓包 博客分类: 搜索引擎,爬虫 原理 man-in-the-middl ...

  2. iOS开发——使用Charles进行https网络抓包详解

    我在前面两篇博客中<网络抓包工具Charles的介绍与使用><iOS开发--使用Charles进行http网络抓包详解>对Charles的http抓包进行了详细的讲解.今天我们 ...

  3. 抓包!抓包! HTTPS中间人抓包

    简介 抓包是一种网络分析技术,可以用于捕获和分析数据包,通常用于网络故障排查.协议分析.安全审计等.网络上所有的数据包都是以二进制的形式在网络上传输的,抓包工具可以捕获到这些数据包并将其转换为可读的格 ...

  4. HTTPS中间人攻击,HTTPS被抓包了怎么办?

    目录 一.写在前面 二.什么是中间人攻击 三.https 是绝对安全的吗 四.中间人攻击的初步了解 五.中间人攻击的深入了解 六.https 是如何防止中间人攻击的 SSL-Pinning 七.浏览器 ...

  5. https wireshark抓包——要解密出原始数据光有ssl 证书还不行,还要有浏览器内的pre-master-secret(内存里)...

    基于wireshark抓包的分析 首先使用wireshark并且打开浏览器,打开百度(百度使用的是HTTPS加密),随意输入关键词浏览. 我这里将抓到的包进行过滤.过滤规则如下 ip.addr == ...

  6. Wireshark的https代理抓包(whistle中间人代理)

    为什么80%的码农都做不了架构师?>>>    目的 查看手机设备上面的请求的,按照SquidMan+Wireshark代理抓包方法抓包之后,发现接口都是https请求的.看了一些资 ...

  7. Fiddler手机抓包,及HTTPS协议抓包【手机如何安装fiddler证书,以华为为例】

    [推荐使用]使用安卓模拟器手机抓包配置[夜神模拟器为例]: 第一步:只要你在本地电脑可以访问ip地址:端口8888[如:http://192.168.2.102:8888/]可以访问,那么在模拟器就直 ...

  8. 访问网站,http、https协议抓包,完整分析

    HTTP.HTTPS协议 一.www.qq.com抓包 第一步:浏览器分析超链接中的URL www.qq.com 第二步:DNS请求 PC用本地IP地址向DNS服务器222.172.200.68发出D ...

  9. Https/Tcp抓包工具Charles、fiddler,ping (网络诊断工具),Android平台HTTPS抓包解决方案及问题分析HttpCanary

    市面上已经有一些弱网络模拟工具,比如微软的Network Emulator for Windows Toolkit(NEWT),Facebook的Augmented Traffic Control(A ...

  10. 青花瓷抓包工具如何对Android手机https请求抓包及华为手机安装Charles证书方法详解!

    网上搜索了很多文档,这两篇是写的比较全面的,整个流程看完,你就会安装使用了! 参考:windows下使用Charles工具如何对android手机https请求进行抓包 参考:Android安装Cha ...

最新文章

  1. 《Adobe After Effects CC完全剖析》——动画:完全是由“关系”组成的
  2. BZOJ2490 Zombie’s Treasure Chest
  3. 腾讯Android自动化测试实战3.1.4 Robotium的控件获取、操作及断言
  4. IOS debug网络PonyDebugger 实践篇
  5. Linux内存背后的那些神秘往事
  6. java thrift连接池_由浅入深了解Thrift之客户端连接池化
  7. Laravel 中使用事务
  8. 面试官让我用channel实现sync包里的同步锁,是不是故意为难我?
  9. 51单片机1602、18B20电子钟--C51源代码
  10. 解读:计数器Counter
  11. 敏捷开发绩效管理之七:敏捷开发生产率(下)(简化功能点分析,NESMA,两级简化)...
  12. sql integer字置为空_请写一个函数来检查用户提交的数据是否为整数
  13. 基于WebActivator的改进版本KudyStudio.Web.Activating讲解与下载
  14. IoT实时数据可视化方案(进阶版):Worldmap Panel使用详解及使用Node-RED进行流程管理...
  15. 天涯明月刀7月5号服务器维护,天涯明月刀7月5日更新_天刀7月5日版本改动_3DM网游...
  16. Oracle VM VirtualBox虚拟机新建教程(包括镜像文件的下载和安装)
  17. 计算机考试表格中的透视图怎么弄,职称计算机考试:创建数据透视表
  18. win10安装python详细过程
  19. SpringBoot MongoDB 插入内容去掉_class字段
  20. strcmp( )函数

热门文章

  1. NetApp 全闪存数据存储软件 AFF A 系列
  2. 数据结构--图的深度优先遍历
  3. MATLAB连接API接口
  4. linux yum资源下载,yumdownloader命令 – 从yum存储库下载rpm包
  5. 维宏控制卡四轴那个好_维宏维鸿四轴真四轴联动雕刻机运动控制卡说明书
  6. 古体字与简体字对照表_简体字与繁体字对照表
  7. 华为SmartKit工具下载
  8. 蓝桥杯单片机温度传感器DS18B20(基于STC15F2K60S2)
  9. 静态链表(简单介绍)
  10. TIA Openness开发入门(2)