安卓APP安全测试

App安全问题

  • App 运行时虚拟机监测
  • App 运行时root监测
  • App数据备份检测
  • 代码反编译检测
  • 敏感权限使用
  • 敏感信息泄露
  • 拒绝服务测试
  • 目录穿越安全测试
  • App 缓存安全检测
  • 接口安全测试
  • 弱加密安全测试
  • 秘钥硬编码安全检测
  • 数据存储安全检测
  • 数据传输安全检测
  • 日志信息泄露检测
  • App组件导出检测
  • App组件权限检测
  • webview 多项漏洞安全测试
  • App Webview DOM 安全测试
  • 本地SQL注入安全测试
  • SQLite 存储安全审计

案件分析

APP运行时虚拟机检测

该app未进行虚拟机运行检测,攻击者在虚拟机中安装运行该app,即可在虚拟机中截取并操作数据包或进行其他有害操作。

image.png
APP数据备份检测

在对某app进行安全测试时,发现并未对app进行数据备份检测,安卓AndroidManifest.xml文件中android:allowBackup为true,当这个标志被设置成true或不设置该标志位时,应用程序数据可以备份和恢复,adb调试备份允许恶意攻击者复制应用程序数据。
在对某app进行安全测试时,发现并未对app进行数据备份检测,其AndroidManifest.xml文件中android: allowBackup为true,存在数据任意备份漏洞。


image.png

连接手机,然后输入以下备份命令,会出现一个对话窗,输入备份密码即可:
adb backup -nosystem -noshared -apk -f com.xxx.wallet com.xxx.wallet

image.png

连接到另一台手机或root的本机,输入下列命令,弹出对话框,输入备份时的密码即可恢复数据
adb restore com
如果用户账号密码保存在本地,则恢复到另一台root的手机后,可以看到各种敏感信息。
建议设置AndroidManifest.xml的android:allowBackup标志为false。

代码反编译检测

若app的apk文件可被反编译,就有可能导致源代码信息泄露,攻击者也可对其进行代码审计以找出可能存在隐患的攻击点。
对某app进行安全测试时,通过检测apk文件是否通过加固,代码是否通过加密或者混淆,是否可以通过反编译攻击等方面对该app进行测试。发现该apk文件可被反编译,反编译后可以看到java源代码,导致源代码信息泄露。(通过jadx-gui或其他反编译工具可直接操作apk,查看java源代码。)
建议,可使用专业加固工具对apk进行加壳处理。

image.png
敏感权限使用

目前很多系统在app请求权限这一方面上都不甚敏感,这也是如今移动端并不那么安全的成因之一。很多app都会请求一些敏感的权限,有的甚至会直接绕过,不向用户请求就直接自行取得了权限。而这些app有可能对用户都产生足够的恶意影响。
在对某app进行安全测试时,检测APP程序中是否存在敏感权限的使用,发现确实存在敏感权限使用漏洞。
建议,可使用专业加固工具对apk进行加壳处理。

image.png

敏感权限如下:

  • android.permision.WRITE_EXTERNAL_STORAGE 允许应用写入外部存储
  • ndroid.permission.READ_PHONE_STATE 允许访问电话状态、设备信息
  • ndroid.permission.CAMERA 允许访问摄像头
  • android.permission.GET_TASKS 允许获取系统应用列表
  • android.permission.MOUNT_UNMOUNT_FILESYSTEMS 允许挂载、反挂载外部文件系统
    建议禁用不需要的敏感权限。
敏感信息泄露

敏感信息泄露危害极大,如泄露出测试/管理员数据,参数注释信息等。但它又是一种危害虽大却又较容易避免的漏洞,只要开发人员多加注重安全意识即可避免大部分问题。
在对某app进行安全测试时,查找其 app 程序文件中是否存在敏感信息泄露(如源码中,备份文件中,xml 资源文件中等),发现确实存在敏感信息泄露漏洞,源码中泄露了微信公众号 appid 和 secretkey:

image.png

获取token:

image.png
秘钥硬编码安全

被测试的app,若通信存在加密处理,即可检查源码或者静态资源文件中是否存在硬编码的加密秘钥,从而破解通信加密的数据。
在对某app进行安全测试时,检查是否存在秘钥硬编码漏洞,此app请求数据默认是通过请求数据排列,然后加上appkey加上另外一个秘钥进行md5,再通过算法后去字符串再次md5得到最后的签名。
这里加密使用的appkey硬编码到apk中。如下图:

image.png

另一个加密key在so文件中,通过逆向可以获取:

image.png

这样一来即可通过修改数据后重新签名构造任意数据了,加签也就失去了意义。
(以下为第二个例子。)
在对另一个app进行测试时,使用burp工具截取该app传输的数据包,发现响应包内容已经过加密并有base64的特征。

image.png

对apk进行逆向获取到加密方式为aes cbc补码方式为pkcs7。

image.png

在反编译源码中未查询到aes秘钥相关信息 对apk进行解压 在静态资源文件中发现aes_key与aes_iv。

image.png

使用收集到的aes_key与aes_iv 以pkcs7为补码方式构造aes cbc解密获取到明文数据。

数据存储安全

如果安卓手机用户的app文件存放在external storage,例如SD卡,那这些文件就是全局可读写的,external storage可以被任何用户操作,且可以被所有的应用修改使用。
在对某app进行安全测试时,使用动态方法监测/data/data/<packagename>/目录下所有生成的目录是否带有明文信息泄露。
进入到/data/data/com.xxx.wallet/shared_prefs目录,查看config.xml文件,此文件存储了用户的支付信息等非常敏感的信息,而这些信息可被其他用户接触导致信息被盗取等。
建议,app的敏感数据不要存放在external storage,如若不得不这样做,请对数据进行加密处理

image.png
App组件导出检测

检测app中Activity、activity-alias、service、receiver组件对外暴露情况,如果检测到组件的exported属性为true或者未设置,而且组件的permission属性为normal或者dangerous或者未设置组件的permission属性时,app将存在组件导出漏洞,导致数据泄露和恶意的dos攻击以及钓鱼攻击。
在对某app进行安全测试时,检测到该app存在Activity组件导出漏洞。
检测app中Activity、activity-alias、service、receiver组件对外暴露情况,先检测组件的exported属性,再检测组件的permission对应的protectionlevel属性。

image.png

具体检测存在漏洞的方法如下:


image.png

建议:

  • 最小化组件暴露。对不会参与跨应用调用的组件添加android:exported=”false”属性。
  • 设置组件访问权限。对跨应用间调用的组件或者公开的receiver、service、activity和activity-alias设置权限,同时将权限的protectionLevel设置为”signature”或”signatureOrSystem”。
  • 组件传输数据验证。对组件之间,特别是跨应用的组件之间的数据传入与返回做验证和增加异常处理,防止恶意调试数据传入,更要防止敏感数据返回。
SQLite 存储安全

此类安全问题的检测,使用adb工具将sqlite数据库拖到本地,使用sqlite数据库连接软件查看是否存在敏感数据即可。如下为测试某app发现的漏洞范例。


image.png

零时科技

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358

推荐阅读更多精彩内容