App与小程序工具总结

文章目录

  • 前言
  • Burpsuite抓包问题
  • LPosed+JustTrustMe 绕过 SSL Pining
  • 小程序的反编译
  • APP脱壳,反射大师、frida
    • 反射大师
    • Frida
  • 总结


前言

在进行渗透工作的时候,遇到过的App、小程序也不少了,有简单的,也有加固的比较不错的,但是自己也挖到了不少的高危,不乏有越权的,短信验证码可绕过、可爆破的,存储泄露、敏感信息泄露等等各种,但是在这些渗透过程中,都需要用到强有力的工具。因此,以下总结一下渗透App、小程序等移动端的东西的时候常用到的工具,以免下次换电脑、换环境等又要从各种资料中寻找进行配置。

Burpsuite抓包问题

由于如今的应用已经逐渐对安卓应用的版本都在提高,有部分应用已经只兼容来安卓9了,不兼容安卓7,因此刚开始的时候可能会发现模拟器能抓到浏览器的包,但是抓不到App包的情况。这是因为安卓7以上默认已经不信任用户安装的证书了,因此需要使用adb将证书导入系统进行安装,以夜神模拟器安卓9为例。

  1. 首先从burpsuite中生成证书,保存。

file

  1. 导出的证书是DER格式的,需要转成PEM格式的证书,可以使用kali自带的openssl直接进行转换,并计算证书的MD5的值,并将证书命名为MD5的值。
openssl x509 -inform DER -in cacert.der -out cacert.pem
openssl x509 -inform PEM -subject_hash_old -in cacert.pem

file

  1. 找到夜神模拟器的bin目录,使用adb.exe输入以下命令上传证书
adb.exe devices  查看运行中的设备
adb.exe push 9a5ba575.0 /sdcard/   将证书推入到sdcard中
adb.exe shell  进入shell交互模式
mount -o remount,rw /system  重新挂载写入system
cp /sdcard/9a5ba575.0 /system/etc/security/cacerts/  将证书复制到系统安全目录
chmod 644 /system/etc/security/cacerts/9a5ba575.0  赋予证书读写权限
reboot	重启

file

  1. burpsuite开启监听,并设置代理服务器,这里本机的ip地址为192.168.1.101。

file

file

  1. 抓包成功

在这里插入图片描述

LPosed+JustTrustMe 绕过 SSL Pining

以上方式是最简单进行抓包的方式,假如对方服务器启用了SSL Pinning机制,那么可能依旧会无法捕捉到包,因为当我们使用抓包工具抓包时,抓包工具在拦截了服务端返回的内容并重新发给客户端的时候使用证书不是服务器端原来的证书,而是抓包工具自己的,抓包工具原来的证书并不是APP开发者设定的服务端原本的证书,于是就构成了中间人攻击,触发SSL Pinning机制导致链接中断,所以我们无法直接抓到包,这里使用低于安卓7版本的手机可能会没问题,但是App不一定兼容,因此要其它解决办法,可以使用Lposed即以Xposed为基础的框架进行绕过,以下是详细步骤。

  1. 安装Magisk,这里我安装的是Magisk-delta 25.2版本,下载地址如下:

Magisk

下载好后,直接将Magisk拖入夜神模拟器中,点击本地安装,在线安装需要翻墙才可以。

file

file

file

点击安装,安装完成后,会ti’s提示需要重启,这里先不进行重启,先将夜神模拟器设置的root权限关闭,关闭重启,即可将Magisk安装完成。

file

安装完成后,打开Magisk,点击右上角的设置,允许Zygisk运行即可。

file

  1. 安装Lposed框架,我下载的是zygisk版本的,下载地址如下:

Lposed

直接将下载好的zip压缩包拖入到夜神模拟器中,然后打开Magisk,选择模块,本地安装,然后选中Lposed的安装包,加载完成后,重启。

file

  1. 重启之后,进入/data/adb/lspd 目录,出现manager.apk包,点中,选择安装。

file

  1. 如果出现了解析包出现错误,哪就直接从Lposed框架中解压出manager.apk,直接拖入模拟器中即可成功。

file

  1. 能够打开,即安装成功。
    file

  2. 下载JustTrustMe模块,拖入到夜神模拟器中,在Lposed的模块中启用即可成功绕过SSL Pining进行抓包。

在这里插入图片描述

小程序的反编译

在对小程序进行渗透时,一般除了测试小程序的功能点之外,最好的方式就是将小程序反编译,查看一下源码,特别是当小程序每一个数据包都会将小程序提交给后端的数据进行签名一并提交的时候,就不得不反编译小程序查找签名的算法来进行伪造数据,相当于前端的js进行了加密一样。

  1. 首先,当你运行了小程序,并且使用了各小程序的功能的时候,小程序的打包文件其实就存储在了你的手机存储当中,文件后缀为wxapkg,只不过存在主包和分包的区别,比如我的夜神模拟器的存储目录就是/data/data/com.tencent.mm/MicroMsg/e594472a09487567540796a08a51a24f/appbrand/pkg中,中间很长那段e594472a09487567540796a08a51a24f可能为有所变化。

file

  1. 将这些生成的打包全部删除,重新访问一个小程序,把它的所有页面都走一遍,就会发现有新出现的几个wxapkg包,这几个包就是小程序的包,进行解包即可,解包使用wxappUnpacker进行解包,需要node.js环境。
npm install
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify

  1. 首先使用UnpackMiniApp(小程序包解密).exe查看一下小程序是否被加密。

file

  1. 然后使用wuWxapkg.js对小程序的主包进行解包,如果解包出现错误,可能这个包不是主包导致的,当然经常会报错,但是也会有小程序的代码出来,可以自己判断是否找到自己想要的。

file

  1. 虽然这里我也报错,但是反编译出来的小程序还算是完整的。

file

APP脱壳,反射大师、frida

App也一样,App如果逆向出来java代码就不说了,这个可以上网搜,也可以看我之前的文章,重点是现在市面上的APP都会进行混淆和加壳操作,一般都是加上诸如腾讯安全、阿里安全等壳,会把很多代码信息都给隐藏掉,影响人的正常查看,因此需要把这个壳给脱掉,观看到没加壳之前的App正常的Java代码。

这里关于App的扫描和反编译,也有一个不错的平台可以直接使用,自己也经常用来进行反编译,至于它的漏洞扫描,其实没有太大的作用,但是它会把Activity、SERVICES、provides以及代码等各种都列出来,并且会对一下permission的配置、XML的配置等进行检查,列出危险程度,也比较不错。

地址如下:

APP扫描

file

反射大师

  1. 首先可以使用检测壳的工具检测是否加壳了,诸如AppMessage等等工具。

file

  1. 下面提供两种方式进行直接脱壳,首先是反射大师,反射大师在安卓9已经不支持了,安卓7安装XPosed框架以及反射大师后依旧可以使用,这里以夜神模拟器安卓7版本进行演示。

首先直接在游戏中心中搜索Xposed即可进行安装下载,安装后进行重启即可成功,点击启动即可,Xposed的作者已经不进去维护了,因为不会再进行更新。

file

file

然后去网上找反射大师的apk文件,到处都有,至于官网在哪,自己也不知道,注意不要有后门即可,拖入APK中,打开反射大师,即会提示未激活模块,进入Xposed进行激活即可。

file

随后打开反射大师,选中应用,选择打开,会有五角星,把每个页面都跑一遍,会有很多代码的acivity都出来,选择进行保存即可。

file

点击五角星,最上方可以选择对应的activity启动器,点击当前Activity,写出Dex,再使用正常的反编译工具反编译成jar包后使用jd-gui打开即可。

file

Frida

反射大师不支持安卓9了,意味着假如应用不兼容安卓7就无法使用了,但是frida是个不错的解决方案。

  1. 首先需要下载frida-server以及frida-dexdump工具。

frida-dexdump可以直接使用python进行下载,或者去github上下载:

pip3 install frida-dexdump
pip install frida-tools
pip install frida

随后查看安装的frida版本,我这里是16.1.4,然后再查看对应安卓模拟器的处理器版本,进而去github下载对应的安卓服务器

file

file

frida-server

file

再利用adbshell将下载的frida拖入到夜神模拟器中,没报错即可运行成功。

adb.exe push frida-portal-16.1.4-android-x86_64.xz  /data/local/tmp
adb.exe shell
cd /data/local/tmp
chmod 755 frida-portal-16.1.4-android-x86_64.xz
./frida-portal-16.1.4-android-x86_64.xz


file

随后在Windows中运行frida-hexdump命令即可查看到安卓模拟器正在运行的程序。

file

可以通过以下命令直接反编译出转储正在运行的应用程序或通过命令指定某个包。

frida-dexdump -FU
frida-dexdump -U -f com.app.pkgname

file

总结

当然了,关于移动端的东西肯定不止这么点,以后遇到了再学习到了,再补上吧,毕竟版本更替引起的话题是一个永恒不变的话题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Servlet与过滤器

目录 Servlet 过滤器 Servlet Servlet做了什么 本身不做任何业务处理,只是接收请求并决定调用哪个JavaBean去处理请求,确定用哪个页面来显示处理返回的数据 Servlet是什么 ServerApplet,是一种服务器端的Java应用程序 只有当一个服务器端的程序使用了Servlet…

Ansible学习笔记12

playbook: playbook(剧本):是ansible用于配置、部署和管理被控节点的剧本,用于Ansible操作的编排。 使用的是yaml格式,(saltstack、elk、docker、docker-compose、k8s都会使用到yaml格式。&am…

【数据结构】| 并查集及其优化实现

目录 一. 并查集基本概念处理过程初始化合并查询小结 二. 求并优化2.1 按大小求并2.2 按秩(高度)求并2.3 路径压缩2.4 类的实现代码2.5 复杂度分析 三. 应用LeetCode 128: 最长连续数列LeetCode 547: 省份数量LeetCode 200: 岛屿数量 一. 并查集基本概念 以一个直观的问题来引入…

vue3的hooks你可以了解一下

更详细的hooks了解参考这个大佬的文章:掘金:Hooks和Mixins之间的区别 刚开始我简单看了几篇文章感觉Hooks这个东西很普通,甚至感觉还不如vue2的mixin好用。还有export import 感觉和普通定义一个utils文件使用没什么区别。但是Hooks这个东西肯…

kotlin实现猜数游戏

游戏规则 1.程序随机生成一个1到100的数字,作为MagicNumber 2.用户根据提示输入数据,只有三次机会输入数据 代码 代码很简单,使用了let内置函数 fun main() {//生成随机数可以使用java的方法//val magicNumber Random().nextInt(11)val ma…

设计模式--迭代器模式(Iterator Pattern)

一、什么是迭代器模式 迭代器模式(Iterator Pattern)是一种行为型设计模式,用于提供一种统一的方式来访问一个聚合对象中的各个元素,而不需要暴露该聚合对象的内部结构。迭代器模式将遍历集合的责任从集合对象中分离出来&#xf…

Docker 中下载各版本的 CentOS、CentOS Steam 方式

如果你跟我一样,想要在docker下载centos的镜像,但是无奈访问不了 https://hub.docker.com/,于是不知道有哪些tag可以下载,该如何办呢? 方法如下,以供参考。 访问:https://quay.io/repository/…

【计算机组成 课程笔记】2.1 设计自己的计算机

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 2 - 1 - 201-设计自己的计算机(14‘24’‘)_哔哩哔哩_bilibili 什么是指令系统体系结构?这个问题其实非常简单,但要想解释清楚也没有那么容易。我们还是从一个小故事…

【算法训练-数组 三】数组中的第K个最大元素(TOPK问题|寻找第K大)

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【寻找第K大】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

设计模式--代理模式(Proxy Pattern)

一、什么是代理模式(Proxy Pattern) 代理模式(Proxy Pattern)是一种结构型设计模式,它允许一个对象(代理)充当另一个对象(真实对象)的接口,以控制对该对象的…

HCIP-HCS华为私有云的使用

1、概述 华为公有云(HC)、华为私有云(HCS)华为混合云(HCSO)。6.3 之前叫FusionSphere OpenStack,6.3.1 版本开始叫FusionCloud,6.5.1 版本开始叫Huawei Cloud Stack (HCS)华为私有云…

前端调用电脑摄像头

项目中需要前端调用,所以做了如下操作 先看一下效果吧 主要是基于vue3,通过canvas把画面转成base64的形式,然后是把base64转成 file文件,最后调用了一下上传接口 以下是代码 进入页面先调用一下摄像头 navigator.mediaDevices.ge…

无涯教程-Android - List View函数

Android ListView 是垂直滚动列表中显示的视图,使用 Adapter 从列表(如数组或数据库)中获取内容的列表项会自动插入列表中。 适配器(Adapter)实际上是UI组件和将数据填充到UI组件中的数据源之间的桥梁,适配器保存数据并将数据发送到适配器视图&#xff0…

基于猎食者算法优化的BP神经网络(预测应用) - 附代码

基于猎食者算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于猎食者算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.猎食者优化BP神经网络2.1 BP神经网络参数设置2.2 猎食者算法应用 4.测试结果:5.Matlab代…

认识SQL sever

目录 一、数据库的概念 1.1数据库的基本概念 1.2对数据库的了解 二、数据库的分类 2.1关系型数据库(RDBMS): 2.2非关系型数据库(NoSQL): 2.3混合数据库: 2.4数据仓库: 2.5嵌…

静态路由(详细理解+实例精讲)

系列文章目录 华为数通学习(6) 前言 一,静态路由 二,静态路由配置 三,缺省路由 四,缺省路由应用场景 总结 前言 随着华为公司的不断发展,数据通信这门技术也越来越重要,很多人…

PyQt6 GUI界面设计和Nuitka包生成exe程序(全笔记)

PyQt6 GUI界面设计和Nuitka包,生成exe程序全笔记 目录一、PyQt6包安装1.1 进行环境配置和安装1.2 检查包是否安装成功。1.3 运行desinger.exe二、GUI界面设计,写程序,并能运行成功。三、Nuitka打包生成exe程序3.1 做Nuitka安装准备工作(1)安装C编译器,设置环境变量3.2 安…

自动化运维工具—Ansible

一、Ansible概述1.1 Ansible是什么1.2 Ansible的特性1.3 Ansible的特点1.4 Ansible数据流向 二、Ansible 环境安装部署三、Ansible 命令行模块(1)command 模块(2)shell 模块(3)cron 模块(4&…

【Java 动态数据统计图】前后端对接数据格式(Map返回数组格式数据)六(120)

说明: 前端使用:vue3.0 ECharts可视化库 前后端对接数据格式:无非就是前端把后端返回的数据处理为自己想要的格式,或者,后端给前端处理好想要的格式; 针对前后端的柱状图,趋势图等数据对接&…

亚马逊宣布弃用低代码,Honeycode 服务即将停止。

AWS 宣布终止低代码服务 Honeycode。新客户不能注册或升级账户计划,现有客户的应用程序将在 2024 年 2 月 29 日前继续运行。在 2023 年 7 月 31 日之后,用户将不再需要支付 Honeycode 使用费。 Honeycode 是一项于2020年6月推出的完全托管服务&#xf…