【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端服务端)
文章目录
- 前言
 - 一、安全威胁分析
 - 二、主要风险项
 - 三、Android测试思维导图
 - 四、反编译工具
 - 五、Android客户端
 - 漏洞一、Jnaus漏洞
 - 漏洞二、数据备份配置风险漏洞
 - 漏洞三、Activity组件泄露漏洞
 - 漏洞四、BroadcastReceiver组件泄露漏洞
 - 漏洞五、允许模拟器Root环境登录漏洞
 - 漏洞六、未识别代理环境漏洞
 - 漏洞七、未使用随机布局键盘漏洞
 - 漏洞八、键盘密码截屏漏洞
 - 漏洞九、数字签名检测
 - 漏洞十、反编译保护
 
前言
本篇文章针对Android APP渗透测试相关技术实施以及工具的使用,文中难免会出现其他问题,麻烦各位的大佬及时指出,共同学习,再此感谢!!!
一、安全威胁分析
安全威胁从三个不同环节进行划分,主要分为客户端威胁 、数据传输端威胁和服务端的威胁。
 
二、主要风险项

三、Android测试思维导图

四、反编译工具
有两种反编译方式:dex2jar 和apktool,两个工具反编译的效果是不一样的,dex2jar反编译出java源代码,apktool反编译出来的是java汇编代码。dex2jar主要是用来把之前zip解压出来的classed.dex转成jar包的jd-gui主要是用来打开Jar包的。
五、Android客户端
漏洞一、Jnaus漏洞
测试目标:APP应用包
格式:*.apk
测试工具下载:https://github.com/bihe0832/Android-GetAPKInfo
测试步骤:
使用工具包内GetAPKInfo.jar 命令:java -jar GetAPKInfo.jar *.apk
 
 漏洞危害:
攻击者可利用Janus漏洞将一个恶意的DEX文件与原始APK文件进行拼接,从而不影响APK文件的签名。替代原有正常的App做下载、更新,用户端安装了恶意仿冒的App后,不仅会泄露个人账号、密码、照片、文件等隐私信息,手机更可能被植入木马病毒,进而或导致手机被ROOT甚至被远程操控。
安全建议
1、将APP的APK升级到最新的Signature scheme V2签名机制;
 2、开发者及时校验App APK文件的开始字节,以确保App未被篡改。
漏洞二、数据备份配置风险漏洞
测试目标:APP应用包
格式:*.apk
测试工具下载:https://github.com/MobSF/Mobile-Security-Framework-MobSF
测试步骤:
本地安装该工具(安装步骤忽略),KALI中启动该工具并访问http://X.X.X.X:8000
 打开网址,上传APK安装包,查看Android配置文件(AndroidMainifest.xml)
 
 
 或直接将APK安装包后缀改为.zip,然后使用工具AMLPrinter2.jar输出.txt。
命令:java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt
使用NotePad++ 打开即可看到配置文件信息

漏洞危害:
第三方应用开发者需要在APP的AndroidManifest.xml文件中配置 allowBackup 标志(默认为 true )来设置应用数据是否能能够被备份或恢复。当这个标志被设置为 true 时应用程序数据可以在手机未获取 ROOT 的情况下通过adb调试工具来备份和恢复。在接触用户手机的情况下攻击者可以在启动手机USB调试功能来窃取那些能够受到AllowBackup漏洞影响的APP数据,造成用户敏感信息泄露甚至财产损失。
安全建议
将AndroidManifest.xml文件中Application节点的android:allowBackup属性设置为 false 或是 删除该属性。
漏洞三、Activity组件泄露漏洞
测试目标:APP应用包
格式:*.apk
测试工具下载:https://github.com/MobSF/Mobile-Security-Framework-MobSF AMLPrinter2.jar
测试步骤:
通过AndroidManifest.xml文件查找关键字符串
com.******.******.icbcPay.PayResultHandler
com.******.******.wxapi.WXPayEntryActivity
com.******.******.alipay.AliPayEntryActivity
com.******.******.PushMessagesActivity
com.******.******.wxapi.WXEntryActivity
com.******.payment.thirdpay.channel.wx.WXEntryActivity
com.******.******.wxapi.WXPayEntryActivity
com.******.payment.thirdpay.channel.qq.QQPayEntryActivity
 

 漏洞危害:
导出的Activity组件能被第三方APP任意调用,攻击者可构造恶意payload进行攻击,导致敏感信息泄露,并可能受到绕过认证、恶意代码注入等攻击风险。
安全建议:
1、如果Activity组件不需要与其它系统共享数据或交互,应在AndroidManifest.xml 配置文件中将该Activity组件的android:exported 属性值设置为false。如果Activity组件需要与其它APP共享数据或交互,应对Activity组件进行权限控制和参数校验。
 2、在界面切换时,检测下一界面的Activity类,如不是被测系统内的界面,则提示并退出。
漏洞四、BroadcastReceiver组件泄露漏洞
测试目标:APP应用包
格式:*.apk
测试工具下载:https://github.com/MobSF/Mobile-Security-Framework-MobSF AMLPrinter2.jar
测试步骤:
漏洞成因:com.gotop.yjdtzt.MyBroadCastReceiver没有被保护
 
 漏洞危害:
导出的Broadcast Receiver组件能被第三方APP任意调用,攻击者可构造恶意payload进行攻击,攻击者可构造恶意payload进行攻击,造成用户敏感信息泄露、拒绝服务攻击等风险。
安全建议:
如果组件不需要与其它系统共享数据或交互,应在AndroidManifest.xml配置文件中将该receiver的android:exported属性值设置为false。如果该receiver需要与其它APP共享数据或交互,应对receiver进行权限控制和参数校验。
漏洞五、允许模拟器Root环境登录漏洞
tips:该测试环境需要使用模拟器,可支持Root模式模块的
测试目标:APP应用包
格式:*.apk
测试工具:逍遥模拟器
测试步骤:
打开工具配置,将模式改为Root模式运行,点击启动应用
 
 可以看出启动应用并未提示有关警告类消息,存在问题。
漏洞危害:允许root设备/模拟器登录会存在不安全的风险。
安全建议:检测到root或模拟器设备,提醒当前环境存在风险。
漏洞六、未识别代理环境漏洞
测试目标:APP应用包
格式:*.apk
测试工具:逍遥模拟器
漏洞成因:当设置网络代理后,APP未检测到代理,攻击者会通过客户端所操作产生的数据流量进行劫持,获取敏感信息。
测试步骤:测试机中设置代理,并启动APP应用
 
 启动应用过程中,并未显示警示类消息,该行为存在问题。
漏洞危害:APP未检测网络代理时,不安全的网络代理会劫持通讯数据,存在中间人劫持的风险。
安全建议:检测当前网络环境,当设置代理时提醒用户。
漏洞七、未使用随机布局键盘漏洞
测试目标:APP应用包
格式:*.apk
测试工具:逍遥模拟器
测试步骤:打开应用,点击输入账号密码,可从底部弹出输入法
 
 漏洞危害:测试客户端程序在登录密码等输入框未设置随机软键盘,容易被木马根据点位获取登录密码。
安全建议:自定义随机布局键盘。
漏洞八、键盘密码截屏漏洞
测试目标:APP应用包
格式:*.apk
测试工具:逍遥模拟器
测试步骤:打开应用,在输入账号密码时进行屏幕截图。
 
 输入密码时,可通过按键回应截屏得到密码等信息。
漏洞危害:通过连续截图,可以捕捉到用户密码输入框的密码。
安全建议:建议以震动方式代替回显效果给用户反馈输入信息。
漏洞九、数字签名检测
测试目标:APP应用包
格式:*.apk
测试工具:jarsigner.exe
测试命令:jarsigner.exe -verify -verbose -certs *.apk
当输出的结果为jar已验证时,表示签名正常
 
 检测签名的 CN 及其他字段是否正确标识客户端程序的来源和发布者身份
 
 只有在使用直接客户的证书签名时,才认为安全。 Debug 证书、第三方(如开发方)证书等等均认为风险。
漏洞十、反编译保护
问题描述:APP源代码对于一个公司是非常重要的信息资源,对APP的保护也尤为重要,APP的反编译会造成源代码被恶意者读取,以及APP的逻辑设计。
反编译方法:我们一般想要反编译一个APK,无非就是要想获得三样东西:图片资源、XML资源、代码资源
图片资源获取:首先准备一个APK(.apk文件),我们将其后缀改为.zip,打开zip文件在res目录下,我们就可以获取到我们需要的图片了。
XML资源获取: 想要获取.xml文件,在我们打开zip压缩包里面可以看到存在一个.xml的文件,但是呢!直接打开的话会显示乱码或者空白,那我们该如何获取这个XML资源呢,这时就需要借助一个工具AXMLPrinter2.jar,将这个工具放在与XML同一目录下使用cmd命令执行java -jar AXMLPrinter2.jar xxxxx.xml>xxxxx.txt,这个时候你就能获取到xml里的东西啦。
代码资源获取:这个就比较重要了,但这里存在一个点,这里能够正确反编译出来的只有未加密或者没有混淆的代码,如果想要反编译一些加密或者混淆后代码,我们就需要其他途径解决了。首先需要准备两样东西:dex2jar.rar和jd-gui.zip这两个工具。dex2jar主要是用来把之前zip解压出来的classed.dex转成jar包的,jd-gui主要是用来打开jar包的。
Apktool用法:使用命令 java -jar apktool.jar d -f *.apk -o 文件夹名。
 
 dex2jar用法:把dex2jar解压后,然后将之前的zip的classes.dex放到dex2jar目录下,这里必须要与dex2jar.bat是同级目录。然后又要用到cmd。Cd到dex2jar目录下,打命令行 dex2jar.bat classes.dex,然后你的目录里会多一个jar包,多了一个classes-dex2jar.jar文件,再用jd-gui把jar打开,最终apk的代码就被剥离出来了。
检测方法:通过反编译工具看是否能够对APP进行反编译。
工具下载:
 https://bitbucket.org/iBotPeaches/apktool/downloads/ -> apktool (资源文件获取)
 https://github.com/pxb1988/dex2jar/releases -> dex2jar (源码文件获取)
 http://java-decompiler.github.io/ -> jd-gui (源码查看)
工具介绍:
 Apktool 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看。
 dex2jar 作用:将apk反编译成java源码(classes.dex 转化成jar文件)。
 Jd-gui 作用:查看APK中classes.dex转化为jar文件,即源码文件。

 使用jd-dui将jar包打开
 
 可以看到上图中被混淆过的class反编译后的效果图,(类文件名称以及里面的方法名称都会以a,b,c….之类的样式命名,较为安全,不会被轻易获取源码数据)。

 修复方法:采用加密和混淆技术达到反编译保护。混淆技术作用是增加了用户反编译后阅读代码的难度。
未完,待续!!!
相关文章:
【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端服务端)
文章目录前言一、安全威胁分析二、主要风险项三、Android测试思维导图四、反编译工具五、Android客户端漏洞一、Jnaus漏洞漏洞二、数据备份配置风险漏洞漏洞三、Activity组件泄露漏洞漏洞四、BroadcastReceiver组件泄露漏洞漏洞五、允许模拟器Root环境登录漏洞漏洞六、未识别代…...
字符串匹配 - Overview
字符串匹配(String Matchiing)也称字符串搜索(String Searching)是字符串算法中重要的一种,是指从一个大字符串或文本中找到模式串出现的位置。字符串匹配概念字符串匹配问题的形式定义:文本(Text)是一个长度为 n 的数组 T[1..n]&…...
【IP课堂】Ip地址如何进行精准定位?
通过Ip地址定位,是目前网络上最常见的定位方式。当然,也是最简单的定位方式。其实方法大多都是雷同的,通过Ip定位,就目前网上公开的技术。如通过搜索关键词“定位,定位查询,Ip定位”等,只能查询…...
MySQL 临时表相关参数说明区别
MySQL 临时表参数innodb_temp_tablespaces_dir、innodb_temp_data_file_path、innodb_tmpdir、tmpdir 区分 解决方案 innodb_tmpdir: alter table生成中间表文件,innodb_tmpdir有指定效路径,优选选择innodb_tmpdir,没有则选择tm…...
第二章 变量和基本类型
1.string类型数据的另一种初始化方式 语法: string 变量名 (" 初始化内容 "); 2.C中的列表初始化 语法: 数据类型 变量名 { 变量初始化的值 } ; 数据类型 变量名 { 变量初始化的值 } ; 例: 3.引用常量 常量引…...
【Python】循环语句(while,for)、运算符、字符串格式化
一、while循环Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:while 判断条件(condition):执行语句(statements)执行语句可以是单个语句或语句…...
利用设计模式、反射写代码
软件工程师和码农最大的区别就是平时写代码时习惯问题,码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。 业务同学抱怨业务开发没有技术含量,用不到设计模式、Java 高级特性、OOP,平时写代码都在堆 CRUD,个…...
Spring Cloud Alibaba--seata微服务详解之分布式事务(三)
上篇讲述gateway的部署和使用,gateway统一管理和转发了HTTP请求,在互联网中大型项目一定存在复杂的业务关系,尤其在商城类软件中如淘宝、PDD等商城,尤其在秒杀场景中,并发量可以到达千万级别,此时数据库就会…...
[USACO2023-JAN-Bronze] T3 Moo Operations 题解
一、题目描述因为Bessie觉得玩平时经常玩的只包含C O和W的字符串无聊了,Farmer John 给了她Q个新的字符串(1≤Q≤100),这Q个字符串只包含M和O。很明显,只包含M和O的单词里Bessie最喜欢的是”MOO”,所以她希望按照下面两个规则&…...
OKCC呼叫中心支持哪些接入方式?
使用OKCC系统开展呼叫中心业务,要将电话打通,需要什么样的设备接入到OKCC系统呢? 目前实际广泛使用的接入方式,既有硬件网关接入方式,也有软件接入方式,在生产实践中,我们须根据实际的需求及使…...
如何让手机共享电脑代理网络的WIFI热点
参考: 手机共享电脑的proxy网络 把电脑的网络代理给安卓设备如何将电脑的代理网络以WIFI热点的方式共享 电脑端设置代理: 打开电脑上的 proxy软件并设置其端口号(例如:7890),且允许局域网(例如…...
渲染有问题?怎么办?6种方法让你渲染无忧
简单点,解决问题的方式简单点。 日常工作中我们总会遇到各种各样的问题,比如渲不出图,速度太慢或效率太低,各种噪点和黑图等等,烦不胜烦,今天我就针对6个常见的问题给大家说下方法,一家之言仅供…...
中国人寿业务稳定性保障:“1+1+N” 落地生产全链路压测
引言 保险业务的数字化转型正如火如荼地进行,产品线上化、投保线上化、承保线上化、核保线上化等业务转型,导致系统的应用范围不断扩大,用户的高频访问也正在成为常态。同时,系统复杂性也呈指数上升,这些因素都增加了…...
2/17考试总结
时间安排 7:40–7:50 读题,T1 貌似是签到,T2,T4 DP,T3看起来很不可做。 7:50–8:00 T1,差分一下然后模拟就行了。 8:00–10:20 T2,注意到值域很小,可以考虑状压,想到一个状压状态数较少的 dp ,然后挂得彻底。发现有一…...
零信任-360连接云介绍(9)
360零信任介绍 360零信任又称360连接云安全访问平台(下文简称为:360连接云),360连接云,是360基于零信任安全理念,以身份为基础、动态访问控制为核心打造的安全访问平台。 通过收缩业务暴露面、自适应增强身份认证、终端持续检…...
使用dlib进行人脸检测和对齐
最近在配置人脸属性识别的服务,用过faceboxes_detector(faster rcnn的包),也用过face_recognition的,但是她们都没有做人脸对齐,而且检测人脸的范围也不太一样。没有做人脸对齐的时候,使用属性识…...
将python代码封装成c版本的dll动态链接库
前言 将python程序打包成DLL文件,然后用C调用生成的DLL文件,这是一种用C调用python的方法,这一块比较容易遇到坑。网上关于这一块的教程不是很多,而且大部分都不能完全解决问题。我在傻傻挣扎了几天之后,终于试出了一个…...
AI技术网关如何用于安全生产监测?有什么优势?
现代工业生产和运营的规模越来越庞大、系统和结构越来越复杂,现场的风险点多面广,给作业一线的安全监管带来极大的挑战。 针对工地、煤矿、危化品、加油站、烟花爆竹、电力等行业的安全生产监管场景,可以借助AI智能与物联网技术,…...
刷题记录:牛客NC53370 Forsaken的三维数点
传送门:牛客 题目描述: Forsaken现在在一个三维空间中,空间中每个点都可以用(x,y,z)表示。突然,三维空间的主人出现 了,如果Forsaken想要继续在三维空间中呆下去,他就必须回答三维空间主人的问题.主人会在空间 中坐标为(x,y,z)处…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
