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的众多原因之一!
干杯……下次见。