APP渗透—MobSF安全评估、frida、r0capture抓包

news2024/12/28 19:12:06

APP渗透—MobSF安全评估、frida、r0capture抓包

  • 1. 前言
  • 2. 补充AppInfoScanner相关内容
  • 3. MobSF安全评估
    • 3.1. 下载MobSF
    • 3.2. 安装Docker
      • 3.2.1. 查看Linux内核版本
      • 3.2.2. 更新yum包
      • 3.2.3. 安装Docker软件包
      • 3.2.4. 设置yum源
      • 3.2.5. 查看Docker版本
      • 3.2.6. 安装Docker
      • 3.2.7. 设置Docker
      • 3.2.8. Docker其它命令
    • 3.3. 安装MobSF
      • 3.3.1. 一键安装
      • 3.3.2. 启动MobSF
      • 3.3.3. 打开MobSF
    • 3.4. MobSF使用
      • 3.4.1. 上传APK文件
      • 3.4.2. 查看APK分析结果
  • 4. frida抓包
    • 4.1. frida介绍
    • 4.2. PC端配置
      • 4.2.1. 安装python
      • 4.2.2. 安装frida与frida-tools
    • 4.3. 模拟器配置
      • 4.3.1. 查看模拟器位数
      • 4.3.2. 下载Frida-server
      • 4.3.3. 上传模拟器
      • 4.3.4. 给予权限
      • 4.3.5. 运行frida-server
      • 4.3.6. 判断连接状态
    • 4.4. 总结
  • 5. 安卓应用层抓包通杀脚本
    • 5.1. 测试前事项
    • 5.2. 获取包名方式
      • 5.2.1. 选择安装包提取
      • 5.2.2. 查看包名
    • 5.3. Attach 模式使用方式
      • 5.3.1. Attach 模式操作
      • 5.3.2. Attach 模式结果
    • 5.4. Spawn 模式使用方式
      • 5.4.1. Spawn 模式操作
      • 5.4.2. Spawn 模式结果
    • 5.5. 总结

1. 前言

  在之前的文章都已经介绍了如何对APP应用及小程序的抓包方式,本次将主要探讨,如何更全面的获取详细信息与获取非HTTP/S的流量,同时利用自动化工具对APK文件继续自动化扫描相关的威胁。

  APP与小程序—信息收集

2. 补充AppInfoScanner相关内容

  在之前的演示中只是介绍了一下AppInfoScanner项目的使用方式,并没有更详细的介绍这个工具,这个工具是一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。

  但是在实际的信息获取过程中,发现收集到的相关信息还是比较少的,这时候就需要使用Fiddler共同进行收集,才可能将APK中的信息收集完成。

  这是由于AppInfoScanner项目是通过提取APK中存在的URL地址信息,若获取到这个URL地址那么就会对其进行收集,除此之外的URL信息就收集不到了。

  而Fiddler是在通信过程中进行收集,相较于AppInfoScanner项目可能会收集到更多在通信过程中访问的一些相关信息,但是FIddler想要收集完整就需要一个一个功能测试,同时可能会出现开会员才能够点击的功能或者一些特殊授权才能够使用的功能,这时候就会出现无法收集的情况,所以两个配合是最优的办法,当然不一定非要使用Fiddler或者AppInfoScanner项目,如果你有更好的项目当然更好拉,如果没有,那么这两个也不错。

3. MobSF安全评估

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

3.1. 下载MobSF

  这里最好使用Linux系统来安装,若安装在Windows系统上或者MAC上会比较麻烦,而使用Linux系统只需要在Linux系统上准备一个Docker即可实现一键安装。

  MobSF下载

  MobSF官方手册

3.2. 安装Docker

  我是虚拟机装的Centos7.6,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上, RHEL/Centos 的内核修补过, centos6.5的版本就可以——这个可以试试)

  需要使用root权限安装。

3.2.1. 查看Linux内核版本

uname -r

在这里插入图片描述

3.2.2. 更新yum包

  这里需要将yum包,更新到最新,这里我是使用云服务器,我更新了一下,看没什么好更新的,而且比较慢,所以直接就没有更新。

yum update

在这里插入图片描述

3.2.3. 安装Docker软件包

  我这里显示好像是安装过了,我也不清楚之前安装啥了。

yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

3.2.4. 设置yum源

yum-config-manager –add-repo http://download.docker.com/linux/centos/docker-ce.repo ##中央仓库

在这里插入图片描述

3.2.5. 查看Docker版本

  这里我们可以看一下所有仓库中所有docker版本,并选择特定版本安装。

yum list docker-ce --showduplicates | sort -r

在这里插入图片描述

3.2.6. 安装Docker

  版本号就是第二排这个版本号,比如我这里选择的是18.09 。

yum install docker-ce-版本号

在这里插入图片描述

3.2.7. 设置Docker

  这里设置Docker,主要就是设置启动、开机自启、查看版本,若能够查看到版本,基本上就是安装成功了。

systemctl start docker
systemctl enable  docker
docker version

在这里插入图片描述

3.2.8. Docker其它命令

  这里介绍一些常用的Docker命令。

docker ps              ##查看当前正在运行的容器
docker ps -a           ##查看所有容器的状态
docker start/stop id/name ##启动/停止某个容器
docker exec -ti id ##启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
docker images          ##查看本地镜像
docker rm id/name      ##删除某个容器
docker rmi id/name     ##删除某个镜像

3.3. 安装MobSF

  如果使用Linux的话,安装是很方便了,不需要操作太多,一条命令即可。

3.3.1. 一键安装

  这里安装MobSF,可能稍微有点慢。

docker pull opensecurity/mobile-security-framework-mobsf

在这里插入图片描述

3.3.2. 启动MobSF

  这里启动MobSF,如果你是使用云服务器,那么就需要在安全组中开启8000端口,当然端口是可以更改的。

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

在这里插入图片描述

3.3.3. 打开MobSF

  这里就可以通过网页打开MobSF了,访问地址:http://IP地址:端口

在这里插入图片描述

3.4. MobSF使用

  这里简单来说就是将APK上传至MobSF中,若没有APK文件,可以使用资源提取器,将APP应用的APK文件提取出来,在上篇文章中已经介绍如何提取了,这里就不再赘述,这里我还是使用某妃进行操作。

3.4.1. 上传APK文件

  点击中间的上传,将文件上传进去,就可以了,后面就是等待结果,时间可能有点长,大概率是由于APK文件的大小、是否加壳、编写内容导致分析时间长。

在这里插入图片描述

3.4.2. 查看APK分析结果

  这里稍等后,就会出现分析的结果,这里都是英文,可以使用浏览器翻译成中文,就通俗易懂了,这里我就不一一介绍相关的信息,直接看一张大图吧!

  具体的使用的方式可以自己去研究,我这里只是介绍怎么使用。

在这里插入图片描述

4. frida抓包

  Firda 是一款易用的跨平 Hook 工具, Java 层到 Native 层的 Hook 无所不能,是一种 动态 的插桩工具,可以插入代码到原生 App 的内存空间中,动态的去监视和修改行为,原生平台包括 Win、Mac、Linux、Android、iOS 全平台。

  大部分 App 对于我们来说都是黑盒,对 App 进行逆向和动态调试、或自动化分析、需要不断的进行动态调试,Frida 通过使用 Python 注入 JavaScript 脚本,都是通过 JS 脚本来操作设备上的 Java代码。

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

4.1. frida介绍

  Frida 分为客户端和服务端。

  客户端:PC(控制端)

  服务器:手机设备(被控制端)

  客户端编写的 Python 代码,用于连接远程设备,提交要注入的 JS 代码到服务端,接受服务端发来的消息。

  服务端中需要用 JS 代码注入到目标进程,操作内存数据,给客户端发送消息。

4.2. PC端配置

  这里首先安装python,然后再去安装frida库以及frida-tools工具。

4.2.1. 安装python

  我这里已经提权安装好python了,都学习到APP渗透了,不应该还没有安装python了吧!

在这里插入图片描述

4.2.2. 安装frida与frida-tools

  这里可能需要耐心等一等,安装过程很慢,但是退出几次,重新安装就快了,也很奇怪,这里安装完成后,通过查看版本来定服务端的版本,我这里是16.0.7,那么我安装服务端就需要下载16.0.7版本的。

pip install frida  ##安装frida
pip install frida-tools  ##frida-tools
frida --version    ##查看版本

在这里插入图片描述

4.3. 模拟器配置

4.3.1. 查看模拟器位数

  在下载的服务端版本中会存在位数,那么就需要查看模拟器的版本位数了。

  首先需要打开模拟器,如果不打开模拟器是进不去的,同时由于我没有设置环境变量,那么我就在夜神模拟器的安装目录下的bin中打开cmd输入命令查看位数,这样我们就好判断下载什么位数的服务端了。

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

在这里插入图片描述

4.3.2. 下载Frida-server

  上面我们获取到我们的客户端的版本是16.0.7版本的,同时模拟器的位数是64位,那么根据这些信息,来下载对应的服务端。注意服务端的 Frida 版本必须和客户端的 Frida 版本一致。

  Frida-server

  这里需要注意,前缀需要为android,实体手机选在arm/arm64,模拟器选择X86/X86_64。

在这里插入图片描述

4.3.3. 上传模拟器

  这里需要将服务端上传至模拟器中,需要退出来上传,不能在系统中上传。

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

在这里插入图片描述

4.3.4. 给予权限

  这里和Linux一样需要给予执行权限。

adb shell
cd /data/local/tmp
chmod 777 frida-server

在这里插入图片描述

4.3.5. 运行frida-server

  这里运行的时候,只要是卡住的状态就证明成功了。

./frida-server ##运行

在这里插入图片描述

  如果不确定,这时候可以在启动一个cmd,进入看一下是否在运行即可。

ps | grep frida-server

在这里插入图片描述

4.3.6. 判断连接状态

  这里需要判断进行运行状态,这里显示的信息就是模拟器中的信息。

frida-ps -U

在这里插入图片描述

  这里还需要输入一个命令,需要两个都能够执行成功才可以。

frida-ps -R

在这里插入图片描述

  可以看到这里是没有执行成功的,那么就需要进行端口转发。

adb forward tcp:27042 tcp:27042

在这里插入图片描述

  再次查看状态,可以看到成功执行,这里尽量将所有的cmd窗口都挂起来,不要关闭,避免后面还需要调试。

在这里插入图片描述

4.4. 总结

  到这里关于Frida的操作就全部结束了,注意在以上操作中,尤其是在进行端口转发后,可能会出现卡死的情况,建议重新操作,运行服务端与端口转发这些测试。

5. 安卓应用层抓包通杀脚本

  通常如果APP流量不走HTTP/S协议,那么就会导致fiddler与burp抓不到包,那么这里就可以使用fride配合下面的脚本抓取我们抓不到的包。

  这里需要下载一个这个脚本,这个脚本可以自行去看相关的介绍,这里就简单的介绍一下。

  • 仅限安卓平台,测试安卓7、8、9、10、11、12 可用 ;
  • 无视所有证书校验或绑定,不用考虑任何证书的事情;
  • 通杀TCP/IP四层模型中的应用层中的全部协议;
  • 通杀协议包括:Http,WebSocket,Ftp,Xmpp,Imap,Smtp,Protobuf等等、以及它们的SSL版本;
  • 通杀所有应用层框架,包括HttpUrlConnection、Okhttp1/3/4、Retrofit/Volley等等;
  • 无视加固,不管是整体壳还是二代壳或VMP,不用考虑加固的事情;

  安卓应用层抓包通杀脚本

5.1. 测试前事项

  这里需要注意,我发现当模拟器运行frida-server后,模拟器无法进行操作,当暂停运行frida-server,立刻能够操作。这个我还没太搞清楚是什么情况,这里是使用的是夜神模拟器,安卓版本7.0。

  这里可能是由于我个人的环境问题导致的,不确定其它人会不会有这样的情况。

  这里我摸索出一个流程,简单来说一下。

  首先按照上面的流程运行frida-server并且测试-R-U是否能够正常获取到信息。

  然后再确保能够获取到信息后,发现模拟器无法操作了,这里就需要将frida-server暂停,测试模拟器是否恢复正常,如果没有继续暂停frida-server,然后再进行测试。

  当模拟器恢复正常后,在使用r0capture.py进行抓包。

5.2. 获取包名方式

  后面可能会用到包名,所以这里介绍一下,如何获取APP在模拟器中的包名,这里需要使用到MT管理器,在上一章中也提到MT管理器了,具体的介绍就不多废话了,这里直接介绍如何使用。

  MT管理器

5.2.1. 选择安装包提取

  这里选择安装包提取。

在这里插入图片描述

5.2.2. 查看包名

  这里就能够看到包名叫什么了。

在这里插入图片描述

5.3. Attach 模式使用方式

  在官方的注意事项中有显示,老版本Frida使用包名,新版本Frida使用APP名。APP名必须是点开app后,frida-ps -U显示的那个app名字。

5.3.1. Attach 模式操作

  这里我使用的是Attach 模式,当访问什么界面才去抓取,简单来说就是抓取感兴趣流。

  如果直接执行会报错,需要在开启探探APP的时候,立刻到cmd中执行回车,所以,就需要提前将命令输入进去。

python r0capture.py -U 探探  -v -p tantan.pcap

在这里插入图片描述

5.3.2. Attach 模式结果

  这里获取到的结果是pcap也就是wiresharp的包,把包打开就能够看到访问了哪些地址以及一些相关的信息,这里就可以对这些IP以及内部的数据进行分析。

在这里插入图片描述

5.4. Spawn 模式使用方式

  这里官方介绍是使用包名来操作,但是不会保存成一个数据包,只是会将结果导出到一个txt文件中,且非常的杂乱,所以官方也是建议使用attach模式。

5.4.1. Spawn 模式操作

  这里在输入完成后,会自动跳转并打开包名所对应的APP应用。

python r0capture.py -U -f 包名

在这里插入图片描述

5.4.2. Spawn 模式结果

  在文件夹下会自动生成一个txt文件,会将所有内容都放置这个txt文件中。

在这里插入图片描述

5.5. 总结

  这里好像是可以和fiddler与burp联动的,这里暂时还没研究,期待下一章吧,应该会提到这方面的内容。

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

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

相关文章

计算广告(十六)

营销渠道效果评估与归因 分析背景 营销活动的投放目标通常是品牌知名度和直接效果的结合。除了品牌宣传,受众在品牌指定页面上的浏览、注册、咨询、收藏、成交等,都可作为营销活动的目标转化。衡量投放的渠道各自对目标转化的贡献如何,投入…

成基于时间轮实现的定时器解决方案

文章目录 定时器的使用场景定时器与其他组件的关系定时器与网络事件在一个线程定时器与网络事件在不同线程当中处理大量定时任务怎么处理 定时器设计接口设计数据结构的抉择 时间轮时间轮的概念设计单层级时间轮1、时间轮大小2、时间精度 空推进问题多层时间轮 Skynet定时器实现…

TS-黑马(一)

目录: (1)ts-入门 (2)ts-类型-标注位置 (3)ts-类型-复杂类型 (4)ts-类型-函数类型 (1)ts-入门 我们讲过javaScript语言是动态的语言&#xf…

一次组件化与Android Jetpack的实践

前言 至今为止从事Android开发两年多了,17年开始实习时,恰逢APP刚刚立项不久,当时新项目沿用了旧项目古老的MVC架构。从那之后一直都是根据飘忽不定的需求,没有规则的垒代码。 直到18年中,其他项目组开发的APP要求集…

C语言入门篇——介绍篇

目录 1、什么是C语言 1、C语言的优点 3、语言标准 4、使用C语言的步骤 5、第一个C语言程序 6、关键字 1、什么是C语言 1972年,贝尔实验室的丹尼斯里奇和肯汤普逊在开发UNIX操作系统时设计了C语言,C语言是在B语言的基础上进行设计。C语言设计的初衷…

算法记录 | Day38 动态规划

对于动态规划问题,将拆解为如下五步曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509.斐波那契数 思路: 确定dp数组(dp table)以及下标的含义&#x…

Linux应用编程(线程)

与进程类似,线程是允许应用程序并发执行多个任务的一种机制,线程参与系统调度,事实上,系统调度的最小单元是线程、而并非进程。 一、线程概述 什么是线程? 线程是参与系统调度的最小单位。它被包含在进程之中&#x…

shell之自定义mykill(十六)

公众号:Android系统攻城狮 简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】&am…

2023-04-21:用go语言重写ffmpeg的metadata.c示例。

2023-04-21:用go语言重写ffmpeg的metadata.c示例。 答案2023-04-21: 这段 Go 代码演示了如何使用 ffmpeg-go 库中的函数来读取多媒体文件元数据,包括视频、音频等信息。它的大体过程如下: 设置环境变量以加载 FFmpeg 动态链接库…

紫砂壶型和泥料适配茶叶

一、壶型 1、紫砂壶泡茶,一般是壶音频率较高者,适宜配泡重香气的茶叶,如青茶;壶音稍低者较宜配泡重滋味的茶,如乌龙、铁观音。 壶音频率:是将壶盖取下,一手托住壶身一手用壶盖轻敲壶把产生的声音 2、容量在200ml以下…

MVC、MVP、MVVM:谁才是Android开发的终极之选?

概述 MVC、MVP、MVVM 都是在 Android 开发中经常用到的架构思想,它们都是为了更好地分离代码、提高代码可复用性、方便维护等目的而设计的。下面对这三种架构思想进行简单的介绍和比较。 MVC MVC 架构是最早被使用的一种架构,它把程序分成了三个部分&…

【LeetCode: 152. 乘积最大子数组 | 暴力递归=>记忆化搜索=>动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

双语|中国和印度仍然主导着美国的国际学者领域

由美国国务院教育和文化事务局支持的国际教育学会期刊《门户开放》,调查了2021-2022赴美的国际学者来源情况,发表文章,“China and India still dominate international scholars field in US”(中国和印度仍然主导着美国的国际学…

初中级测试工程师,软件测试面试题总结大全(功能/接口/自动化测试)你要的都有...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一般软件测试的面…

安全防御 IPsec VPN

目录 1.什么是数据认证,有什么用,有哪些实现的技术手段? 2.什么是身份认证,有什么用,有哪些实现的技术手段? 3.什么是VPN技术? 4.VPN技术有哪些分类? 5.IPsec技术能够提供哪些安…

linux中静态库与动态库

linux中静态库与动态库 1. 静态库静态库的制作:静态库的使用: 2. 动态库动态库的制作:动态库的使用: linux中静态库与动态库的区别 1. 静态库 静态库的制作: gcc add.c mult.c -c //这样就生成add.o mult.o目标文件 …

【深度学习】基于MindSpore和pytorch的Softmax回归及前馈神经网络

1 实验内容简介 1.1 实验目的 (1)熟练掌握tensor相关各种操作; (2)掌握广义线性回归模型(logistic模型、sofmax模型)、前馈神经网络模型的原理; (3)熟练掌…

UBUNTU下NFS配置(用于嵌入式开发)

1. NFS简介 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就…

低代码(九)低代码平台后设计一:模型驱动

我们先看一下汽车的基本构造,由车身、发动机、方向盘等多个零部件构成,因为它是一个工业产品,有实物存在,摸得着看得见,所以大家很容易理解。日本丰田汽车是如何做到自动化流水线生产的,本质上是把产品xBOM…

BufferedOutputStream,BufferedInputStream是字节流,对象处理流,序列化,输入输出流,转换流

BufferedInputStream字节输入流 意思就是InputStream类及其子类都能以参数的形式放到BufferedInputStream构造器的参数 package com.hspedu.outputstream_;import java.io.*;/*** author 韩顺平* version 1.0* 演示使用BufferedOutputStream 和 BufferedInputStream使用* 使用他…