Android APP实战:五大APP安全在线检测平台对比

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

  0×01 五大在线检测平台

  

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090837314.png

  

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090839315.png

  阿里巴巴的聚安全

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090844316.png

  百度的移动云测试中心

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090844317.png

  梆梆加固测试平台

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090845318.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捉虫猎手检测结果:

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090850319.png

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090852320.png

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

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090852321.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中,验证应用开发者,然后才能看到详情)如下图:

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090853322.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的应用开发者进行认证:

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090853323.png

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090853324.png

  那么如何签名呢

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090901325.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

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090910326.png

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

  聚安全的一些其他看点

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

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090913327.png

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

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090915328.png

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090916329.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。

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090916330.png

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090919331.png

  总结和一些争议

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

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090919332.png

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090919333.png

  加固前后效果对比:

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090921334.png

http://www.2cto.com/uploadfile/Collfiles/20160422/20160422090922335.png

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

  后记

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

热门新闻

最新新闻