Android系统应用的抓包与防护

最近对抓包这块比较感兴趣,在被问到抓包时的一些问题:证书、单向认证、双向认证怎么处理,以及绕过背后的原理时,一时很难说清个大概,于是整理了下思绪,将这些知识进行总结和整理,末尾再对一个APP进行实战抓包。

一、单向认证与双向认证

先熟悉几个概念:

  • 对称加密与非对称加密
    对称加密:加密和解密使用同一个秘钥。加密和解密速度很快,常见的如AES。
    非对称加密:加密和解密使用不同秘钥,这两个秘钥成双成对,叫做公钥和秘钥。数据使用公钥加密后,使用私钥进行解密,使用私钥加密,那就用公钥解密。一般是把公钥给别人,让别人进行加密后再传给自己用私钥解密,比如RSA。

  • CA证书相关知识
    CA证书是由CA机构发布的数字证书。其内容包含:电子签证机关的信息、公钥客户信息、公钥、签名和有效期。这里的公钥服务端的公钥,签名是指:hash散列函数计算公开的明文信息的信息摘要,可以理解成身份证信息,然后CA的私钥对信息摘要进行加密,加完密之后就是签名。
    证书 = 公钥+信息摘要+签名
    由于在客户端操作系统中就预留了CA的公钥,所以支持解密签名。

有了这些概念,来看看https是怎么做到安全认证的。

1、HTTPS单向认证

在这里插入图片描述
这个过程图中都可以看得出来它的流程是啥,对于我的理解是,它是服务器将证书信息全部发到客户端这来,因为客户端系统中拥有自带的CA公钥,可以解密server发来的数字签名拿到server给的公钥,然后产生随机数(F秘钥)经由server给的公钥进行加密,然后发给服务器使用秘钥得到F秘钥,随后两者就用F秘钥进行交流。

在单向认证的实现上,占据主动性的还是客户端,因为只要客户端认可了server发来的签名和认证,然后直接告诉服务器我们下次使用什么秘钥进行通讯就行了。单向认证是在客户端上验证的。

利用单向认证来进行反抓包。

可以利用SSL-Pinning的技术来进行反抓包。中间人攻击的要点是伪造了一个假的服务器证书,让客户端信以为真,那么我在客户端内置了一个server的证书,两者进行比较一下就知道是不是真的了。

突破思路:有函数会对内置证书或者公钥进行比照验证,如果让它一直返回通过,就可以绕过了。xpose+justTrustme模块,它将所有的HTTP请求库中用于校验证书的API都进行HOOK,将结果返回正常,所以基于这个思路,xpose+justTruseme就完成了对单向认证的突破。

2、双向认证

在这里插入图片描述
双向认证和单向认证过程差不多,但是多了客户端向server发送证书并校验的过程。然后客户端按照服务器约定的方式将F秘钥发给server,双方按照这个方式来进行通讯。

利用双向认证来进行反抓包。

防抓包策略,将证书进行加密或者伪造,这样没有秘钥就无法打开证书内容。也就无法使用客户端的证书。

突破方式:
一般在app/assert、或者raw,搜索.p12或者.pks,直接逆向APK,找到对应加载证书和密码的地方,将其密码打印出来。

二、实战soul

网上也有关于soul的抓包破解,但是都是基于soul未加壳的老版本,直接反编译,然后IDA找到native层的秘钥硬编码,我这里针对soul最新版的双向认证破解。

直接抓soul的包,返回400。
在这里插入图片描述

使用frida-unpack砸壳成功。
在这里插入图片描述

将砸壳后的dex一一进行查找,搜索"client.p12"。

发现调用加载的so层函数,丢入IDA中试图找到秘钥。

在这里插入图片描述
在IDA中找到getStorePasswd函数。
在这里插入图片描述
F5伪代码查看。
在这里插入图片描述
发现秘钥并没有硬编码,但是我们回头看加载证书和密码处的代码。

使用jeb反编译,发现加载点,根据参数追踪,最终定位到了SoulNetworkSDK函数a,然后使用frida 编写脚本hook打印出load的第二个参数(密码)。

在这里插入图片描述
在这里插入图片描述

'use strict'
//frida -U -f cn.soulapp.android -l password.js --no-pause
//adb forward tcp:27042 tcp:27042
//adb forward tcp:27043 tcp:27043
if(Java.available){Java.perform(function(){var application = Java.use("android.app.Application");console.log("application: "+application);application.attach.overload('android.content.Context').implementation = function(context){var result = this.attach(context);var classloader = context.getClassLoader();Java.classFactory.loader = classloader;//var soulNetworkSDK = Java.classFactory.use("cn.soulapp.android.net.SoulNetworkSDK");console.log('SDK = ' + soulNetworkSDK);soulNetworkSDK.a.overload("java.lang.String").implementation = function(arg1){console.log('进入了password环节==========')var password = this.a(arg1);console.log('密码= '+password);console.log('退出了password环节==========')}}});
}

在这里插入图片描述
将证书导入到burp中
在这里插入图片描述
填入证书所在位置和填入密码即可。
在这里插入图片描述
不会再出现400了,成功绕开soul的双向认证。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619990.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Fiddler4抓取安卓手机数据包图文教程

目录 1、使用背景2、操作步骤2.1、查看记录Fiddler安装负载机的ip2.2、确保电脑,手机在同一个局域网内2.3、设置fiddler2.4、手机wifi设置 3、开始测试 1、使用背景 测试的时候,有时候需要对某个app进行流量数据抓包,进行测试分析。有很多方…

【Android】利用Fiddler进行抓包详解教程。抓取接口以及数据,可以抓真实安卓手机或者模拟器。

作者:程序员小冰 (转载请说明出处)博客地址:http://blog.csdn.net/qq_21376985 大家都知道抓包的方法很多。我这里给大家介绍介绍一种,利用fiddler进行抓包,当然比如Wireshark也可以抓包,我们这…

Fiddler安卓手机抓包

简介 Fiddler一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据 下载安装 下载地址: Download Fiddler Web Debugging Tool for Free by Telerik 输入相对应的信息…

安卓手机抓包方式

安卓手机抓包——tcpdump 准备下载tcpdump下载Android SDK Platform-Tools将tcpdump从电脑上copy到手机上修改tcpdump权限运行tcpdump进行抓包 准备 获取手机root权限 下载tcpdump 链接:https://pan.baidu.com/s/11t_ZYnBBRwdTo1w6HLkuLw 提取码:psy0…

Android下的嗅探

很简单啊!没想到android也带了linux的tcpdump,可以直接用,哈哈 转载于:https://blog.51cto.com/g0ug0u/412988

fiddler安卓模拟器与ios手机抓包

一.安卓模拟器(雷电模拟器)抓包 1.1fiddler基本配置 1.2导出Fiddler证书 Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop 在桌面上看到导出的FiddlerRoot.cer证书文件 1.3下载和安装openssl openssl下载地址 git终端输入 open…

5 STM32标准库函数 之 外部中断/事件控制器(EXTI)所有函数的介绍及使用

5 STM32标准库函数 之 外部中断/事件控制器(EXTI)所有函数的介绍及使用 1. 图片有格式2 文字无格式五 库函数之外部中断/事件控制器(EXTI)所有函数的介绍及使用前言一、图片预览,无格式(CSDN)二…

变好的方式那么多,我只选认真。

前几天看了高哥的一篇文章,里面提到了高哥从没有把关注公众号的人称为粉丝,而是读者。我觉得这个理解很好啊,和我不谋而合,虽然我没有公开说过,但却是一直把你们当作我的朋友、伙伴。 说句心里话,如果没有你…

不打扰的刷存在感

不打扰是美德,但是缺乏存在感,狂刷存在感又会导致别人的厌烦,以前我没得选,现在我想全都要。 引 说到不打扰,貌似脑壳里面就能够浮现出来有关霓虹国的传说,说他们的「不给别人添麻烦」的文化已经深入骨髓&…

pd.cut()函数--Pandas

1. 函数功能 将连续性数值进行离散化处理:如对年龄、消费金额等进行分组 2. 函数语法 pandas.cut(x, bins, rightTrue, labelsNone, retbinsFalse, precision3, include_lowestFalse, duplicatesraise, orderedTrue)3. 函数参数 参数含义x要离散分箱操作的数组&…

微信小程序 基于Android的美容理发师预约管理系统

,本系统主要根据管理员、用户及理发师的实际需要,方便用户利用互联网实现对商品信息进行立即订购,同时让管理者可以通过这个系统对用户实际需求以及各信息进行管理。设计该系统主要目的是为了方便用户、理发师可以有一个非常好的平台体验&…

mysql中delete怎么用_mysql怎么使用delete

MySQL中的delete语句一般用于删除表的一行或者多行数据。 以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:DELETE FROM [WHERE 子句] [ORDER BY 子句] [LIMIT 子句] DELETE FROM table_name [WHERE Clause]:指定要删除数据的表名。 ORDER BY 子句:可选项。表示…

DELETE 语句

SQL DELETE 作用 DELETE 语句用于删除表中的记录。 SQL DELETE 语法 DELETE FROM table_name WHERE some_columnsome_value; 请注意 SQL DELETE 语句中的 WHERE 子句! WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记…

Android studio 软件git使用

在 test 分支添加的方法 , 现在切换到 master分支 总共 2 个分支 , 当前的分支是 test 出现了 先试一下 force checkout , 尝试之后发现 , 你更改没有带过来 , 以为哪个类在master分支没有 , 所以这边也没有 , 切回分支 test 发现之前的跟改没有 , 这样即可以找回 继续切换…

mysql sql delete语句_SQL Delete语句

在本教程中,您将学习如何使用SQL DELETE语句删除表中的一行或多行。 1. SQL DELETE语句简介 要从表中删除一行或多行,请使用DELETE语句。 DELETE语句的一般语法如下: DELETE FROM table_name WHERE condition; 首先,提供要删除行的表名称(table_name)。 其次,在WHERE子句中…

DELETE语句

语法介绍 (1)如果我们想在SQL数据库中删除某一条数据,我们该怎样删除? Delete:删除 语法如下: 1.删除某一行数据 Delete from 表名称 Where 字段名 表值 2.删除整个表的数据 Delete fro…

delete用法解析

使用delete语句一次只能删除整行记录,不能删除某个字段。 (属于DML 语句会有提示是否删除)。 delete只会删除记录,不会删除表。 注: 如果要删除整张表,需要使用drop table命令。 如果要一次性清楚表中的数…

SQL入门之第九讲——DELETE删除语句

定义&#xff1a;DELETE 语句是用于删除表中的一条或多条记录。 基本语法&#xff1a; DELETE FROM <表名> WHERE <筛选条件>;1.DELETE删除语句 如果省略WHERE条件时&#xff0c;这回收DELETE 语句就会删除整个表的数据记录。需要注意的是&#xff1a;这里不会删…

驾驶员监控系统DMS系统功能规范

概述 文档范围 该文档阐述了DMS系统的功能场景、系统组成、接口需求等。 目的 该功能规范为DMS系统及周边件的开发提供参考。 缩写与定义 英文缩写 英文全称 中文描述 DMS: Driver Monitoring System 驾驶员监控系统 MPU: Micro Processor Unit 微处理器单元 IECU: …

Windows Server 2008安装VMTool提示要更新到 SP2

安装了个win2008的iso&#xff0c;我也不知道什么版本的&#xff0c;再安装VMware Tools时出现以下错误&#xff1a; 装程序无法继续。本程序需要您将此虚拟机上安装的操作系统更新到SP2&#xff0c;有关详细信息请参阅以下<A HREF“https://kb.wmware.com/kb/55798”>知…