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

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大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

材料物理 笔记-9

原内容请参考哈尔滨工业大学何飞教授:https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》(哈尔滨工业大学出版社) ——…

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

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

8个图神经网络的典型用例

虽然 ChatGPT 或 Diffusion 模型等 AI 系统最近备受关注,但图神经网络 (GNN) 却发展迅速。在过去的几年中,GNN 悄然成为众多激动人心的新成就背后的黑马,这些成就从纯学术研究突破一路发展到大规模积极部署的实际解决方案。 Uber、谷歌、阿里…

一文讲解——Java多态

目录 一、什么是多态?二、转型向上转型向下转型 三、方法覆盖与方法重载四、绑定动态绑定静态绑定 五、理解多态 一、什么是多态? 多态的词组字面意思是: 某种事物多种形态。 但是对于我们学习Java 的程序原来说,就不不能简单这样…

2024目前网上最火短剧机器人做法,自动搜索发剧 自动更新资源 自动分享资源

目前整个项目圈子很多的短剧机器人,我写的,自动搜索发剧,自动更新资源,自动分享资源,前段时间大部分做短剧的都是做的短剧分成,我的一个学员做的30W播放量才200块收益,备受启发,我就…

HCIP-Datacom-ARST自选题库__MPLS多选【25道题】

1.下列描述中关于MPLS网络中配置静态LSP正确的是 当某一台LSR为Egress LSR时,1仅需配置In Label,范围为16~1023 当某一台LSR为Transit LSR时,需要同时配置In Label和Out label,In Label范围为16~1023,0utLabel范围为…

Keyshot v11 解锁版安装教程 (3D光线追踪与全域光渲染程序)

前言 keyshot是一款实时渲染模式的软件。实时渲染是目前比较流行的一种渲染方式,优点是快速。调节的材质,灯光修改,光影变化等修改的各种参数结果,所见即所得,意思是你在软件操作界面看到的,就是最终的结果…

leetcode每日一题第八十九天

class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_map<int,int> mp;mp[0] 1;int count 0,pre 0;for(auto x:nums){pre x;if(mp.find(pre-k) ! mp.end()){count mp[pre-k];}mp[pre];}return count;} };

爬虫100个Python例子优化

今天看到一个Python 100例的在线资源,感觉每个都需要去点,太费时间了,于是,使用Python将数据爬取下来,方便查看。实际效果如下: 。。。。。。 用了13分钟,当然,这是优化后的效果,如果没有优化,需要的时间更长。 爬取url如下: https://www.runoob.com/python/pytho…

计算机毕业设计Hadoop+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据

2024 届本科毕业论文&#xff08;设计&#xff09; 基于Hadoop的地震预测的 分析与可视化研究 姓 名&#xff1a;____田伟情_________ 系 别&#xff1a;____信息技术学院___ 专 业&#xff1a;数据科学与大数据技术 学 号&#xff1a;__2011103094________ 指导…

【算法】递归、搜索与回溯——简介

简介&#xff1a;递归、搜索与回溯&#xff0c;本节博客主要是简单记录一下关于“递归、搜索与回溯”的相关简单概念&#xff0c;为后续算法做铺垫。 目录 1.递归1.1递归概念2.2递归意义2.3学习递归2.4写递归代码步骤 2.搜索3.回溯与剪枝 递归、搜索、回溯的关系&#xff1a; …

Java入门基础学习笔记44——String

为什么要学习String的处理呢&#xff1f; 开发中&#xff0c;对字符串的处理是非常常见的。 String是什么&#xff1f;可以做什么&#xff1f; java.lang.String 代表字符串。可以用来创建对象封装字符串数据&#xff0c;并对其进行处理。 1、创建对象 2、封装字符串数据 3…

【Linux signal】

Linux signal 一、信号分类二、什么是信号集&#xff1f;三、信号的3个处理过程3.1 发送信号3.1.1 向自身发送信号(raise)3.1.2 向别的进程发送信号(kill)3.1.3 发送闹钟信号(alarm) 3.2 接收(注册)信号3.3 处理信号 在Linux操作系统中&#xff0c;SIGUSR1和SIGUSR2是用户定义的…

学习Uni-app开发小程序Day18

昨天学习了使用轮播显示图片和文字&#xff0c;轮播方式纵向和横向。今天使用扩展组件和scroll-view显示图片&#xff0c;使用scroll-view的grid方式、插槽slot、自定义组件、磨砂背景定位布局做专题组件 这就是需要做成的效果&#xff0c;下面将一步一步的完成。 首先&#x…

在家庭影院音频中应用的D类音频放大器

家庭影院的主要组成部分包括显示设备、音响设备、信号源和接线设备等。家庭影院的音响信号需要进行处理和输出&#xff0c;以获得高质量的音效。音响设备通常需要一台功率适当的数字、模拟混合的处理器&#xff0c;对音源进行降噪、均衡、扩展等处理操作&#xff0c;以达到高品…

企业微信hook接口协议,ipad协议http,根据手机号搜索联系人

根据手机号搜索联系人 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","phoneNumber":"1357xxxx" } 返回示例 {"data&q…

基于PLC的地铁屏蔽门系统设计_kaic

摘 要 可编程序控制器&#xff08;PLC&#xff09;是近年来发展迅速的工业控制装置&#xff0c;它因为具有强大的稳定性、安全性以及维修便利等优点而应用于工业企业各个领域。地铁作为当代一二线城市最重要的公共交通工具&#xff0c;其安全性以及稳定性至关重要。 以PLC为控…

MHDDoS:一个包含了56种技术的DDoS测试工具

关于MHDDoS MHDDoS是一款功能强大的DDoS服务器/站点安全测试工具&#xff0c;该工具包含56种技术&#xff0c;可以帮助广大研究人员对自己的服务器或网站执行DDoS安全测试。 工具技术 Layer7 GET | GET 泛洪 POST | POST 泛洪 OVH | 绕过OVH RHEX | 随机HEX STOMP | 绕过chk_…

使用pyqt绘制一个爱心!

使用pyqt绘制一个爱心&#xff01; 介绍效果代码 介绍 使用pyqt绘制一个爱心&#xff01; 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget from PyQt5.QtGui import QPainter, QPen, QBrush, QColor from PyQt5.QtCore import Qt, Q…