安卓应用程序渗透测试(七)

SoftNight 移动安全 2018年10月5日发布
Favorite收藏

导语:​在上一篇文章安卓应用程序渗透测试六中,我们看到了漏洞被分为十大类。现在我们就来看看其中的几个。

在上一篇文章安卓应用程序渗透测试六中,我们看到了漏洞被分为十大类。现在我们就来看看其中的几个。

不安全的登录—ADB Logcat:

Logcat是一个命令行工具,可以dump系统消息日志,包括设备报错时的堆栈跟踪以及使用Log类从应用程序写入的消息。

通过Android Logcat你可以:

· 查看,过滤和收集所有应用程序日志

· 查看,过滤和收集所有系统日志,例如垃圾收集器事件

· 检索已发生的所有意外错误

有时当您登录应用程序时。这些凭据可以在日志中找到。

返回原文观看视频。

缓解措施:adb logcat -c“(这会清除日志),请确保在编写应用程序凭证时不显示在日志中。

不安全的外部和内部存储

我们已经知道设备中应用程序的所有数据都可以在/data/data目录中找到,设备中的所有应用程序(apk文件)都可以在/data/app目录中找到。

当你使用root设备时,你可以深入了解存储在此目录中的文件类型。

内部存储

内部存储是在Android应用程序中存储数据的另一种方式。开发人员可以通过各种方式在本地存储Android应用程序中的数据

示例

共享首选项,文件,缓存,SQLite数据库,lib,日志文件,二进制数据存储,cookie存储等。

共享首选项

“共享首选项”允许开发人员保存和获取原始数据类型的持久键值对,例如布尔值,浮点数,整数,长整数和字符串。使用共享首选项类在Android应用程序中创建共享首选项。

Sq-lite数据库

Sq-lite数据库是基于文件的轻量级数据库。它们通常具有扩展名“.db”或“.sq-lite”。Android为Sq-lite数据库提供全面支持。我们在应用程序中创建的数据库可被应用程序中的任何类访问。其他APP无法访问它们。

2.jpg

3.jpg

外部存储

SD卡是Android中另一个重要的位置,我们可以存储与我们的APP相关的数据。在外部存储上创建的文件是全局可读和可写的。由于外部存储可以由用户删除并且也可以由任何应用程序修改,因此我们不应使用外部存储来存储敏感信息。

4.jpg

缓解措施:

· 对于本地存储,安卓设备管理API可用于强制加密本地文件存储,“set storage encryption”

· 除非明确要求应用程序之间的信息共享,否则请确保任何共享首选项属性为NOT_MODE_WORLD_READABLE(非全局可读模式)

· 对于SD卡存储,可以通过'javax.crypto'库实现一些安全性。

不安全通信

缺少证书检查:Android应用程序无法验证提供给它的证书的身份。大多数应用程序忽略警告并接受任何自签名证书。而有些应用程序通过HTTP连接传递流量。

弱握手协商:应用程序和服务器执行SSL / TLS握手,但使用不安全的密码套件,容易遭到MITM攻击。因此任何攻击者都可以轻松解密该连接。

隐私信息泄漏:大多数情况下,应用程序通过安全通道进行身份验证,但其他所有连接都是通过非安全通道。这对于应用程序来说并不安全,因为会话cookie或用户数据等其他敏感数据可能会被恶意用户拦截。

5.png

缓解措施:

· 使用可信CA提供商签名的证书,并考虑安全应用程序的证书固定。

· 在传输层应用SSL/TLS,这样一来,手机APP将使用SSL/TLS来传递敏感信息,如会话令牌或传输到后端API的其他敏感数据或Web服务信息。

· 仅在使用密钥链中的受信任证书验证终端服务器的身份后才建立安全连接。

本文翻译自:https://gbhackers.com/android-application-penetration-testing-part-7/如若转载,请注明原文地址: http://www.4hou.com/mobile/13817.html
点赞 2
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论