APP 抓包(应用层)
0x01 前言:
app抓包是逆向协议的前提,也是一个爬虫工程师的基本要求,最近发现这块知识非常欠缺就抓紧补补了(我太菜了)
然后接下来是通过vpn将流量导出到抓包软件的方式,而不是通过wifi设置代理,因为太容易被检测了。
0x02 环境配置
vpn代理软件就下载postern这个软件,vpn是在网络层这样可以把传输层和应用层的流量都抓到,大概是这样
当然这个配置规则的ip和端口其实是charles的socket代理的端口,和charles所在机器的ip,所以接下来继续配置charles,打开最右上角的按钮
修改proxy setting,把socket代理配置打开。
之后再返回到postern中,设置配置代理,然后设置配置规则,都在左边的按钮,点开就能看见
0x03 https的抓包
然后前面大体已经配好了,http的流量完全可以抓了,不过现在的app将重要功能的请求方式全改成https了,会涉及到一个证书的验证
又因为在应用层抓包本质是一个中间人在拦截流量,导致客服端到服务器端的通信一分为二了,一部分是客户端到抓包软件,另一部分是
抓包软件到服务器端,所以得分开来考虑,
一.第一部分的情况分为客户端没有校验app证书和有校验证书
1.如果没有校验证书,首先需要把charles的证书安装到手机的根目录下并安装信任,
这里放个表哥的图片2333
图中的浏览器是手机的浏览器,也就是在手机去访问。
2.然后如果客户端有校验证书的话,也就是客户端并不默认信任系统根目录安装的证书,额外增加一手代码验证,也就是证书绑定机制,这里有好几种处理方式
2.1 hook住checkServerTrusted的所有重载,把所有重载置空。贴个肉丝表哥的代码
function hook_ssl() {
Java.perform(function() {
var ClassName = "com.android.org.conscrypt.Platform";
var Platform = Java.use(ClassName);
var targetMethod = "checkServerTrusted";
var len = Platform[targetMethod].overloads.length;
console.log(len);
for(var i = 0; i < len; ++i) {
Platform[targetMethod].overloads[i].implementation = function () {
console.log("class:", ClassName, "target:", targetMethod, " i:", i, arguments);
//printStack(ClassName + "." + targetMethod);
}
}
});
2.2 objection直接把ssl ping给关了
android sslpinning disable
2.3 还没研究,还在继续学习中
二.服务器端有校验证书,这波其实和第一部分类似,不过我们不能再通过hook服务器端的代码来bypass了,我们得学会伪装
比如charles这个中间人,穿上客户端的衣服,给服务器端发请求不就好了,所以这里解决方式就是将手机app中的内置证书,装入
charles中,这波操作,首先需要找到证书文件和证书密码,
对apk解包后,直接搜索p12为后缀的文件,常见命令tree -NCfhl |grep -i p12,直接打印出p12的路径,有些app狡猾的话,
会估计把p12文件的后缀改成别的格式,file文件可以查看一下文件格式,找到文件中,hook出密码,这里贴一波表哥的代码
function hook_KeyStore_load() {
Java.perform(function () {
var StringClass = Java.use("java.lang.String");
var KeyStore = Java.use("java.security.KeyStore");
KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) {
printStack("KeyStore.load1");
console.log("KeyStore.load1:", arg0);
this.load(arg0);
};
KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
printStack("KeyStore.load2");
console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
this.load(arg0, arg1);
}; console.log("hook_KeyStore_load...");
});
}
然后就打开charles添加证书,
APP 抓包(应用层)的更多相关文章
- Fiddler和app抓包
1:请在“运行”,即下面这个地方输入certmgr.msc并回车,打开证书管理. 打开后,请点击操作--查找证书,如下所示: 然后输入“fiddler”查找所有相关证书,如下所示: 可以看到,我们找到 ...
- Fiddler 网页采集抓包利器__手机app抓包
用curl技术开发了一个微信文章聚合类产品,把抓取到的数据转换成json格式,并在android端调用json数据接口加以显示: 基于weiphp做了一个掌上头条插件,也是用的网页采集技术:和一个创业 ...
- scrapy之手机app抓包爬虫
手机App抓包爬虫 1. items.py class DouyuspiderItem(scrapy.Item): name = scrapy.Field()# 存储照片的名字 imagesUrls ...
- Scrapy——6 APP抓包—scrapy框架下载图片
Scrapy——6 怎样进行APP抓包 scrapy框架抓取APP豆果美食数据 怎样用scrapy框架下载图片 怎样用scrapy框架去下载斗鱼APP的图片? Scrapy创建下载图片常见那些问题 怎 ...
- 猫眼电影App抓包获取评论数据接口
之前在CSDN程序人生公众号上看到了这篇文章<邪不压正>评分持续走低,上万条网友评论揭秘,是救救姜文还是救救观众?,文中提到了通过抓包猫眼App发现了评论的数据接口:http://m.m ...
- APP 抓包-fiddler
App抓包原理 客户端向服务器发起HTTPS请求 抓包工具拦截客户端的请求,伪装成客户端向服务器进行请求 服务器向客户端(实际上是抓包工具)返回服务器的CA证书 抓包工具拦截服务器的响应,获取服务器证 ...
- 【破解APP抓包限制】Xposed+JustTrustMe关闭SSL证书验证!
转载:https://www.jianshu.com/p/310d930dd62f 1 前言 这篇文章主要想解决的问题是,在对安卓手机APP抓包时,出现的HTTPS报文通过MITM代理后证书不被信任的 ...
- fiddler抓包+安卓机 完成手机app抓包的配置 遇到的一些问题
fiddler抓包+安卓模拟器完成手机app抓包的配置:fiddler抓包+雷电模拟器 完成手机app抓包的配置 其实在安卓真机上弄比在虚拟机上弄更麻烦一点,它们的步骤都差不多一样,就是在安卓真机上弄 ...
- Fiddler+雷电模拟器进行APP抓包
1.下载最新版Fiddler,强烈建议在官网下载:https://www.telerik.com/download/fiddler 2. 正常傻瓜式安装,下一步,下一步,安装完毕后,先不用急于打开软件 ...
随机推荐
- vue项目使用百度地图API获取经纬度
一.首先在百度api注册获得ak密钥 二.进行引入 (1).第一种方式: 直接在vue中index.html中用script标签引入. //你的ak密钥需要替换真实的你的ak码 <script ...
- Git常用命令+本地连接远程仓库
一.git命令整理 git config --global user.email "邮箱名":绑定GitHub邮箱 git config --global user.name &q ...
- Sparse R-CNN: End-to-End Object Detection with Learnable Proposals 论文解读
前言 事实上,Sparse R-CNN 很多地方是借鉴了去年 Facebook 发布的 DETR,当时应该也算是惊艳众人.其有两点: 无需 nms 进行端到端的目标检测 将 NLP 中的 Transf ...
- MongoDB学习笔记:快速入门
MongoDB学习笔记:快速入门 一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...
- 内部排序算法(交换排序,插入排序)注意点(C语言实现)
对于算法思想的理解可以参考下面的这个帖子,十大经典排序算法(动图演示) - 一像素 - 博客园,因为算法的逻辑和数学很像,相应的基础资料一般也能在网上找到,所以,本帖子这谈论一些重要的注意点,其他人讲 ...
- 自动驾驶QNX,Linux,Autosar概述
自动驾驶QNX,Linux,Autosar概述 QNX是一个分布式.嵌入式.可规模扩展的实时操作系统.遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具).部分遵循POSIX.1b( ...
- GPU编程和流式多处理器
GPU编程和流式多处理器 流式多处理器(SM)是运行CUDA内核的GPU的一部分.本章重点介绍SM的指令集功能. 流式多处理器(SM)是运行我们的CUDA内核的GPU的一部分.每个SM包含以下内容. ...
- 视频处理器为电池供电的设计提供4K视频编码
视频处理器为电池供电的设计提供4K视频编码 Video processor enables 4K video coding for battery-powered designs OmniVision ...
- jmeter工作目录介绍、jmeter元件及组件介绍
一.jmeter工作目录介绍: bin:放置各项配置文件(如日志设置.JVM设置).启动文件.启动Jar包.示例脚本等: docs:放置JMeter API的离线帮助文档: extras:JMeter ...
- JVM-gcRoots 和 强引用,软引用, 弱引用, 虚引用, 代码演示和应用场景
什么是垃圾? 什么是gcRoots, 谈谈你对 强, 软, 弱 , 虚引用的理解, 他们的应用场景 jvm采用可达性分析法: 从gcRoots集合开始,自上向下遍历,凡是在引用链上的对象,都不是垃圾, ...