windows取证——文件执行记录的获取和清除
2020-01-29 20:00:42 Author: xz.aliyun.com(查看原文) 阅读量:596 收藏

前言

当我们拿下一台windows主机权限的时候之后,我们第一步需要全面了解主机的信息,而文件执行记录也是一个非常重要的点,下面总结常见文件执行记录的位置、以及单条清除方法

从日志中获取

Audit Process Creation (592/4688)

在启用了"审核进程创建"时记录4688的情况下(系统默认是关闭的,需要手动开启),Windows 7Windows Server 2008及以上版本,会在每次创建一个进程时会把事件以Event ID4688记录到windows安全日志中

Windows XP/2003Event ID592

开启:Edit Default Domain Policy -> Policy location: Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Advanced Audit Configuration -> Detailed Tracking

策略名称: Audit Process Creation

查看ID为4688的安全事件:

命令行获取:

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

清除方法:可以参考三好学生师傅这篇文章

Program Inventory Event Log

Program Inventorywin7及以上存在,主要用于记录软件活动摘要、安装的程序、安装的Internet Explorer加载项、更新的应用程序、已删除的应用程序

文件夹中的位置:C:\Windows\System32\winevt\Logs\Microsoft-Windows-Application-Experience%4Program-Inventory.evtx,如图

在Windows事件查看器的位置:Applications and Services Logs\Microsoft\Application-Experience\Program-Inventory,如图

日志获取:

wevtutil qe /f:text Microsoft-Windows-Application-Experience/Program-Inventory

Envent IDs:

  1. 800 (summary of software activities)
  2. 900 & 901 (new Internet Explorer add-on)
  3. 903 & 904 (new application installation)
  4. 905 (updated application)
  5. 907 & 908 (removed application)

清除方法:可以参考三好学生师傅这篇文章

Program-Telemetry Event Log

win7及以上存在,在应用程序启动时为应用程序处理应用程序兼容性缓存请求

文件夹中的位置:C:\Windows\System32\winevt\Logs\Microsoft-Windows-Application-Experience%4Program-Telemetry.evtx

在Windows事件查看器的位置:Applications and Services Logs\Microsoft\Application-Experience\Program-Telemetry,如图

日志获取:

wevtutil qe /f:text Microsoft-Windows-Application-Experience/Program-Telemetry

Event IDs:500/505

清除方法:可以参考三好学生师傅这篇文章

从注册表中获取

ShimCache (AppCompatCache)

用来识别应用程序兼容性问题。缓存数据跟踪文件路径、大小、上次修改时间和是否被执行(取决于操作系统),Windows XP的ShimCache被限制为96条记录,此后所有版本最多保留1024条记录。

:虽然记录在ShimCache中的存在但是并不能100%证明文件是被执行过的,但它确实显示了与文件交互的窗口

注册表位置:

:数据加密,重启之后更新

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

解析工具(C#):

https://github.com/EricZimmerman/AppCompatCacheParser/

例子
以csv格式保存的指定路径

AppCompatCacheParser.exe --csv .

按上次修改时间排序

AppCompatCacheParser.exe --csv . -t

如果我们想离线分析,我们可以用这个项目:https://github.com/mandiant/ShimCacheParser

导出注册表

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

解析

python ShimCacheParser.py -o test.csv -r ShimCache.reg -t

结果

清除方法:

  1. 导出ShimCache
    reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" ShimCache.reg
  2. 重启之后(只能重启之后ShimCache才会更新,注销不行),导入注册表将重启之后的覆盖掉
    reg import ShimCache.reg

UserAssist

跟踪在资源管理器中打开的可执行文件和完整路径,其中UserAssist保存了windows执行的程序的运行次数和上次执行日期和时间。

注册表位置:

:记录实时更新,数据rot-13加密

当前用户:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

所有用户:
HKEY_USERS\<sid>\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
`

解析工具:https://www.nirsoft.net/utils/userassist_view.html

图形化界面

命令行使用

UserAssistView.exe  /stext out.txt //保存文本格式
UserAssistView.exe  /shtml out.txt //保存html格式
UserAssistView.exe  /sxml out.txt  //保存xml格式

清除方法:删除对应的键值即可

MUICache

每次开始使用新的应用程序时,Windows都会自动从exe文件的版本资源中提取应用程序名,并将其存储在名为MuiCache的注册表项中,供以后使用。

:无加密,记录实时更新

注册表位置:
windows server 2003及以前的

当前用户:
HKEY_CURRENT_USER/Software/Microsoft/Windows/ShellNoRoam/MUICache

所有用户:
HKEY_USERS\<sid>\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

windows server 2003及以后的

当前用户:
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

所有用户:
HKEY_USERS\<sid>\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

图形化界面:

解析工具:http://www.nirsoft.net/utils/muicache_view.html

命令行使用

MUICache.exe  /stext out.txt //保存文本格式
MUICache.exe  /shtml out.txt //保存html格式
MUICache.exe  /sxml out.txt  //保存xml格式

或者命令行直接查询注册表也可以

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

清除方法:删除对应的键值即可

RunMRU

保存Win+R启动程序的历史记录

注册表位置:

:数据无加密,记录实时更新

当前用户:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

所有用户:
HKEY_USERS\<sid>\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

命令行查询注册表

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

清除方法:删除注册表对应的键值即可

AppCompatFlags Registry Keys

保存所有以兼容模式启动的程序(包括以管理员身份运行的程序):

:无加密,数据实时更新

HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

查询方式直接查询注册表即可:

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"

保存所有执行过的程序:

解析工具:https://nirsoft.net/utils/executed_programs_list.html

这个工具会解析如下路径(包含了上面我们说过的MUICache,也包含了我们后面说的Prefetch

:1 ~ 4无加密,5加密,1 ~ 5数据实时更新

1. Registry Key: HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
2. Registry Key: HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
3. Registry Key: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
4. Registry Key: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store
5. Windows Prefetch folder (C:\Windows\Prefetch)

图形化界面:

命令行解析:

ExecutedProgramsList.exe  /stext out.txt //保存文本格式
ExecutedProgramsList.exe  /shtml out.txt //保存html格式
ExecutedProgramsList.exe  /sxml out.txt  //保存xml格式

清除方法:删除对应的注册表键值

Background Activity Moderator (BAM)

BAM是一个控制后台应用程序活动的Windows服务,该服务存在于windows10 version 1709及以后版本中

注册表路径为:

:记录实时更新,数据无加密

HKLM\SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}

记录包含了程序路径和上次执行日期和时间,其中执行日期键值类型为FILETIME(64bit little Endian)

执行时间提取:以winrar为例子

filetime转化为datetime

from __future__ import division
import struct
import sys
from binascii import unhexlify
from datetime import datetime, timedelta

nt_timestamp = struct.unpack("<Q", unhexlify("dc14dd91be7cd501"))[0]
epoch = datetime(1601, 1, 1, 0, 0, 0)
nt_datetime = epoch + timedelta(microseconds=nt_timestamp / 10)

print(nt_datetime.strftime("%Y/%m/%d %H:%M:%S"))

output:2019/10/07 03:23:21

清除方法:删除对应的注册表键值

RecentApps

win10之后特有,RecentApps包含了系统上已访问的多个应用程序和文件的引用。除了应用程序和文件名之外,RecentApps还提供了应用程序的路径,启动计数,文件的完整路径以及上次访问文件的时间。

参考文章

注册表位置为:
:记录实时更新,数据无加密

HKCU\Software\Microsoft\Windows\Current Version\Search\RecentApps

RecentApps键的下面是一系列由GUID命名的子项,在RecentApps下的每个GUID子项都对应一个应用程序。一些GUID子项也具有其他子项,它们与应用程序访问的特定文件相对应。

LastAccessedTime是采用64位的FILETIME格式,转化为datetime也比较简单,用系统自带的w32tm.exe就行

w32tm.exe /ntte 131781889970180000

output: 152525 08:03:17.0180000 - 2018/8/8 16:03:17

或者用powershell

powershell -c "[datetime]::FromFileTime(0x1d42eee43808fa0)"

output: 2018年8月8日 16:03:17

清除方法:删除对应的注册表键值

从文件中获取

Prefetch

Prefetch是预读取文件夹,用来存放系统已访问过的文件的预读信息,扩展名为PF。之所以自动创建Prefetch文件夹,是为了加快系统启动的进程。

查看该功能是否开启:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher

键值代表的含义

0 = Disabled
1 = Application launch prefetching enabled
2 = Boot prefetching enabled
3 = Applaunch and Boot enabled (Optimal and Default)

位置为:

:实时更新,数据加密

C:\Windows\Prefetch

解析工具:https://github.com/EricZimmerman/PECmd

参数:

PECmd.exe -f "C:\Temp\CALC.EXE-3FBEF7FD.pf"
PECmd.exe -f "C:\Temp\CALC.EXE-3FBEF7FD.pf" --json "D:\jsonOutput" --jsonpretty
PECmd.exe -d "C:\Temp" -k "system32, fonts"
PECmd.exe -d "C:\Temp" --csv "c:\temp" --json c:\temp\json
PECmd.exe -d "C:\Windows\Prefetch"

PS:按csv导出的有两个文件:"time_prefix".PECmd_Output.csv"time_prefix".PECmd_Output_Timeline.csv,前者保存了详情信息,后者只保存了运行时间和可执行程序的名称

"time_prefix".PECmd_Output_Timeline.csv

"time_prefix".PECmd_Output.csv

清除方法:根据PECmd导出的结果删除对应的pf文件即可

JumpLists

记录用户最近使用的文档和应用程序,方便用户快速跳转到指定文件

位置:

%APPDATA%\Microsoft\Windows\Recent

查询:直接列出文件(夹)即可

dir %APPDATA%\Microsoft\Windows\Recent

清除方法:清除%APPDATA%\Microsoft\Windows\Recent路径下的文件即可

Amcache / RecentFileCache.bcf

Windows中的使用这两个文件来跟踪具有不同可执行文件的应用程序兼容性问题,它可用于确定可执行文件首次运行的时间和最后修改时间。

win7windows server 2008R2等系统保存位置:

只包含了程序的创建时间、上次修改时间、上次访问时间和文件名

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

win8win10windows server 2012等系统保存位置:

包含了文件大小、版本、sha1、二进制文件类型等等信息

:Win7系统安装KB2952664后,也会支持Amcache.hve

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

RecentFileCache.bcf解析工具

c#版:https://github.com/EricZimmerman/RecentFileCacheParser

用法实例:

RecentFileCacheParser.exe -f "C:\Windows\AppCompat\Programs\RecentFileCache.bcf" --csv "c:\temp"
RecentFileCacheParser.exe -f "C:\Windows\AppCompat\Programs\RecentFileCache.bcf" --json "D:\jsonOutput" --jsonpretty

结果

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

用法

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

Amcache.hve解析工具

c#版: https://github.com/EricZimmerman/AmcacheParser

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

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

用法示例:

AmcacheParser.exe -f "C:\Windows\AppCompat\Programs\Amcache.hve" --csv C:\temp
AmcacheParser.exe -f "C:\Windows\AppCompat\Programs\Amcache.hve" -i on --csv C:\temp
AmcacheParser.exe -f "C:\Windows\AppCompat\Programs\Amcache.hve" -w "c:\temp\whitelist.txt" --csv C:\temp

如果我们直接执行的话,会提示:"正由另一进程使用,因此该进程无法访问此文件"

解决方法是把Amcache.hve复制到其它目录,我们可以使用shadow copyAmcache.hve复制到当前目录,然后再执行就可以了

结果

清除方法可以参考三好学生师傅的这篇文章:链接

SRUM (System Resource Usage Monitor)

Technology that monitors desktop application programs,services, windows apps and network connections

参考文章

适用于win8及以上系统,数据加密,实时记录

可以使用python解析:https://github.com/MarkBaggett/srum-dump

用法实例:

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

python srum_dump2.py --SRUM_INFILE c:\Windows\system32\sru\SRUDB.dat

清除方法:待补充

win10时间轴

Windows Timeline是Windows10在1803版中引入的一个新特性

用户可以使用Win + Tab可以对其进行访问,时间轴就像浏览器的历史记录一样,它记录了包含您访问过的网站,还包含您编辑的文档,您玩过的游戏,您查看或创建的图像等,其保存的记录在ActivitiesCache.db之中

参考文章:

https://kacos2000.github.io/WindowsTimeline/WindowsTimeline.pdf

https://cclgroupltd.com/2018/05/03/windows-10-timeline-forensic-artefacts/

ActivitiesCache.db位置在

:无加密,数据实时更新

C:\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<random_char>\ActivitiesCache.db

本质是sqlite3数据库文件,它包含的表如下

其中最重要的一个表是ActivityActivity表包含的字段有AppId(包含应用程序的路径),开始时间,结束时间等等

清除方法:删掉sqlite3数据库文件中指定记录即可

other

计划任务

计划任务往往是一个值得关注的点也是一个容易忽略的点。站在攻击的角度来讲,计划任务可以持久化后门、执行指定恶意程序等等;站在防御、取证的角度来讲,计划任务执行之后,系统是不会自动删除的(重启或者注销也是不会删除的),这就可能导致入侵者会忽略把计划任务清除,这就有利于我们的取证

列出所有任务

cmd:
schtasks.exe

powershell:
Get-ScheduledTask

根据文件夹列出所有任务
powershell:

Get-ScheduledTask -TaskPath "\"

根据任务名查看任务的详情信息

schtasks.exe /query /v /tn test /fo list

清除方法:删除指定的计划任务即可:schtasks.exe /delete /tn Task_name /F

总结

站在攻击者的角度来说,获取系统中的文件执行记录有利于我们信息收集、清理系统中的文件执行记录能进一步防止暴露自己

站在防御、取证的角度来说,定期清理系统中的文件执行记录能防止一些敏感信息泄露,但是这些信息能够被伪造和删除的所以不能盲目相信

Reference

https://3gstudent.github.io/3gstudent.github.io/

https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html?m=1


文章来源: http://xz.aliyun.com/t/7155
如有侵权请联系:admin#unsafe.sh