打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
安卓Hacking Part 10:不安全的本地存储

安卓Hacking Part 10:不安全的本地存储

2014-12-16 10:27:08 来源:360安全播报 阅读:9988次 点赞(0) 收藏(0)


分享到:

上一期中,我们讨论了”Shared Preferences”本地存储的安全性,本期中我们来看看Android中其他本地存储的相关安全问题。

文件下载:

SQLite 数据库

SQLite是一种基于文件的轻量级数据库。通常使用”.db”,”.sqlite”作为其数据库文件的扩展名。Android为SQLite提供了相当全面的支持。我们的应用创建的数据库只能被该应用访问,其他应用无法访问。

下载上面提供的文件,安装并运行。然后向咱们上一期那样在应用中输入一些数据。

下面的代码片段就是应用操作SQLite数据库的方法。

首先,应用一收到用户输入的用户名和密码,应用就会打开数据库,插入数据然后关闭数据库,如图:

下图为插入数据的代码片段,我们扩展了“SQLiteOpenHelper”类。如图,我们将用户输入的数据插入了变量”TABLE_NAME”保存的表名中。

现在我们弄清楚了应用如何向数据插入数据,现在我们来看看这些数据在应用中是如何储存的,并想办法把它读取出来。

应用的数据库一般存储在下面的地方:

/data/data/<package name>/databases/<databasename.db>

现在让咱们去上面这个目录下看看应用是否创建了数据库。

跟SharedPreferences一样,我们可以使用adb把文件下载到本地,但这次我们换个姿势。

这次我们使用Eclipse里面的一个叫”DDMS”的功能来从设备中提取数数据,在Eclipse中启用了”DDMS”后,我们就可以干很多有意思的事情。

Ecllispse打开DDMS后如图:

使用DDMS,我们只用点点鼠标就能读取出设备中的文件,而不用像使用ADB那样需要敲命令。

在我们的例子中,我们需要进入”/data/data/”下的”com.adnroidpentesting.sqlitestorage”目录。展开目录后就会显示出下面所以的文件,我们感兴趣的SQLite 文件在”databases”目录下,下面的PWNSQLITEDATA.db就是我们需要的文件。我们可以把文件下载到本地电脑上,然后进行如下操作。

1、在电脑上安装SQLite3客户端

2、使用下面的命令连接数据库

Sqlite3 PWNSWLITEDATA.db

3、使用”.tables”命令列出所有的表名。

4、使用”select * from table_name”查询表中所有的数据。

如下图:

内部存储

Android应用保存数据的另一种方法就是使用本地存储。打开应用,输入测试用的信用卡号,点击保存。

以下的代码片段显示了应用如何保存数据:

应用接收到用户输入后,将其保存到了”secret.txt”文件中。

打开DDMS将对应的secret.txt文件下载到本地。

Cat一下:

外部存储

SDCARD也是Android中一直重要的存储应用数据的地方,例如whatsapp就将其所有数据存储在SDCARD上。

但开发者需要注意的是,SDCARD上的数据可被任意访问。把SD卡从设备上拆下来,放到其他设备也可以完全读取其中的数据。

测试APP可以在上面的连接中下到,安装后输入一点测试数就。

以下就是应用存取SD卡数据的代码片段。

以上代码需要”WRITE_EXTERNAL_STORAGE”权限,需要在AndroidManifest.xml加入权限声明:

用户字典

Android还提供了一种叫”用户字典(User Dictionary Cache)”特性。我们可以向用户字典中加入单词,下次用户输入相识的单词时就会给出提示。如果应用允许用户缓存一些敏感信息的话,这些信息就存在一个名为”user_dict.db”的数据库中,任何应用都可以同过用户字典的Content Provider 访问。

另一种办法就是把数据库下载到本地,然后用SQLite 客户端打开,如下图:

使用adb下载数据

使用SQLite客户端读取数据库中的数据。

总结

本文中,我们介绍了SQLite,本地存储,外部存储等在Android中的实现,我们也演示了通过物理接触能很轻易盗取到这些数据,所以强烈建议开发者们在存储以下敏感信息的时候对数据进行加密。

目录

安卓Hacking Part 1: 应用组件攻防(连载) 

安卓Hacking Part 2: Content Provider攻防(连载)

安卓Hacking Part 3:Broadcast Receivers攻防(连载) 

安卓Hacking Part 4:非预期的信息泄露(边信道信息泄露)

安卓Hacking:Part 5:使用JDB调试Java应用 

安卓Hacking Part 6:调试Android应用 

安卓 Hacking Part7:攻击WebView

安卓Hacking Part 8:Root的检测和绕过

安卓hacking Part9: 不安全的本地存储:Shared Preferences 

安卓Hacking Part 10:不安全的本地存储

安卓Hacking Part 11:使用Introspy进行黑盒测试 

安卓Hacking Part 12: 使用第三方库加固Shared Preferences 

安卓Hacking Part 13:使用Drozer进行安全测试 

安卓Hacking Part 14:在没有root的设备上检测并导出app特定的数据



本文由 360安全播报 翻译,转载请注明“转自360安全播报”,并附上链接。
原文链接:http://resources.infosecinstitute.com/android-hacking-security-part-10-insecure-local-storage/

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在Android中查看和管理sqlite数据库
文件I/O
《Android项目式程序设计》05 数据持久化操作写字字帖
Android 数据持久化
Android游戏怎样使用已内置数据的sqlite数据库 | 萝卜白菜的小站
python小技巧-获取浏览器本地数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服