[toc]
0x01.Windows痕迹清理的基本思路和思考逻辑
1.1 基本概念
在渗透测试的过程结束后清理自己在从刚开始接触到目标计算机时开始的所有操作痕迹。
用户使用计算机---》攻击者使用计算机---》用户使用计算机
目的:
1. 为下一步渗透测试拖延时间
2.提高隐蔽性
为什么是这个目的:
1、所有的痕迹清理都不是绝对的,只要和计算机有接触就一定会有痕迹。
2、第三方的日志记录平台结构对于痕迹清理是基本无解的安全方案。
1.2 windows日志记录的基本机制
- Windows操作系统在运行生命周期,以特定数据结构方式存储、记录OS大量运行的日志信息,主要包括:
Windows事件日志(Event Log
)、Windows Web Server IIS日志
、Windows FTP日志
、Exchange Server邮件服务
、MS SQL Server数据库日志
等. - Windows日志包含9个元素:日期/时间、事件类型、用户、计算机、事件ID、来源、类别、描述、数据
- 系统内置3个核心日志文件(
System
、Security
、Application
);默认大小均为20480KB(20MB),数据超过20MB,默认系统将优先覆盖过期日志记录。应用程序、服务日志默认最大1024KB,超过最大限制也优先覆盖过期的日志记录
流程
1.svhost.exe中某些专门用于记录日志的线程启动日志记录功能
2.记录的操作会先缓存为一段内存内容
3.将内存内容通过wevtutil.exe解析为xml文件格式的文档
4.将xml文件转换为可读的日志
- 几种类型Windows日志
- System系统日志:系统进程、设备、磁盘活动等。记录了设备驱动无法正常启动或停止,硬件失败,重复IP地址,系统进程的启动,停止及暂停等行为。 默认位置:
%SystemRoot%\System32\Winevt\Logs\System.evtx
- Security安全日志:包含安全性相关的事件。e.g.用户权限变更,登录及注销,文件/文件夹访问等信息。 默认位置:
%SystemRoot%\System32\Winevt\Logs\Security.evtx
- Application应用程序日志:包含操作系统安装的应用程序软件相关的事件。事件包括了错误、警告及任何应用程序需要报告的信息,应用程序开发人员可以决定记录哪些信息。 默认位置:
%SystemRoot%\System32\Winevt\Logs\Application.evtx
- 应用程序及服务日志:如远程桌面客户端连接、无线网络、有线网路、设备安装等相关日志。
- System系统日志:系统进程、设备、磁盘活动等。记录了设备驱动无法正常启动或停止,硬件失败,重复IP地址,系统进程的启动,停止及暂停等行为。 默认位置:
0x02.windows清理用户痕迹
2.1 日志管理器的基本使用
在windows操作系统中打开cmd指令,输入eventvwr.msc
打开日志,"windows日志"文件里面找到系统日志。
图形界面操作如下:
2.2 清理用户操作痕迹
清理日志,会产生一条日志清理记录
2.3.清理3389痕迹
当我们使用一台主机连接另一台主机的3389端口,客户端主机的%userprofile%\documents\
文件夹下会生成一个default.rdp文件,该文件保存了远程连接的相关配置信息
注册表中也有相关记录
因此我们需要删除该操作相关记录
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
cd %userprofile%\documents\
attrib Default.rdp -s -h
del Default.rdp
以上命令可以写成bat文件,直接删除
0x03.windows清操作痕迹
3.1.日志文件与日志注册表
系统日志:%SystemRoot%\System32\Winevt\Logs\System.evtx
安全日志:%SystemRoot%\System32\Winevt\Logs\Security.evtx
应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx
日志在注册表的键:HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog
通过修改注册表中不同程序调用的日志记录程序或者链接库的路径,可以确保使用该程序时不会生成相关日志。
3.2.日志文件的全面清理
1.手动
事件查看器-删除
2.命令行
以下操作需要管理员权限
cmd:
wevtutil el
列出系统中所有日志名称
//以下是渗透过程中场清理的日志
wevtutil cl system
清理系统日志
wevtutil cl applicatio
n 清理应用程序日志
wevtutil cl security
清理安全日志
powershell:
1.PowerShell -Command "& {Clear-Eventlog -Log Application,System,Security}"
2.Get-WinEvent -ListLog Application,Setup,Security -Force | % {Wevtutil.exe cl $_.Logname}
3.msf
meterpreter>clearev
3.3.最近文件清理
方法1:del /f /s /q “%userprofile%\Recent*.*
方法2:C:\Users\用户名\Recent
3.4.文件的覆写删除
增加运维人员数据恢复的难度
cipher /w:D:\test
单个文件
format 盘符
整个盘符
3.5. 学习安全软件如何清理
3.6.停止日志记录
1.基于powershell
https://github.com/hlldz/Phant0m
ps:使用该powershell之前需要调整powershell的执行模式,从严格调整为不严格,如下
Get-ExecutionPolicy
Set-ExecutionPolicy unrestricted
然后导入该脚本中的模块,使用模块中函数
可以看到该脚本是将线程杀掉
有个缺点,该状态会一直持续下去,容易被发现
2.基于c
https://github.com/QAX-A-Team/EventCleaner
这个工具相比前一个工具的好处就是,可以暂停日志记录线程,也可以恢复线程。
A tool mainly to erase specified records from Windows event logs, with additional functionalities.
EventCleaner suspend
suspends logging threads of the windows event log service, after which no logs will be recorded
暂停日志线程,停止日志记录
EventCleaner normal
resumes logging threads of the windows event log service
恢复日志线程
EventCleaner closehandle
frees handle acquired exclusively by the windows event log service to security.evtx,
so that we can manipulate the file
解除 security.evtx的文件占坑
EventCleaner 100
remove the log with id 100
删除 event record id 为 100 的日志
暂停
恢复
0x04.windows清理时间痕迹
4.1.伪造文件修改时间
Function edit_time($path){$date1 =Get-ChildItem |
Select LastWriteTime|Get-Random;$date2 =Get-ChildItem |
Select LastWriteTime|Get-Random;$date3 =Get-ChildItem |
Select LastWriteTime|Get-Random;$(Get-Item $path).lastaccesstime=$date1.LastWriteTime;
$(Get-Item $path).creationtime=$date2.LastWriteTime ;
$(Get-Item $path).lastwritetime=$date3.LastWriteTime};
edit_time("D:\test")
修改上次写入时间,创建时间,上次访问时间。 时间为随机时间,可自行更改
4.2.伪造痕迹
eventcreate -l system(日志类型) -so administrator(谁生成的) -t warning(等级) -d "this is a test"(日志内容) -id 500(id号)
成功
0x05.痕迹总结
5.1 注意事项
能单条指定删除就优先使用:在痕迹清理中为了最大化我们的隐蔽性,我们如果能单条指定删除某个内容就优先使用这种方法。
文件的删除尽量使用覆写的方式:传统的删除文件在短时间内被复原的机会很大,我们在操作删除文件的时候尽可能使用覆写的方式减少被复原的机会。
伪造痕迹也很重要:在某些特定的场景下伪造痕迹也是我们提高自己隐蔽性的一种可靠的方法
5.2 实战经验:
删除指定记录真的很重要:在实战中关闭进程记录看似很有用,但是在有经验的蓝队中完全就是暴露自己整个攻击时间的弱点,删除自己需要的记录才是最实用的
网络隧道也是隐藏痕迹的一种方法:端口转发、内网穿透等知识点其实在实战中就是一种网络连接痕迹隐藏的一种方式
思考时间差:如果痕迹隐藏是用来拖下一步渗透测试的时间差的话就需要评估蓝队人员的痕迹排查和电子取证能力以估算自己当前痕迹清理能争取到的时间差为下一步行动做好时间规划