Br3thren-Org/Artifact-Collection
GitHub: Br3thren-Org/Artifact-Collection
一款综合性的PowerShell端点取证工具,系统性地从Windows系统收集事件日志、执行痕迹、持久化机制、浏览器证据等安全分析所需的关键artifacts。
Stars: 1 | Forks: 0
# Artifact 收集
## 概述
Artifact Collection 是一款综合性的 PowerShell 工具,专为安全分析师、应急响应人员和取证调查人员设计。它系统地从 Windows 系统收集关键日志、系统信息和取证证据,以支持安全分析和应急响应活动。
## 主要功能
- **全面收集**:收集事件日志、系统信息、网络数据、进程详情、用户证据、执行痕迹、持久化机制、浏览器证据和安全配置
- **逐用户证据枚举**:遍历所有用户配置文件以获取注册表证据、浏览器数据、PowerShell 历史记录等
- **优先级事件日志**:将高优先级安全日志与标准日志区分开来,以便高效分析
- **执行痕迹**:收集 Amcache、SRUM、Prefetch、BAM/DAM、Shimcache 和 WER 报告
- **持久化检测**:捕获所有自启动注册表键、WMI 订阅、计划任务 XML、COM 劫持和启动文件夹
- **浏览器取证**:按用户配置文件收集 Chrome、Edge、Firefox 和 IE 证据
- **锁定文件处理**:使用 esentutl 回退机制复制锁定的系统数据库(Amcache、SRUM)
- **有序输出结构**:创建具有逻辑文件夹组织的结构化 ZIP 归档
- **完整性验证**:用于证据保管链验证的 SHA-256 哈希清单
- **灵活的收集类型**:允许选择性收集特定证据类别
- **进度跟踪**:在收集过程中提供实时进度指示器
- **错误弹性**:即使单个文件被锁定或无法访问,仍继续收集
- **带时间戳的归档**:自动包含时间戳以防止覆盖
- **分析指导**:包含收集摘要及分析建议
## 系统要求
- **操作系统**:Windows 10/11, Windows Server 2016/2019/2022
- **PowerShell**:版本 5.1 或更高
- **权限**:需要管理员权限
- **磁盘空间**:至少 500MB 可用空间(大型环境建议更多)
- **.NET Framework**:4.5 或更高(用于 ZIP 压缩)
## 安装
1. 下载 Artifact Collection 脚本 (`Collect-SecurityLogs.ps1`)
2. 将脚本放置在管理员可访问的目录中
3. 确保 PowerShell 执行策略允许脚本执行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
## 用法
### 基本用法
以管理员权限运行 Artifact Collection 以收集所有可用的证据:
```
.\Collect-SecurityLogs.ps1
```
### 高级用法
#### 收集特定类别
```
# 仅收集事件日志
.\Collect-SecurityLogs.ps1 -CollectionType EventLogs
# 仅收集执行证据(Amcache、SRUM、Prefetch 等)
.\Collect-SecurityLogs.ps1 -CollectionType ExecutionEvidence
# 仅收集持久化机制
.\Collect-SecurityLogs.ps1 -CollectionType PersistenceInfo
# 仅收集浏览器 artifacts
.\Collect-SecurityLogs.ps1 -CollectionType BrowserArtifacts
# 仅收集安全配置和 artifacts
.\Collect-SecurityLogs.ps1 -CollectionType SecurityInfo
```
#### 自定义输出位置
```
# 指定自定义输出目录
.\Collect-SecurityLogs.ps1 -OutputPath "C:\Investigation\Case-2024-001"
```
#### 限定时间范围的收集
```
# 收集过去 7 天的 artifacts
.\Collect-SecurityLogs.ps1 -MaxDays 7
# 收集所有可用的 artifacts(无时间限制)
.\Collect-SecurityLogs.ps1 -MaxDays 0
```
#### 包含内存转储
```
# 包含 MEMORY.DMP 和 minidumps(可能非常大)
.\Collect-SecurityLogs.ps1 -IncludeMemoryDump
```
## 参数
| 参数 | 类型 | 默认值 | 描述 |
|-----------|------|---------|-------------|
| `OutputPath` | String | Desktop | ZIP 归档的自定义输出目录 |
| `CollectionType` | String | All | 要收集的类别(见下表) |
| `MaxDays` | Integer | 30 | 收集日志的天数(0 = 无限制) |
| `IncludeMemoryDump` | Switch | False | 如果可用,包含内存转储文件 |
### 收集类型
| 类型 | 描述 |
|------|-------------|
| `All` | 以下所有内容(默认) |
| `EventLogs` | Windows 事件日志(优先级 + 标准) |
| `SystemInfo` | 操作系统详情、软件、补丁、驱动程序、USB、BitLocker、TPM |
| `NetworkInfo` | 适配器、连接、防火墙、DNS、代理、hosts 文件、WLAN |
| `ProcessInfo` | 进程、服务、计划任务、命名管道、已加载模块 |
| `UserArtifacts` | 逐用户注册表、LNK 文件、跳转列表、PowerShell 历史、缩略图缓存 |
| `ExecutionEvidence` | Prefetch、Amcache、SRUM、BAM/DAM、Shimcache、WER 报告 |
| `PersistenceInfo` | 自启动键、计划任务 XML、WMI 订阅、COM 劫持、IFEO、BHOs |
| `BrowserArtifacts` | 每个用户的 Chrome、Edge、Firefox、IE 历史/书签/下载 |
| `SecurityInfo` | Defender 状态/隔离、证书、GPO、凭据、ADS、回收站 |
## 输出结构
脚本创建一个带时间戳的 ZIP 归档,结构如下:
```
SecurityArtifacts_COMPUTERNAME_YYYYMMDD_HHMMSS.zip
├── CollectionSummary.txt
├── HashManifest_SHA256.txt
├── EventLogs/
│ ├── Priority/
│ │ ├── Security.evtx
│ │ ├── System.evtx
│ │ ├── Application.evtx
│ │ ├── Windows PowerShell.evtx
│ │ └── [Other priority logs]
│ └── Standard/
├── SystemInfo/
│ ├── SystemInfo.txt
│ ├── InstalledSoftware.txt
│ ├── InstalledSoftware_x86.txt
│ ├── InstalledHotfixes.txt
│ ├── LocalUsers.txt
│ ├── LocalGroupMembers.txt
│ ├── Drivers.txt
│ ├── USBDeviceHistory.txt
│ ├── VolumeShadowCopies.txt
│ ├── BITSTransfers.txt
│ ├── BitLockerStatus.txt
│ ├── TPMInfo.txt
│ └── [Other system data]
├── NetworkInfo/
│ ├── NetworkConfig.txt
│ ├── NetstatConnections.txt
│ ├── FirewallRules.txt
│ ├── FirewallProfiles.txt
│ ├── ListeningPorts.txt
│ ├── UDPEndpoints.txt
│ ├── HostsFile.txt
│ ├── ProxySettings.txt
│ ├── DNSClientConfig.txt
│ ├── WLANEventHistory.txt
│ └── [Other network data]
├── ProcessInfo/
│ ├── RunningProcesses.txt
│ ├── ProcessTree.txt
│ ├── Services.txt
│ ├── ScheduledTasks.txt
│ ├── NamedPipes.txt
│ ├── HandleCounts.txt
│ └── [Other process data]
├── UserArtifacts/
│ └── /
│ ├── Registry/
│ │ ├── RunMRU.reg
│ │ ├── RecentDocs.reg
│ │ ├── TypedPaths.reg
│ │ ├── TypedURLs.reg
│ │ ├── UserAssist.reg
│ │ ├── WordWheelQuery.reg
│ │ ├── ComDlg32.reg
│ │ ├── Shellbags_BagMRU.reg
│ │ ├── Shellbags_Bags.reg
│ │ ├── RDP_Servers.reg
│ │ ├── MountPoints2.reg
│ │ ├── MapNetworkDriveMRU.reg
│ │ └── [Other user registry]
│ ├── RecentFiles/ (LNK files)
│ ├── JumpLists/
│ │ ├── AutomaticDestinations/
│ │ └── CustomDestinations/
│ ├── PowerShellHistory/
│ ├── Thumbcache/
│ └── StartupFolder/
├── ExecutionEvidence/
│ ├── Prefetch/ (*.pf files)
│ ├── Amcache/ (Amcache.hve + logs)
│ ├── SRUM/ (SRUDB.dat)
│ ├── BAM/ (Background Activity Moderator)
│ ├── Shimcache/ (AppCompatCache.reg)
│ └── WER/ (Windows Error Reporting)
│ ├── ReportArchive/
│ └── ReportQueue/
├── PersistenceInfo/
│ ├── AutorunRegistry/
│ │ ├── HKLM_Run.reg
│ │ ├── HKLM_RunOnce.reg
│ │ ├── HKLM_Run_Wow64.reg
│ │ ├── HKLM_Winlogon.reg
│ │ ├── HKLM_IFEO.reg
│ │ ├── HKLM_AppInit.reg
│ │ ├── HKLM_LSA.reg
│ │ ├── HKLM_PrintMonitors.reg
│ │ ├── HKLM_BHO.reg
│ │ ├── HKLM_ActiveSetup.reg
│ │ └── [Other autorun keys]
│ ├── ScheduledTasksXML/ (Raw XML task definitions)
│ ├── GlobalStartupFolder/
│ ├── WMISubscriptions/
│ │ ├── EventFilters.txt
│ │ ├── EventConsumers.txt
│ │ └── FilterToConsumer.txt
│ ├── COMObjects/
│ │ ├── InprocServer32_HKCU.txt
│ │ └── LocalServer32_HKCU.txt
│ └── Services/
│ ├── NonStandardServices.txt
│ └── DriverServices.txt
├── BrowserArtifacts/
│ └── /
│ ├── Chrome/ (History, Bookmarks, Login Data, etc.)
│ ├── Chrome_Profile 1/ (Additional Chrome profiles)
│ ├── Edge/ (History, Bookmarks, Login Data, etc.)
│ ├── Firefox_/ (places.sqlite, logins.json, etc.)
│ └── IE_WebCache/ (WebCacheV*.dat)
├── SecurityInfo/
│ ├── WindowsDefender/
│ │ ├── DefenderStatus.txt
│ │ ├── ThreatHistory.txt
│ │ ├── ExclusionPaths.txt
│ │ ├── Quarantine/
│ │ └── ScanHistory/
│ ├── Certificates/
│ │ ├── RootCerts.txt
│ │ ├── UntrustedCerts.txt
│ │ └── TrustedPublishers.txt
│ ├── GroupPolicy/
│ │ ├── GPResult_Verbose.txt
│ │ ├── GPResult.html
│ │ └── LocalGPO/
│ ├── Credentials/
│ │ ├── CredentialManager.txt
│ │ ├── LSAProtection.txt
│ │ └── CachedLogons.txt
│ ├── AppLocker/
│ │ ├── EffectivePolicy.xml
│ │ └── LocalPolicy.xml
│ ├── RecycleBin/
│ ├── AlternateDataStreams.txt
│ ├── hosts.txt
│ ├── pfirewall.log
│ └── pfirewall.log.old
├── RegistryExports/
│ ├── HKLM_Run.reg
│ ├── HKLM_Services.reg
│ ├── HKLM_USBSTOR.reg
│ ├── HKLM_ProfileList.reg
│ └── [Other registry exports]
├── SecurityPolicy/
│ ├── SecurityPolicy.inf
│ └── AuditPolicy.txt
└── MemoryDumps/ (if -IncludeMemoryDump)
├── MEMORY.DMP
└── *.dmp
```
## 优先级事件日志
脚本优先收集这些关键安全日志:
**身份验证与访问**
- Security.evtx (Windows 安全日志)
- Microsoft-Windows-TerminalServices-LocalSessionManager
- Microsoft-Windows-TerminalServices-RemoteConnectionManager
- Microsoft-Windows-NTLM/Operational
**系统活动**
- System.evtx (Windows 系统日志)
- Application.evtx (Windows 应用程序日志)
**PowerShell 活动**
- Windows PowerShell.evtx
- Microsoft-Windows-PowerShell/Operational
**安全工具**
- Microsoft-Windows-Sysmon/Operational (如可用)
- Microsoft-Windows-Windows Defender/Operational
- Microsoft-Windows-Windows Firewall With Advanced Security
- Microsoft-Windows-AppLocker (EXE, DLL, MSI, Script)
**网络与文件活动**
- Microsoft-Windows-DNS-Client/Operational
- Microsoft-Windows-SMBClient/Security
- Microsoft-Windows-SMBServer/Security
- Microsoft-Windows-Bits-Client/Operational
**其他**
- Microsoft-Windows-CAPI2/Operational (证书操作)
- Microsoft-Windows-PrintService/Operational
- Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational
## 逐用户证据
脚本枚举系统上的所有用户配置文件,并为每个用户收集以下证据:
| 证据 | 注册表键 / 路径 | 取证价值 |
|----------|-------------------|----------------|
| RunMRU | `HKCU\...\Explorer\RunMRU` | Win+R 对话框历史 |
| RecentDocs | `HKCU\...\Explorer\RecentDocs` | 按扩展名分类的最近打开文件 |
| TypedPaths | `HKCU\...\Explorer\TypedPaths` | 资源管理器地址栏历史 |
| TypedURLs | `HKCU\...\Explorer\TypedURLs` | IE/Edge URL 栏历史 |
| UserAssist | `HKCU\...\Explorer\UserAssist` | 程序执行计数 (ROT13) |
| WordWheelQuery | `HKCU\...\Explorer\WordWheelQuery` | 资源管理器搜索历史 |
| ComDlg32 | `HKCU\...\Explorer\ComDlg32` | 打开/保存对话框历史 |
| Shellbags | `HKCU\...\Shell\BagMRU` + `Bags` | 文件夹访问历史 |
| RDP History | `HKCU\...\Terminal Server Client` | 远程桌面连接 |
| MountPoints2 | `HKCU\...\Explorer\MountPoints2` | 挂载驱动器历史 |
| Map Network Drive MRU | `HKCU\...\Explorer\Map Network Drive MRU` | 映射网络驱动器 |
| AppCompatFlags | `HKCU\...\AppCompatFlags\Layers` | 兼容性设置 |
| User Run/RunOnce | `HKCU\...\Run` + `RunOnce` | 逐用户自启动项 |
| LNK Files | `Recent\*.lnk` | 文件/文件夹快捷方式证据 |
| Jump Lists | `Recent\AutomaticDestinations` + `CustomDestinations` | 应用程序使用历史 |
| PowerShell History | `PSReadLine\ConsoleHost_history.txt` | 完整命令历史 |
| Thumbcache | `Explorer\thumbcache_*.db` | 已查看文件的缩略图证据 |
## 安全注意事项
### 数据敏感性
- 收集的证据可能包含敏感信息,包括:
- 用户凭据和身份验证数据
- 浏览器历史记录、书签和保存的密码
- 网络配置详情
- PowerShell 命令历史
- 系统配置信息
- 进程和服务详情
### 访问控制
- Artifact Collection 需要管理员权限才能访问系统日志和文件
- 某些文件可能被活动进程锁定(尝试使用 esentutl 回退)
- 根据系统配置,某些日志可能不可用
- NTUSER.DAT 配置单元会为离线用户临时加载,导出后卸载
### 数据处理
- 将收集的归档存储在安全位置
- 遵循组织数据处理策略
- 考虑对包含敏感数据的归档进行加密
- 为取证调查维护证据保管链文档
- 使用 SHA-256 哈希清单验证数据完整性
## 故障排除
### 常见问题
**Artifact Collection 无法运行**
- 验证管理员权限
- 检查 PowerShell 执行策略
- 确保已安装 .NET Framework 4.5+
**部分文件未被收集**
- 锁定文件的正常行为(尝试使用 esentutl 回退)
- 检查 Windows 事件查看器是否有访问拒绝错误
- 验证目标系统上是否存在源路径
**归档大小过大**
- 使用 `-MaxDays` 参数限制收集时间范围
- 考虑针对特定调查使用选择性收集类型
- 在收集期间监控可用磁盘空间
**内存或性能问题**
- 在低活动期间运行
- 考虑使用不同的 CollectionType 值分阶段收集
- 如有需要,增加虚拟内存
**注册表配置单元加载失败**
- 对于当前登录的用户属于正常情况(其配置单元已加载)
- 脚本会对活动会话回退到基于 SID 的访问
### 日志分析
首先查看 `CollectionSummary.txt` 文件以了解:
- 收集统计信息
- 失败的收集尝试
- 建议的分析起点
## 分析工作流
### 初步分类
1. 将归档解压到分析工作站
2. 使用 `HashManifest_SHA256.txt` 验证文件完整性
3. 查看 `CollectionSummary.txt` 以获取收集概览
4. 从 EventLogs/Priority/ 中的优先级事件日志开始
5. 重点关注 Security.evtx、System.evtx 和 PowerShell 日志
### 执行时间线
1. 使用 AmcacheParser 解析 Amcache.hve 以获取程序执行历史
2. 分析 Prefetch 文件以获取执行时间戳和频率
3. 查看 SRUM 数据库以了解资源使用模式
4. 检查 BAM/DAM 数据以获取最近执行的程序
5. 解析 Shimcache 以获取历史执行证据
### 持久化分析
1. 查看所有 AutorunRegistry 导出以寻找未授权条目
2. 检查 ScheduledTasksXML 中的可疑任务定义
3. 检查 WMI 订阅是否存在基于事件的持久化
4. 查看 HKCU 中的 COM 对象注册以排查劫持
5. 检查用户和全局启动文件夹
### 用户活动重建
1. 解析 RunMRU 以获取手动执行的命令
2. 查看 TypedPaths 和 TypedURLs 以了解导航历史
3. 解码 UserAssist 条目 (ROT13) 以获取程序执行计数
4. 分析 Shellbags 以了解文件夹访问模式
5. 查看 PowerShell 历史记录以了解命令执行情况
6. 解析跳转列表和 LNK 文件以获取文件访问时间线
### 浏览器调查
1. 使用 DB Browser 打开 Chrome/Edge History SQLite 数据库
2. 解析 Firefox places.sqlite 以获取浏览和下载历史
3. 查看书签以寻找关注指标
4. 检查保存的凭据数据库
### 网络调查
1. 查看活动连接和监听端口
2. 检查 hosts 文件是否存在可疑重定向
3. 分析 DNS 缓存以获取已解析的域
4. 查看代理设置是否存在未授权配置
5. 将网络进程与连接数据进行交叉参考
### 推荐工具
- **事件日志分析**: Event Log Explorer, Hayabusa, Chainsaw, EvtxECmd
- **时间线分析**: Plaso, Volatility, TimeSketch
- **注册表分析**: Registry Explorer, RegRipper, RECmd
- **Amcache/Shimcache**: AmcacheParser, AppCompatCacheParser (Eric Zimmerman)
- **Prefetch**: PECmd (Eric Zimmerman), WinPrefetchView
- **SRUM**: SrumECmd (Eric Zimmerman), NetworkUsageView
- **浏览器**: DB Browser for SQLite, Hindsight (Chrome), ESSE (Edge)
- **跳转列表/LNK**: JLECmd, LECmd (Eric Zimmerman)
- **网络分析**: Wireshark, NetworkMiner
- **通用分析**: AXIOM, EnCase, X-Ways Forensics
## 法律与合规
### 授权要求
- 在任何系统上运行前确保已获得适当授权
- 遵循组织应急响应程序
- 维护收集活动的文档记录
### 隐私考虑
- 收集可能包含个人身份信息 (PII)
- 浏览器证据可能包含浏览历史和保存的密码
- 遵守适用的隐私法律和法规
- 实施适当保护措施
### 证据保管链
- 记录谁在何时收集了数据
- 维护已收集证据的完整性
- 使用 SHA-256 哈希清单 (`HashManifest_SHA256.txt`) 验证数据完整性
- 使用适当的访问控制存储归档
## 版本历史
### 版本 3.0
- 增加了全面的逐用户证据收集(RunMRU, RecentDocs, TypedPaths, TypedURLs, UserAssist, WordWheelQuery, ComDlg32, Shellbags, RDP history, MountPoints2, Jump Lists, PowerShell history, thumbcache)
- 增加了执行痕迹收集(Amcache, SRUM, BAM/DAM, Shimcache, Prefetch, WER, RecentFileCache)
- 增加了持久化机制收集(所有自启动注册表键、计划任务 XML、WMI 订阅、COM 劫持、IFEO、Winlogon、LSA、BHOs、打印监视器、ActiveSetup、KnownDLLs)
- 增加了浏览器证据收集(每个用户配置文件的 Chrome、Edge、Firefox、IE)
- 增加了安全证据收集(Defender 状态/隔离/排除项/ASR、证书、GPO 结果、凭据保险库、LSA 保护、AppLocker、备用数据流、回收站、防火墙日志)
- 增加了通过 esentutl 回退处理锁定文件的功能
- 增加了 SHA-256 哈希清单用于完整性验证
- 扩展了 SystemInfo,包含驱动程序、USB 历史、BITS、卷影副本、BitLocker、TPM、磁盘信息、x86 软件
- 扩展了 NetworkInfo,包含 hosts 文件、代理设置、监听端口、UDP 端点、防火墙配置文件、DNS 客户端配置、IPSec、WLAN 历史
- 扩展了 ProcessInfo,包含命名管道和句柄计数
- 增加了用户配置文件枚举,为离线用户加载 NTUSER.DAT
- 用脚本块替换了 Invoke-Expression
- 用 Get-CimInstance 替换了 Get-WmiObject(兼容 PowerShell 7)
- 用基于注册表的软件清单替换了 Win32_Product
- 增加了辅助函数基础结构(Invoke-CommandCollection, Copy-LockedFile, New-DirectorySafe)
- 在所有收集函数中实现了 MaxDays 日期过滤
- 实现了 IncludeMemoryDump 参数
### 版本 2.0
- 增加了全面的安全证据收集
- 实现了优先级事件日志分类
- 增加了网络和进程信息收集
- 改进了错误处理和进度报告
- 增加了分析指导和文档
### 版本 1.0
- 基本的事件日志收集功能
- 简单的 ZIP 归档创建
- 管理员权限检查
## 支持与贡献
Artifact Collection 按原样提供用于安全分析目的。用户负责:
- 在生产使用前在其环境中进行测试
- 确保符合组织策略
- 验证收集的数据是否适用于其特定用例
如有问题或改进建议,请咨询您的安全团队或取证分析师。
## 免责声明
Artifact Collection 专为合法的安全分析和应急响应活动设计。用户必须确保在从任何系统收集数据之前已获得适当授权。作者不对此工具的滥用或使用其收集的任何数据负责。
标签:AI合规, Amcache, ARTIFACTS, AutoRuns, HTTP工具, IPv6, Libemu, Mr. Robot, PowerShell, Prefetch, SHA-256, SRUM, 主机取证, 事件日志收集, 后渗透, 命令控制, 子域名变形, 完整性校验, 库, 应急响应, 持久化检测, 插件系统, 数字取证, 数字取证, 数据采集, 无线安全, 日志归档, 注册表分析, 流量嗅探, 浏览器取证, 网络安全审计, 网络连接, 自动化脚本, 自动化脚本, 进程分析