App与小程序工具总结

news2025/1/21 22:00:07

文章目录

  • 前言
  • 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

总结

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

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

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

相关文章

【软考】系统集成项目管理工程师(一)信息化基础知识【6分】

一、信息与信息系统 1、信息技术 为解决信息的采集、加工、存储、传输、处理、计算、转换、表现等问题而不断繁荣发展 核心-传输技术(通常指通信、网络等) 2、信息的质量属性 特点:客观性、普遍性 属性描述精确性对事物状态描述的精准程度…

接口幂等性设计的最佳实现

一、什么是幂等 二、为什么需要幂等 三、接口超时了,到底如何处理? 四、如何设计幂等 全局的唯一性ID 幂等设计的基本流程 五、实现幂等的8种方案 selectinsert主键/唯一索引冲突 直接insert 主键/唯一索引冲突 状态机幂等 抽取防重表 token令牌 悲观锁…

stm32之27.iic协议oled显示

屏幕如果无法点亮,需要用GPIO_OType_PP推挽输出,加并上拉电阻 1.显示字符串代码 2.显示图片代码(unsigned强制转换(char*)) 汉字显示

​iOS上架审核宝典:如何避免被拒一次提交成功

Xcode 摘要:本文整理了iOS上架需要注意的事项,以帮助从事iOS开发和App运营的朋友们避免审核被拒的困扰。通过遵循这些指南,我们可以在一次提交中成功地将应用上架,并节省宝贵的时间和精力。 引言: 从事iOS开发和App运…

【一等奖方案】大规模金融图数据中异常风险行为模式挖掘赛题「NUFE」解题思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束,大赛官方竞赛平台DataFountain(简称DF平台)正在陆续释出各赛题获奖队伍的方案思路,欢迎广大数据科学家交流讨论。 本方案为【大规模金融图数据中…

AcWing 4405. 统计子矩阵(每日一题)

如果你觉得这篇题解对你有用,可以点点关注再走呗~ 题目描述 给定一个 NM 的矩阵 A,请你统计有多少个子矩阵 (最小 11,最大 NM) 满足子矩阵中所有数的和不超过给定的整数 K ? 输入格式 第一行包含三个整数 N,M 和 K。 之后 N 行每行包含 …

智慧展馆展厅5G+LoRa+蓝牙人员定位系统解决方案

展览业是现代高端服务业的重要组成部分,作为新兴的服务行业,展览业串联着工业、农业、商贸等诸多产业,能够有效拉动产业和消费增长,是中国发展潜力较大的行业之一。如今各个行业越来越多地举办各类展会,由于展馆展厅规…

人体学接口设备 (HID)

参考链接 windows-hardware drivers hid | Microsoft Learnhttps://learn.microsoft.com/pdf?urlhttps%3A%2F%2Flearn.microsoft.com%2Fzh-cn%2Fwindows-hardware%2Fdrivers%2Fhid%2Ftoc.json人体学接口设备 (HID) 简介 - Windows drivers | Microsoft Learnhttps://learn.mi…

遇到 Binder这些面试题,你会怎么答?

作为开发人员,每个人都有每个人擅长领域,自然也有自己不擅长的领域,很难成为完美的一个全栈开发。在面试中最怕遇见的一件事是面试官专挑你不擅长的领域进行提问,目的就是看你遇到问题的应变能力。 接下给大家分享一个面试中容易被…

CUDA小白 - NPP(3) 图像处理 Color and Sampling Conversion

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…

标准库STL容器使用值语义

C自学精简实践教程 目录(必读) 标准库STL的容器都是值语义的。 即&#xff0c;无法将一个变量放到容器里。容器里存放的只是我们放进去的变量的拷贝&#xff08;副本&#xff09;。 示例&#xff1a; #include <iostream> #include <vector> using namespace s…

【Apollo学习笔记】——规划模块TASK之RULE_BASED_STOP_DECIDER

文章目录 前言RULE_BASED_STOP_DECIDER相关配置RULE_BASED_STOP_DECIDER总体流程StopOnSidePassCheckClearDoneCheckSidePassStopIsPerceptionBlockedIsClearToChangeLaneCheckSidePassStopBuildStopDecisionELSE:涉及到的一些其他函数NormalizeAngleSelfRotate CheckLaneChang…

创建python环境——Anaconda

在Windows中安装Anaconda和简单使用 一.Anaconda发行概述 Anaconda是一个可以便捷获取和管理包&#xff0c;同时对环境进行统一管理的发行版本&#xff0c;它包含了conda、 Python在内的超过180个科学包及其依赖项。 1.Anaconda发行版本具有以下特点&#xff1a; (1)包含了…

Qt实现一个简单的放射式弹出菜单

Qt实现一个简单的放射式弹出菜单 实现效果&#xff1a; GitHub源码 支持特性 可设置弹出选项的起始角度与角度范围 按住中心按钮&#xff0c;可以拖拽窗口 动画支持&#xff0c;可以设置动画时间、选项的延迟弹出 设置菜单的布局对齐、边距&#xff0c;方便根据场景放置在…

YOLO目标检测——蔬菜检测数据集下载分享

YOLO蔬菜检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;图片格式为jpg&#xff0c;共21000张图片。 数据集点击下载&#xff1a;YOLO蔬菜检测数据集21000图片数据说明.rar

科研无人机平台P600进阶版,突破科研难题!

随着无人机技术日益成熟&#xff0c;无人机的应用领域不断扩大&#xff0c;对无人机研发的需求也在不断增加。然而&#xff0c;许多开发人员面临着无法从零开始构建无人机的时间和精力压力&#xff0c;同时也缺乏适合的软件平台来支持他们的开发工作。为了解决这个问题&#xf…

7.Redis-list

list list常用命令lpushlrangelpushxrpushrpushxlpop / rpoplindexlinsertllenlremltrimlset 阻塞版本命令blpop/brpop 总结内部编码应用场景使用redis作为消息队列 redis中的 list 是一个双端队列, list 相当于是数组或者顺序表。list 并非是一个简单的数组&#xff0c;而是更…

matlab使用教程(29)—微分方程实例

此示例说明如何使用 MATLAB 构造几种不同类型的微分方程并求解。MATLAB 提供了多种数值算法来求解各种微分方程&#xff1a; 1.初始值问题 vanderpoldemo 是用于定义 van der Pol 方程的函数 type vanderpoldemo function dydt vanderpoldemo(t,y,Mu) %VANDERPOLDEMO Defin…

UDP协议的重要知识点

UDP&#xff0c;即用户数据报协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;是一个简单的无连接的传输层协议。与TCP相比&#xff0c;UDP提供了更少的错误检查机制&#xff0c;并允许数据包在网络上更快地传输。在这篇博客中&#xff0c;我们将深入探讨UDP的…

【请求报错:javax.net.ssl.SSLHandshakeException: No appropriate protocol】

1、问题描述 在请求服务时报错说SSL握手异常协议禁用啥的 javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)2、解决方法 在网上查找了方法原因后得知是jdk的问题 修改java.security 文件 Linu…