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签名,添加签名后就可以进行安装了。
总而言之,这篇文章也只是简单的总结,之后还需要更加深入的去了解实践。