当前位置: 首页 > 技术干货 > Windows 取证之Jump Lists

Windows 取证之Jump Lists

发表于:2021-06-30 15:53 作者: mtr 阅读数(2501人)

一、概述

Jump ListsWindows 7开始引入的新功能,该功能允许用户查看固定在任务栏中程序最近打开的文件,如图所示:

Jump Lists由应用软件或者系统创建,作用是方便用户可以直接跳转到最近打开的文件或文件夹。Jump List显示的列表数量是有限的,在Windows 7/8操作系统中,用户可以通过更改注册表来修改Jump List的条数,但在Windows 10中,这个数量被固定了,用户无法自行修改。

二、Jump List 文件存储和格式

Jump List文件是一种OLE文件,存储在C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinationsC:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination路径下。

Jump List有两种类型,一种是存放在AutomaticDestinations路径中的automaticDestinations-ms (autoDest)文件,另一个是CustomDestination中的customdestination-ms(custDest)文件。

autoDest*.automaticDestinations-ms)文件是由系统shell在用户与操作系统交互时(如启动应用程序、访问文件等)自动创建的,这些文件遵循Microsoft Compound File Binary(CFB)复合文件格式结构,并且文件中的每个编号流都遵循 MS-SHLLINK(即LNK)二进制文件格式。

custDest*.customDestinations-ms)文件是在用户操作固定项目时创建的,比如拖到某个文件或应用程序固定到任务栏中,或在列表中固定某个项目。custDest文件只是一系列相互附加的lnk格式流组成。比autoDest文件更为简单。

每个列表文件名都是以一串长度为16位的字符串命令,后面跟上.automaticDestinations-ms或者.customDestinations-m为后缀。

这16位长度的十六进制字符串是APPID(应用程序标识符),用于标识特定的程序或文件。根据微软官方说明,APPID可以分为应用程序自定义(Application-Defined)和操作系统定义(System-Defined)两种。应用程序可自定义一个固定的APPID。如果没有,操作系统根据应用程序的路径使用CRC-64算法计算出APPID

关于APPID的计算可以参考:https://www.hexacorn.com/blog/2013/04/30/jumplists-file-names-and-appid-calculator/

一些常见应用程序的Jump List ID可以在互联网上找到:

https://gist.github.com/atilaromero/2146441

https://community.malforensics.com/t/list-of-jump-list-ids/158/1

autoDest文件中,除了Destlist流之外,其他流都是由LNK流组成。Destlist流遵循特定的结构,分别记录了作为MRUMFUlist的文件访问顺序及文件访问次数,并且包含时间戳。在Windows 7Windows 8中,Destlist流结构是一致的,但Windows 10中有所不同。

这里我们以Windows 7系统举例,通过16进制编辑器查看其结构组成,打开一个autoDest文件,其结构如下:

D0 CF 11 E0 A1 B1 1A E1OLECF文件标识符

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:类标识符 (GUID)

3E 00:文件版本(次版本)

03 00:文件版本(主版本)

FF FF:字节顺序标识符(FF FF为小端模式,FF FE为大端模式)

更多关于OLECF格式详情可以参考:https://github.com/libyal/libolecf/blob/main/documentation/OLE%20Compound%20File%20format.asciidoc#2-the-file-header

Destlist头结构:

01 00 00 00:版本号(在windows 7/8中是版本1,windows 10 1511中是版本3)

11 00 00 00:当前条目数

00 00 00 00:"固定"的条目数量

33 33 E3 41:计数器

11 00 00 00 00 00 00 00:上一次的条目数

11 00 00 00 00 00 00 00:添加/删除操作的数量-随着条目的添加和删除而增加。

custDest*.customDestinations-ms)文件的结构就简单很多:

前面36 Bytes是文件头,然后是lnk文件部分,然后是下一条lnk文件部分,然后是文件结尾0xbabffbab

三、Jump Lists 取证实战

来源:Cynet应急响应挑战赛

题目描述:GOT-Research Ltd的 财务部总监 Lord Varys 发现,有关高级员工工资的某些信息被泄露,并传到了该组织的其他员工手中。此财务信息保存在网络共享文件夹中。此网络文件夹的权限已授予给 Lord Petyr Baelish和其他 2 名前雇员:John SnowDaenerys TargaryenJohnDaenerys 现在都是 GOT 的外部顾问,不再是财务部门的一员。但他们对财务共享文件夹的权限尚未撤销,Petyr Baelish, JohnDaenerys这三个人平时关系并不好,Varys怀疑这是泄密的原因,他认为有人想要陷害Petyr Baelish,让别人以为是他泄露了信息。GOT-Research LtdCEO针对上述事情询问过JohnDaenerys,但他们都称近一年(自从离开财务部后)都没有访问过财务文件夹。

现在GOT委托你作为调查人员查清JohnDaenerys是否访问了财务数据,其中包括已泄露的 Management-Salaries.xlsx 文件。

最终需要提交嫌疑人的名字和在嫌疑人主机上找到的可疑财务文件文件名、以及时间戳。

我们拿到的调查文件是JohnDaenerys电脑上的Jump Lists文件:

我们使用JumpListExplorer工具(下载地址:https://ericzimmerman.github.io/#!index.md)对文件进行解析和分析:

经过检查和分析,最终在John的电脑上发现了可疑痕迹,在2020-02-07 00:03:54WinRAR打开了一个Finance-Summary.rar的文件。

分析Jump Lists类似的工具还有JLECmd.exeNirsoft JumpListsView等。

参考资料:

https://hal.inria.fr/hal-01988839/document

https://github.com/libyal/dtformats/blob/main/documentation/Jump%20lists%20format.asciidoc

https://github.com/EricZimmerman/JumpList/blob/master/JumpList/Resources/AppIDs.txt

https://cyberforensicator.com/wp-content/uploads/2017/01/1-s2.0-S1742287616300202-main.2-14.pdf

https://binaryforay.blogspot.com/2016/02/jump-lists-in-depth-understand-format.html

https://port139.hatenablog.com/entry/2018/04/22/153224

https://www.researchgate.net/publication/303018869_An_Overview_of_the_Jumplist_Configuration_File_in_Windows_7

https://windowsir.blogspot.com/2011/12/jump-list-analysis.html

本文涉及相关实验:数字取证之Autopsy  (Autopsy Forensic Browser 是数字取证工具-The Sleuth Kit(TSK)的图形界面,用于对文件系统和卷进行取证。通过本实验学习文件系统取证的思想与方法,掌握Autopsy的使用。)