Windows痕迹清除
日志
Windows的日志文件分为3类核心日志,分别是系统日志,程序日志,和安全日志
系统日志(SysEvent):
记录操作系统产生的事件,如设备驱动无法正常启动或停止,系统进程崩溃等
默认位置:
%SystemRoot%\System32\Winevt\Logs\System.evtx
程序日志(AppEvent):
包含操作应用程序软件相关的事件。事件包括了错误、警告及任何应用程序需要报告的信息。
默认位置:
%SystemRoot%\System32\Winevt\Logs\Application.evtx
安全日志(SecEvent):
包含安全性相关的事件。用户权限变更,登录及注销,文件/文件夹访问等信息。
默认位置:
%SystemRoot%\System32\Winevt\Logs\Security.evtx
注:
1、系统内置3个核心日志文件(System、Security、Application);默认大小均20MB,数据超过20MB,默认系统将优先覆盖过期日志记录。应用程序、服务日志默认最大1024KB,超过最大限制也优先覆盖过期的日志记录
2、其他系统服务的日志也都储存在%SystemRoot%\System32\Winevt\Logs\下
操作系统日志记录大致流程
- svhost启动EventLog开始记录日志
- EventLog将操作记录先缓存为一段内存内容
- Wevtutil将内存内容解析为xml并且通过gui界面可视化的展现给用户
svchost
svchost主要是用来实现服务进程数据共享,以此来减少系统资源消耗,很多系统程序和服务使用svchost运行。
windows系统进程分为独立进程和共享进程两种,svchost.exe文件存在于%systemroot%system32目录下,它属于共享进程。
随着windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由svchost.exe进程来启动。但svchost进程只作为服务宿主,并不能实现任何服务功能,即它只能提供条件让其他服务在这里被启动,而它自己却不能给用户提供任何服务。这些系统服务是以动态链接库(dll)形式实现的,它们把可执行程序指向svchost,由svchost调用相应服务的动态链接库来启动服务。
Event Log
Event Log主要是管理windows管理事件和事件日志。它支持日志记录事件、查询事件、订阅事件、归档事件日志以及管理事件元数据。它可以用 XML 和纯文本两种格式显示事件。
EventLog的启动需要依赖于svchost,启动示例如:
C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted -p
wevtutil
检索有关事件日志和发布服务器的信息。此外,还可以使用此命令来安装和卸载事件清单,运行查询,以及导出、存档和清除日志。
Windows日志清理方法
Windows日志清理主要分为全量清理和定向清理,全量清理其动作较大容易被发现,定向清理相对比较隐蔽
全量删除方法
通过事件查看器删除
开始→运⾏,输⼊ eventvwr 进⼊事件查看器,右边栏选择清除⽇志
需要注意日志清理因为本身也是系统事件所以也会被记录,这也就是不存在完美的日志清理.
通过PowerShell删除
方法一
PowerShell -Command "& {Clear-Eventlog -Log 你要清理的日志(如Security)}"
方法二
Get-WinEvent -ListLog 你要清理的日志(如Security) -Force | %
暴力删除日志文件
- 停止Windows Event Log(EventLog) 服务
- 删除对应的文件
%SystemRoot%\System32\Winevt\Logs\
- 永久停用方法
查询要禁用的注册表
reg query "HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog"
删除对应的注册表
reg delete "HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog\System" /f
重启Windows Event Log(EventLog) 服务
使用wevtutil命令行删除
进入cmd
查询 wevtutil el所有系统日志(如要删除的日志名字清楚可以忽略此步骤)
删除对应日志,以清空系统日志为例
wevtutil cl system
msf一键清理
进入meterpreter后直接执行clearev
定向清理方法
删除最近数据
wevtutil qe 你要清理的日志(如Security) /f:text /rd:true /c:删除行数(如10行)
删除某指定单条记录
1、删除Security下的单条日志(EventRecordID=2222),并保存为tmp1.evtx
wevtutil epl Security tmp1.evtx "/q:*[System [(EventRecordID!=2222)]]"
2、结束日志进程(释放日志文件句柄)
3、替换原日志文件
4、重启日志服务
删除某指定多条记录
1、删除Security下的多条日志(EventRecordID为13030、13031和13032),结果保存为tmp2.evtx
wevtutil epl Security tmp2.evtx "/q:*[System [(EventRecordID>13032) or (EventRecordID<13030)]]"
2、结束日志进程(释放日志文件句柄)
3、替换原日志文件
4、重启日志服务
按时间段删除
1、删除SystemTime为2021-12-10T03:20:00至2021-12-10T03:21:00之间的日志,结果保存为1.evtx
wevtutil epl Security 1.evtx "/q:*[System [TimeCreated[@SystemTime >'2021-12-10T03:21:00' or @SystemTime <'2021-12-10T03:20:00']]]"
2、结束日志进程(释放日志文件句柄)
3、替换原日志文件
4、重启日志服务
Windows远程连接日志清理
当我们使用3389端口远程一台机器后会在对应机器上产生对应的记录,其记录只要有两部分组成:
- Default.rdp文件(系统隐藏文件)
- 注册表记录
删除Default.rdp方法
进入Default.rdp所在路径
cd %userprofile%\documents\
使用attrib去掉Default.rdp文件的,系统文件属性(S);隐藏文件属性(H)
attrib Default.rdp -s -h
删除
del Default.rdp
注册表清理方法
查询远程连接在注册表中的键值
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default"
删除对应的键值,如删除MRU0 "/v MRU0"
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /f /v MRU0
如使用当前机器作为跳板的话需要使用同步骤清理Servers下的键值:
查询具体要删除的键值文件夹
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
确定要删除的文件夹进行删除
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\192.168.84.128" /f
近期访问记录清理
- 用户最近访问过的文件和网页记录 C:\Users\Administrator\AppData\Local\Microsoft\Windows\History
- 近期访问过的文件
C:\Users\Administrator\Recent
利用覆写增大溯源难度
cipher /w:X #其中X指盘符或文件具体位置
cipher会分三次写入:第一次写入0x00,第二次写入0xff,最后一次写入随机数字