渗透技巧——Windows 系统文件执行记录的获取与清除

发布于 2025-02-06 08:42:16 字数 14160 浏览 7 评论 0

0x00 前言

站在渗透的角度,当获得了一台 Windows 主机的权限后,需要全面了解这台 Windows 主机的信息,文件执行记录是重要的部分。

而站在防御的角度,文件执行记录包含系统的重要信息,对其进行针对性的清除很有必要。

所以本文将尝试对 Windows 主机(Win7 及以上系统) 常见文件执行记录的位置进行整理,尝试获取并清除单条记录,分析利用思路,总结防御方法。

参考链接:https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html?m=1 https://xz.aliyun.com/t/3067

0x01 简介

本文将要介绍以下内容:

  • 从日志获得文件执行记录
  • 从注册表获得文件执行记录
  • 从文件获得文件执行记录
  • 实例测试
  • 利用和防御思路

0x02 从日志获得文件执行记录

1、进程创建(ID:4688)

使用条件:

系统默认关闭该功能,需要手动设置开启

  • Policy location: Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Advanced Audit Configuration -> Detailed Tracking
  • Policy Name: Audit Process Creation

命令行获得日志信息:

wevtutil qe security /rd:true /f:text /q:"Event[System[(EventID=4688)]]"

清除记录的方法:

单条日志的清除,可参考之前的文章:《渗透技巧——Windows 单条日志的删除》

2、Microsoft-Windows-Application-Experience Program-Inventory

参考资料:http://journeyintoir.blogspot.com/2014/03/exploring-program-inventory-event-log.html

  • 800 (summary of software activities)
  • 903 & 904 (new application installation)
  • 905 & 906 (updated application)
  • 907 & 908 (removed application).

命令行获得日志信息:

wevtutil qe Microsoft-Windows-Application-Experience/Program-Inventory

3、Microsoft-Windows-Application-Experience Program-Telemetry

命令行获得日志信息:

wevtutil qe Microsoft-Windows-Application-Experience/Program-Telemetry

0x03 从注册表获得文件执行记录

1、ShimCache

参考资料:https://www.fireeye.com/blog/threat-research/2015/06/caching_out_the_val.html

用来记录 Windows 系统程序执行时产生的兼容性问题

位置:

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

XP 最多保存 96 条记录,Win7 及以上最多保存 1024 条记录

记录以下内容:

  • 文件路径
  • 上次修改时间
  • 是否被执行

注:

ShimCache 不仅会记录 exe 文件的执行,而且会对 exe 文件同级目录下的文件进行记录(如果文件没有执行,那么 Executed 的属性为 no)

数据以固定格式保存,存储结构可参考:https://www.fireeye.com/content/dam/fireeye-www/services/freeware/shimcache-whitepaper.pdf

解析工具

(1) 源代码开源(c#):https://github.com/EricZimmerman/AppCompatCacheParser/

用法示例:

读取当前系统的注册表并将结果输出的到指定路径:

AppCompatCacheParser.exe --csv c:\test

输出结果按照上次修改的时间排序:

AppCompatCacheParser.exe --csv c:\test -t

读取指定 System 文件并将结果输出的到指定路径:

AppCompatCacheParser.exe --csv c:\test -h C:\Windows\System32\config\SYSTEM

(2) 源代码开源(python)

如果想要先导出注册表文件,然后在另一系统中获得解析结果,可使用 python 实现的脚本:https://github.com/mandiant/ShimCacheParser

用法示例:

reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" ShimCache.reg
ShimCacheParser.py -o out.csv -r c:\test\ShimCache.reg -t

通过 System 文件导出结果:

ShimCacheParser.py -o out.csv -i C:\Windows\System32\config\SYSTEM -t

清除记录的方法

ShimCache 只会在系统重新启动后更新(注销当前用户不会更新)

也就是说,想要清除本次系统从启动至关机的 ShimCache 记录,有两种方法:

(1) 修改注册表

备份当前注册表:

reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" ShimCache.reg

系统重启后,恢复注册表:

reg import ShimCache.reg

(2) 非正常关机

跳过写入注册表的操作,无法记录本次系统自启动至关机的记录

(3) 修改内存

(理论上可行)

2、UserAssist

参考资料:https://www.4n6k.com/2013/05/userassist-forensics-timelines.html

可以用来记录 Windows 系统程序执行的次数和最后一次执行时间

位置:

当前用户:

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

所有用户:

HKEY_USERS\<sid>\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

子健的名称使用 ROT-13 加密(解密比较简单)

记录实时更新

解析工具

(1) 命令行解析:https://www.nirsoft.net/utils/userassist_view.html

用法示例:

UserAssistView.exe  /stext out.txt

(2) 源代码开源(c#):https://blog.didierstevens.com/programs/userassist/

清除记录的方法

清除对应的注册表键值

3、MUICache

参考资料:http://what-when-how.com/windows-forensic-analysis/registry-analysis-windows-forensic-analysis-part-8/

用来记录 exe 文件的文件名称,在注册表中保存 exe 文件的绝对路径和对应 exe 文件的文件名称

位置:

当前用户:

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

所有用户:

HKEY_USERS\<sid>\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

数据未加密

记录实时更新

解析工具

(1) 命令行解析:http://www.nirsoft.net/utils/muicache_view.html

用法示例:

MUICacheView.exe  /stext out.txt

(2) 直接查询注册表

reg query "HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache"

清除记录的方法

清除对应的注册表键值

4、RunMRU

参考资料:http://www.forensicfocus.com/a-forensic-analysis-of-the-windows-registry

保存输入 Win+U 启动程序的历史记录

位置:

当前用户:

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

所有用户:

HKEY_USERS\<sid>\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

数据未加密

记录实时更新

解析工具

(1) 直接查询注册表

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"

清除记录的方法

清除对应的注册表键值

5、AppCompatFlags Registry Keys

参考资料:https://journeyintoir.blogspot.com/2013/12/revealing-program-compatibility.html

保存程序执行记录

位置:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store

解析工具

(1) 直接查询注册表

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted"
reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store"

清除记录的方法

清除对应的注册表键值

0x04 从文件获得文件执行记录

1、Prefetch

参考资料:https://www.forensicmag.com/article/2010/12/decoding-prefetch-files-forensic-purposes-part-1

预读取文件夹,用来存放系统已访问过文件的预读信息,能够加快系统的启动速度

记录文件运行次数、上次执行时间、Hash 等

查看该功能是否开启:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher
  • 0 = Disabled
  • 1 = Only Application launch prefetching enabled
  • 2 = Only Boot prefetching enabled
  • 3 = Both Application launch and Boot prefetching enabled

位置:

C:\Windows\Prefetch

数据以固定格式保存,扩展名为 pf

解析工具

(1) 命令行解析

源代码开源(c#):https://github.com/EricZimmerman/PECmd

用法示例:

PECmd.exe -d C:\Windows\Prefetch --csv c:\temp

生成两个文件 "time"_PECmd_Output.csv 和 "time"_PECmd_Output_Timeline.csv

  • "time"_PECmd_Output.csv 保存详细信息
  • "time"_PECmd_Output_Timeline.csv 只保存文件的名称列表
PECmd.exe -d C:\Windows\Prefetch --json c:\temp

生成多个 json 文件,每个 pf 文件对应一个 json 文件

清除记录的方法

删除对应文件名的 pf 文件

2、Amcache

参考资料:

用来跟踪应用程序与不同可执行文件的兼容性问题

数据以固定格式保存

位置:

Win7:

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

只记录文件名称

Win8 及以上:

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

记录创建时间、上次修改时间、SHA1 和一些 PE 文件头信息

注:Win7 系统安装 KB2952664 后,也会支持 Amcache.hve,也就是说,RecentFileCache.bcf 和 Amcache.hve 都包含文件执行记录

解析工具(RecentFileCache.bcf)

(1) 源代码开源(c#)

https://github.com/jwhwan9/dumpBCF

(2) 源代码开源(python)

https://github.com/prolsen/recentfilecache-parser

用法示例:

rfcparse.py -f C:\Windows\AppCompat\Programs\RecentFileCache.bcf

解析工具(Amcache.hve)

(1) 命令行解析

源代码开源(c#)

https://github.com/EricZimmerman/AmcacheParser

用法示例:

AmcacheParser.exe -f C:\Windows\AppCompat\Programs\Amcache.hve --csv c:\test

注:某些情况下会无法导出,提示系统正在占用文件 Amcache.hve

(2) 源代码开源(python)

https://github.com/williballenthin/python-registry/blob/master/samples/amcache.py

(3) 源代码开源(powershell)

https://github.com/yoda66/GetAmCache/blob/master/Get-Amcache.ps1

清除记录的方法(RecentFileCache.bcf)

修改文件,详细方法将在下篇文章 《渗透技巧——RecentFileCache.bcf 和 Amcache.hve 单条记录的清除》 介绍

清除记录的方法(Amcache.hve)

修改文件,详细方法将在下篇文章 《渗透技巧——RecentFileCache.bcf 和 Amcache.hve 单条记录的清除》 介绍

3、JumpLists

参考资料:https://articles.forensicfocus.com/2012/10/30/forensic-analysis-of-windows-7-jump-lists/

用来记录用户最近使用的文档和应用程序,通常显示在任务栏中

位置:

%APPDATA%\Microsoft\Windows\Recent

数据未加密

记录实时更新

解析工具

(1) 直接查询文件夹

dir %APPDATA%\Microsoft\Windows\Recent

清除记录的方法

清除路径下的文件

4、SRUM

Win8 及以上系统支持

参考资料:https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1492184583.pdf

包括多种信息,其中包括程序执行时间

数据加密

记录实时更新

解析工具

(1) 命令行解析

源代码开源(python):https://github.com/MarkBaggett/srum-dump

用法示例:

需要模板文件 SRUM_TEMPLATE.xlsx

srum_dump.exe --SRUM_INFILE c:\Windows\system32\sru\SRUDB.dat

注:

我在测试的过程中发现上面的命令有问题,执行失败,提示 ESE File Not found: C:\Windows\System32\sru\SRUDB.dat

需要将 SRUDB.dat 复制到另一目录,再进行解析

srum_dump.exe --SRUM_INFILE SRUDB.dat

清除记录的方法

(留在以后介绍)

0x05 防御建议

不同系统支持不同方法,如下图:

Alt text

图片截取自 https://1234n6-my.sharepoint.com/:x:/p/adam/EU3Fk3ec6NdPsSQx1eA1sfwB_R_fRa4tJ4c1FR6WJlWIEA?e=GRyu7r

站在防御的角度,可以选择定期清理系统中的文件执行记录

站在取证的角度,攻击者能够对文件执行记录进行修改和删除,所以对这些记录不能盲目相信

0x06 小结

本文对 Windows 主机(Win7 及以上系统) 常见文件执行记录的位置进行整理,通过实际测试验证了 Windows 系统可记录的内容,分析了部分记录的清除方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

不离久伴

暂无简介

文章
评论
28 人气
更多

推荐作者

夢野间

文章 0 评论 0

百度③文鱼

文章 0 评论 0

小草泠泠

文章 0 评论 0

zhuwenyan

文章 0 评论 0

weirdo

文章 0 评论 0

坚持沉默

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文