APP渗透总结

APP渗透测试和Web渗透测试本质上没有区别。目前APP应用主要分为Android和IOS,但是由于苹果的IOS操作系统不开源,所以一般对IOS系统进行渗透和反编译会比较困难,所以一般对APP系统进行渗透测试都是对Android进行测试。

目录

安装安卓模拟器抓包

安装证书

设置代理

抓包测试

 APP渗透信息搜集

AppInfoScanner工具

Fiddle工具

安装证书

反编译工具

脱壳工具

APK资源提取

小程序抓包

抓包通杀脚本

APP安全监测

MobSF安全框架评估

下载MobSF

Frida调试框架

下载安装

简单测试

绕过反代理、反证书检测

绕过反代理

绕过反证书

后续流程


安装安卓模拟器抓包

为了更好地对APP流量进行抓包,所以需要在电脑上下载安卓模拟器。

市面上有很多模拟器,这里推荐夜神模拟器。下载地址:夜神安卓模拟器-安卓模拟器电脑版下载_安卓手游模拟器_手机模拟器_官网

安装证书

抓HTTPS的包需要安装证书。

找到/storage/emulated/Pictures目录,将证书放入

 更改文件后缀名为cer,并在设置中安装证书,设置证书名称和密码即可。

设置代理

 抓包一般配合的都是BurpSuite工具,那么就需要设置代理才能够进行抓包。

在BurpSuite添加一个代理,任意选择端口和IP

然后在模拟器里同样设置相同IP和端口代理

抓包测试

随便点开浏览器抓包

 APP渗透信息搜集

和Web渗透测试一样,APP渗透测试第一步同样也是信息收集,只不过APP的信息收集相较于Web信息收集不同的就是APP是封装起来的,需要对APK文件(Android应用安装包)进行反编译或者使用工具进行抓包获取域名、端口、参数等信息。

AppInfoScanner工具

AppInfoScanner是一款适用于以HW行动/红队/渗透团队为场景的移动端(Android、IOS、Web、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态Web站点中关键的资产信息并提供基本的信息输出, 如:Title、Domain、CDN、指纹信息、状态信息等。

下载地址:GitHub - kelvinBen/AppInfoScanner: 一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。

使用:

python app.py android i <apk file>

要注意的是尽量不要拿大厂制作的APP进行测试,因为一般都是加壳的,加壳主要作用就是为了防止攻击者随意修改apk文件或者进行破解等。

能够获取到一系列URL,访问URL地址就可以进行进一步测试。

Fiddle工具

Fiddle也是一个抓包工具。在Web渗透测试中,BurpSuite是用的最多的一个抓包工具,但是BurpSuite抓APP的包还是不是那么方便的。而Fiddle也是一款非常强大、灵活、操作简单的抓包工具。直接在官方地址就可以免费下载:Download Fiddler Web Debugging Tool for Free by Telerik

在实际的信息获取过程中,APPInfoScanner项目收集的相关信息还是较少的,这时候就需要使用Fiddle共同进行收集。

安装证书

使用Fiddle工具抓取HTTPS包同样需要安装证书,但是需要用到FiddlecertMaker工具(Bouncy Castle证书生成器)进行安装,因为新版本的Android拒绝超过两年有效期的证书。FiddlecertMaker下载地址:FiddlecertMaker下载

下载后点击安装即可,如果提示版本不正确,下载最新版本即可。

选择export root certificate to desktop导出证书

然后在模拟器中安装CA证书,和上面步骤一样。

安装完之后Fiddle就可以抓取APP的数据了。

Fiddle抓取包可以看到php版本、IP地址、URL等信息,这些足够进行下一步的渗透了。比如获取到IP地址,那么就可以利用这个IP地址进行扫描端口等测试。

反编译工具

反编译方面能使用到的工具有很多,比如jadx、Android Killer、apktool、安卓修改大师等,但大多数都不咋更新了。

关于反编译工具的总结可以参考这篇文章:APK反编译工具汇总-CSDN博客

安卓修改大师可以轻松将任何APK安装包进行反编译,替换应用程序界面上的任何文字和图片,并且通过代码级别的修改,实现汉化、破解、功能增强,甚至可以在任何的界面添加自定义的代码和功能。本软件需要您的电脑安装了 .Net Framework 4.0以上版本和JDK1.8以上版本方可正常使用。这个软件需要¥,也正常,或许也可以去找破解版的,这里就不细说。

jdax是一款使用广泛的反编译工具,可以一键将apk文件还原成Java代码,使用简单,功能强大,还具有一些附加功能可以辅助代码追查。下载地址:GitHub - skylot/jadx: Dex to Java decompilerjadx本身是一个命令行工具,它也有配套的图形化界面工具jadx-gui。想要更了解的,参考文章讲的很好:2023最新版Android逆向教程——第2天:dex反编译工具的安装和使用_jadx-CSDN博客

Android Killer前几年就不更新了,但是也可以进行简单的反编译操作,上手简单。下载地址:GitHub - liaojack8/AndroidKiller: 整理了插件與IDE環境讓AndroidKiller能繼續用。

脱壳工具

很多APK文件都加壳加固,比如使用网易易盾进行加固等,那么就需要进行脱壳再进行反编译。不过,像网易易盾这种大厂进行加壳的,不是那么容易脱。

BlackDex,下载地址:GitHub - CodingGay/BlackDex: BlackDex is an Android unpack(dexdump) tool, it supports Android 5.0~12 and need not rely to any environment. BlackDex can run on any Android mobile phone or emulator, you can unpack APK File in several seconds.

下载完成后只要点击相应的应用,就可以进行脱壳。

也可以使用Xposed框架,然后下载网上开源的Xposed脱壳模块(FDex2和反射大师较为经典)

MT管理器可以直接在商店或者官网进行下载,是一个非常强大的文件管理器。不仅如此,MT管理器还可以用于APK逆向修改,比如编辑APK文件等。

APK资源提取

在某些情况下会获取不带APK文件的提取,但是很多工具进行测试又需要用到APK文件,那么就需要使用到APK资源提取工具,网上的工具很多,这里就不提供了。

小程序抓包

关于小程序抓包,会较麻烦,因为由于微信问题,在高版本的微信中,大部分小程序是抓不到包的。所以建议使用低版本的微信进行测试。

实战参考:【干货】针对微信小程序的渗透测试(附实战)

抓包通杀脚本

通常APP流量是走HTTP/HTTPS协议的,但是如果APP不走这两个协议,那么Fiddle和BurpSuite就抓不了包,就可以配合Frida使用通杀脚本来使用Wireshark抓取抓不到的包。

项目地址:

r0ysue/r0capture:安卓应用层抓包通杀脚本_Python - GitCode开源社区

脚本简介:

  • 仅限安卓平台,测试安卓7、8、9、10、11 可用 ;(不允许使用模拟器)
  • 无视所有证书校验或绑定,不用考虑任何证书的事情;
  • 通杀TCP/IP四层模型中的应用层中的全部协议;
  • 通杀协议包括:Http,WebSocket,Ftp,Xmpp,Imap,Smtp,Protobuf等等、以及它们的SSL版本;
  • 通杀所有应用层框架,包括HttpUrlConnection、Okhttp1/3/4、Retrofit/Volley等等;
  • 无视加固,不管是整体壳还是二代壳或VMP,不用考虑加固的事情;
  • (限制) 基于Java的虚拟机,暂未支持 flutter(开发框架),flutter走的已经不是java的虚拟机了!

抓包使用示例:

1、获取应用包名

adb shell am monitor

 2、给应用添加读取存储空间权限,启动Frida-server

adb shell
cd /data/local/tmp
chmod 777 frida-server
./frida-server ##运行

3、使用Attach模式抓包(也可以使用Spawn模式抓包,但是建议使用Attach模式,可以保存成pcap文件供后续使用Wireshark分析)。

python r0capture.py -U com.dianping.v1 -p 123.pcap

APP安全监测

MobSF安全框架评估

MobSF--移动的安全框架,是一个自动化的,一体化的移动应用程序(Android/IOS/Windows)测试,恶意软件分析和安全评估框架,能够执行静态和动态分析。MobSF支持移动的应用二进制文件(APK,XAPK,IPA&APPX)沿着压缩源代码,并提供REST API,以便与CI/CD或DevSecOps管道无缝集成。动态分析器可帮助您执行运行时安全评估和交互式仪表化测试。

下载MobSF

下载MobSF建议使用Linux系统来安装,因为Linux有集成的环境,如果安装在Windows或MAC会比较麻烦。可以使用Docker进行一键安装。

我这里使用在centos上进行安装下载,其他Linux版本可以自行搜索,都差不多其实。

1、docker拉取MobSF

docker pull opensecurity/mobile-security-framework-mobsf

2、启动MobSF

docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

3、打开MobSF,访问地址http://ip:8000

 使用方法就是简单的上传APK文件即可,然后等待分析结果查看就好。

Frida调试框架

Frida是一款基于Python+JavaScript的Hook调试框架,是一款易用的跨平台Hook工具,Java层到Native层的Hook无所不能,是一种动态的插桩工具,可以插入代码到原生APP的内存空间中,动态的去监视和修改行为,原生平台包括Win、Mac、Linux、Android、IOS全平台。

使用Frida可以获取到进程的信息(模块列表,线程列表,库导出函数),可以拦截指定函数和调用指定函数,可以注入代码。主要工作方式是将脚本注入到目标新的进程中,而且在执行过程中可以实时看到其中的变化。

不过如果需要持久化的Hook还是需要通过Xposed等其他框架,但是Frida具有动态的灵活性对逆向和自动化逆向提供了巨大帮助。

下载安装

需要python环境进行下载,如果没有python环境请自行安装。

Frida分为客户端(控制端)和服务端(被控制端)。

1、客户端安装Frida

pip install frida -i https://pypi.mirrors.ustc.edu.cn/simple/ 
pip install frida-tools -i https://pypi.mirrors.ustc.edu.cn/simple/#查看frida版本
frida --version

2、查看服务端模拟器的版本位数。首先要打开模拟器,然后在模拟器安装目录下bin文件打开cmd

adb shell ##进入模拟器
getprop ro.product.cpu.abi ##查看位数

3、服务端安装frida-server。服务端的版本要同客户端的版本一致,且下载模拟器的位数。下载地址:Frida-server

4、下载好Frida-server后要上传至模拟器。

adb push 文件位置 /data/local/tmp

5、给予运行权限并运行

adb shell
cd /data/local/tmp
chmod 777 frida-server
./frida-server ##运行

6、开启端口转发

adb forward tcp:27042 tcp:27042

7、执行命令查看是否成功部署。

#列出设备上正在运行的进程PID和进程包frida-ps -U

简单测试

通过frida-ps -U获取到应用进程包名后,可以编写一个js脚本(也可以编写python脚本)来注入到进程使其执行。

比如有一个进程包名为com.test.bw2,编写了一个helloworld.js脚本,使其打印出“helloworld!”

setTimeout(function()){Java.perform(function()){consoe.log("helloworld!");}
}#setTimeout()函数是JS的定时器,可以规定延迟时间再执行某个操作
#Java.perform表示Frida将会从这里开始执行JavaScript脚本
#console.log()主要用于在浏览器的控制台中输出信息,返回代码的执行结果和调试信息

然后连接到应用程序进程中然后运行JS脚本

frida -U -l [js文件路径] [进程包名]frida -U -l C:\hello.js com.test.bw2

执行命令后可以看到客户端回显输出了helloworld

这里有一篇文章很详细讲述了Frida的使用,且给了很多常用工具函数:Frida使用 - 知乎

绕过反代理、反证书检测

如果抓取不到APP应用的数据包,很有可能就是APP设定了反代理或者反证书验证机制进行绕过。

绕过反代理

存在反代理的情况,一般会提示网络连接失败,检查网络状态之类的信息。

绕过方法:

1、可以通过Proxifier绕过代理(使用方法有在其他文章讲到)

2、也可以通过r0capture安卓通杀脚本进行绕过

绕过反证书

绕过反证书可以通过r0capture安卓通杀脚本,XP框架,反编译提取证书等手段进行绕过。

XP框架下载后,需要安装配置Xposed模块,可以从Xposed框架本身的模块板块或第三方下载然后上传获得。比如可以下载JustMePlush模块,选择软件就可以绕过反证书了。

后续流程

在测试过程,修改了APK文件需要将其回编译(就是将修改后的文件修复)。可以使用apktool工具:

apktool b 文件夹名称

大多数APK文件都需要签名才可下载(如果不需要,那就是存在漏洞),可以使用MT管理器进行APK签名,添加签名后就可以进行安装了。

总而言之,这篇文章也只是简单的总结,之后还需要更加深入的去了解实践。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言解决汉诺塔问题

背景 首先带大家了解一下汉诺塔问题 汉诺塔是一个典型的函数递归问题&#xff0c;汉诺塔描述了这样的场景&#xff0c;有三个柱子&#xff0c;A,B,C&#xff0c;A柱为起始柱&#xff0c;在A柱上面有若干大小不同的盘子&#xff0c;最下面的最大&#xff0c;最上面的最小&#x…

基于Spring Boot的职称评审管理系统

基于Spring Boot的职称评审管理系统 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 部分系统展示 前台首页界面 用户注册登录界面 管理员登录界面 个人中心界面…

学习大数据之JDBC(使用JAVA语句进行SQL操作)(3)

文章目录 DBUtils工具包准备工作DBUtils的介绍QueryRunner空参的QueryRunner的介绍以及使用有参QueryRunner的介绍以及使用 ResultSetHandler结果集BeanHandler<T>BeanListHandler<T>ScalarHanderColumnListHander 事务事务事务_转账分析图实现转账&#xff08;不加…

搜索与图论——拓扑排序

有向图的拓扑排序就是图的宽度优先遍历的一个应用 有向无环图一定存在拓扑序列&#xff08;有向无环图又被称为拓扑图&#xff09;&#xff0c;有向有环图一定不存在拓扑序列。无向图没有拓扑序列。 拓扑序列&#xff1a;将一个图排成拓扑序后&#xff0c;所有的边都是从前指…

Redis的高可用(主从复制、哨兵模式、集群)的概述及部署

目录 一、Redis主从复制 1、Redis的主从复制的概念 2、Redis主从复制的作用 ①数据冗余&#xff1a; ②故障恢复&#xff1a; ③负载均衡&#xff1a; ④高可用基石&#xff1a; 3、Redis主从复制的流程 4、Redis主从复制的搭建 4.1、配置环境以及安装包 4.2所有主机…

智慧InSAR专题———模拟数据实现现实场景异常形变点识别(论文解读)

文章目录 &#xff08;近期想静下心回顾近期看的佳作&#xff0c;会写一下自己的总结&#xff0c;大家如果对此系列感兴趣&#xff0c;每周踢一下我&#xff0c;周更&#xff0c;持续更新&#xff09;0 前言1 Automated deformation detection and interpretation using InSAR …

蓝桥杯练习系统(算法训练)ALGO-959 P0705 集合运算

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 输入两个整数集合A、B&#xff0c;求出他们的交集、并集以及B在A中的余集。交集、并集和余集的计算都要求写成一个单独的函数。   输…

分类预测 | Matlab实现DRN深度残差网络数据分类预测

分类预测 | Matlab实现DRN深度残差网络数据分类预测 目录 分类预测 | Matlab实现DRN深度残差网络数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现DRN深度残差网络数据分类预测&#xff08;完整源码和数据&#xff09;&#xff0c;运行环境为Matl…

Java spring 01 (图灵)

01.依赖注入 这里两个方法用到了datasource方法&#xff0c;不是bean这样的使用&#xff0c;没有autowird 会创建两个datasource configuration 会运行代理模式 会产生一个AppConfig的代理对象 这个代理对象会在spring的容器先找bean&#xff0c;datasource此时已经创建了be…

【前沿模型解析】潜在扩散模型 2-1 | 手撕感知图像压缩 基础块ResNet块

文章目录 1 残差结构回顾2 LDM结构中的残差结构设计2.1 组归一化GroupNorm层2.2 激活函数层2.3 卷积层2.4 dropout层 3 代码实现 1 残差结构回顾 残差结构应该是非常重要的基础块之一了&#xff0c;你肯定会在各种各样的网络模型结构里看到残差结构&#xff0c;他是非常强大的…

Python实现【坦克大战】+源码分享

写在前面&#xff1a; 坦克大战&#xff0c;这款经典的电子游戏&#xff0c;无疑是许多80后和90后心中不可磨灭的童年记忆。它不仅仅是一款游戏&#xff0c;更是那个时代科技娱乐方式的缩影&#xff0c;见证了电子游戏行业的起步与发展。 在那个电脑和网络尚未完全普及的年代…

【Linux】进程控制详解

目录 前言 进程创建 认识fork 写时拷贝 再谈fork 进程终止 进程退出码 用代码来终止进程 常见的进程终止的方式 exit _exit 进程等待 进程等待的必要性 进程等待的方式 wait waitpid 详解status参数 详解option参数 前言 本文适合有一点基础的人看的&#…

ruoyi-vue-pro 前端vue js直接import导入本地文件使用方法

我的xml文件名称叫w2101.xml 第一步&#xff0c;删除所有依赖&#xff0c;否则配置以后就会启动报错&#xff1a; 第二步配置对应的文件格式&#xff0c;我当前使用的是xml文件 config.module.rule(xml).test(/\.xml$/).use(xml-loader).loader(xml-loader).end();第三步…

python开发poc2

#本课知识点和目的&#xff1a; ---协议模块使用&#xff0c;Request 爬虫技术&#xff0c;简易多线程技术&#xff0c;编码技术&#xff0c;Bypass 后门技术 下载ftp服务器模拟器 https://lcba.lanzouy.com/iAMePxl378h 随便创建一个账户&#xff0c;然后登录进去把ip改成…

vue想要突破全局样式限制又不影响别的页面样式怎么办

<!-- 用scope盖不住全局&#xff0c;随意来个class匹配私定&#xff0c;搜索关键词&#xff1a;不要随便改&#xff0c;乱打class名 --> <style> .lkajsdfjkalsfhkljashkflhaskl .el-input.el-input--default.el-input--suffix { width: 160px !important; } …

cJSON(API的详细使用教程)

我们今天来学习一般嵌入式的必备库&#xff0c;JSON库 1&#xff0c;json和cJSON 那什么是JSON什么是cJSON&#xff0c;他们之间有什么样的关联呢&#xff0c;让我们一起来探究一下吧。 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&…

部署k8s客户端,及docker私仓部署

1.部署一个docker私仓 mkdir /opt/docker/registry #配置仓库密码 mkdir /opt/docker/auth cd /opt/docker/auth htpasswd -Bbn admin admin > htpasswd#运行docker私仓服务&#xff0c;下面端口5000:5000 前面的5000对应本机端口可以自定义 docker run -itd \ -v /opt/d…

LeetCode-33. 搜索旋转排序数组【数组 二分查找】

LeetCode-33. 搜索旋转排序数组【数组 二分查找】 题目描述&#xff1a;解题思路一&#xff1a;二分查找。1.找哨兵节点&#xff08;nums[0]或nums[-1]&#xff09;可以确定nums[mid]位于前一段或后一段有序数组中。2. 就是边界left和right的变换&#xff0c;具体看代码。解题思…

第十二届蓝桥杯大赛软件赛省赛C/C++大学B组

第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、空间2、卡片3、直线4、货物摆放5、路径6、时间显示7、砝码称重8、杨辉三角形9、双向排序10、括号序列 1、空间 1MB 1024KB 1KB 1024byte 1byte8bit // cout<<"2…

Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 一、引言二、什么是桥接设计模式三、桥接设计模式的核心思想四、桥接设计模式的角色五、桥接设计模式的工作流程和实现实现方…