本文主要简述当Windows系统中存在恶意可执行程序时,如何发现恶意程序的执行痕迹(文件路径、时间等),以及相关的辅助分析工具。
从注册表、文件、日志三个方面介绍,以及简单介绍下Win10中的几个特有功能。
ShimCache 又称为AppCompatCache,从 Windows XP开始存在,用来识别应用程序兼容性问题。跟踪文件路径,大小和上次修改时间(LastModifiedTime)和上次更新时间(LastUpdateTime)。
其中在Windows7/8/10系统中最多包含1024条记录,Windows7/8/10系统中不存在“上次更新时间”。
注册表中位置:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache
https://github.com/EricZimmerman/AppCompatCacheParser/
usage:
AppCompatCacheParser.exe --csv d:\temp -t
https://github.com/mandiant/ShimCacheParser
usage:
reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" shimcache.reg
ShimCacheParser.py -o out.csv -r D:\Tool\TEST\shimcache.reg -t
userassist键值包含GUI应用执行的信息,如名称、路径、关联快捷方式、执行次数、上一次执行时间等。
注册表中位置:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count
https://blog.didierstevens.com/programs/userassist/
MUICache记录执行程序的名称和路径,但是没有记录相关执行时间。
注册表中位置:
HKCU/Software/Microsoft/Windows/ShellNoRoam/MUICache (XP, 2000, 2003)
HKCU/Software/Classes/Local Settings/Software/Microsoft/Windows/Shell/MuiCache (Vista, 7, 2008)
http://www.nirsoft.net/utils/muicache_view.html
Prefetch(预读取),从Windows XP开始引入,用来加速应用程序启动过程。Prefetch包含可执行文件的名称、文件时间戳、运行次数、上次执行时间、Hash等。
Win7上记录最近128个可执行文件的信息,Win8-10上的最近1024个可执行文件。
文件路径:
C:\Windows\Prefetch
注册表HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters 中EnablePrefetcher的键值控制是否开启Prefetch。
EnablePrefetcher的数值设置:
0 =已禁用
1 =启用应用程序预读取
2 =启用引导预读取
3 =启用应用程序和引导预读取(最佳和默认)
虽然Windows 2003中也存在Prefetch,但默认为2,仅用于引导预读取。
https://github.com/EricZimmerman/PECmd
usage:
PECmd.exe -d "C:\Windows\Prefetch" --csv "d:\temp" --json d:\temp\json
Amcache.hve记录执应用程序的执行路径、上次执行时间、以及SHA1值。
文件路径:
C:\Windows\AppCompat\Programs\Amcache.hve
https://github.com/EricZimmerman/AmcacheParser
usage:
AmcacheParser.exe -f C:\Windows\AppCompat\Programs\Amcache.hve --csv d:\temp
Windows 7-10用来任务栏显示经常使用或最近使用的项目。
文件路径:
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
https://ericzimmerman.github.io/Software/JumpListExplorer.zip
Windows 7、Windows Server 2008 R2 /2012 及之后,会在每次创建一个进程时创建一个事件日志,并传递到该进程的命令行信息。事件将记录到现有事件 ID 4688 并保存到 Windows 安全日志。但仅在启用了“审核进程创建”时记录4688。
592 创建一个新进程(Windows Server 2003)
4688 创建一个新进程(Windows 7、Windows Server 2008 R2/ 2012及之后)
Windows XP/7/ Windows Server 2003,当服务启动或停止时,服务控制管理器会记录到系统事件日志中的ID 7035。因此,如果关联的进程被注册为服务,则可发现执行痕迹。
7035 Service Control Manager xxx服务成功发送一个开始控件。
7036 Service Control Manager xxx服务处于 正在运行/停止 状态
计划任务日志中也可能发现可执行文件执行的痕迹。
Windows 10
注册表中位置:
HKCU\Software\Microsoft\Windows\Current Version\Search\RecentApps
从Windows 10 1709 (Fall Creators update)版本开始引用。
注册表中位置:
HKLM\SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}
从Windows 10 1803 (April 2018)版本开始引用。
文件路径:
C:\Users\<profile>\AppData\Local\ConnectedDevicesPlatform\L.<profile>\ActivitiesCache.db
https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html?m=1
https://www.andreafortuna.org/dfir/forensic-artifacts-evidences-of-program-execution-on-windows-systems/
https://www.fireeye.com/blog/threat-research/2013/08/execute.html
https://www.andreafortuna.org/cybersecurity/amcache-and-shimcache-in-forensic-analysis/