今天是干货分享——我们来谈谈APP的安全性测试!
APP的安全性测试其实也是有点技术含量的测试,那么APP安全性测试的工具有哪些呢?
移动 App 的广泛应用,必然伴随着新的应用安全威胁。这些攻击与以前经典的 web app 无关。据 NowSecure 的最新研究表明,有 25% 的 App 包含高风险漏洞,常见的安全漏洞如下:
●跨站脚本攻击(XSS)
●用户敏感数据(IMEI、GPS、MAC 地址、电子邮件等)泄露
● SQL 注入
●网络钓鱼攻击
●数据加密缺失
●OS 命令注入
●恶意软件
●任意代码执行
那么今天我们还是先开始谈谈Drozer这款APP安全性测试工具吧!一般只要把一种安全性测试工具弄透,剩下来的就很简单了!
Drozer是由 MWR InfoSecurity 开发的 App 安全测试框架。它可以帮助开发者确定Android 设备中的安全漏洞。
特点:
*它是一个开源工具,可同时支持真实的 Android 设备和模拟器;
·*通过自动化和开展复杂活动,它只需很少时间即可评估与 Android 安全相关的复杂性;
·*它支持 Android 平台,并在 Android 设备自身上执行启用 Java 的代码
对于这款安全性测试工具来说,周老师是非常推崇的。
那么这款工具具体怎么用的呢?
首先是搭建drozer的运行环境:
01 Dorzer安装
安装Dorzer需要用到如下两个工具:(如以前安装过mercury,这两个工具应该已经有了)
★Java Runtime Environment (JRE) or Java Development Kit (JDK)
★ Android SDK
下载安装后需要把adb和java工具路径写入PATH环境变量中
1、下载:打开此下载地址,windows环境选择drozer (Windows Installer)并下载
https://www.mwrinfosecurity.com/products/drozer/community-edition/
2、安装:解压zip文件并点击setup安装,一路默认安装就行;它会自动安装到C:\drozer文件夹下。
3、检测是否安装成功:
打开cmd窗口,键入C:\drozer\drozer.bat , 如出现如下提示说明安装成功。
4、安装agent客户端到手机:
确保手机debug模式开启,通过USB连接到PC上,通过如下命令安装agent.apk客户端。
adb install agent.apk
安装完成后启动drozerAgent
点击右下角“开启”按钮,开启Agent
5、建立session连接:
保持手机与PC通过USB连接正常,然后通过cmd窗口键入如下命令
adb forward tcp:31415 tcp:31415
drozer console connect 或 C:\drozer\drozer.bat console connect(注:因为默认是安装在c盘的,目的是到根目录进行执行drozer.bat)
出现android头像及:
dz>
命令提示符表示连接成功
02 渗透测试
Drozer的环境搭建完成后,我们就开始做下一步的测试了。下面我就开始正式用drozer进行安全性的渗透测试了:
第一步:#dz> run app.package.list
使用这个命令显示出手机中的所有包名:明确攻击对象
一般来说都有乱码。
如果手机的包很多的话:
使用”-f”选项搜索特定的包名:
#dz> run app.package.list -f (package name)
第二步:在搜索到了攻击对象之后,我们就开始了解攻击对象的详细信息。
使用以下命令查看制定包的详细信息,毕竟知己知彼百战百胜。
#dz> run http://app.package.info -a (package name)
第三步:识别攻击面
一般攻击面有四个方面:一个控件安全级别面,一个是广播接收面,第三个是内容暴露面,最后一个是服务暴露面
run app.package.attacksurface (package name)
然后我们根据暴露的面进行攻击(有哪些面我们就攻击哪些面),说白了就是有安全漏洞,我们就攻击那些漏洞
比如上图:四个层面都可以攻击
第四步:查看详细的攻击面
run http://app.activity.info -a (package name)
run http://app.broadcast.info -a (package name)
run http://app.provider.info -a (package name)
run http://app.service.info -a (package name)
第五步:根据具体的攻击面进行攻击
启动暴露的activity
run app.activity.start--component (package name) (component name)
启动暴露的broadcast
run app.broadcast.start --component (package name) (component name)
启动暴露的provider
run app.provider.query--content://com.mwr.example.sieve.DBContentProvider/Passwords
启动暴露的service
run app.service.start --component (package name) (component name)
经过这些操作之后我们就成功渗透进入app的内部了。后面可以根据实际情况继续深入。
比如:我们的sql注入就属于内容攻击的层面,这个时候我们在明确了内容暴露之后进行如下的攻击:
9、服务交互
到目前为止,我们几乎破坏了筛子。我们已经提取了用户的主密码,以及一些与他们的服务密码相关的密码文本。这很好,我们可以通过它导出的服务完全妥协。