资产提取
AppinfoScanner
首先还是我们经常使用的AppinfoScanner,AppinfoScanner是一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。这里的下载地址为:https://github.com/kelvinBen/AppInfoScanner
cd AppInfoScanner
python -m pip install -r requirements.txt
安装依赖库之后,直接将APK放到该工具的文件夹中,使用该脚本去扫描该APK文件中所含的链接信息1.扫描Android应用的APK文件、DEX文件
python app.py android -i xxx.apk
2.扫描IOS应用的IPA文件、Machine-o文件
python app.py ios -i xxx.ipa
3.扫描web站点的文件、目录、需要缓存的站点URL
python app.py web -i www.xxx.com
这里我们的目标是APK文件,所以我们直接使用第一条命令即可python app.py android -i 123.apk
这时,AppinfoScanner就会将该APK中所涉及到的链接全部都提取出来,在扫描后会在AppinfoScanner中输出一个以当前时间命名的xls文件,其中就包含了对该APP中所提取的一些资产信息,但是该xls中的资产提取的并不完整,可能是我APK的原因吧在out文件夹中还会有一个以该APK名所命名的文件夹,里面存放这该APK所逆向出来的源代码,这里我们可以将该源代码导入到IDEA中打开IEDA,然后选择打开,选择所输出的文件夹,单击确定使用快捷键ctrl+shift+F
全局搜索,去搜索该代码中的一些关键信息,如http://、https://等也可以获得一些关键信息
MonSF
移动安全框架
(MobSF) 是一种自动化的一体化移动应用程序 (Android/iOS/Windows)
渗透测试、恶意软件分析和安全评估框架,能够执行静态和动态分析。MobSF 支持移动应用程序二进制文件(APK、XAPK、IPA 和
APPX)以及压缩源代码,并提供 REST API 以与您的 CI/CD 或 DevSecOps
管道无缝集成。动态分析器可帮助您执行运行时安全评估和交互式仪器测试。MonSF是基于docker运行的,我们只需要找来一台安装docker的主机运行如下两条命令即可docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:late
这里拉取环境之后直接运行即可,由于我之前已经拉取了环境,所以比较快一些,如果刚开始的话会需要等待一段拉取时间,如果已经拉取成功环境之后,下次启动只需要docker run -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:latest
启动好之后,直接访问docker主机的8008端口这里就是我们搭建好的MobSF界面,为web图形化界面,这里我们直接将APK拖到或者上传MobSF中之后,它就会对当前APK进行一个扫描,扫描完成之后即可看到这个APK的一些安全信息也可以去将该APK的java源代码、Smali源代码等还可以对目标生成一份报告等等其他功能,这里不再阐述
突破抓包限制
在测试APP中,经常会遇到一种情况,就是当我们打开代理之后,或者经常会出现抓不到包、一直检测失败
- 反代理,当该APK在启动时会判断客户端是否启动代理,如果启动代理则无法进行通信
- 反证书检测,抓包时,无法连接网络并且也接收不到任何数据,将APP代码内置仅接受指定域名的证书,而不接收操作系统或浏览器内置的CA根证书
突破反代理
首先当我们的APK的检测机制为反代理时,我们该如何去进行一个绕过,这里他的判断机制是当检测到客户端启动代理时,不发送数据,那我们可以不使用模拟器的代理,而使用本机的代理工具去包含安卓模拟器去启动,再将代理工具的流量转发到我们的burp上,哪这样我们的流量走向就成了下图,模拟器中并没有设置代理,但是他的整个流量都会走proxifier,proxifier会将流量都转发到burp上面,从而达到绕过反代理的效果。首先打开我们在内网渗透测试中经常使用的代理工具Proxifier,到配置文件中的代理服务器选项–>添加代理服务器–>服务器ip地址与端口为burp所监听的端口–>协议选择HTTPS,点击确定点击确定之后,我们将夜神模拟器重启,可以看到数据包已经在传递了这时我们再打开反代理的APK时,就可以看到我们的burp已经成功接收到了数据那么如果APK是基于证书校验或者走了其他的比如SSL等协议,那这时候我们该如何去抓取该APK的数据包呢?这里我们就可以尝试使用frida+r0capture+wireshark组合,使用frida和r0capture联动去抓取该APK的所有数据包,然后使用wireshark去进行分析该APK的流量详情。https://github.com/r0ysue/r0capture
https://github.com/frida/frida/releases
https://www.wireshark.org/
首先安装Frida
- 本地安装firdra和firdra-tools,使用pip进行安装
pip install frida
pip install frida-tool
1、根据模拟器的位数去下载其相对应的frida-server脚本在这里可以调用夜神模拟器路径下的nox_adb.exe去调用命令nox_adb.exe shell
getprop ro.product.cpu.abi
2、frida-server的版本要与本机pip安装的版本一致可以使用pip list
来查看我们所安装的frida的版本信息,这里我们本地所安装的frida版本为15.1.22,那么我们的模拟器也下载15.1.22版本的frida-server就可以了通过刚刚的基本信息之后,我们了解到,我们要下载版本为15.1.22,x86的frida,这里我们直接打开下载界面找到该版本进行下载即可,这里arm为真机使用版本,x86和x86_64为模拟器使用版本,这里我们下载frida-server-15.1.22-android-x86.xz文件即可下载完成之后,我们将其放到夜神模拟器的bin目录下,使用Nox_adb.exe将其上传到模拟器中nox_adb.exe push frida-server-15.1.22-android-x86 /data/local/frida-server
运行frida
OK,上传成功,接下来进入到模拟器的bash视图下,执行frida-server即可nox_adb.exe shellcd /data/local/frida-server
ls -lh
chmod u+x frida-server
好,这里我们成功运行了frida-server,接下来就检查一下他是否正常运行并是否和我们本机的frida正常连接模拟器中ps | grep frida-server
,可以看到进程本机中frida-ps -U
or frida-ps -R
可以正常返回这里frida-ps -R报错,则使用adb forward tcp:27042 tcp:27042
将流量转发出去然后就是我们的最后一步,获取我们要抓取的APK包名,这里有两种查看方式,一种是在/data/data目录中存放这所有文件的包名,还有就是可以使用APK资源提取器去查看APK的包名,这里我习惯用第二种方式比较可视化一些然后就可以启动我们的r0capture工具进行抓包分析,命令为python r0capture.py -U -f 包名 -v -p 文件名.pcap
这时,r0capture就会自动启动该APK文件,并将我们在进行操作时的流量进行保存为pacp,当我们停止运行该APK后,就会在r0capture中看到命名的pacp文件这里就成功抓取到了我在进行验证时的数据包,成功绕过证书检测等机制,但是该方法有些弊端,就是所导出的数据包我们并不能将其进行修改,后续最佳的办法为frida+r0capture联动fillder和XPosed框架去绕过限制,但这里由于篇幅原因,下一篇再来说一说以下方法吧!Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室。团队公众号自创建以来,共发布原创文章400余篇,自研平台达到31个,目有18个平台已开源。此外积极参加各类线上、线下CTF比赛并取得了优异的成绩。如有对安全行业感兴趣的小伙伴可以踊跃加入或关注我们。