Android APP检测之自动化检测实战

标签: 终端安全 | 发表时间:2016-04-21 11:21 | 作者:DMZLab
出处:http://www.freebuf.com

Android APP本文作者:ice@DMZLab

最近一直在研究的检测,写了一个系列的文章——手工检测,自动化检测,常见漏洞分析。今天给大家带来的是自动化检测。本篇没有深入的讲解每一个漏洞的详情,仅作测试结果对比和自己的体验心得。

0×01 五大在线检测平台

腾讯的金刚审计系统  http://service.security.tencent.com/kingkong

图片1.png

360的捉虫猎手  http://appscan.360.cn/

图片2.png

阿里巴巴的聚安全 http://jaq.alibaba.com/gc/appsec/index.htm

图片3.png

百度的移动云测试中心 http://mtc.baidu.com/

图片4.png

梆梆加固测试平台( http://dev.bangcle.com/apps/index

图片5.png

 

效果对比

这里选用墨迹天气app的测试结果

百度移动测试中心

漏洞名称 风险级别 说明 修复建议 详情
组件暴露——Activity 中危 当应用程序的组件被导出后,导出的组件可以被第三方app任意调用,从而导致敏感信息泄露,而且恶意攻击者也可以通过精心构造数据来达到攻击目标应用的的目的。 如果组件不需要与其他应用共享数据或进行交互,则在AndroidManifest.xml文件中设置该组件为 exported = “false”,反之,则需要对导出的组件进行权限控制并且严格校验传入的参数。 com.moji.mjweather.activity.main.MainActivity com.moji.mjweather.CSplashScreen com.moji.mjweather.activity.share.ManualShareActivity com.moji.mjweather.activity.skinshop.SkinSelectorActivity com.kepler.jd.login.AuthSuccessActivity com.moji.mjweather.activity.liveview.MessageDetailActivity com.moji.mjweather.activity.liveview.OwnerMessageCenterActivity com.moji.mjweather.activity.account.SnsLoginActivity com.moji.mjweather.activity.liveview.HomePageActivity com.moji.mjweather.activity.voiceclock.AlarmAlertActivity com.moji.mjweather.activity.voiceclock.AlarmAlertFullScreenActivity com.moji.mjweather.activity.share.SharePlatformDialog com.tencent.tauth.AuthActivity com.moji.mjweather.activity.liveview.LauncherCameraActivity com.moji.mjweather.activity.bindapp.InstallAppActivity com.moji.mjweather.activity.settings.WidgetConfigureActivity com.igexin.sdk.GActivity com.moji.mjweather.wxapi.WXPayEntryActivity com.moji.mjweather.wxapi.WXEntryActivity com.moji.mjweather.activity.forum.TopicActivity com.moji.mjweather.x5webview.BrowserActivity 共:21个。
组件暴露——Service 中危 当应用程序的组件被导出后,导出的组件可以被第三方app任意调用,从而导致敏感信息泄露,而且恶意攻击者也可以通过精心构造数据来达到攻击目标应用的的目的。 如果组件不需要与其他应用共享数据或进行交互,则在AndroidManifest.xml文件中设置该组件为 exported = “false”,反之,则需要对导出的组件进行权限控制并且严格校验传入的参数。 com.moji.mjweather.service.ScreenService com.igexin.sdk.PushService com.igexin.sdk.PushServiceUser com.moji.mjweather.authaccount.AuthenticationService com.moji.mjweather.authaccount.SyncService 共:5个。
组件暴露——BroadcastReceiver 中危 当应用程序的组件被导出后,导出的组件可以被第三方app任意调用,从而导致敏感信息泄露,而且恶意攻击者也可以通过精心构造数据来达到攻击目标应用的的目的。 如果组件不需要与其他应用共享数据或进行交互,则在AndroidManifest.xml文件中设置该组件为 exported = “false”,反之,则需要对导出的组件进行权限控制并且严格校验传入的参数。 com.moji.mjweather.receiver.PackageReceiver com.moji.mjweather.receiver.MojiReceiver com.moji.mjweather.CMojiWidget4x1 com.moji.mjweather.CMojiWidget4x2 com.moji.mjweather.CMojiWidget5x1 com.moji.mjweather.CMojiWidget5x2 com.igexin.sdk.PushReceiver com.igexin.download.DownloadReceiver com.baidu.bottom.service.BottomReceiver com.zk.drivermonitor.reciever.SystemStartReceiver 共:10个。
应用数据任意备份风险 中危 当AndroidManifest.xml配置文件中没有有设置allowBackup标志(默认为true)或将allowBackup标志设置为true时,应用程序的数据可以被任意备份和恢复,恶意攻击者可以通过adb工具备份复制应用程序的数据。 在AndroidManifest.xml文件中设置application的属性 android:allowBackup=”false”  
权限滥用风险 中危 自定义权限的保护级别过低,导致任意应用程序都可以使用此权限,无法起到保护作用。 如非必要,自定义权限的保护级别至少要设置为:signature。
 
漏洞名称 风险级别 说明 修复建议 详情
WebView组件系统隐藏接口未移除漏洞 高危 使用Android WebView组件时,没有移除其中内置的searchBoxJavaBridge_,accessibility和accessibilityTraversal等导出接口, 可能导致远程代码任意执行 使用Android WebView组件时,通过调用removeJavascriptInterface方法移除searchBoxJavaBridge_, accessibility和accessibilityTraversal等导出接口,防止被恶意利用 源文件: 类:com.baidu.mobad.feeds.remote.BaiduActivity 方法:a 行数:-1
WebView组件系统隐藏接口未移除漏洞 高危 使用Android WebView组件时,没有移除其中内置的searchBoxJavaBridge_,accessibility和accessibilityTraversal等导出接口, 可能导致远程代码任意执行 使用Android WebView组件时,通过调用removeJavascriptInterface方法移除searchBoxJavaBridge_, accessibility和accessibilityTraversal等导出接口,防止被恶意利用 源文件: 类:com.qq.e.comm.plugin.j.a 方法:onAfterCreate 行数:-1
Dex文件动态加载风险 中危 Android提供的DexClassLoader动态加载方法,并没有对DEX文件和路径进行安全校验,可能导致加载文件或者优化文件被恶意替换 使用DexClassLoader方法动态加载DEX文件时,对DEX文件进行安全校验,并保证加载路径和优化路径的安全 源文件: 类:com.baidu.mobad.feeds.remote.AdManager 方法:getPatchClassLoader 行数:-1
SSL证书验证不当漏洞 中危 应用忽略证书校验错误或信任任意证书,会导致中间人攻击,造成隐私泄露 禁止使用ALLOW_ALL_HOSTNAME_VERIFIER;禁止使用X509TrustManager.checkServerTrusted方法来忽略证书验证错误;在使用HostnameVerifier时verify合理处理,禁止直接返回true 源文件: 类:com.qq.e.comm.plugin.k.d$a$1 方法:verify 行数:-1
WebView密码明文保存漏洞 低危 在默认情况下,如果用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db文件中,存在密码被泄露的风险 使用WebView.getSettings().setSavePassword(false)来禁止保存密码 源文件: 类:com.qq.e.comm.plugin.m.f 方法:a 行数:-1
WebView密码明文保存漏洞 低危 在默认情况下,如果用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db文件中,存在密码被泄露的风险 使用WebView.getSettings().setSavePassword(false)来禁止保存密码 源文件: 类:com.qq.e.comm.plugin.m.f 方法:b 行数:-1
WebView密码明文保存漏洞 低危 在默认情况下,如果用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db文件中,存在密码被泄露的风险 使用WebView.getSettings().setSavePassword(false)来禁止保存密码 源文件: 类:com.qq.e.comm.plugin.j.a 方法:onAfterCreate 行数:-1
WebView密码明文保存漏洞 低危 在默认情况下,如果用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db文件中,存在密码被泄露的风险 使用WebView.getSettings().setSavePassword(false)来禁止保存密码 源文件: 类:com.baidu.mobad.feeds.remote.BaiduActivity 方法:a 行数:-1
WebView密码明文保存漏洞 低危 在默认情况下,如果用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db文件中,存在密码被泄露的风险 使用WebView.getSettings().setSavePassword(false)来禁止保存密码 源文件: 类:com.baidu.mobad.feeds.remote.BaiduActivity$1 方法:shouldOverrideUrlLoading 行数:-1
WebView密码明文保存漏洞 低危 在默认情况下,如果用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db文件中,存在密码被泄露的风险 使用WebView.getSettings().setSavePassword(false)来禁止保存密码 源文件: 类:com.baidu.mobad.feeds.remote.DownloaderTask 方法:a 行数:-1
PendingIntent包含隐式Intent风险 低危 PendingIntent以其发送方应用的权限使用该PendingIntent包含的Intent,如果该Intent为隐式的,可能造成隐私泄露和权限泄露 使用PendingIntent时,建议使用显示Intent 源文件: 类:com.baidu.mobad.feeds.remote.download.e 方法:run 行数:-1
PendingIntent包含隐式Intent风险 低危 PendingIntent以其发送方应用的权限使用该PendingIntent包含的Intent,如果该Intent为隐式的,可能造成隐私泄露和权限泄露 使用PendingIntent时,建议使用显示Intent 源文件: 类:com.qq.e.comm.plugin.a.b.c 方法:d 行数:-1
PendingIntent包含隐式Intent风险 低危 PendingIntent以其发送方应用的权限使用该PendingIntent包含的Intent,如果该Intent为隐式的,可能造成隐私泄露和权限泄露 使用PendingIntent时,建议使用显示Intent 源文件: 类:com.qq.e.comm.plugin.a.i 方法:b 行数:-1
WebView密码明文保存漏洞 低危 在默认情况下,如果用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db文件中,存在密码被泄露的风险 使用WebView.getSettings().setSavePassword(false)来禁止保存密码 源文件: 类:com.qq.e.comm.plugin.m.c 方法:d 行数:-1
日志泄露隐私风险 低危 调试输出接口未关闭可能导致敏感信息泄露 关闭调试接口,禁止输出敏感信息 源文件: 类:com.baidu.mobads.location.BDLocManager 方法:a 行数:-1
日志泄露隐私风险 低危 调试输出接口未关闭可能导致敏感信息泄露 关闭调试接口,禁止输出敏感信息 源文件: 类:com.qq.e.comm.plugin.g.a 方法:a 行数:-1
日志泄露隐私风险 低危 调试输出接口未关闭可能导致敏感信息泄露 关闭调试接口,禁止输出敏感信息 源文件:src/com/qihoo/util/StubApplication.java 类:com.qihoo.util.StubApplication 方法:initCrashReport 行数:93

梆梆加固测试结果 :

内网测试信息残留漏洞
评估项 内网测试信息残留漏洞
漏洞描述 检测程序代码内部是否包含残留测试信息,例如内网url地址等。
漏洞影响
评估方案 通过检测是否包含内网URl地址,判断是否发布包中是否包含测试数据。残留的测试数据,例如URL地址,测试账号,密码,可能会被盗取并恶意利用在正式服务器上进行攻击,例如账号重试,攻击安全薄弱的测试服务器以获取服务器安全漏洞或者逻辑漏洞。
评估结果 安全
漏洞分析 该App应用中未包含测试数据信息。
漏洞详情 N/A
解决方案 N/A
下载任意apk漏洞
评估项 下载任意apk漏洞
漏洞描述 检测应用中是否存在下载任意apk的漏洞。
漏洞影响
评估方案 具有下载apk功能的组件存在导出漏洞,并且未对组件调用者进行校验。攻击者可利用导出组件的手段下载攻击者指定的任意apk文件,并且在下载过程中伪装apk文件的下载信息,例如图标、描述等,导致用户被诱导下载安装恶意应用。
评估结果 安全
漏洞分析 该App应用中不存在可被导出的具有下载apk功能的组件。
漏洞详情 N/A
解决方案 N/A
HTTPS未校验服务器证书漏洞
评估项 HTTPS未校验服务器证书漏洞
漏洞描述 检测App程序在使用HTTPS协议传输数据时是否对服务器证书进行完整校验。
漏洞影响
评估方案 使用HTTPS协议时,客户端必须对服务器证书进行完整校验,以验证服务器是真实合法的目标服务器。如果没有校验,客户端可能与仿冒的服务 器建立通信链接,即“中间人攻击”。仿冒的中间人可以冒充服务器与银行客户端进行交互,同时冒充银行客户端与银行服务器进行交互,在充当中间人转发信息的 时候,窃取手机号,账号,密码等敏感信息。
评估结果 存在漏洞
漏洞分析 该App应用在使用HTTPS进行数据传输时未校验服务器证书或者未校验主机名。
漏洞详情 ["com.moji.mjweather.util.log.InstalledAppTrackerSDK.a:(ILjava/lang/String;Lorg/apache/http/client/methods/HttpPost;)Ljava/lang/String;"]
解决方案 在使用https时对服务器证书进行校验,并且使用STRICT_HOSTNAME_VERIFIER严格校验主机名。
Webview远程代码执行漏洞
评估项 Webview远程代码执行漏洞
漏洞描述 检测app应用的webview组件中是否存在远程代码执行漏洞。
漏洞影响
评估方案 Webview是Android用于浏览网页的组件,其包含的接口函数addJavascriptInterface可以将Java类或方 法导出以供JavaScript调用,实现网页JS与本地JAVA的交互。由于系统没有限制已注册JAVA类的方法调用,因此未注册的其它任何JAVA类 也可以被反射机制调用,这样可能导致被篡改的URL中存在的恶意代码被执行,用户手机被安装木马程序,发送扣费短信,通信录或者短信被窃取,甚至手机被远 程控制。
评估结果 存在漏洞
漏洞分析 该App应用中可能存在被addJavascriptInterface接口导出的未注册Java类函数。
漏洞详情 ["com.tencent.bugly.crashreport.CrashReport.setJavascriptMonitor:(Landroid/webkit/WebView;ZZ)Z"]
解决方案 取消使用addJavascriptInterface接口,以其他Java与 JavaScript互通方案代替;若必须使用,则应对访问的url进行过滤限制或对html页面进行完整性校验,同时显示移除对指定的 javascript接口的调用: removeJavascriptInterface(searchBoxJavaBridge_) emoveJavascriptInterface(accessibility);removeJavascriptInterface(accessibilityTraversal);。
Webview绕过证书校验漏洞
评估项 Webview绕过证书校验漏洞
漏洞描述 检测App应用的webview组件是否在发现https网页证书错误后继续加载页面。
漏洞影响
评估方案 客户端的Webview组件访问使用HTTPS协议加密的url时,如果服务器证书校验错误,客户端应该拒绝继续加载页面。但如果重载 WebView的onReceivedSslError()函数并在其中执行handler.proceed(),客户端可以绕过证书校验错误继续访问此 非法URL。这样将会导致“中间人攻击”,攻击者冒充服务器与银行客户端进行交互,同时冒充银行客户端与银行服务器进行交互,在充当中间人转发信息的时 候,窃取手机号,账号,密码等敏感信息。
评估结果 存在漏洞
漏洞分析 该App应用的webview组件中存在忽略证书校验错误的漏洞。
漏洞详情 [    "com.alipay.sdk.app.b.onReceivedSslError:(Landroid/webkit/WebView;Landroid/webkit/SslErrorHandler;Landroid/net/http/SslError;)V",    "com.alipay.sdk.app.d.onClick:(Landroid/content/DialogInterface;I)V",    "com.alipay.sdk.auth.AuthActivity.b.onReceivedSslError:(Landroid/webkit/WebView;Landroid/webkit/SslErrorHandler;Landroid/net/http/SslError;)V",    "com.alipay.sdk.auth.f.onClick:(Landroid/content/DialogInterface;I)V",    "com.tencent.smtt.sdk.aw.b.proceed:()V"]
解决方案 取消在Webveiw组件中对onReceivedSslError()函数的重载。

360捉虫猎手 检测结果:

图片6.png

图片7.png

因结果扫了很久还没出来,就直接来张其他app的扫描结果吧

图片8.png

 

阿里聚对墨迹天气的安全检测结果 :

漏洞详情 风险等级 修复建议
webview远程代码执行漏洞(2个)addJavascriptInterface存在高危远程代码执行漏洞,应尽量避免使用,API 17中用@JavascriptInterface 代替addjavascriptInterface;移除系统webkit内置的危险接口searchBoxJavaBridge_,accessibility,accessibilityTraversal  [ 了解更多 ]  [ 实际案例 ] 高危触及安全红线

应尽量避免使用,API 17中用@JavascriptInterface 代替addjavascriptInterface;移除系统webkit内置的危险接口searchBoxJavaBridge_,accessibility,accessibilityTraversal
WebView不校验证书漏洞(1个)调用了android/webkit/SslErrorHandler类的proceed方法,可能导致WebView忽略校验证书的步骤 高危触及安全红线 不要调用android.webkit.SslErrorHandler的proceed方法
中间人攻击漏洞(1个)HTTPS禁止使用ALLOW_ALL_HOSTNAME_VERIFIER,因为这样会存在中间人攻击的风险  [ 了解更多 ] 高危触及安全红线 必须使用STRIC_HOSTNAME_VERIFIER并校验证书
备份标识配置风险(1个)当这个标志被设置为true或不设置该标志时应用程序数据可以备份和恢复,adb调试备份允许恶意攻击者复制应用程序数据。  [ 了解更多 ]  [ 实际案例 ] 中危触及安全红线 在AndroidManifest.xml中设置android:allowBackup=”false”
拒绝服务漏洞(22个)不校验导出组件(Activity,Service等)的传递参数,导致拒绝服务,需注意空值判定以及类型转换判断。  [ 了解更多 ]  [ 实际案例 ] 中危触及安全红线 请严格校验输入参数,注意空值判定和类型转换判断,防止由于异常输入导致的应用崩溃.
SharedPrefs任意读写漏洞(2个)存在内容被替换的风险,SharedPreference禁止使用MODE_WORLD_READABLE和MODE_WORLD_WRITABLE  [ 了解更多 ] 中危触及安全红线 不要使用MODE_WORLD_READABLE和MODE_WORLD_WRITABLE。
主机名弱效验(3个)在实现的HostnameVerifier子类中未对主机名做效验,这样会导致恶意程序利用中间人攻击绕过主机名效验。利用HostnameVerifier子类中的verify函数效验服务器主机名的合法性。 中危触及安全红线 在实现的HostnameVerifier子类verify函数中校验主机名的合法性。
证书弱校验(3个)在实现的HostnameVerifier子类中未对主机名做效验,这样会导致恶意程序利用中间人攻击绕过主机名效验。利用HostnameVerifier子类中的verify函数效验服务器主机名的合法性。 中危触及安全红线 在实现的X509TrustManager子类中checkServerTrusted函数效验服务器端证书的合法性。
File任意读写漏洞(7个)存在内容被替换的风险,openFileOutput禁止使用MODE_WORLD_READABLE和MODE_WORLD_WRITABLE  [ 了解更多 ] 中危触及安全红线 不要使用MODE_WORLD_READABLE和MODE_WORLD_WRITABLE。
随机数生成函数使用错误(1个)使用SecureRandom时不要使用SecureRandom (byte[] seed)这个构造函数,会造成生成的随机数不随机。  [ 了解更多 ] 高危 建议通过/dev/urandom或者/dev/random获取的熵值来初始化伪随机数生成器PRNG
AES/DES弱加密风险(19个)使用AES/DES加密算法时,应显式指定使用CBC或CFB模式.否则容易受到选择明文攻击(CPA)的风险,造成信息泄露。 高危 使用AES/DES加密算法时应使用CBC或CFB模式。或者使用安全组件的安全加密接口SecurityCipher进行加密。
Native动态调试(1个)so文件存在被调试的风险,攻击者可以利用此风险对应用进行动态调试,造成核心逻辑和敏感数据等信息泄漏。 高危 聚安全安全组件通过监控进程的多种调试状态特征,给应用提供全方位的反调试保护。
密钥硬编码风险(9个)本地存储密钥存在被攻击者利用并通过密钥构造伪数据的风险。  [ 实际案例 ] 高危 1、禁止把密钥写死在程序中,2、使用聚安全提供的安全加密组件。
初始化IvParameterSpec函数错误(7个)使用固定初始化向量,结果密码文本可预测性会高得多,容易受到字典式攻击。修复建议:1、禁止使用常量初始化矢量参数构建IvParameterSpec,2、推荐使用聚安全提供的安全组件。  [ 实际案例 ] 中危 修复建议:1、禁止使用常量初始化矢量参数构建IvParameterSpec,2、推荐使用聚安全提供的安全组件。
未进行安全加固风险(1个)应用没有被安全加固,攻击者可以利用重打包等手段修改程序的原始逻辑和内容,并上传仿冒app到第三方应用市场,欺骗用户。  [ 实际案例 ] 中危 建议使用聚安全的应用加固方案,聚安全应用加固提供对dex、so等文件的保护以及混淆。
PendingIntent误用风险(5个)使用PendingIntent的时候,如果使用了一个空Intent,会导致恶意用户劫持修改Intent的内容。禁止使用一个空Intent去构造PendingIntent,构造PendingIntent的Intent一定要设置ComponentName或者action。 中危 禁止使用一个空Intent去构造PendingIntent,构造PendingIntent的Intent一定要设置ComponentName或者action。
Webview明文存储密码漏洞(5个)使用Webview时需要关闭webview的自动保存密码功能,防止用户密码被webview明文存储。 中危 显示设置webView.getSetting().setSavePassword(false)
未移除有风险的Webview系统隐藏接口(17个)android webview组件包含3个隐藏的系统接口:searchBoxJavaBridge_, accessibilityTraversal以及accessibility,恶意程序可以利用它们实现远程代码执行。请通过显示调用removeJavascriptInterface移除这三个系统隐藏接口。  [ 实际案例 ] 中危 请通过显示调用removeJavascriptInterface移除这三个系统隐藏接口。
数据弱保护(1个)数据安全保护级别较低,攻击者可以通过逆向分析等手段,较容易得获取应用的关键数据,比如签名算法、加密密钥、加密数据等。 中危 推荐使用安全组件的数据加签和安全存储功能,提高应用的安全保护级别。
日志泄漏风险(20个)使用System.out.print等标准输出打印日志信息或转存日志信息,容易泄漏敏感信息。建议删除所有使用System.out.print等标准输出打印日志或转存日志信息的代码  [ 实际案例 ] 低危 建议删除所有使用System.out.print等标准输出打印日志或转存日志信息的代码

关于阿里巴巴的聚安全,聚安全会给代码详情打码,如下图(4.1号以后的新规则,需要验证app的签名,会给你一个demo,你需要把keystore签到阿里官方给的demo中,验证应用开发者,然后才能看到详情)如下图:

图片9.png

有些朋友说,出现了这个 “为保护应用隐私,查看详情漏洞位置请先申请 应用所有权认证”,

如何签名

如何签名:

   jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]

命令格式及参数意义:

-verbose -> 输出签名过程的详细信息

-keystore [keystorePath] -> 密钥的库的位置

-signedjar [apkOut] -> 签名后的输出文件名

[apkin] -> 待签名的文件名

[alias] -> 证书别名

示例:

   D:\>jarsigner -verbose -keystore demo.keystore -signedjar jaq_demo_signed.apk jaq_demo.apk demo.keystore

下面讲下如何对app的应用开发者进行认证:

图片10.png

图片11.png

那么如何签名呢

图片12.png

创建一个keystore,用来存放签名app时要用的:

  keytool -genkey -v -keystore relax.keystore -alias rela -keyalg RSA 生成私钥

用私钥对apk进行重新签名

  root@kali:~/Desktop# jarsigner -verbose -sigalg MD5withRSA --digestalg SHA1 -keystore /root/Desktop/relax.keystore jaq_demo_1460103308355.apk  rela

图片13.png

就是说,使用开发者的keystore对聚安全的那个demo.apk进行签名,然后就完成了认证

聚安全的一些其他看点

聚安全结合乌云,里面有很多实例,有很多常用漏洞的集合,是新手快速解决问题的好去处。

图片14.png

聚安全还有一个仿冒监测:(这里说下为什么会出现仿冒软件,因为app没有加固,导致被反编译,被打包后,植入而已代码后又在其他地方上线,所以这里忠告一下,下app,一定要去官方网站上下载,能提供验证MD5,尽量要验证一下)

图片15.png

图片16.png

检测结果总结:

阿里聚安全问题汇总:

webview远程代码执行漏洞

WebView不校验证书漏洞

中间人攻击漏洞

备份标识配置风险

拒绝服务漏洞

SharedPrefs任意读写漏洞

主机名弱效验

证书弱校验

File任意读写漏洞

随机数生成函数使用错误

AES/DES弱加密风险

Native动态调试

密钥硬编码风险

初始化IvParameterSpec函数错误

未进行安全加固风险

PendingIntent误用风险

Webview明文存储密码漏洞

未移除有风险的Webview系统隐藏接口

数据弱保护

日志泄露隐私风险(logcat日志输出)

百度移动测试中心问题汇总:

组件暴露——Activity

组件暴露——Service

组件暴露——BroadcastReceiver

应用数据任意备份风险

权限滥用风险

WebView组件系统隐藏接口未移除漏洞

Dex文件动态加载风险

SSL证书验证不当漏洞

WebView密码明文保存漏洞

PendingIntent包含隐式Intent风险

日志泄露隐私风险

最后看下梆梆的检测结果

Java代码保护风险

组件导出风险

敏感函数调用风险

调试日志函数调用风险

应用数据任意备份风险

明文数字证书风险

未使用HTTPS协议的数据传输风险

Webview明文存储密码风险

HTTPS未校验服务器证书漏洞

Webview远程代码执行漏洞

Webview绕过证书校验漏洞

梆梆的新鲜的亮点: 到一处 直接打印出app里涉及到的url列表地址了,是不是涉及到很多新鲜的子域名和url。

图片17.png

图片18.png

总结和一些争议

评估一下APP的安全性可以综合参考以上的检测,然后综合性的评估,阿里的需要验证开发者权限,百度那个要花钱的,还不错,梆梆也可以(很方便渗透额),360怎么一直扫描不出报告。开发不一定能改第三方的包的安全问题,所以本包的问题能改的尽量改,咱们能做的就是给app进行加固。

图片19.png

图片20.png

加固前后效果对比

  图片21.png

图片22.png

加固后,可以看到数据备份还是没有打钩,因为,我没对apk中的(在AndroidManifest.xml中设置android:allowBackup=”false”)这个设置项进行更改。

后记

本次在线检测实战旨在帮助开发者更快的评估自己的android问题,作为一个菜鸟app检测人员,希望带给大家的是让自己的app更加安全,当然安全从开发开始构思时,就该考虑是否使用第三方包,这样,对app的安全更加可控。

阅读拓展

http://www.droidsec.cn/ 安卓安全中文站

http://blog.nsfocus.net/mobile-app-security-security-test/ 移动app检测要点

http://zbc.baijia.baidu.com/article/365622 10大移动安全威胁

*本文作者:ice@DMZLab,转载须注明来自FreeBuf黑客与极客(FreeBuf.COM)

相关 [android app 自动化] 推荐:

Android APP检测之自动化检测实战

- - FreeBuf.COM | 关注黑客与极客
Android APP本文作者:ice@DMZLab. 最近一直在研究的检测,写了一个系列的文章——手工检测,自动化检测,常见漏洞分析. 本篇没有深入的讲解每一个漏洞的详情,仅作测试结果对比和自己的体验心得. 0×01 五大在线检测平台. 腾讯的金刚审计系统  http://service.security.tencent.com/kingkong.

iPhone App自动化测试

- BeerBubble - Taobao QA Team
         无线客户端的发展很快,特别针对是android和ios两款无线操作系统的客户端应用,相应的测试工具也应运而生,这里主要给大家介绍一些针对iPhone App的自动化测试工具.          首先,我们把这些测试框架分为三大类:接口测试工具、注入式UI测试工具、录放式UI测试工具.

Android Robotium自动化测试

- - CSDN博客移动开发推荐文章
1、官方网站下载测试工程demo. 从 http://code.google.com/p/robotium/downloads/detail?name=ExampleTestProject_v3.6.zip 下载官方的Android测试工程demo. 解压后的文件NotePad、NotePadTest、readme.txt.

Android UiAutomator 自动化测试

- - 操作系统 - ITeye博客
一、一个BUG引发的问题.     如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”. 我想,最好的方式应该是自动化测试.     那么,自动化测试可以完成哪些任务呢.     简单的说,那些重复性的测试工作,都可以交给自动化完成:.         1、设置手机的语言.         2、添加、删除、收藏联系人.

Google将关闭Android App Inventor

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

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

- -

Android自动化测试解决方案

- Haides - InfoQ中文站
现在,已经有大量的Android自动化测试架构或工具可供我们使用,其中包括:Activity Instrumentation, MonkeyRunner,Robotium,以及 Robolectric. 另外LessPainful也提供服务来进行真实设备上的自动化测试.

Android 自动化测试工具初探

- - IT瘾-geek
Android 自动化测试工具初探.    这段几乎都编写代码,没有新的心得体会.唯一由感想的是在测试上.由于策划的变动,接口的完善等因素,总在不停的修改功能,修改代码.由于项目中的代码都经过了好多少,又没有很好的架构规划.所以在修改或测试的时候难免会有遗漏的地方,这个时候就在想android是不是也应该有自动化测试工具来辅助测试.使得功能更完善点.本期的创新文档只能算是对自动化创新工具的一种简介..

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

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

如何在iOS与Android间移植APP

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