免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > 揭露Safari密码的存储及加密算法

揭露Safari密码的存储及加密算法

时间:2011-12-22 15:37来源:未知 整理:寂涯网络 点击:

Safari 浏览器是目前所出浏览器中排在前五名的,它有着新颖的外观和最好的体验感。
并且提供了最好的网页浏览方式,而且最大程度地支持HTML5,并还可以体验一些其他的使
更好地浏览网页的新功能。
同其他浏览器一样,Safari 也带有自带的密码管理功能,它可以安全地存储和管理用
户在网页中保存的登录密码。
本文将首次公开Safari密码的存储方式、加密算法以及提供破解存储密码的代码。

Safari 存储密码的位置

Safari 拥有良好的密码管理、安全模型和加密算法,以尽可能地保证安全。不像其他
浏览器,比如Firefox、Chrome,在Safari 中你是无法直接查看保存的密码的。
你可以在“设置——自动填充——用户名和密码”选项中启用或者禁用 Safari 的密码
管理(如下图所示)。一旦启用,Safari将会提示保存用户登录的每个网站的密码。一经确
认,用户名和密码将随着网址一同保存在保密的存储密码的文件中。

Safari 将所有这些网站的登录密码存储在以下位置的'keychain.plist'文件中(根据
所用的平台):  
[Windows XP]
C:\Documents and Settings\<username>\Application Data\Apple
Computer\Preferences
[Windows Vista & Windows 7]
C:\Users\<username>\AppData\Roaming\Apple Computer\Preferences

Safari 存储数据的 keychain.plist文件采用的是“Binary Property List”文件格式——
它是苹果公司用于存储二进制数据的一种“Property List”文件格式的变种。下图是
“keychain”文件的样子:

解开“Keychain”文件的秘密

看着上图中“keychain”文件的内容,几乎没有什么可让人理解的数据。不过能暗示你
的是,该文件是用“bplist”作为文件开头的关键字。
经过长时间的对“bplist”关键字的搜索,我终于想出了办法将这些内容为转换为纯
XML 文件。利用苹果提供的“plutil.exe”工具可以将它们转换为“Property List”文件。
你可以在以下位置找到基于控制台的工具:

[Windows x86]
C:\Program Files\Common Files\Apple\Apple Application Support
[Windows x64]
C:\Program Files (x86)\Common Files\Apple\Apple Application Support

这条命令便可以将神秘的“keychain.plist”文件转换为易读的“keychain.xml”文件:

plutil.exe -convert xml1  -s  -o c:\keychain.xml
"c:\users\administrator\appdata\roaming\apple
computer\preferences\keychain.plist"

这看起像解码后的XML 文件

Safari 加密算法的内幕

生成的 XML 文件中包含了加密后的密码、网址以及用户名信息。存储的密码采用的是
BASE64 加密算法加密而成的。
不过注意,存储在“keychain.plist”文件中的原密码并没有采用 BASE64 加密。当我
们用工具把它转换成XML文件时,它才会被加密成BASE64格式。
一旦将 BASE64解码,就可以看到原来加密后的数据。 Safari 使用标准的“Windows Data
Protection ”机制加 密用户层的密码。 Windows DPAPI 提供了像
CryptProtectData/CryptUnprotectData函数来轻易加密或者解密数据,比如密码。
Safari 使用了 CryptProtectData 函数与一个静态的 Salt 结合,对所有网站中保存的
登录密码进行加密。最后再将用户的这些登录信息保存在“keychain.plist”文件中。

解码并解密 Safari 中保存的密码

如上所述,完成整个的解密过程只需要以下两个步骤:
1.将存储在 XML 文件中的密码数据进行解码。
2.用 Windows DPAPI解密数据。
首先你需要使用BASE64解码工具将XML 文件中的密码字节解码。
之后我们对这个加密后的数据进行解密。为了解密这个数据,我们必须找到在
CryptUnprotectData使用的Salt。这里是我在逆向工程时找到的Salt:

整个 Salt生成算法和解密的函数,在苹果提供的共享库“CFNetwork.dll”中,文件位
于以下位置:

[Windows x86]
C:\Program Files\Common Files\Apple\Apple Application Support
[Windows x64]
C:\Program Files (x86)\Common Files\Apple\Apple Application Support

以下是用 IDA Pro反汇编CFNetwork.dll中 Salt生成和解密函数的调用:

最开始,Salt 看起来似乎动态的生成的,但是我在不同的系统中逆向后,我怀疑它只
是静态的。Salt 是一串 144 字节的数据和使用“com.apple.Safari”作为结束的尾部。之

本页地址 http://www.jybase.net/xitonganquan/20111222727.html

百度搜索更多

谷歌搜索更多

顶一下
(1)
50%
踩一下
(1)
50%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com