APP安全测试汇总【网络安全】

news2024/11/15 10:25:46

APP安全测试汇总

一.安装包签名和证书

1.问题说明

检测 APP 移动客户端是否经过了正确签名,通过检测签名,可以检测出安装包在签名后是否被修改过。如 果 APP 使⽤了 debug 进⾏证书签名,那么 APP 中⼀部分 signature 级别的权限控制就会失效,导致攻击 者可以编写安装恶意 APP 直接替换掉原来的客户端。

2.测试

使用jadx工具,可以直接反编译apk包(将apk工具拖入jadx即可),查看APK signature文件。

image-20221203130242025.png

主题中显示是Debug签名,则说明该签名不安全。

3.结论

不安全

二.应用完整性校验

1.问题说明

APK 应⽤完整性即移动客户端程序安装后,在每次启动时都会对⾃身⽂件进⾏完整性进⾏校验。防⽌攻击 者通过反编译的⽅法在客户端程序中植⼊⾃⼰的⽊⻢,客户端程序如果没有⾃校验机制的话,攻击者可能 会通过篡改客户端程序窃取⼿机⽤户的隐私信息。

2.测试

使用Android Killer工具可以对apk的完整性进行校验,以更改apk的图标为例,使用Android Killer工具反编译apk之后,打开AndroidMainfest.xml文件,找到android:icon,该项所对应的值就是图标存储的位置。
 

image-20221203131043756.png


所有apk的图标都在res目录下,
 

image-20221203131417002.png


andriod:icon所对应的值为@mipmap,则res目录下以mipmap开头的目录存放的都是apk图标,该apk下有五个相关目录,故需要将该五个目录的图标都需要更改为要变更的apk图标,名字需要与原来一致。
 

image-20221203131438938.png


将原来apk的图标保存,然后涂鸦,
 

image-20221203132340347.png


然后将5个目录下的图标都更改为该涂鸦图标,此时已经将五个图标全部替换。(替换方法:右击图片选择打开方式,然后点击打开文件路径,然后直接使用涂鸦图片替换原图片即可,名字需要与原图片一致)
 

image-20221203132542869.png


替换完成之后,重新编译apk。
 

image-20221203132856271.png


编译完成之后会输出编译路径。
 

image-20221203132928533.png


使用手机或者模拟器进行安装该apk,如果可以安装并且图标被更改的话,则说明应用完整性不安全。
 

image-20221203133304770.png


可以看到该apk图标已经被更改。

3.结论

不安全

三.组件导出安全

1.Activity组件
1.1问题说明

Android 中的每个程序都是由基本组件如 Activity、Service、content Provider 和 Broadcast Receiver 等所组成,⽽作为实现应⽤程序的主体的 Activity 承担着⼤量的显示和交互⼯作,甚⾄我们可以理解为⼀ 个「界⾯」就是⼀个 Activity。既然 Activity 这么重要,如果 Activity 组件存在问题那么就可能会被系统 或者第三⽅的应⽤程序直接调出并使⽤。⽽组件导出可能导致登录界⾯被绕过、信息泄露、数据库 SQL 注 ⼊、DOS、恶意调⽤等⻛险。

1.2测试

测试组件导出安全使用drozer工具进行测试。

虚拟器安装agent.apk,主机连接drozer命令

adb forward tcp:31415 tcp:31415

drozer.bat console connect

出现下图所示标志代表主机已经连接到drozer客户端。
 

image-20221205110918358.png


使用jadx查看apk的包名。
 

image-20221205111050245.png


得到包名为jakhar.aseem.diva。
run app.activity.info -a jakhar.aseem.diva(包名) :查看该apk所有可以导出的组件
 

image-20221205111457731.png


run app.activity.start --component jakhar.aseem.diva jakhar.aseem.diva.APICreds2Activity
导出jakhar.aseem.diva.APICreds2Activity组件,可以看到该apk已经自动打开该界面。
 

image-20221205111603141.png


run app.activity.info -a jakhar.aseem.diva(包名) 导出组件
run app.activity.start --component jakhar.aseem.diva jakhar.aseem.diva.APICreds2Activity 导出组件中对应的界面

如果Activity中只有第一个主界面可以导出,说明该组件是安全的,因为主界面导不出的话,apk就打不开,主界面就是apk打开时显示的界面。

2.3结论

不安全

2.Service组件
2.1问题说明

Service 是没有界⾯且能⻓时间运⾏于后台的应⽤组件,应⽤的组件可以启动⼀个服务运⾏于后台⽆论⽤ 户是否切换到其他应⽤。⼀个组件还可以绑定到⼀个 Service 来进⾏交互,即使进程间通讯间的交互也是 可以的。例如,⼀个 Service 可能是执⾏⽂件 I/O,处理⽹络事物,或与⼀个内容提供者交互等等,所有 这些服务都在后台进⾏。如果 Service 出现问题,则可能会被系统或者第三⽅的应⽤程序直接调出并使 ⽤。组件导出可能导致登录界⾯被绕过、信息泄露、数据库 SQL 注⼊、DOS、恶意调⽤等⻛险。

2.2测试

run app.service.info -a com.package 导出所有组件,

可以看到该apk没有service组件可以导出。
 

image-20221205112258097.png


如果有service组件可以到处,则使用下面命令导出组件对应的界面

run app.service.start --component com.package xxx.xxx.xxx

run app.service.info -a com.package

run app.service.start --component com.package xxx.xxx.xxx

2.3结论

安全

3.Content Provider组件
3.1问题说明

Android 中 Content Provider 可能存在⽂件⽬录遍历安全漏洞,该漏洞源于对外暴露 Content Provider 组件的应⽤没有对 Content Provider 组件的访问进⾏权限控制和对访问的⽬标⽂件的 Content Query Uri 进⾏有效判断,攻击者利⽤该应⽤暴露的 Content Provider 的 openFile() 接⼝进⾏⽂件⽬录遍历以达到访问任意可读⽂件的⽬的。在使⽤ Content Provider 时,将组件导出提供了 query 接⼝,由于 query 接⼝传⼊的参数直接或间接由接⼝调⽤者传⼊,攻击者构造 SQL Injection 语句,造成信息的泄漏甚⾄是应⽤私有数据的恶意改写和删除。攻击者利⽤⽂件⽬录遍历访问任意可读⽂件、查看本地数据库内容等。

3.2测试

run scanner.provider.finduris -a jakhar.aseem.diva
 

image-20221205112807386.png


run scanner.provider.injection -a jakhar.aseem.diva 检测是否存在sql注入
 

image-20221205112845956.png


run scanner.provider.traversal -a jakhar.aseem.diva 检测是否存在目录遍历
 

image-20221205112926483.png


run scanner.provider.finduris -a app包名

run scanner.provider.injection -a APP包名 检测是否存在sql注入

run scanner.provider.traversal -a APP包名 检测是否存在目录遍历

3.3结论

不安全

4.Broadcast Reeciever组件
4.1问题说明

⼴播接收器 (Broadcast Recevier) 是⼀个专注于接收⼴播通知信息,并做出对应处理的组件。很多⼴播都 是源⾃于系统代码,例如:电池电量低、通知时区改变、拍摄了⼀张照⽚或者⽤户改变了语⾔选项等等。 当然应⽤程序也可以进⾏⼴播,例如,应⽤程序通知其它应⽤程序下载完成⼀些数据并处于可⽤状态。应 ⽤程序可以拥有任意数量的⼴播接收器以对所有它感兴趣的通知信息予以响应,所有的接收器均继承⾃ BroadcastReceiver 基类。⼴播接收器是没有⽤户界⾯的,但是它们可以启动⼀个 activity 来响应它们收 到的信息,或者⽤ NotificationManager 来通知⽤户。如果 Broadcast Recevier 存在问题则可能被系统 或者第三⽅的应⽤程序直接调出并使⽤。组件导出可能导致登录界⾯被绕过、信息泄露、数据库 SQL 注 ⼊、DOS、恶意调⽤等⻛险。

4.2测试

run app.broadcast.info -a jakhar.aseem.diva
 

image-20221205113353977.png


run app.broadcast.info -a com.packagename

run app.broadcast.send --component com.packagename --action xxx.xxx.xxx 存在拒绝服务⻛险

run app.broadcast.send --action xxx.xxx.push.PenddingIntent 数字签名校验

4.3结论

安全

四.应用程序数据可备份

1.问题说明

在 Android 2.1 以上的系统中可以为 App 提供应⽤程序数据的备份和恢复功能,这些功能由 AndroidMainfest.xml ⽂件中的 allowBackup 属性值进⾏控制,其默认的值为 true。当 allowBackup 的 值设置为 true 时,就可通过 adb backup 和 adb restore 来进⾏备份和恢复应⽤程序数据,这样是可能获取到明⽂存储的⽤户敏感信息。

2.测试

使用jadx查看allowBackup对应的值。值为true,故可备份。
 

image-20221205113849249.png


adb backup -nosystem -noshared -apk -f com.xingming.test.ab jakhar.aseem.diva.MainActivity 备份为com.xingming.test.ab

输入锁屏密码,即可备份该apk数据,并且备份的包命名为com.xingming.test.ab
 

image-20221205114112284.png


最后即可在该目录下生成备份文件。

adb backup -nosystem -noshared -apk -f com.xingming.test.ab jakhar.aseem.diva.MainActivity 备份为com.xingming.test.ab

java -jar abe.jar unpack com.xingming.test.ab xm.tar 解密备份文件

adb devices //显示已连接的设备列表,测试手机是否正常连接

adb backup -nosystem -noshared -apk -f com.sina.weibo.ab com.sina.weibo

//-nosystem表示不备份系统应用 -noshared表示不备份应用存储在SD中的数据 -apk表示备份应用APK安装包 -f 表示备份的.ab文件路径和文件名 最后是要备份应用的packageName

adb kill-server //关闭ADB

adb devices //重新启动ADB,检测手机2是否成功连接

adb restore com.sina.weibo.ab 将备份数据恢复到另一个手机

3.结论

不安全

五.Debug 模式

1.问题说明

APP 软件 AndroidManifest.xml 中的属性值 android:debuggable 如果为 true,那么 APP 可以被 Java 调试⼯具例如 JDB 等进⾏调试。当 APP 被调试⼯具进⾏调试后可以获取和篡改⽤户敏感信息,甚⾄可以 分析然后修改代码以实现恶意的业务逻辑,我们经常使⽤ android.util.Log 来打印⽇志,⽽ APP 发布后调 试⽇志能被其他开发者看到,APP 就容易被反编译破解。

2.测试

检查 AndroidManifest.xml ⽂件中的 debuggable 属性 (MobSF),检查其是否能被调试。如果没有设置 debuggable 属性,该属性默认为 false。该apk被设置为true,故可调式,不安全。

image-20221205114957508.png

3.结论

不安全

六.不安全的数据存储

1.问题说明

检查移动客户端 APP 私有⽬录下的⽂件及 APP ⾃身代码中是否存在敏感信息泄露的情况,如果有该类情况,则可能泄露 APP ⾃身中的服务端接⼝信息以及⽤户信息(如密码、私钥)等。

2.测试

查看路径/data/data/包名/下是否有敏感文件存放。
 

image-20221205115428901.png


可以看到databases下存放着数据库文件。

image-20221205115445108.png

3.结论

不安全

七.日志

1.问题说明

如果 APP 中有调试⽇志函数,那么可能输出重要的⽇志⽂件,其中包含的信息可能导致客户端⽤户信息泄 露,暴露客户端代码逻辑等。

2.测试

先查看apk运行的pid,最后进行日志筛选,不然的话日志太多不好查看。

ps | grep jakhar.aseem.diva 查看到该apk的运行pid为3953。
 

image.png


 

image-20221205115906164.png


adb logcat | findstr 3953 筛选出该apk的日志文件,在该日志文件中查看到登陆的账户与密码值。

image-20221205120728033.png

3.结论

不安全

八.移动客户端程序保护

1.问题说明

如果移动客户端的代码没有被相应加固保护,则很容易被攻击者破解进⾏反编译,通过反编译攻击者可以 获取到移动客户端的源代码。

2.测试

使用查壳工具查看该apk是否被加壳。
 

image-20221205121159469.png


未查到壳,然后使用jadx查看该apk是否可以被反编译,是否可以看到明文代码。可以看到代码没有被既没混淆,也没加壳。

image-20221205121259942.png

3.结论

不安全

九.键盘劫持测试

1.问题说明

检查移动客户端 APP 在输⼊密码等敏感信息时是否使⽤了⾃定义软键盘。Android 应⽤中的输⼊框默认使 ⽤系统软键盘,如果⽬标⼿机被安装了⽊⻢,⽊⻢可以通过替换系统软键盘,记录应⽤的敏感信息输⼊。

2.测试

⾸先我们需要进⼊ adb 使⽤ logcat 调出⽇志。
 

image-20221205121709888.png


然后安装键盘记录工具ns_keylogger.apk,该 APK ⽂件安装后桌⾯不会有显示,需要我们到「设置」->「语⾔和输⼊法」-> 选择「NSFOCUS test Keyboard」
 

image-20221205122815351.png


adb logcat -s Keylogger 指定查看键盘输入的日志,打开测试的apk随机输入字符,可以看到日志中已经输出了用户输入的字符串。

image-20221205122951703.png

3.结论

不安全

十.屏幕录像保护

1.问题说明

攻击者可能在用户输入密码的时候去截屏,如果输入密码没有做截屏保护,就可能被攻击者截图到输入的密码。

2.测试

adb shell /system/bin/screencap -p 输入png路径(安卓设备中) /data/local/tmp 普通用户可写
 

image-20221205122217250.png


将该图片导入到电脑,然后查看。

adb pull /data/local/tmp/1.png .\ 将虚拟机的图片导入到电脑的当前目录。
 

image-20221205122339651.png


查看该图片。可以看到泄露了输入的账户。

image-20221205122424188.png

3.结论

不安全

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

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

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

相关文章

MTK下载AP

只升级选Firemare Upgrade ,点下载后,关机下插入USB

刷代码随想录有感(79):回溯算法——N皇后问题

题干: 代码&#xff1a; class Solution { public:vector<vector<string>> res;void backtracking(vector<string>& chessboard, int n, int row){if(row n){res.push_back(chessboard);return;}for(int col 0; col < n; col){if(isvalid(chessboa…

从0开始学统计-卡方检验

1.什么是卡方检验&#xff1f; 卡方检验是一种用于检验观察频数与期望频数之间差异的统计方法。它通常用于分析分类变量之间的关联性或独立性。在卡方检验中&#xff0c;我们将观察到的频数与期望频数进行比较&#xff0c;从而确定它们之间的差异是否显著。 卡方检验的基本思…

【Linux】-Redis安装部署[15]

目录 简介 安装 1、配置EPEL仓库 2、安装redis 3、启动redis 4、放行防火墙&#xff0c;redis使用端口6379 5、进入redis服务 简介 redis是一个开源、使用C语言编写的、支持网络互交的、可基于内存也可持久化的Key-Value数据库。redis的特点就是&#xff1a;快&#xf…

IDEA快速生成类注释和方法注释的方法

1.生成类、接口、枚举、注解等文件的注释&#xff0c;不仅仅是class 2.生成方法注释的 可在方法上方空行输入/** 按enter键快速生成。生成的样式如下&#xff1a; PS:生成的返回值带一堆英文文字说明&#xff0c;感觉没必要 如果想生成比较全面的方法注释&#xff0c;如作者&…

【Codesys】-执行第三方程序,或Windows脚本

该记录旨在解决RTE作为第一个Windows的一个exe程序不能调用其他程序的问题。 可以实现:在PLC界面打开第三方程序、在PLC界面关闭本机Windows操作系统 首先添加依赖库-SysProcess,3.5.17.0 然后在程序里执行相应的指令&#xff0c;该指令可以被Windows识别为类似于执行Bat文件…

听说京东618裁员?所以日常准备很重要呀

文末有最少必要的面试题&#xff0c;还准备了离线 PDF 版本。 京东也要向市场输送人才了? 这几天看到技术群里不少朋友在讨论京东裁员相关的信息。 我去看了下京东近期的操作&#xff0c;京东内部考勤调整和午休时间缩短&#xff0c;以及强化打卡机制等管理调整&#xff1b;有…

基于图卷积网络的人体3D网格分割

深度学习在 2D 视觉识别任务上取得了巨大成功。十年前被认为极其困难的图像分类和分割等任务&#xff0c;现在可以通过具有类似人类性能的神经网络来解决。这一成功归功于卷积神经网络 (CNN)&#xff0c;它取代了手工制作的描述符。 NSDT工具推荐&#xff1a; Three.js AI纹理开…

监控服务器性能指标,提升服务器性能

服务器是网络中最关键的组件之一&#xff0c;混合网络架构中的每个关键活动都以某种方式与服务器操作相关&#xff0c;服务器不仅是现代计算操作的支柱&#xff0c;也是网络通信的关键。 从发送电子邮件到访问数据库和托管应用程序&#xff0c;服务器的可靠性和性能直接影响到…

Cobaltstrike框架介绍

Cobaltstrike简介 cobalt strike&#xff08;简称CS&#xff09;是一款团队作战渗透测试神器&#xff0c;分为客户端及服务端&#xff0c;一个服务端可以对应多个客户 端&#xff0c;一个客户端可以连接多个服务端&#xff0c;可被团队进行分布式协团操作. 和MSF关系 metas…

嵌入式全栈开发学习笔记---C语言笔试复习大全23

目录 联合体 联合体的定义 联合体的长度 如果来判断设备的字节序&#xff1f; 如何把大端数据转换成小端数据&#xff1f; 枚举 枚举的定义 上一篇复习了结构体&#xff0c;这一节复习联合体和枚举。 说明&#xff1a;我们学过单片机的一般都是有C语言基础的了&#xff…

酷黑简洁大气体育直播自适应模板赛事直播门户网站源码

源码名称&#xff1a;酷黑简洁大气体育直播自适应模板赛事直播门户网站源码 开发环境&#xff1a;帝国cms 7.5 安装环境&#xff1a;phpmysql 支持PC与手机端同步生成html&#xff08;多端同步生成插件&#xff09; 带软件采集&#xff0c;可以挂着自动采集发布&#xff0c;无…

【JTS Topology Suite】Java对二维几何进行平移、缩放、旋转等坐标变换

JTS介绍 Github项目地址&#xff1a;https://github.com/locationtech/jts Maven库地址&#xff1a;https://mvnrepository.com/artifact/org.locationtech.jts JTS Topology Suite是一个用于创建和操作二维矢量几何的Java库。 JTS有对应的.NET版本NetTopologySuite库&…

PyQt6--Python桌面开发(34.QStatusBar状态栏控件)

QStatusBar状态栏控件 self.statusBar.showMessage(q.text()菜单选项被点击了,5000)

HP Laptop 15s-fq2xxx,15s-fq2706TU原厂Win11系统镜像下载

惠普星15青春版原装Windows11系统&#xff0c;恢复出厂开箱状态oem预装系统&#xff0c;带恢复重置还原 链接&#xff1a;https://pan.baidu.com/s/1t4Pc-Q0obApLkG8o_9Kkkw?pwdduzj 提取码&#xff1a;duzj 适用型号&#xff1a;15s-fq2xxx&#xff0c;15s-fq2000 15s-f…

垃圾回收机制及算法

文章目录 概要对象存活判断引用计数算法可达性分析算法对象是否存活各种引用 垃圾收集算法分代收集理论复制算法标记清除算法标记-整理算法 概要 垃圾收集&#xff08;Garbage Collection&#xff0c; 下文简称GC&#xff09;&#xff0c;其优缺点如下&#xff1a; 优点&#…

从“反超”到“引领”,中国卫浴品牌凭何遥遥领先?

作者 | 曾响铃 文 | 响铃说 前不久&#xff0c;第28届中国国际厨房、卫浴设施展览会(以下简称“中国国际厨卫展”)在上海如期举行&#xff0c;就结果来说真的让人大开眼界。 冲水声比蚊子声更小的马桶、能化身无感交互平台的魔镜柜、可以语音交互的淋浴器&#xff0c;这些“…

揭秘章子怡成功之路:她是如何征服世界的?

章子怡的演艺生涯可谓是一部传奇❗❗❗ 从一个普通工人家庭的女孩&#xff0c;到如今的国际巨星 她的每一步都充满了努力和汗水 她的舞蹈基础为她日后的演艺事业奠定了坚实的基础 而她对戏剧和电影的热爱更是让她在演艺道路上不断前行 从《我的父亲母亲》到《卧虎藏龙》&…

VS Code添加高亮缩进功能

当代码缩进层次较多时&#xff0c;为了视觉上容易识别&#xff0c;一般希望可以多个缩进以不同颜色进行高亮显示&#xff0c; VS Code 中 indent-rainbow 插件可以实现这个功能。

【C++练级之路】【Lv.21】C++11——列表初始化和声明

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、列表初始化1.1 内置类型1.2 结构体或类1.3 容器 二、声明2.1 auto2.2 decltype2.3 nullptr 三、STL的…