KAPE:数字取证神器全面解析

KAPE(Kroll Artifact Parser and Extractor)是一款专业的数字取证工具,能够快速定位和提取设备中的关键证据文件,支持实时系统和镜像文件分析。本文详细介绍了KAPE的工作原理、目标与模块配置、VHD容器创建等核心技术功能。

介绍 KAPE!

(来自手册内容,建议阅读完整手册…)

什么是 KAPE?

Kroll Artifact Parser and Extractor(KAPE)主要是一个分类程序,能够针对设备或存储位置,根据需求找到最相关的取证工件,并在几分钟内完成解析。由于其高速特性,KAPE使调查人员能够找到并优先处理案件中更关键的系统。此外,KAPE可以在成像过程开始前收集最关键的工作。在成像完成期间,KAPE生成的数据可以用于审查线索、构建时间线等。

KAPE 的工作原理

KAPE有两个主要功能:1)收集文件,2)使用一个或多个程序处理收集的文件。KAPE本身并不直接执行这些功能;而是通过动态读取配置文件,并根据这些文件的内容来收集和处理文件。这使得KAPE在添加或扩展功能时非常灵活。

KAPE使用目标和模块的概念来工作。KAPE附带了一系列默认的目标和模块,适用于大多数取证检查中的常见操作。这些也可以作为示例来创建新的目标和模块。

在高层次上,KAPE通过将文件掩码添加到队列中来工作。然后使用该队列从源位置查找并复制文件。对于被操作系统锁定的文件,会进行第二次绕过锁定的传递。在过程结束时,KAPE将从源位置的所有可用文件复制并保留元数据到指定目录。

第二个(可选)处理阶段是针对收集的数据运行一个或多个程序。这通过针对特定文件名或目录来实现。各种程序对文件运行,程序的输出然后保存在以类别命名的目录中,例如EvidenceOfExecution、BrowserHistory、AccountUsage等。

通过按类别分组,所有级别的检查员都有手段发现相关信息,无论信息来自哪个单独的工作。换句话说,检查员不再需要知道如何处理prefetch、shimcache、amcache、userassist等与执行证据工作相关的信息。通过分类思考并以相同方式分组输出,可以针对任何给定需求利用更广泛的工作。

继续…

当然,手册中有更多细节(很好,请阅读!),但接下来让我们看一些使用场景以及如何使其工作。

KAPE可以在实时系统上使用,也可以针对死机系统(如写保护的硬盘或挂载的E01)使用。在所有情况下,用法相同。KAPE还处理使用中的文件和卷影副本,使其在查找和收集数据的方法上非常彻底。

这里的要点是,KAPE需要一个驱动器号、目录或UNC路径作为其数据源。如果您可以将KAPE指向一个路径,它就会工作。

因此,在实时系统的情况下,我们只需通过连接某种外部存储来使KAPE可用。从那里,我们可以针对任何驱动器号或目录进行收集。

对于死机系统,一旦Windows识别写保护设备或您已挂载E01(使用Arsenal Image Mounter,而不是FTK Imager)并分配了驱动器号,就可以开始。

此时,我们假设您有一个目标驱动器号可用。下面将显示几个示例,包括实时系统和挂载镜像(再次强调,使用Arsenal Image Mounter。FTK Imager不暴露卷影副本)。

目标

目标负责定义KAPE要复制的文件和目录。目标的完整规范及其属性在手册中,但非常简单。

目标(和模块)使用YAML编写。这是一种易于使用和理解的格式,KAPE中包含了许多示例。

文件系统工作的目标如下所示:

1
2
3
4
5
6
7
8
Name: FileSystemArtifacts
Author: Eric Zimmerman
Description: Collects critical file system artifacts
Files:
  - Path: C:\$MFT
    AlwaysAddToQueue: true
  - Path: C:\$SDS
    AlwaysAddToQueue: true

这是一个简单的示例,我们只是指定了每个感兴趣文件的完整路径。在某些情况下,如$MFT和$SDS,我们必须使用额外的属性AlwaysAddToQueue,因为Windows在运行系统上会撒谎并说该文件不存在(通过正常方式)。

让我们看另一个示例:

1
2
3
4
5
6
Name: LNKFiles
Author: Eric Zimmerman
Description: Collects LNK files from user profiles
Files:
  - Path: C:\Users\*\AppData\Roaming\Microsoft\Windows\Recent\*.lnk
  - Path: C:\Users\*\AppData\Local\Microsoft\Windows\Shell\*.lnk

再次我们看到指定了工作的路径,但这里不同的是使用了通配符。我们无法预先知道计算机上的所有配置文件,因此通配符由KAPE自动扩展以查找所有存在的配置文件,然后获取所有存在的lnk文件(再次使用通配符,因为我们不知道名称是什么)。

另一个有趣的属性是IsDirectory和Recursive。这些允许您给出一个基本目录,并复制其下的所有文件/文件夹,例如第一个示例中的跳转列表。

定义了目标(KAPE附带了近二十个目标,范围从文件系统到注册表、事件日志、回收站、Outlook等)后,您感兴趣的目标被传递给KAPE,KAPE负责以下操作:

  • 将目标文件扩展到所有匹配的文件
  • 尝试使用“常规”方式复制文件
  • 如果文件正在使用,延迟复制
  • 在常规复制结束时,使用原始磁盘读取处理所有延迟文件以获取文件副本
  • 重新创建任何目录结构并从原始目录应用完整分辨率时间戳
  • 将文件复制到目标目的地文件夹,并从源文件重新应用完整分辨率时间戳
  • 对文件进行SHA-1哈希
  • 在日志文件中记录所有这些

这一切在几秒钟内完成,具体取决于您目标的内容。

目标中的目标(嵌套!)

目标也可以引用其他目标,但这意味着什么?

在深入之前,让我们谈谈您应该如何设计目标以及它们迄今为止是如何设计的。

目标应该是具体的,专注于某种类型的文件。例如,一个目标应该只查找事件日志。另一个目标只查找注册表配置单元。还有一个只查找Chrome配置文件,等等。

为什么要这样做?通过保持具体和特定,您可以选择只目标您想要的内容。如果您只想要Chrome和Firefox信息,您可以只运行那些目标。

但是,如果您不知道使用什么浏览器,或者您想要目标文件系统、注册表配置单元和跳转列表,该怎么办?

这就是复合目标的概念发挥作用的地方。让我们看一个:

1
2
3
4
5
6
7
Name: WebBrowsers
Author: Eric Zimmerman
Description: Collects artifacts from Internet Explorer, Chrome, and Firefox
Targets:
  - InternetExplorer.tkape
  - Chrome.tkape
  - Firefox.tkape

那么这里发生了什么?注意,我们没有使用文件路径、通配符等,而是引用了其他目标文件!

当KAPE运行时,它将自动使用该目标文件中的内容扩展上述每个目标。在这种情况下,InternetExplorer.tkape、Chrome.tkape和Firefox.tkape中的细节将被扩展,每个文件将被定位和复制!如果特定浏览器未安装,该数据将不会被找到。

考虑到这一点,您可以看到这种方法的强大和灵活性,因为您可以决定收集什么以及何时收集。如果您只想要注册表配置单元和事件日志,在一个名为HivesAndEventLogs.tkape的新目标中使用这两个目标,然后使用该目标。

还有一个特殊目标!All,它简单地定位所有其他目标并运行它们全部。虽然这有效,但不会像使用更具体的目标集进行收集那样快。

模块

简单来说,模块运行程序。更具体地说,它们运行一个单一程序。理解这一点很重要,因为模块是为单一目的编写的。

让我们看一个示例。在这种情况下,PECmd的模块如下所示:

1
2
3
4
5
6
7
8
9
Name: PECmd
Author: Eric Zimmerman
Description: Parses Prefetch files
Category: ProgramExecution
ExportFormat: csv
Processors:
  - CommandLine: PECmd.exe -f %sourceFile% --csv %destinationDirectory%
  - CommandLine: PECmd.exe -f %sourceFile% --json %destinationDirectory%
  - CommandLine: PECmd.exe -f %sourceFile% --html %destinationDirectory%

与目标一样,模块的完整规范在手册中概述,但非常简单。

Processors组包含PECmd的一个或多个条目。在这种情况下,有三个,因为PECmd知道如何以三种不同格式导出数据。查看标题,您可以看到ExportFormat设置为’csv’,这意味着将使用列表中的第一个处理器(带有–csv开关的那个)。

变量名

被%包围的值是KAPE在运行时替换的变量。所有可用变量在手册中以及所有包含的模块中指定以供参考和示例,但非常简单。

  • %sourceDirectory% 将被替换为–msource的值。
  • %destinationDirectory% 将被替换为–mdest加上模块的类别(在PECmd的情况下为ProgramExecution)

这允许KAPE无论源或目标目录、驱动器号、UNC路径等如何都能工作。

处理重定向

这是模块的另一个示例。它有些类似,但注意在处理器下有一个额外的属性ExportFile。

1
2
3
4
5
6
7
Name: ExampleModule
Author: Eric Zimmerman
Description: Example module with redirection
Category: Example
Processors:
  - CommandLine: someprogram.exe %sourceFile%
    ExportFile: %destinationDirectory%\output.txt

命令行在这里非常具体,只处理单个文件。这里的重点不是命令行,而是ExportFile的存在。

ExportFile用于程序不知道如何直接将其输出保存到文件,并依赖命令行重定向(例如通过>)来保存结果。由于程序的这种限制,您必须使用ExportFile属性指定保存程序输出的位置。

注意:您不能在CommandLine上使用重定向!不要尝试在CommandLine属性中做这样的事情:

1
D:\temp\HP._lnk > hpout.txt

因为它不会工作。

这里的要点是,您在这两种情况下都得到覆盖:程序可以直接写入文件,如PECmd所做,或者对于使用重定向的程序,您只需使用ExportFile来捕获输出。您可以将ExportFile属性的值命名为任何您喜欢的文件名。

运行 KAPE

KAPE需要管理员权限,因此首先要做的是打开管理员级别的命令提示符或PowerShell窗口。从那里,单独运行KAPE显示所有可用选项。

在我们看到它使用之前,让我们花点时间看看选项:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
--tsource      Source for target operations
--tdest        Destination for target operations
--target       Target to use
--tlist        List available targets
--tdetail      Show details for targets
--tflush       Flush target destination before writing
--vhd          Create VHD container
--vhdx         Create VHDX container
--vss          Process volume shadow copies
--msource      Source for module operations
--mdest        Destination for module operations
--module       Module to use
--mlist        List available modules
--mdetail      Show details for modules
--mflush       Flush module destination before writing
--mef          Override export format for modules
--debug        Enable debug output
--trace        Enable trace output

虽然有相当多的选项,但事情通常分为两个主要类别:目标和模块。

目标选项以’t’开头,模块选项以’m’开头,并如上所示分组。

对于目标,–tsource、–tdest和–target都是必需的。

对于模块,–msource、–mdest和–module是必需的。然而,有一个例外,我们稍后会看到。当同时使用目标和模块选项时,您可以省略–msource,KAPE会自动将–tdest的值分配给–msource。

查看可用目标和模块

注意有两组开关列出目标和模块:

  • –tlist 和 –tdetail
  • –mlist 和 –mdetail

’list’命令将转储目标名称和每个目标或模块的其他信息。这里我们看到–tlist在行动:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
> kape.exe --tlist

Available targets:
  - Amcache.tkape
  - AppCompatCache.tkape
  - BrowserHistory.tkape
  - EventLogs.tkape
  - EvidenceOfExecution.tkape
  - FileSystemArtifacts.tkape
  - Firefox.tkape
  - InternetExplorer.tkape
  - JumpLists.tkape
  - LNKFiles.tkape
  - MFT.tkape
  - Outlook.tkape
  - Prefetch.tkape
  - RegistryHives.tkape
  - ShellBags.tkape
  - ShimCache.tkape
  - Skype.tkape
  - SystemRestorePoints.tkape
  - UserAssist.tkape
  - WebBrowsers.tkape
  - WindowsTimeline.tkape

如果我们添加–tdetail到命令,我们得到这个:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
> kape.exe --tlist --tdetail

Available targets:
  - Amcache.tkape
    Author: Eric Zimmerman
    Description: Collects Amcache.hve files
    Files:
      - Path: C:\Windows\AppCompat\Programs\Amcache.hve
      - Path: C:\Windows\AppCompat\Programs\Amcache.hve.*
  - AppCompatCache.tkape
    Author: Eric Zimmerman
    Description: Collects AppCompatCache (ShimCache) data from SYSTEM hive
    Files:
      - Path: C:\Windows\System32\config\SYSTEM
  - BrowserHistory.tkape
    Author: Eric Zimmerman
    Description: Collects browser history artifacts from various browsers
    Targets:
      - InternetExplorer.tkape
      - Chrome.tkape
      - Firefox.tkape
  ...

注意,当使用–tdetail时,每个目标内的所有路径信息也会显示。

–mlist和–mdetail以相同方式工作,除了它们显示可用模块及其细节。

目标源选项

–tsource开关告诉KAPE从哪里开始查找文件。这可以是硬盘、外部驱动器、网络共享、F-Response映射的远程磁盘、UNC路径、挂载的E01等。只要它可以使用Windows支持的路径表示法引用,它就会工作。

目标目的地选项

–tdest开关告诉KAPE在哪里创建它定位的目录和文件的副本。这是最简单的用例。

然而,KAPE也可以通过使用–vhd或–vhdx开关将找到的文件副本放置在VHD或VHDX(首选)容器中。在任何一种情况下,您还必须为容器提供一个基本名称。此基本名称将用于命名KAPE创建的容器。换句话说,这不是创建的容器的全名,而是其中的一部分。

使用此选项将如下所示:

1
kape.exe --tsource c --tdest c:\temp\tout --target evidenceofexecution --vhdx MyBaseNameExample

这将导致所有找到的文件被复制到VHDX容器中(位于C:\temp\tout下,命名为:

1
2019-02-13T172926_evidenceofexecution_MyBaseNameExample.vhdx

这里有几点需要注意。一是前面的时间戳。二是目标名称包含在文件名中(evidenceofexecution)。最后,我们在扩展名之前看到基本名称。

因为我们使用了VHDX容器,这允许我们简单地双击容器以在Windows中挂载它。这样做会导致出现一个新的驱动器号,如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Drive Label: 2019-02-13T172926_evidenceofexecution_MyBaseNameExample
Contents:
  - C
    - Windows
      - Prefetch
        - file1.pf
        - file2.pf
        - ...
  - CopyLog.csv
  - CopyLog.txt

(为了更容易看到,我只显示VHDX中存在的一些Prefetch文件,以说明布局。实际VHDX中有几十个更多的prefetch文件。)

上图来自Directory Opus(Windows上最好的文件管理器!)。然而,图像显示的是VHDX中以分组格式存在的目录和文件,这比使用文件资源管理器更容易看到发生了什么。

首先,注意驱动器标签显示容器制作的日期。向右看,我们看到VHDX容器中的文件和目录列表。完整路径已从C开始重新创建,因为我们通过–tsource告诉KAPE处理C驱动器。

除了文件本身,注意还有两个CopyLog文件,一个是文本文件,一个是CSV文件。这些包含KAPE所做操作的完整细节:

CopyLog.txt:

1
2
3
Source Path,Destination Path,Source SHA-1,Source Created,Source Modified,Source Accessed
C:\Windows\Prefetch\file1.pf,C:\Windows\Prefetch\file1.pf,abc123...,2018-12-01 10:00:00,2018-12-01 10:00:00,2018-12-01 10:00:00
...

CopyLog.csv:

1
2
3
Source Path,Destination Path,Source SHA-1,Source Created,Source Modified,Source Accessed,DeferredCopy,Copy Time (ms)
C:\Windows\Prefetch\file1.pf,C:\Windows\Prefetch\file1.pf,abc123...,2018-12-01 10:00:00,2018-12-01 10:00:00,2018-12-01 10:00:00,False,10
...

注意两者都包括源路径、目标路径、源SHA-1和源文件的时间戳。CSV还添加了与复制文件所需时间以及文件是否被锁定(DeferredCopy列)相关的细节。

所有文件本身,如前所述,都有它们的完整时间戳应用于它们。查看容器内的prefetch文件,属性如下所示:

1
2
3
4
File: file1.pf
Created: December 1, 2018 10:00:00 AM
Modified: December 1, 2018 10:00:00 AM
Accessed: December 1, 2018 10:00:00 AM

注意时间戳来自12月,而不是2月13日,即容器创建的时间。

VHD选项工作方式完全相同,除了您最终得到一个VHD容器。

注意:第一次在Windows中挂载容器时,必须在读写模式下完成!一旦最初挂载和卸载,您可以使用PowerShell将容器挂载为只读,但第一次必须使用读写模式,否则Windows将无法识别文件系统。这对容器内的数据没有任何影响,只是VHDX文件本身。

要卸载容器,右键单击新驱动器号并选择弹出。

在上面的图像中,注意容器根目录中的目录是C驱动器。如果我们使用处理卷影副本的选项,我们将得到一组不同的目录。如果我们运行这个命令(与之前相同的命令,我们只是添加了–vss到最后):

1
kape.exe --tsource c --tdest c:\temp\tout --target evidenceofexecution --vhdx MyBaseNameExample --vss

当我们挂载VHDX时,我们会看到以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Drive Label: 2019-02-13T172926_evidenceofexecution_MyBaseNameExample
Contents:
  - C
    - Windows
      - Prefetch
        - file1.pf
        - file2.pf
        - ...
  - VSC1
    - Windows
      - Prefetch
        - file1.pf
        - file3.pf
        - ...
  - VSC2
    - Windows
      - Prefetch
        - file2.pf
        - file4.pf
        - ...
  - CopyLog.csv
  - CopyLog.txt

注意我们有三个额外的顶级目录,每个对应KAPE处理并找到匹配文件的VSC。当KAPE运行时,它看起来像这样:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
> kape.exe --tsource c --tdest c:\temp\tout --target evidenceofexecution --vhdx MyBaseNameExample --vss

KAPE v0.9.2.0
...
Found 3 VSCs
Processing VSC 1...
Processing VSC 2...
Processing VSC 3...
Found 1039 files total
Copied 829 files (210 duplicates based on SHA-1)
Time: 7.4243 seconds
Creating VHDX...
Zipping VHDX...
Time: 10.7241 seconds

在这里我们可以看到几个整洁的事情。一是KAPE,仅仅通过添加–vss开关,定位并挂载了C驱动器上的所有影子副本。然后它遍历C驱动器和每个VSC,沿途定位文件。它总共找到了1,039个文件,但由于重复的SHA-1哈希值,只复制了829个。整个操作耗时7.4243秒。

从这里,我们可以看到VHDX文件被创建然后压缩(这使其在传输时显著变小)。

总共,KAPE找到、去重并取证复制了829个文件,将它们放入VHDX容器,然后在10.7241秒内压缩它。

上面输出中要注意的另一件事是有几个文件被锁定。然而,这不是问题,因为您可以看到延迟的文件在最后被复制,没有任何错误。

您可以使用–zv开关通过添加–zv false到命令行来禁用容器的压缩。

最后,KAPE生成的VHD(x)文件可以放入像X-Ways Forensics这样的工具中,以进行立即、有针对性的分析!

其他目标选项

–tflush选项告诉KAPE在写入任何内容之前删除由–tdest指定的目录(如果存在)。这确保在KAPE将文件放置在那里之前,–tdest中没有其他文件或目录(总是好事)。

模块源选项

–msource开关告诉KAPE从哪里开始查找要处理的文件。这可以是硬盘、外部驱动器、网络共享、F-Response映射的远程磁盘、UNC路径、挂载的E01等,就像我们使用–tsource看到的那样。

这不一定是来自目标选项的目录,这意味着如果您想,您可以使用KAPE在运行系统上运行实时响应或针对挂载的E01,而不使用目标选项。

模块目的地选项

–mdest开关告诉KAPE指示处理器将文件保存到哪里。回想一下,模块针对文件运行程序。结果输出(例如csv、json或html文件)将保存在由–mdest指定的目录下的目录中。

其他模块选项

–mflush选项告诉KAPE在写入任何内容之前删除由–mdest指定的目录(如果存在)。这确保在模块将文件放置在那里之前,–mdest中没有其他文件或目录。

–mef开关允许您覆盖模块配置中指定的默认处理器。例如,如果您想要来自PECmd模块的json输出,您可以使用–mef json,KAPE将从模块中定义的可用处理器中选择适当的处理器。

考虑以下命令:

1
kape.exe --tsource c --tdest c:\temp\tout --target evidenceofexecution --tflush --mdest C:\Temp\mout --module PECmd --mflush

这将看起来像:

1
2
3
4
5
6
7
8
9
> kape.exe --tsource c --tdest c:\temp\tout --target evidenceofexecution --tflush --mdest C:\Temp\mout --module PECmd --mflush

KAPE v0.9.2.0
...
Found 1039 files total
Copied 829 files (210 duplicates based on SHA-1)
Time: 7.4243 seconds
Processing with PECmd...
Time: 2.6467 seconds

这与我们在目标模块中看到的类似,但查看复制完成后。KAPE开始使用PECmd模块处理数据。这将导致在–mdest中创建以下数据:

1
2
3
4
C:\Temp\mout
  - ProgramExecution
    - PECmd_Output.csv
    - PECmd_Summary.txt

由于Prefetch与执行证据相关,PECmd模块在模块文件中指定了ProgramExecution的类别。如果我们还运行了其他查看执行证据工作的模块,如ammcompatcache或amcache,那些结果将出现在同一目录中,因为这些模块也使用相同的类别。

上面显示的两个CSV可以在Timeline Explorer或您选择的任何其他程序中打开和分析。

注意,在这种情况下,找到、复制和处理所有prefetch文件并准备好分析花了巨大的2.6467秒。

如果我们添加–vss选项,它最终看起来像这样:

1
2
3
4
5
6
7
8
9
> kape.exe --tsource c --tdest c:\temp\tout --target evidenceofexecution --tflush --mdest C:\Temp\mout --module PECmd --mflush --vss

KAPE v0.9.2.0
...
Found 1039 files total
Copied 829 files (210 duplicates based on SHA-1)
Time: 7.4243 seconds
Processing with PECmd...
Time: 5.8383 seconds

在这种情况下,KAPE从VSCs找到并处理了几百个更多的prefetch文件,复制它们,并针对它们运行PECmd,耗时5.8383秒。

其他有用选项

–debug和–trace开关可以在编写自己的目标和模块时使用,以及用于在较慢链接上的进度指示器等。

–debug添加关于文件被找到、复制等的信息。

1
2
3
4
5
6
7
> kape.exe --tsource c --tdest c:\temp\tout --target evidenceofexecution --debug

KAPE v0.9.2.0
...
DEBUG: Found file C:\Windows\Prefetch\file1.pf
DEBUG: Copying file C:\Windows\Prefetch\file1.pf to c:\temp\tout\C\Windows\Prefetch\file1.pf
...

–trace向输出添加更多细节,包括KAPE扩展目标和模块到什么等。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
> kape.exe --tsource c --tdest c:\temp\tout --target evidenceofexecution --trace

KAPE v0.9.2.0
...
TRACE: Expanding target evidenceofexecution
TRACE: Target expanded to:
  - C:\Windows\Prefetch\*.pf
  - C:\Users\*\AppData\Local\Microsoft\Windows\UsrClass.dat
...
TRACE: Found 1039 files total
TRACE: Copied 829 files (210 duplicates based on SHA-1)
...

要查看KAPE做了多少工作,运行KAPE几次,同时启用–debug和–trace,然后与未使用任何开关时的ConsoleLog文件进行比较。

结合目标和模块

正如我们上面看到的,KAPE可以使用目标选项或模块选项。一个不依赖另一个。然而,两个选项可以同时使用。这基本上允许您构建自己的“收集和处理链”,可以做任何您想做的事情。

例如,假设您想要收集prefetch、注册表配置单元和跳转列表,然后运行PECmd、RECmd、JLECmd和Plaso来生成一个超级时间线。您可以通过构建一个目标来拉取必要的文件,然后构建一个模块来调用适当的模块来运行上述程序,非常容易地完成这一点。

命令行可能看起来像这样:

1
kape.exe --tsource c: --tdest L:\collect --target QuickTimeline --mdest L:\output --module QuickTimeline

那么这里发生了什么?“QuickTimeline”目标和模块从哪里来的?很简单,您创建它!记住目标和模块配置文件只是YAML,因此使用您最喜欢的文本编辑器,制作一个现有目标(如WebBrowsers)的副本,然后更新新文件以指向您想要的其他目标,像这样:

1
2
3
4
5
6
7
Name: QuickTimeline
Author: Your Name
Description: Collects artifacts for timeline analysis
Targets:
  - Prefetch.tkape
  - RegistryHives.tkape
  - JumpLists.tkape

从其中一个包含的模块文件开始,我们的新模块将以完全相同的方式处理:

1
2
3
4
5
6
7
8
9
Name: QuickTimeline
Author: Your Name
Description: Processes artifacts for timeline analysis
Category: Timeline
Processors:
  - CommandLine: PECmd.exe -f %sourceFile% --csv %destinationDirectory%
  - CommandLine: RECmd.exe -f %sourceFile% --csv %destinationDirectory%
  - CommandLine: JLECmd.exe -f %sourceFile% --csv %destinationDirectory%
  - CommandLine: plaso.exe -f %sourceFile% --output %destinationDirectory%

随着目标和模块的到位,我们只需如上例所示运行KAPE,KAPE完成其余工作!

KAPE将首先根据目标文件查找和复制所有文件,将它们全部复制到L:\collect,然后针对L:\collect中的文件调用每个处理器。每个程序的输出将保存到L:\output,其中将包含每个类别的目录。这些目录中的CSV可以加载到Timeline Explorer中并在几秒钟内进行分析!

运行此命令可能看起来像这样:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
> kape.exe --tsource c: --tdest L:\collect --target QuickTimeline --mdest L:\output --module QuickTimeline

KAPE v0.9.2.0
...
Found 1039 files total
Copied 829 files (210 duplicates based on SHA-1)
Time: 7.4243 seconds
Processing with PECmd...
Time: 2.6467 seconds
Processing with RECmd...
Time: 3.1234 seconds
Processing with JLECmd...
Time: 1.2345 seconds
Processing with plaso...
ERROR: plaso.exe not found
Time: 0.0000 seconds

我们之前看到了很多,但注意,在我的情况下,我没有将二进制文件放在正确的位置以使plaso模块正常工作。在这种情况下,KAPE告诉我们这一点,但它不会导致KAPE功能不正常。

这里要注意的另一件事是找到了几个其他处理器并执行了。

在这种情况下,–mdest将看起来像这样:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
L:\output
  - ProgramExecution
    - PECmd_Output.csv
    - PECmd_Summary.txt
  - Registry
    - RECmd_Output.csv
    - RECmd_Summary.txt
  - JumpLists
    - JLECmd_Output.csv
    - JLECmd_Summary.txt

其他用例

KAPE有特殊选项,如%d,可以在命令行上用于目标和模块目的地路径,像这样:

1
kape.exe --tsource c: --tdest L:\collect%d --target EvidenceOfExecution --mdest L:\output%d --module PECmd

首先,注意我们没有指定–msource。当–msource未在命令行上给出时,它从–tdest的值继承。您可以看到为什么在使用%d时这是必要的,因为您事先不知道用于–msource的文件夹名称。=)

那么这个在做什么?当KAPE运行时,它将%d替换为形式为YYYYMMddHHmmss的时间戳,因此我们真正最终得到的是:

1
L:\Collect20190213113605

1
L:\Output20190213113605

注意每个文件夹上的时间戳也匹配。

使用这种方法,您可以使用计划任务自动复制和处理您想要的任何文件,在任何您想要的间隔(可能每小时将prefetch转储到根目录,KAPE将处理添加时间戳)。

如果您看过Dave Cowen的测试厨房,并看到他手动定位和提取文件到不同的名称,考虑使用KAPE和Syscache目标的能力,每15分钟自动收集相关的注册表配置单元和其他文件(或按需,通过重复命令),然后比较每个的内容以找到更新发生的触发器。

此过程也可用于通过写入只读Google驱动器或Dropbox共享等,随时间自动查找和打包证据的VHDX文件。换句话说,您可以创建注册表配置单元、prefetch、文件系统数据等的示例数据集到VHDX容器中,供人们测试他们的工具、验证工具等。

另一种情况是需要与某人共享注册表配置单元。您可以使用RegistryHives目标以及–vhdx,在几秒钟内,您有一个很好的包发送给需要它的人。

用例是无限的,这真的只是可能性的表面。

最后但同样重要的是,使其更易于使用。

KAPE本质上是一个命令行工具,一旦您看到基础知识,就不难使用。

话虽如此,KAPE有一个辅助帮助程序gkape,它包装了命令行版本,使其更易于使用和熟悉。

主界面看起来像这样:

1
2
3
4
[ ] Target options
[ ] Module options
[ ] Other options
[Execute] [Copy command]

当选项启用时,其他部分打开。这里我们看到当目标和模块选项被选中并且一些必需的属性(以红色轮廓)被填充时,事情如何变化:

1
2
3
4
5
6
7
8
9
[X] Target options
  --tsource: C:
  --tdest: L:\collect
  --target: EvidenceOfExecution
[X] Module options
  --mdest: L:\output
  --module: PECmd
[ ] Other options
[Execute] [Copy command]

随着选项被填充,命令行在底部构建。继续选择所需的选项,我们最终会得到这个:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[X] Target options
  --tsource: C:
  --tdest: L:\collect
  --target: EvidenceOfExecution
  --tflush: true
  --vss: true
[X] Module options
  --mdest: L:\output
  --module: PECmd
  --mflush: true
[ ] Other options
[Execute] [Copy command]

Command line: kape.exe --tsource C: --tdest L:\collect --target EvidenceOfExecution --tflush --vss --mdest L:\output --module PECmd --mflush

当构建了有效的命令行时,Execute和Copy command按钮被启用。

单击Execute将在新窗口中运行KAPE:

1
2
3
4
> kape.exe --tsource C: --tdest L:\collect --target EvidenceOfExecution --tflush --vss --mdest L:\output --module PECmd --mflush

KAPE v0.9.2.0
...

KAPE的所有其他方面工作方式完全相同。转到–tdest和/或–mdest将显示KAPE收集和处理的所有文件。

KAPE现在对所有人免费可用!

最后,有一个公共GitHub存储库,位于https://github.com/EricZimmerman/KapeFiles,如果您编写了有用的目标和模块并希望与社区分享,您可以向其中提交拉取请求(请这样做!)

您可以在这里获取KAPE。我希望您发现它是您工具箱中有用的工具!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计