渗透技巧——Windows系统文件执行记录的获取与清除
站在渗透的角度,当获得了一台Windows主机的权限后,需要全面了解这台Windows主机的信息,文件执行记录是重要的部分。
而站在防御的角度,文件执行记录包含系统的重要信息,对其进行针对性的清除很有必要。
所以本文将尝试对Windows主机(Win7及以上系统)常见文件执行记录的位置进行整理,尝试获取并清除单条记录,分析利用思路,总结防御方法。
参考链接:
· https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html?m=1
· https://xz.aliyun.com/t/3067#toc-5
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\\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\\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
站在渗透的角度,当获得了一台Windows主机的权限后,需要全面了解这台Windows主机的信息,文件执行记录是重要的部分。
而站在防御的角度,文件执行记录包含系统的重要信息,对其进行针对性的清除很有必要。
所以本文将尝试对Windows主机(Win7及以上系统)常见文件执行记录的位置进行整理,尝试获取并清除单条记录,分析利用思路,总结防御方法。
参考链接:
· https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html?m=1
· https://xz.aliyun.com/t/3067#toc-5
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\\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\\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
copyright 无奈人生
copyright 无奈人生