Windows Artifacts

Windows证据

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)

支持HackTricks的其他方式:

通用Windows证据

Windows 10通知

在路径\Users\<username>\AppData\Local\Microsoft\Windows\Notifications中,您可以找到数据库appdb.dat(Windows周年更新前)或wpndatabase.db(Windows周年更新后)。

在这个SQLite数据库中,您可以找到包含所有通知(以XML格式)的Notification表,其中可能包含有趣的数据。

时间轴

时间轴是Windows的一个特性,提供了访问的网页、编辑的文档和执行的应用程序的时间顺序历史记录

数据库位于路径\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db。可以使用SQLite工具或工具WxTCmd打开此数据库,该工具生成2个文件,可以使用工具TimeLine Explorer 打开

ADS(备用数据流)

下载的文件可能包含ADS Zone.Identifier,指示它是如何从内部网络、互联网等下载的。一些软件(如浏览器)通常会放置更多信息,如文件下载的URL

文件备份

回收站

在Vista/Win7/Win8/Win10中,回收站可以在驱动器根目录(C:\$Recycle.bin)中找到。 当在此文件夹中删除文件时,会创建2个特定文件:

  • $I{id}:文件信息(删除日期)

  • $R{id}:文件内容

有了这些文件,您可以使用工具Rifiuti获取已删除文件的原始地址和删除日期(对于Vista – Win10,请使用rifiuti-vista.exe)。

.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle

阴影副本

阴影副本是包含在 Microsoft Windows 中的技术,可以在计算机文件或卷正在使用时创建备份副本或快照。

这些备份通常位于文件系统根目录下的 \System Volume Information 中,名称由以下图像中显示的UIDs组成:

使用 ArsenalImageMounter 挂载取证镜像,可以使用工具 ShadowCopyView 来检查阴影副本,甚至从阴影副本备份中提取文件

注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore 包含不备份的文件和键:

注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS 还包含有关Volume Shadow Copies的配置信息。

Office 自动保存文件

您可以在以下位置找到 office 自动保存文件:C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\

Shell 项目

Shell 项目是包含有关如何访问另一个文件的信息的项目。

最近文档 (LNK)

当用户在以下位置打开、使用或创建文件时,Windows会自动创建这些快捷方式

  • Win7-Win10: C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\

  • Office: C:\Users\\AppData\Roaming\Microsoft\Office\Recent\

创建文件夹时,还会创建指向文件夹、父文件夹和祖父文件夹的链接。

这些自动创建的链接文件包含有关源文件的信息,例如它是文件还是文件夹,该文件的MAC时间,文件存储位置的卷信息目标文件夹的信息。这些信息可用于在文件被删除时恢复这些文件。

此外,链接文件的创建日期是原始文件首次使用的时间,链接文件的修改日期是原始文件最后使用的时间

您可以使用 LinkParser 来检查这些文件。

在此工具中,您将找到2组时间戳:

  • 第一组:

  1. 文件修改日期

  2. 文件访问日期

  3. 文件创建日期

  • 第二组:

  1. 链接修改日期

  2. 链接访问日期

  3. 链接创建日期。

第一组时间戳引用文件本身的时间戳。第二组引用链接文件的时间戳

您可以使用 Windows CLI 工具 LECmd.exe 获取相同的信息。

LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs

跳转列表

这些是每个应用程序指示的最近文件。这是您可以在每个应用程序上访问的最近使用的文件列表。它们可以自动创建或自定义

自动创建的跳转列表存储在C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\中。跳转列表的命名遵循格式{id}.autmaticDestinations-ms,其中初始ID是应用程序的ID。

自定义跳转列表存储在C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\中,通常是因为应用程序通常发生了重要事件(可能标记为收藏)。

任何跳转列表的创建时间表示文件被访问的第一次时间修改时间表示最后一次时间

您可以使用JumplistExplorer检查跳转列表。

请注意,JumplistExplorer提供的时间戳与跳转列表文件本身相关

Shellbags

点击此链接了解什么是shellbags。

使用Windows USB设备

通过以下方式可以识别是否使用了USB设备:

  • Windows最近文件夹

  • Microsoft Office最近文件夹

  • 跳转列表

请注意,有些LNK文件指向WPDNSE文件夹而不是原始路径:

文件夹WPDNSE中的文件是原始文件的副本,因此在PC重新启动后不会保留,并且GUID是从shellbag中获取的。

注册表信息

查看此页面以了解哪些注册表键包含有关连接的USB设备的有趣信息。

setupapi

检查文件C:\Windows\inf\setupapi.dev.log以获取有关USB连接产生的时间戳(搜索Section start)。

USB Detective

USBDetective可用于获取连接到图像的USB设备的信息。

插拔清理

名为“插拔清理”的计划任务主要用于删除过时的驱动程序版本。与其指定的保留最新驱动程序包版本的目的相反,在线资源表明它还会针对在过去30天内未连接的驱动程序进行操作。因此,未连接在过去30天内的可移动设备的驱动程序可能会被删除。

该任务位于以下路径: C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup

提供了描述任务内容的屏幕截图:

任务的关键组件和设置:

  • pnpclean.dll:此DLL负责实际的清理过程。

  • UseUnifiedSchedulingEngine:设置为TRUE,表示使用通用任务调度引擎。

  • MaintenanceSettings

  • Period('P1M'):指示任务计划程序在常规自动维护期间每月启动清理任务。

  • Deadline('P2M'):如果任务连续两个月失败,则指示任务计划程序在紧急自动维护期间执行任务。

此配置确保定期维护和清理驱动程序,并提供在连续失败的情况下重新尝试任务的规定。

更多信息请查看:https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html

电子邮件

电子邮件包含2个有趣的部分:邮件头和邮件内容。在邮件头中,您可以找到以下信息:

  • 发送了电子邮件(电子邮件地址、IP、重定向电子邮件的邮件服务器)

  • 电子邮件发送的时间

此外,在ReferencesIn-Reply-To头中,您可以找到消息的ID:

Windows邮件应用

此应用程序以HTML或文本格式保存电子邮件。您可以在\Users\<username>\AppData\Local\Comms\Unistore\data\3\的子文件夹中找到电子邮件。电子邮件以.dat扩展名保存。

电子邮件的元数据联系人可以在EDB数据库中找到:\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol

将文件的扩展名从.vol更改为.edb,然后您可以使用工具ESEDatabaseView打开它。在Message表中,您可以查看电子邮件。

Microsoft Outlook

当使用Exchange服务器或Outlook客户端时,将会有一些MAPI头:

  • Mapi-Client-Submit-Time:发送电子邮件时的系统时间

  • Mapi-Conversation-Index:线程的子消息数量和每个线程消息的时间戳

  • Mapi-Entry-ID:消息标识符。

  • Mappi-Message-FlagsPr_last_Verb-Executed:有关MAPI客户端的信息(消息已读?未读?已回复?重定向?离开办公室?)

在Microsoft Outlook客户端中,所有发送/接收的消息、联系人数据和日历数据都存储在以下PST文件中:

  • %USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook(WinXP)

  • %USERPROFILE%\AppData\Local\Microsoft\Outlook

注册表路径HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook指示正在使用的文件。

您可以使用工具Kernel PST Viewer打开PST文件。

Microsoft Outlook OST文件

当Microsoft Outlook配置为使用IMAP或Exchange服务器时,将生成一个OST文件,存储与PST文件类似的信息。此文件与服务器同步,保留最近12个月的数据,最大大小为50GB,位于与PST文件相同的目录中。要查看OST文件,可以使用Kernel OST viewer

检索附件

丢失的附件可能可以从以下位置恢复:

  • 对于IE10%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook

  • 对于IE11及更高版本%APPDATA%\Local\Microsoft\InetCache\Content.Outlook

Thunderbird MBOX文件

Thunderbird使用MBOX文件存储数据,位于\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles

图像缩略图

  • Windows XP和8-8.1:访问带有缩略图的文件夹会生成一个thumbs.db文件,即使删除后仍会存储图像预览。

  • Windows 7/10:通过UNC路径通过网络访问时会创建thumbs.db

  • Windows Vista及更高版本:缩略图预览集中在%userprofile%\AppData\Local\Microsoft\Windows\Explorer中,文件名为thumbcache_xxx.dbThumbsviewerThumbCache Viewer是查看这些文件的工具。

Windows注册表信息

Windows注册表存储广泛的系统和用户活动数据,包含在以下文件中:

  • %windir%\System32\Config用于各种HKEY_LOCAL_MACHINE子键。

  • %UserProfile%{User}\NTUSER.DAT用于HKEY_CURRENT_USER

  • Windows Vista及更高版本在%Windir%\System32\Config\RegBack\中备份HKEY_LOCAL_MACHINE注册表文件。

  • 此外,程序执行信息存储在自Windows Vista和Windows 2008 Server起的%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT中。

工具

一些工具可用于分析注册表文件:

  • 注册表编辑器:它已安装在Windows中。这是一个GUI,可用于浏览当前会话的Windows注册表。

  • 注册表浏览器:它允许您加载注册表文件并通过GUI浏览它们。它还包含突出显示具有有趣信息的键的书签。

  • RegRipper:同样,它具有GUI,允许浏览加载的注册表,并包含突出显示已加载注册表中有趣信息的插件。

  • Windows注册表恢复:另一个能够提取注册表中重要信息的GUI应用程序。

恢复已删除的元素

当键被删除时,它会被标记为已删除,但直到需要其占用的空间时才会被删除。因此,使用工具如注册表浏览器可以恢复这些已删除的键。

最后写入时间

每个键-值包含一个指示上次修改时间的时间戳

SAM

文件/注册表SAM包含系统的用户、组和用户密码哈希。

SAM\Domains\Account\Users中,您可以获取用户名、RID、上次登录、上次登录失败、登录计数器、密码策略以及帐户创建时间。要获取哈希值,您还需要文件/注册表SYSTEM

Windows注册表中的有趣条目

Interesting Windows Registry Keys

执行的程序

基本Windows进程

此文章中,您可以了解常见的Windows进程,以便检测可疑行为。

Windows最近应用程序

在注册表NTUSER.DAT的路径Software\Microsoft\Current Version\Search\RecentApps中,您可以找到有关执行的应用程序上次执行时间以及启动次数的信息。

BAM(后台活动调节器)

您可以使用注册表编辑器打开SYSTEM文件,在路径SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}中,您可以找到有关每个用户执行的应用程序的信息(请注意路径中的{SID}),以及它们执行的时间(时间在注册表的数据值中)。

Windows预取

预取是一种技术,允许计算机静默获取显示内容所需的资源,用户可能在不久的将来访问,以便更快地访问资源。

Windows预取包括创建已执行程序的缓存,以便能够更快地加载它们。这些缓存作为.pf文件创建在路径:C:\Windows\Prefetch中。在XP/VISTA/WIN7中限制为128个文件,在Win8/Win10中为1024个文件。

文件名创建为{program_name}-{hash}.pf(哈希基于可执行文件的路径和参数)。在W10中,这些文件是压缩的。请注意,文件的存在仅表示程序曾被执行

文件C:\Windows\Prefetch\Layout.ini包含预取文件夹的名称。此文件包含有关执行次数执行日期和程序打开的文件的信息。

要检查这些文件,您可以使用工具PEcmd.exe

.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"

Superprefetch

Superprefetch的目标与prefetch相同,通过预测下一个要加载的内容来加快程序加载速度。但是,它并不取代prefetch服务。 该服务会在C:\Windows\Prefetch\Ag*.db中生成数据库文件。

在这些数据库中,您可以找到程序的名称执行次数打开的文件访问的卷完整路径时间范围时间戳

您可以使用工具CrowdResponse访问这些信息。

SRUM

系统资源使用监视器(SRUM)监视进程消耗的资源。它出现在W8中,并将数据存储在位于C:\Windows\System32\sru\SRUDB.dat的ESE数据库中。

它提供以下信息:

  • AppID和路径

  • 执行该进程的用户

  • 发送字节

  • 接收字节

  • 网络接口

  • 连接持续时间

  • 进程持续时间

此信息每60分钟更新一次。

您可以使用工具srum_dump从此文件中获取日期。

.\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum

AppCompatCache (ShimCache)

AppCompatCache,也被称为ShimCache,是Microsoft开发的应用程序兼容性数据库的一部分,用于解决应用程序兼容性问题。该系统组件记录了各种文件元数据,包括:

  • 文件的完整路径

  • 文件大小

  • 最后修改时间(位于**$Standard_Information** (SI)下)

  • ShimCache的最后更新时间

  • 进程执行标志

这些数据存储在注册表中的特定位置,取决于操作系统的版本:

  • 对于XP,数据存储在SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache下,容量为96个条目。

  • 对于Server 2003以及Windows版本2008、2012、2016、7、8和10,存储路径为SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache,分别容纳512和1024个条目。

要解析存储的信息,建议使用AppCompatCacheParser工具

Amcache

Amcache.hve文件本质上是一个记录在系统上执行的应用程序详细信息的注册表文件。通常位于C:\Windows\AppCompat\Programas\Amcache.hve

该文件存储了最近执行的进程的记录,包括可执行文件的路径和它们的SHA1哈希值。这些信息对于跟踪系统上应用程序的活动至关重要。

要提取和分析Amcache.hve中的数据,可以使用AmcacheParser工具。以下命令是使用AmcacheParser解析Amcache.hve文件内容并以CSV格式输出结果的示例:

AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder

最有趣的CSV文件是Amcache_Unassociated file entries,因为它提供了关于未关联文件条目的丰富信息。

RecentFileCache

此工件仅可在W7中找到,位于C:\Windows\AppCompat\Programs\RecentFileCache.bcf,其中包含有关某些二进制文件最近执行的信息。

您可以使用工具RecentFileCacheParse来解析该文件。

计划任务

您可以从C:\Windows\TasksC:\Windows\System32\Tasks中提取它们,并将其读取为XML。

服务

您可以在注册表中的SYSTEM\ControlSet001\Services下找到它们。您可以查看将要执行的内容以及执行时间。

Windows商店

安装的应用程序可以在\ProgramData\Microsoft\Windows\AppRepository\中找到 此存储库中有一个日志,其中包含系统中安装的每个应用程序,存储在数据库**StateRepository-Machine.srd**中。

在此数据库的Application表中,可以找到列:"Application ID"、"PackageNumber"和"Display Name"。这些列包含有关预安装和已安装应用程序的信息,并且可以查找是否卸载了某些应用程序,因为已安装应用程序的ID应该是连续的。

还可以在注册表路径Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\找到已安装的应用程序 以及在Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\找到卸载的应用程序

Windows事件

Windows事件中显示的信息包括:

  • 发生了什么

  • 时间戳(UTC + 0)

  • 涉及的用户

  • 涉及的主机(主机名、IP)

  • 访问的资产(文件、文件夹、打印机、服务)

日志位于Windows Vista之前的C:\Windows\System32\config中,在Windows Vista之后位于C:\Windows\System32\winevt\Logs中。在Windows Vista之前,事件日志以二进制格式存储,在Windows Vista之后,它们以XML格式存储,并使用**.evtx**扩展名。

事件文件的位置可以在SYSTEM注册表中的**HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}**中找到。

可以使用Windows事件查看器(eventvwr.msc)或其他工具如Event Log Explorer Evtx Explorer/EvtxECmd来查看这些事件

了解Windows安全事件日志记录

安全配置文件中记录的访问事件位于C:\Windows\System32\winevt\Security.evtx。此文件的大小可调整,当达到容量时,旧事件将被覆盖。记录的事件包括用户登录和注销、用户操作、安全设置更改,以及文件、文件夹和共享资产的访问。

用户身份验证的关键事件ID:

  • EventID 4624:表示用户成功验证。

  • EventID 4625:表示验证失败。

  • EventIDs 4634/4647:代表用户注销事件。

  • EventID 4672:表示使用管理员权限登录。

EventID 4634/4647中的子类型:

  • Interactive (2):直接用户登录。

  • Network (3):访问共享文件夹。

  • Batch (4):执行批处理过程。

  • Service (5):服务启动。

  • Proxy (6):代理身份验证。

  • Unlock (7):使用密码解锁屏幕。

  • Network Cleartext (8):明文密码传输,通常来自IIS。

  • New Credentials (9):使用不同凭据进行访问。

  • Remote Interactive (10):远程桌面或终端服务登录。

  • Cache Interactive (11):使用缓存凭据登录,无需与域控制器联系。

  • Cache Remote Interactive (12):使用缓存凭据远程登录。

  • Cached Unlock (13):使用缓存凭据解锁。

EventID 4625的状态和子状态代码:

  • 0xC0000064:用户名不存在 - 可能指示用户名枚举攻击。

  • 0xC000006A:正确的用户名但密码错误 - 可能是密码猜测或暴力破解尝试。

  • 0xC0000234:用户帐户被锁定 - 可能是多次登录失败导致的暴力破解攻击。

  • 0xC0000072:帐户已禁用 - 未经授权的尝试访问已禁用的帐户。

  • 0xC000006F:在允许的时间之外登录 - 表示尝试在设置的登录时间之外访问,可能是未经授权访问的迹象。

  • 0xC0000070:违反工作站限制 - 可能是尝试从未经授权的位置登录。

  • 0xC0000193:帐户过期 - 使用已过期用户帐户的访问尝试。

  • 0xC0000071:密码已过期 - 使用过时密码的登录尝试。

  • 0xC0000133:时间同步问题 - 客户端和服务器之间存在较大的时间差异,可能表明更复杂的攻击,如票据传递攻击。

  • 0xC0000224:需要强制更改密码 - 频繁的强制更改可能表明试图破坏帐户安全性。

  • 0xC0000225:表示系统错误而不是安全问题。

  • 0xC000015b:拒绝的登录类型 - 使用未经授权的登录类型进行访问尝试,例如用户尝试执行服务登录。

EventID 4616:

  • 时间更改:修改系统时间,可能混淆事件时间轴。

EventID 6005和6006:

  • 系统启动和关闭:EventID 6005表示系统启动,而EventID 6006表示系统关闭。

EventID 1102:

  • 日志删除:清除安全日志,通常是掩盖非法活动的红旗。

用于USB设备跟踪的EventID:

  • 20001 / 20003 / 10000:USB设备首次连接。

  • 10100:USB驱动程序更新。

  • EventID 112:USB设备插入时间。

有关模拟这些登录类型和凭据转储机会的实际示例,请参阅Altered Security的详细指南

事件详细信息,包括状态和子状态代码,可进一步了解事件原因,特别是Event ID 4625中的内容。

恢复Windows事件

为增加恢复已删除Windows事件的机会,建议直接拔掉嫌疑计算机的电源以关闭它。推荐使用指定.evtx扩展名的恢复工具Bulk_extractor来尝试恢复此类事件。

通过Windows事件识别常见攻击

有关使用Windows事件ID识别常见网络攻击的全面指南,请访问Red Team Recipe

暴力破解攻击

通过多个EventID 4625记录识别,如果攻击成功,则会跟随EventID 4624。

时间更改

通过EventID 4616记录,系统时间的更改可能会使取证分析复杂化。

USB设备跟踪

用于USB设备跟踪的有用的系统EventID包括用于初始使用的20001/20003/10000,用于驱动程序更新的10100,以及来自DeviceSetupManager的插入时间戳的EventID 112。

系统电源事件

EventID 6005表示系统启动,而EventID 6006表示系统关闭。

日志删除

安全EventID 1102表示日志删除,这是取证分析的关键事件。

最后更新于