Android APP安全测试基础

标签: 安全工具 app安全测试 web安全 安全测试 渗透测试 | 发表时间:2015-02-08 04:05 | 作者:admin
出处:http://www.nxadmin.com

自从去了新公司之后,工作太忙,变的有点懒了,很久没有更新Blog。今天跟几个小伙伴一起吃饭,小伙伴提起我的Blog,想想是该更新更新了,就把我投稿给sobug的这篇转过来吧,关于Android app安全测试的基础东东,在Sobug 的url:

https://sobug.com/article/detail/7

背景

最近这两年移动端真是非常火,每个单位或多或少都会有那么几款App,对于我们Web安全攻城师来说,App安全也需要或多或少的了解一些。年初单位来了一位对App安全略有研究的小伙伴,某日闲来无事教了笔者几招,分享给大家。有句古语:”工欲善其事,必先利其器”,我们要研究App安全,没有几款高大上的神器是会非常麻烦的,因此本文主要给大家分享一下笔者学到的一些基础知识,主要是一些移动端测试辅助工具的使用。

模拟器

模拟器笔者经常使用有两款,一款是BlueStacks,这款个人感觉是做的非常不错的,一般安装操作App非常流畅,不会有卡死的情况。另外一款就是SDK模拟器(Software Development Kit)了,这款是特别高大上的,类似虚拟机vm一样,可以建立多个虚拟机,安装不同的android系统。

BlueStacks

下载地址:

安装的时候会提示安装”给力助手”,给力助手是辅助操作的,可以安装电脑上下载的app安装包到模拟器,也可以卸载已经安装的,还有很多针对模拟器的设置功能,如图:

Android安全测试

 

BlueStacks安装之后,安装APP,打开App界面如图:

移动安全测试

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

功能方面使用都非常简单,本文就不做介绍了。

Software Development Kit

下载地址:

下载之后打开包中的eclipse,然后进行模拟器Android镜像的下载,包中自带的镜像是Android 5.0的镜像,建议下载老版本的,方便测试App,新版的镜像部分App在安装的过程中可能会有不兼容的情况。
SDK Android镜像的下载如下图所示:

渗透测试

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下载完Android镜像之后就可以安装虚拟机了,具体如下:

渗透测试

 

 

 

 

 

 

 

 

 

 

 

 

 

 

抓包神器

抓app包的方法有很多种,比如手机设置代理用BurpSuite进行抓包,或者可以用fidder抓包。我比较习惯用一款小工具smsniff进行抓包,使用起来比较方便,抓到的包再放到Burpsuite进行修改提交等。工具如图:

移动安全

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这款工具比较小巧,占用资源较少,有些时候用burp等抓包会发生错误,或者直接导致虚拟机上的app无法连接网络,用这款就不会发生以上说的情况。

SDK小工具

SDK中自带了几款很不错的小工具,我比较常用的有adb和emulator。ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备。SDK包中默认就有这俩款小工具

Adb

Adb命令如下:
adb devices 查看启动的虚拟机设备,如图:

App安全测试

 

 

 

 

adb install,安装app到已经打开的虚拟机中,如图:

移动APP安全测试

 

 

 

 

 

这样就将本地下载的app安装到了已经启动android虚拟机中了。

adb shell,登录设备shell,如图:

app安全测试

 

 

 

 

 

 

 

 

 

 

 

 

 

adb push,将电脑上的文件发送的android虚拟机上;adb pull,将android虚拟机上的文件发送到电脑上,如图:

移动app安全测试

 

 

 

 

 

 

Adb命令非常强大,以上只是列出了比较基础的几个,详细的大家可以百度。

Emulator

Emulator命令我目前常用的就两招,启动android虚拟机,以代理模式启动android虚拟机。命令分别如下:

1
2
Emulator @xiaomi
Emulator -http-proxy 127.0.0.1:8080 @xiaomi

其中xiaomi是我新建的android虚拟机的名字,设置代理启动之后,就可以用burp进行抓包了。

反编译工具

反编译app主要用apktool和d2j-dex2jar.bat,我比较常用的是dex2jar。
Apktool反编译命令如下:

1
apktool.jar d e:\Appsec\xxx.apk

命令执行之后会在apktool.jar所在目录下生成一个app的目录。
d2j-dex2jra.bat反编译方法如下:
用rar打开apk文件,将其中的classes.dex解压出来,然后执行命令d2j-dex2jar.bat d:\Appsec\xx\classes.dex
执行完成之后会在d2j-dex2jar.bat相同目录下生成一个.jar的文件,可以用jd-gui.exe直接打开.jar来查看app的源代码,如图:

android app安全测试

 

 

 

 

 

 

 

 

 

 

 

 

 

案例分享

App安全测试,我只能测测简单的,大多是权限绕过类的,比如绕过锁屏密码、任意用户登录等。基本都是因为app代码设计缺陷或者权限验证不足导致的。

任意用户登录

某次测试一个app,RP比较好,发现一任意用户登录漏洞。在本地的配置文件中有登录用户的帐号和密码,APP设计比较奇葩,只是验证了用户登录邮箱,没有验证密码,导致通过修改本地的配置文件就可以实现任意用户登录,登录之后能够查看别人的订单等数据。在android虚拟机中安装的app都在/data/data目录下,大概的目录结构如下:

渗透测试

 

 

 

 

 

 

app安装目录下的结构都是差不多的,主要有缓存文件、数据库目录、本地文件、配置文件等。比较重要的目录有databases、shared_prefs。分别保存了数据库文件和配置文件。
言归正传,查看了安装app的shared_prefs目录,发现其中一个文件内容如下:

渗透测试

 

 

 

 

 

 

 

 

 

可以看到有用户的登录邮箱和密码,将邮箱修改成存在的用户邮箱,密码随意输入,然后adb shell之后,用linux命令删除android虚拟机上已经存在的配置文件,再用adb push将修改后的文件发送到android虚拟机,再打开app发现已经用其它用户成功登录了。

写在最后

APP安全接触的不多,技术比较菜,因此本文分享的基本都是工具的使用,比较基础。非常感谢夕阳童鞋,是我的App安全启蒙老师!

相关 [android app 安全] 推荐:

Android APP安全测试基础

- - 阿德马Web安全
自从去了新公司之后,工作太忙,变的有点懒了,很久没有更新Blog. 今天跟几个小伙伴一起吃饭,小伙伴提起我的Blog,想想是该更新更新了,就把我投稿给sobug的这篇转过来吧,关于Android app安全测试的基础东东,在Sobug 的url:. 最近这两年移动端真是非常火,每个单位或多或少都会有那么几款App,对于我们Web安全攻城师来说,App安全也需要或多或少的了解一些.

移动安全:android app proguard混淆配置与常见问题

- - Seay's blog 网络安全博客
Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基本都可以看到. 为了防止重要code 被泄露,我们往往需要混淆(Obfuscation code , 也就是把方法,字段,包和类这些java 元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想弄懂代码的架构却很难.

Android应用安全开发之浅谈网页打开APP

- - WooYun知识库
Author:伊樵,呆狐,舟海@阿里移动安全. 0x00 网页打开APP简介. Android有一个特性,可以通过点击网页内的某个链接打开APP,或者在其他APP中通过点击某个链接打开另外一个APP(AppLink),一些用户量比较大的APP,已经通过发布其AppLink SDK,开发者需要申请相应的资格,配置相关内容才能使用.

Google将关闭Android App Inventor

- tinda - Solidot
新上任的Google CEO Larry Page已发誓要调整公司的重心,将精力集中中优先项目上,一些对用户有用但却对公司没有帮助的项目纷纷关闭,如Google字典服务,如Google Labs中的众多项目. 其中一个被关闭的项目是Android App Inventor. Android App Inventor由MIT计算机科学Hal Abelson领导开发,借鉴了入门级编程项目Scratch,让没有编程经验和知识的人开发Android应用程序,因此颇受教育界人士的欢迎.

[原]App安全二三事

- - eclipse_xu
首先插播一条自己的广告——有些朋友可能都知道了,我最近创建了一个知识星球,在这里试了一周,发现私密圈子的效率果然比群要好很多,付费门槛过滤掉了大部分广告和没有意愿学习分享的人,希望在这里能聚集更多的热爱学习热爱分享的朋友,长按下面的二维码来加入《程序员修仙指南》. 客户端防作弊,是一个很重要,但又很难做好的事情,矛与盾永远是道高一尺,魔高一丈.

Android dlib人脸识别 dlib-android-app: Android app to demo dlib-android(https://github.com/tzutalin/dlib-android). Use the prebuilt shared-lib built from dlib-android

- -

欢呼吧!App Inventor for Android 使用总结

- Hinc - TechCrunch中文站
昨日我们报道了Google App Inventor for Android,它是一个基于网页的开发环境,即使是没有开发背景的人也能通过他轻松创建Android应用程序. 这个产品已经测试了一年之久了,主要是和教育机构合作进行的测试,因此,在课堂上接触到它的学生们很可能成为Android应用暴增的主要力量.

如何在iOS与Android间移植APP

- plidezus - 雪鸮的啁啾
除了像”I am rich”这种定点打击苹果烧包族的APP外,大多数应用都会尽量覆盖包含尽可能多的用户. 这就需要考虑在iOS和Android两种主流操作系统间移植的问题. 如果为各个平台量身定做界面,就能让用户利用以往的使用习惯快速学习. 但为多个平台设计各异的界面毕竟是需要工作量的. 如何才能在跨平台移植的时候只做那些最有必要的工作呢.

Felix 的 60 个 Android App 推荐

- Wan - Felix's Blog
本猫入爪机(T-Mobile G2)半月, 折腾ROM/Kernel/App无数=.=. 现在我安装了下面这些常用到的App(Google自带的就不提啦), 供分享, 供参考.. 流量监控 最靠谱的一个… 有时候比ISP统计的还多一点点, 总之不会少. 有按月/周/天的统计报表, 有一个还不错的Widget, 而且, 能显示每个App使用了多少流量.