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, 主机取证, 事件日志收集, 后渗透, 命令控制, 子域名变形, 完整性校验, 库, 应急响应, 持久化检测, 插件系统, 数字取证, 数字取证, 数据采集, 无线安全, 日志归档, 注册表分析, 流量嗅探, 浏览器取证, 网络安全审计, 网络连接, 自动化脚本, 自动化脚本, 进程分析