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 2: Content Provider攻防(连载)
安卓Hacking Part 3:Broadcast Receivers攻防(连载)
安卓Hacking Part 4:非预期的信息泄露(边信道信息泄露)
安卓Hacking:Part 5:使用JDB调试Java应用
安卓hacking Part9: 不安全的本地存储:Shared Preferences
安卓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/
联系客服