PowerShell取证工具snapshot.ps1详解:系统配置快照与差异分析

本文深入解析了用于Windows系统取证分析的PowerShell脚本snapshot.ps1,涵盖其功能特性、使用方法和实际应用场景,包括系统配置数据采集、启动项分析和文件哈希计算等技术细节。

Toolsmith - GSE Edition: snapshot.ps1

我最近花费了大量时间准备GIAC安全专家(GSE)考试,这是每四年重新认证的要求之一。我于2012年首次参加该考试,对我而言,三分之一的课程内容属于"不用即忘"的类型。GSE考试涵盖GSEC、GCIH和GCIA内容。随着我的日常工作从分析师逐渐转向管理岗位,我不得不重新学习数据包分析技能。多亏有Packetrix虚拟机和平SANS 503练习手册,偏移量、标志位和分片处理等问题都得到了解决!一切顺利,任务完成,我的认证已续期至2020年10月,仍然是GSE #52。但花费数周时间研读18本课程书籍让我回想起其中描述的一些优秀工具。因此,这是关于这些工具及其价值和用例场景的系列文章的第一篇。

我将从snapshot.ps1开始。它实际上是SEC505《保护Windows和PowerShell自动化》下载包的一部分,但在GCIH课程中也有讨论。本质上,snapshot.ps1是一个脚本,封装了与SANS Windows入侵发现速查表相关的活动。

该脚本由SEC505作者Jason Fossen提供,可在课程下载包的Day 5-IPSec文件夹中找到。该脚本"转储大量配置数据用于审计和取证分析",并允许您"比较不同时间创建的快照文件以提取差异"。

要使用snapshot.ps1,请将脚本放入一个可以安全创建子目录的目录中,因为脚本会创建一个以计算机名称命名的子目录,然后写入包含系统配置数据的各种文件。使用管理员权限运行snapshot.ps1。

该脚本可在Windows 7、Server 2008及更新版本的Windows操作系统上运行(我在Windows 10 Redstone 2上测试过),需要PowerShell 3.0或更高版本。如果您想要转储系统启动和登录时自动运行的程序以及运行SHA256文件哈希,还需要在PATH中包含autorunsc.exe和sha256deep.exe。

也就是说,如果您必须让脚本运行得更快(我的意思是要快得多),可以在snapshot.ps1的末尾禁用文件哈希计算,这样运行时间将减少90%。然而,Jason指出,这是脚本用于识别对抗活动最有用的方面之一。他还指出,snapshot.ps1是一个入门脚本;您可以并且应该添加更多命令。例如,参考toolsmith #112:Red vs Blue - PowerSploit vs PowerForensics,在导入PowerForensics后,您可以添加类似Get-ForensicTimeline | Sort-Object -Property Date | Where-Object { $.Date -ge “12/30/2015” -and $.Date -le “01/04/2016” } | WriteOut -FileName Timeline的命令,这将为您提供2015年12月30日至2016年1月4日之间的文件系统时间线。

但等等,还有更多!想要不需要autorunsc.exe获取自动运行程序?下载@p0w3rsh3ll的AutoRuns模块,运行Import-Module AutoRuns.psm1,然后运行Get-Command -Module AutoRuns以确保模块已加载,最后注释掉autorunsc.exe -accepteula -a -c | Out-File -FilePath AutoRuns.csv,并添加Get-PSAutorun | WriteOut -FileName AutoRuns。

然后只需运行.\Snapshot.ps1,并观察以计算机名称命名的目录被填充,在我的例子中是0V3RW4TCH-2016-10-31-9-7,如图1所示。

图1:Snapshot.ps1运行

大多数结果文件以机器可读的XML、CSV和TXT格式写入,还有通过reg.exe注册表导出生成的REG文件。

一个很好的结果文件示例是通过dir -Path c:\ -Hidden -Recurse -ErrorAction SilentlyContinue | Select-Object FullName,Length,Mode,CreationTime,LastAccessTime,LastWriteTime | Export-Csv -Path FileSystem-Hidden-Files.csv生成的。生成的CSV就像一次邪恶记忆之旅,所有我过去测试过的痕迹都留下了痕迹。这正是在实际响应场景中您要寻找的内容,如图2所示。

图2:Snapshot.ps1捕获隐藏文件

当然,有很多相关的DFIR收集脚本,但我真的很喜欢这个,并计划进一步调整它。Jason做得很好,这也是考虑参加SEC505或追求GSE的众多原因之一!

干杯……下次见。

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