Coder Social home page Coder Social logo

nepreventhttpspacketcapture's Introduction

HTTPS防抓包机制

[TOC]

一、常用的抓包工具

1.1 抓包工具

  • Charles
  • Fiddler

1.1.1 charles

官网:www.charlesproxy.com

安装步骤:

  1. PC端安装Charles根证书:help --> SSLProxying --> Install Charles Root Ceriticate;
  2. 安装Charles根证书到手机:help --> SSLProxying --> Install Charles Root Ceriticate on a Mobile Device or Remote Browser.

注意:安装证书过程需要手机wifi设置电脑IP地址代理,否则不会下载证书。

  • 在手机浏览器中访问地址chls.pro/ssl,下载并安装Charles根证书;
  • PC端口设置代理https端口(域名地址)

Proxy --> SSL Proxying Settings

HTTP抓包示例:

image

1.1.2 Fiddler

官网:https://www.telerik.com/download/fiddler

安装步骤:

  1. 确保Android设备和安装Fiddler的电脑连接到同一个Wifi AP上;
  2. 配置Fiddler抓取并解密HTTPS包:Tools --> Fiddler Option --> HTTPS选项卡勾选Capture HTTPS CONNECTsDecrypt HTTPS traffic;由于通过Wifi远程连过来,所以在下面的选项中选择..from remote clients only;切换到Connections选项卡修改监听端口,勾选上Allow remote computer to connect
  3. 设置Android设备,添加上代理服务器;
  4. 导证书到Android设备;
  5. 打开设备自带的浏览器,在地址栏输入代理服务器的IP和端口导入FiddlerRoot certificate

HTTPS抓包示例:

image

二、中间人攻击原理

2.1 基础概念

2.1.1 TCP/IP分层

TCP/IP的分层共分为四层:应用层、传输层、网络层、数据链路层。

  1. 应用层:想用户提供营养服务时的通讯活动(ftpdnshttp);
  2. 传输层:网络连接中两台计算机的数据传输(tcpudp);
  3. 网络层:处理网络上流动的数据包,通过怎样的传输路径把数据包传送给对方(ip);
  4. 数据链路层:与硬件相关的网卡、设备驱动等等。

2.2.2 HTTP/HTTPS

HTTPHyperText Transfer Protocol(超文本传输协议),被用于在web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层。

  1. 通信使用明文,内容可能被窃听;
  2. 不验证通信方的身份,因此可能遭遇伪装;
  3. 无法证明报文的完整性,所以有可能遭到篡改。

HTTPSHTTPS中的S表示SSL或者TLS,就是在原HTTP的基础上加上一层用于数据加密、界面、身份认证的安全层。

HTTP+加密+认证+完整性保护 = HTTPS

2.1.3 HTTPS单向认证

image

2.1.4 HTTPS双向认证

image

2.1.5 抓包原理

image

三、https防抓包手段

3.1 网络代理

3.1.1 代理检测

  • 检测是否使用网络代理
  • 将网络库(如OKHttp库)设置为无代理模式,不走系统代理
// HttpURLConnection:
URL url = new URL(urlStr);
urlConnection = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);

// OkHttp:
OkHttpClient client = new OkHttpClient().newBuilder().proxy(Proxy.NO_PROXY).build();

3.1.2 防御破解

try {
  var URL = Java.use("java.net.URL");
  URL.openConnection.overload('java.net.Proxy').implementation = function() {
    return this.openConnection();
  }
} catch(e) {
  console.log("" + e);
}

try {
  var Builder = Java.use("okhttp3.OkHttpClient$Builder");
  var mybuilder = Builder.$new();
  Builder.proxy.overload('java.net.Proxy').implementation = function(arg1) {
    return mybuilder;
  }
} catch(e) {
  console.log("" + e);
}

3.2 证书固定

3.2.1 SSL-Pinning

  • 证书锁定(Certificate Pinning): 在客户端代码内置仅接受指定域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书;-->弊端:证书有效期问题
  • 公钥锁定(Public key Pinning):提取证书中的公钥并内置到客户端中,通过与服务器对比公钥值来验证链接的正确性。

3.2.2 破解SSL-Pinning

Xposed框架 + justTrustMe插件

  • Xposed框架:Android上应用广泛的HOOK框架,基于Xposed框架制作的外挂模块可以hook任意应用层的java函数,修改函数实现;
  • justTrustMe插件:justTrustMe插件是一个用来禁用、绕过SSL证书检查的基于Xposed模块,将Android系统中所有用于校验SSL证书的API证书的API都进行了Hook,从而绕过证书检查。

3.3 对抗HOOK

  • 检测HOOK:检测XposedFridaSubstrateHOOK框架;
  • 使用Socket连接:使用SocketTCP/UDP,防止被应用层抓包;
  • 传输数据加密:协议字段加密传输,并因此秘钥,应用层加固;
  • native层传输:将网络传输逻辑写到jni层实现,提高反编译门槛。

nepreventhttpspacketcapture's People

Contributors

tianyalu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

datougui2020

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.