Home - ZKAFKA/DFIR-Wiki GitHub Wiki

DFIR:Digital Forensics and Incident Response

现场保存

systeminfo >c:\sysinfo.txt
netstat -ano >c:\net.txt
tasklist >c:\task.txt
net user >c:\user.txtxcopy %systemroot%\system32\winevt\logs\*  C:\eventlog
reg export <keyname> <filename>

Process Monitor [More]

Autoruns [More]

Tcpview [More]

DumpIt [More]

Windows事件日志

Windows事件查看器:win+R > eventvwr.msc

Windows事件说明

位置

C:\Windows\System32\winevt

工具

Log Parser [Download]

LogParser Lizard [Download]

Event Log Explorer [Download]

计划任务

列出所有任务

cmd:
schtasks.exe

powershell:
Get-ScheduledTask

根据文件夹列出所有任务

Get-ScheduledTask -TaskPath "\"

根据任务名查看任务详细信息

schtasks.exe /query /v /tn test /fo list
位置

%SystemRoot%\System32\Tasks

注册表项

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache

at命令创建的计划任务

Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\At1

计划任务安全描述符(SD)

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Schedule\TaskCache\Tree{TaskName}\SD

计划任务隐藏(taskschd.msc、schtasks 、系统API)
  • 修改 HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Schedule\TaskCache\Tree 下任务的Index值为0,删除 %SystemRoot%\System32\Tasks 下任务对应的 XML 文件。
  • 删除注册表中的SD项 HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Schedule\TaskCache\Tree\{TaskName}\SD ,删除 %SystemRoot%\System32\Tasks 下任务对应的 XML 文件。

Recent

win+r 输入 recent。

显示最近访问的文件列表。

Prefetch

预读取文件,pf文件包含了可执行文件的名称、路径、调用DLL文件的列表、上次执行时间、运行次数等信息。当用户首次运行某个应用程序的时候,Windows操作系统的Windows Cache Manager程序会跟踪记录应用程序启动过程中所需的代码和数据(主要是DLL),然后由一个名为NTKRNLPA.exe的核心进程将在内存中跟踪的数据以pf文件的形式保存下来。当用户下一次运行相同程序时候,系统会首先读取pf文件将必要的数据和代码加载到内存中,以加快程序的启动过程。

位置

%SystemRoot%\Prefetch

工具

PECmd [Download]

Windows Error Reporting

应用错误、内核故障、无响应的应用程序及其他应用特定问题

位置

C:\ProgramData\Microsoft\Windows\WER\ReportArchive

C:\Users\{user}\AppData\Local\Microsoft\Windows\WER\ReportArchive

C:\ProgramData\Microsoft\Windows\WER\ReportQueue

C:\Users\{user}\AppData\Local\Microsoft\Windows\WER\ReportQueue

Remote Desktop Protocol Cache

RDP连接缓存,保存连接界面的bitmap,仅保存在客户端上,不保存在服务端

位置

C:\Users\{user}\AppData\Local\Microsoft\Terminal Server Client\Cache

工具

BMC-Tools [Download]

RDP Cache Stitcher:可将bitmap文件进行拼图操作 [Download]

LNK

LNK快捷方式文件是其中一种Shell Item,当用户通过支持该功能的应用程序访问文件时,Windows操作系统会自动创建这类文件,也可以手动创建。LNK快捷方式文件通常包含已访问文件的一些元素据,比如文件名、文件大小、原始路径、时间戳、卷及系统信息(如驱动器类型及系统主机名)、网络信息(如网络共享路径)。

工具

LECmd [Download]

示例
  • 用户搜索 lnk:用户在资源管理器中搜索的对象会在以下目录下生成 lnk 文件,可用来进行分析

    C:\Users\{user}\AppData\Roaming\Microsoft\Windows\Recent\

Jump Lists

Jump Lists包含了最近访问应用和文件的记录信息。

位置

C:\Users\{user}\AppData\Roaming\Microsoft\Windows\Recent\

工具

JLECmd [Download]

JumpList Explorer [Download]

Amcache.hve / RecentFileCache.bcf

Windows中的使用这两个文件来跟踪具有不同可执行文件的应用程序兼容性问题,它可用于确定可执行文件首次运行的时间和最后修改时间。

位置

win7、windows server 2008R2等系统保存位置(只包含了程序的创建时间、上次修改时间、上次访问时间和文件名):

C:\Windows\AppCompat\Programs\RecentFileCache.bcf

win8、win10、windows server 2012等系统保存位置(还包含了文件大小、版本、sha1、二进制文件类型等等信息,Win7系统安装KB2952664后,也会支持Amcache.hve):

C:\Windows\AppCompat\Programs\Amcache.hve

工具

RecentFileCacheParser [Download]

AmcacheParser [Download]

Application Shimming

攻击者可通过application shims来触发恶意程序内容以实现持久化或权限提升。执行程序时,会参考垫片缓存以确定程序是否需要使用垫片数据库 (.sdb)。shim 数据库会根据需要使用hook来重定向代码,IAT将被重定向到Shim,实现功能替换。

位置

由默认 Windows 安装程序 (sdbinst.exe) 安装的Shims列表:

C:\Windows\AppPatch\sysmain.sdb

HKLM\software\microsoft\windows nt\currentversion\appcompatflags\installedsdb

自定义的数据库:

C:\Windows\AppPatch\custom

C:\Windows\AppPatch\AppPatch64\Custom

HKLM\software\microsoft\windows nt\currentversion\appcompatflags\custom

工具

SDB Explorer [Download]

注册表

Run

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

开机自启动项

WordWheelQuery

\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery

用户在资源管理器(Explorer)中的搜索历史记录。

MRUListEx是注册表中的一个值,按顺序给出了最近常被访问的元素,本质上是资源管理器中的搜索顺序。

ShimCache(AppCompatCache)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache

用来识别应用程序兼容性问题。缓存数据跟踪文件路径、大小、上次修改时间和是否被执行(取决于操作系统)。

工具

AppCompatCacheParser [Download]

UserAssist

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

HKEY_USERS\{sid}\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

跟踪在资源管理器中打开的可执行文件和完整路径,保存了windows执行的程序的运行次数和上次执行日期和时间。命令行执行的程序不会保存在注册表中。

工具

UserAssistView [Download]

MUICache

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

HKEY_USERS\{sid}\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

每次开始使用新的应用程序时,Windows都会自动从exe文件的版本资源中提取应用程序名,并将其存储在名为MuiCache的注册表项中,供以后版本更新使用。

RunMRU

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

HKEY_USERS\{sid}\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

保存Win+R启动程序的历史记录。

AppCompatFlags Registry Keys

HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

保存所有以兼容模式启动的程序,包括以管理员身份运行的程序。

Background Activity Moderator (BAM)

HKLM\SYSTEM\CurrentControlSet\Services\bam\UserSettings\{sid}

BAM是一个控制后台应用程序活动的Windows服务,该服务存在于windows10 version 1709及以后版本中,记录包含了程序路径和上次执行日期和时间,其中执行日期键值类型为 FILETIME (64bit little Endian)

FILETIME 转化为 DATETIME
  • 脚本
from __future__ import division
import struct
import sys
from binascii import unhexlify
from datetime import datetime, timedelta

nt_timestamp = struct.unpack("<Q", unhexlify("dc14dd91be7cd501"))[0]
epoch = datetime(1601, 1, 1, 0, 0, 0)
nt_datetime = epoch + timedelta(microseconds=nt_timestamp / 10)

print(nt_datetime.strftime("%Y/%m/%d %H:%M:%S"))
  • 系统自带的 w32tm.exe
w32tm.exe /ntte 131781889970180000

output: 152525 08:03:17.0180000 - 2018/8/8 16:03:17
  • powershell
powershell -c "[datetime]::FromFileTime(0x1d42eee43808fa0)"

output: 20188816:03:17

RecentApps

HKCU\Software\Microsoft\Windows\Current Version\Search\RecentApps

win10之后特有,RecentApps包含了系统上已访问的多个应用程序和文件的引用。除了应用程序和文件名之外,RecentApps还提供了应用程序的路径、启动计数、文件的完整路径以及上次访问文件的时间(FILETIME格式)。

注册表事件日志

在注册表发生修改将数据写入到主文件之前,Hive写入器会先将这些数据存储在事务日志文件中,如果写入事务日志时发生错误(比如系统崩溃),则主文件不会受影响。如果写入主文件时发生错误,可以通过事务日志包含的数据恢复主文件。

事务日志文件以.LOG为后缀,多个日志后缀会显示LOG1LOG2。如果要查看这些日志文件,需要打开文件夹选项,取消勾选“隐藏受保护的操作系统文件”

除了事务日志文件外,还有事务型注册表子系统使用的日志。应用程序可以利用事务型注册表精确地执行组合的注册表操作。这是应用安装程序最常用的方法,因为它简化了失败操作回滚(rollback)。

事务型注册表日志使用CLFS(通用日志文件系统,Common Log File System)格式。日志保存在<hive><GUID>.TxR.<number>.regtrans-ms格式的文件中。对于用户hive文件,这些文件保存在与hive文件相同的文件夹中,并在用户注销时被清除。但对于系统来说,则保存在 %SystemRoot%/System32/config/TxR 中,并且不会自动清除。所以通常可以从系统事务型日志中恢复历史数据。

工具

RLA [Download]

注册表备份

Windows可以周期性的备份系统注册表hive,通过一个计划任务RegIdleBackup进行,默认每隔10天运行1次。备份的hive保存在 %SystemRoot%\System32\config\RegBack 中。该机制存在于Windows Vista到Windows10之前,Win10移除。

SRUM (System Resource Usage Monitor)

Win8以上系统特性,用于跟踪应用使用情况,网络利用率以及系统能源状态,这些数据存储在 Extensible Storage Engine (ESE) database 中。在活动系统上该文件会被锁定,无法通过常规复制粘贴来访问,一个推荐的办法是使用SRUM-DUMP工具。

位置

C:\Windows\System32\sru\SRUDB.dat

工具

SRUM_DUMP [Download]

ESEDatabaseView [Download]

SrumEcmd [Download]

ShellBags

ShellBags是一组用来记录文件夹(包括挂载网络驱动器文件夹和挂载设备的文件夹)的名称、大小、图标、视图、位置的注册表项,或称为BagMRU。每次对文件夹的操作,ShellBags的信息都会更新,而且包含时间戳信息,即使删除文件夹后,文件夹的信息仍然会保留。

当用户通过Windows资源管理器浏览文件系统的时,首次打开个文件夹时,系统会创建ShellBags条目。每个文件夹都有一个编号,编号从0开始记录。当打开子路径,会在相应的ShellBags条目右侧添加一个条目,并分配一个编号,编号每次递增1。当用户对文件夹进行操作,ShellBag条目会立即更新。这意味着相应的注册表项最后修改时间可能也是最后操作文件夹的时间。

BagMRU键值:记录文件夹的路径和文件夹的长短名称。可以根据该结构还原文件系统的目录结构。

Bags键值:用于存储与文件夹相关的视图配置信息,比如位置、大小、排序方式等。

位置

NTUSER.dat

%userprofile%

USRCLASS.dat

%userprofile%\AppData\Local\Microsoft\Windows

最近通过资源管理器访问的文件夹的信息(USRCLASS.DAT):

HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU

HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags

从桌面访问的文件夹信息(NTUSER.DAT):

HKCU\Software\Microsoft\Windows\Shell\BagMRU

HKCU\Software\Microsoft\Windows\Shell\Bags

由于系统版本不同可能存在的附加注册表项目:

NTUSER.DAT:

HKCU\Software\Microsoft\Windows\ShellNoRoam\BagMRU

HKCU\Software\Microsoft\Windows\ShellNoRoam\Bags

USRCLASS.DAT:

HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\ShellNoRoam\BagMRU

HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\ShellNoRoam\Bags

HKCU\Software\Classes\Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell\BagMRU

HKCU\Software\Classes\Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell\Bags

工具

ShellBagsExplorer [Download]

User Access Logging

UAL 是从 Server 2012 开始的 Microsoft Windows Server 版本中默认包含的一项功能,以 IP 地址和用户名的形式记录已安装产品的唯一客户端访问请求和本地服务器上的角色。

  • Current.mdb(UAL 数据库——当年;活动副本)
  • <GUID>.mdb(UAL 数据库——当年/上一年/两年前)
  • Systemidentity.mdb(包含有关服务器的信息的数据库,包括 RoleGuid 值到角色名称的映射)
位置

C:\Windows\System32\LogFiles\Sum

工具

SumECmd [Download]

Windows Timeline

Windows Timeline是Windows10在1803版中引入的一个新特性,用户可以使用 Win + Tab 可以对其进行访问,记录了包含访问过的网站,编辑的文档,查看或创建的图像等,其保存的记录在 ActivitiesCache.db 中。其本质是sqlite3数据库文件,其包含的表有Activity、Activity_PackageId、ActivityOperation、ManualSequence等。Activity表包含字段AppId(包含应用程序的路径)、开始时间、结束时间等。

位置

C:\Users\{user}\AppData\Local\ConnectedDevicesPlatform\<random_char>\ActivitiesCache.db

工具

WxTCmd [Download]

内存取证

对导出的内存镜像进行分析,获取内存的详细情况以及系统的运行状态,包括用户账号密码、进程列表、服务、网络连接、命令行操作、注册表单元、文件等信息。

工具

Volatility [Download]

磁盘恢复

原理简介

工具

DiskGenius

X-Ways Forensics

MFTExplorer [Download]

痕迹清除
  • 多次覆写文件 cipher /w:<path>
  • 格式化某磁盘count次 format D: /P:<count>
⚠️ **GitHub.com Fallback** ⚠️