这篇文章的目的

本文旨在通过用户在百度云的使用过程中在计算机上留下的痕迹获取用户的账户密码和相关信息,从而提高对安全预防的认识。

我们一般通过两种方式来使用百度云服务,一种是web端,另一种是桌面的客户端。下面我们分别就这两种方式来获取用户的相关信息。

Chrome浏览器方式痕迹分析

本文使用的浏览器为Chrome,经过分析,在用户通过Chrome浏览器使用云存储服务后,浏览器的历史记录文件缓存文件、cookies文件以及LoginData文件中存在相关的重要痕迹信息。

1、历史记录文件

在window7系统中,Chrome浏览器默认的历史记录文件在“C:Users<user>AppDataLocalGoogleChromeUserDataDefault”路径下,我们用UltraEdit打开,文件内容如下。

通过文件头我们可以看到,这是一个SQLite数据库文件,我们用SQLite数据库查看软件打开这个文件,可以看到文件中的表如下。

通过分析,其中downloads和urls以及downloads_url_chains这三张表存在与百度网盘有关的信息。

  • urls表,存储访问过的网页信息,url中以“”开头的,表示访问过的百度网盘的url信息。
  • downloads表记录了下载文件的文件名,路径,大小,下载时间,下载页面等信息。用户使用浏览器访问百度网盘并从中下载了文件,将会在该表中留下相关记录.
  • downloads_url_chains表中记录了文件的下载链接。

2、缓存文件

通过检查cache文件夹中的数据,能够发现相关的操作痕迹。包括上传文件,创建文件夹,修改文件,重命名文件,下载文件等,这里就不展开了。

3、Cookies文件

Chrome浏览器的Cookies文件存在于“C:Users<user>AppDataLocalGoogleChromeUserDataDefault”路径下,同样这也是一个SQLite文件,表字段如下。

其中跟百度网盘相关的cookie有".Baidu.com"域的BaiduID,BDUSS以及";域的PANWEB,STOKEN等。

cookie值并没有存储在value中,而是经过加密之后存到了encrypted_value字段中,具体的加密方式是使用了微软提供的数据保护接口(data protection application programming interface,DPAPI)。

DPAPI由一个加密函数CryptProtectData和一个解密函数CryptUnProtectData组成,在同一系统用户下,我们直接可以使用CryptUnProtectData对加密数据进行解密即可。

4、登录信息

如果你在Chrome浏览器登录网站时,使用了记住密码的话,这些账号和密码都存储在“C:Users<user>AppDataLocalGoogleChromeUserDataDefault”路径下的Login Data文件中。它也是一个SQLite文件,用户名和密码都存储在logins表中,表结构说明如下。

可以发现,密码值使用了与cookie相同的DPAPI加密。我们提取logins表中的数据,就能够获得用户登录各个网站的用户名和密码。如果用户在登录百度网盘,选择记住账号和密码的话,就能够从表中获取用户登录百度网盘所使用的用户名和密码。

客户端程序痕迹分析

同样在客户端我们也能够获取到用户使用百度网盘的行为记录,包括文件上传,下载,文件重命名等。这里简单讲解一下如何获取客户端的用户登录信息。

百度网盘客户端将用户的账号和密码信息存储在了"BaiduNetdiskusers"路径下的(版本不同,文件命名可能会不同)。里面的信息是经过加密存储的,本文采用逆向分析技术对网盘客户端解密文件数据的过程进行了分析,得出了提取用户账号密码的方法。

中的数据

百度云客户端获取本地的用户名和密码可以分为三个部分:(1)读取用户账号信息,将数据解密,得到JSON格式字符串,解析得到用户名以及加密的密码;(2)生成解密秘钥;(3)解密用户密码,利用第2步生成的秘钥对加密的密码进行解密,就可以得到真正的用户密码。

客户端解密的过程如下(版本不同,过程可能也有不同)。

具体代码,感兴趣的读者可以自行实现。

参考文献

  1. Chen Yang.research on digital forensic key technologies for cloud storage client

关注技术大白,带你了解技术内幕。

相关推荐