【翻译】Safari/iOS – Cookies.binarycookies reader

Safari 浏览器和iOS应用程序将永久cookie保存在Cookies.binarycookies文件中。这于其他桌面浏览器的保存方式是不同的。例如IE会将永久cookie以文本的方式保存在Temporary 临时文件夹下,Firefox 和chrome则会将永久cookie保存在一个sqlite数据库中。保存在数据库中和文本中的cookie是非常容易读取的。但是并没有合适的工具来从Cookies.binarycookies二进制文件中读取cookies信息。所以我写了一个python脚本(BinaryCookieReader.py)来获取Cookies.binarycookies文件中所有的cookie信息,这个脚本的输入参数为Cookies.binarycookies文件。

使用方法:
1. 下载并且安装 Python
2. 将python的路径添加到系统的PATH环境变量中
3. 下载 BinaryCookieReader.py
4. 打开命令提示符并且输入下面的命令。它将会从Cookies.binarycookies文件中解析出所有的cookie

Python BinaryCookieReader.py [Cookie.binarycookies-file-path]

BinaryCookieReader-output-1024x324

在iPhone上,safari浏览器和第三方的iOS程序将Cookies.binarycookies保存在如下路径下。只有那些过期时间比较长的cookie(永久cookie)才会保存在这个Cookies.binarycookies文件中:
cookie-binarycookies-location
注:iOS6 上safari路径为/private/var/mobile/Library/Cookies

通常大多数的iOS程序会创建一个带有非常长时间的会话连接cookie,因为他们不想让用户在每次登陆的时候都重新输入验证信息。通常这个cookie永远不会过期,除非用户手工从应用中进行注销。所以在通常的iTunes备份中这个Cookies.binarycookies也会被写入到备份文件中。因而如果有人可以获取到你的iPhone备份文件(详情请参考Metasploit: Apple iOS backup extraction module),他们同样可以通过读取Cookies.binarycookies文件来访问你的邮件账户、社交网络等信息。

Cookies.binarycookies 文件格式:

Cookies.binarycookies文件由多个页面组成,每个页面保存有一个或者多个cookie。详细的文件结构如下文所示:

文件格式:
1. 文件开始4个byte为魔术字(magic string) cook,通常用来标记文件类型
2. 下面4 byte为一个整形数值,用来标记文件的页数(pages)
3. 接下来的每4 byte用来标记每个页面的大小
4. 随后是页面内容(page content),每个页面长度于页面大小相对应。页面结构将会在下文解释
5. 文件结尾由8 byte构成,可能是文件的校验和
cookie-binarycookie-file-format

页面结构:

1. 每个页面由固定的4个byte开始0×00000100
2. 接下来的4个字节定义了当前页面包含的cookie个数
3. 接下来的4个字节定义了每个cookie的的偏移量,偏移量由页面的起始位置开始计算
4. 接下来是每个cookie的详细内容,每个cookie都有不同的长度,cookie结构将会在下文解释
5. 页面结束标记4 byte,值始终为0x00000000

cookie-binarycookie-page-format
cookie结构:

1. 第一个4 byte为cookie的大小
2. 第二个4 byte内容含义未知(可能与cookie标志相关)
3. 第三个4 byte为cookie标志,是一个整形数值(1=Secure, 4=HttpOnly, 5= Secure+HttpOnly).
4. 接下来的4 byte 未知
5. 接下来的4 byte标志了在cookie记录中url域的起始位置
6.接下来的 4 byte标记了cookie记录中name域的起始位置
7. 4 byte标记了cookie记录中path域的起始位置
8. 4byte 标记了value域在cookie记录中的起始位置
9.8 byte标记cookie的结束并且值始终为0x0000000000000000
10. 8byte标记了cookie的有效期(过期时间)。日期格式为Mac epoch format(Mac absolute time ),该日期格式起始于2001年1月
11. 8 byte cookie创建时间
12. 跟随其后的是cookie的domain,name, path和value。顺序不固定,可以以任何次序出现。

cookie-binarycookie-cookie-format

*LE – Little Endian
*BE – Big Endian

原文:
http://www.securitylearn.net/2012/10…ookies-reader/
参考文献:
Tengu-Labs: Miyake%20-%20Safari%20Cookie.binarycookie%20Format%200_2[Draft].pdf
StackOverflow: safari-5-1-cookie-format-specs
Toolbox: understanding-the-safari-cookiesbinarycookies-file-format-49980

pdf 下载:https://docs.google.com/file/d/0BxbuJneToYvMWDBWQzFrcWp1N3c/edit?usp=sharing

You may also like

发表评论

电子邮件地址不会被公开。 必填项已用*标注