0x01.基本思路和思考逻辑
基本概念 :
在渗透测试的过程结束后清理自己在从刚开始接触到目标计算机时开始的所有操作痕迹。
用户使用计算机----------------->攻击者使用计算机------------------------------>用户使用计算机
痕迹清理的目的 :
1、为下一步的渗透测试拖延时间
2、提高隐蔽性
为什么是这个目的:
1、所有的痕迹清理都不是绝对的,只要和计算机有接触就一定会有痕迹。
2、第三方的日志记录平台结构对于痕迹清理是基本无解的安全方案。
windows日志记录的基本机制:
svchost.exe(通过svchost.exe中的某些专门用于记录日志的线程启动日志记录功能)
|
|
内存堆(记录到的操作会先缓存为一段内存内容)
|
|
xml(将内存内容通过wevtutil.exe解析为xml文件格式的文档)
|
|
日志(将xml文件转换为可读的日志)
日志的基本结构:
1.时间
2.地点
3.用户
4.操作
0x02.windows清理用户痕迹
1.日志管理器的基本使用
计算机--》右键管理--》系统工具--》事件查看器
2.清理用户操作痕迹
清楚应用程序日志,会在系统日志中有一条清理日志的日志,安全清理日志,会在安全中保留一条日志清理的日志
3.清理3389痕迹(作业)
当你拿下一台主机的时候,对内网进行渗透的时候,可能会用这台跳板机,去连接内网其他机器的3389,那么在跳板机上就会有3389连接记录,需要清理
连接的保存记录,也可以通过注册表查看
@echo off
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
0x03.windows清理操作痕迹
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
2.日志文件的全面清理
手动:
事件查看器-删除
命令行:(作业)
cmd下
wevtutil el 列出系统中所有日志名称
wevtutil cl system 清理系统日志
wevtutil cl application 清理应用程序日志
wevtutil cl security 清理安全日志 (常用的就是这三个)
powershell下
PowerShell -Command "& {Clear-Eventlog -Log Application,System,Security}"
Get-WinEvent -ListLog Application,Setup,Security -Force | % {Wevtutil.exe cl $_.Logname}
msf:
meterpreter>clearev 也是删除应用,安全,系统这三个日志
3.最近文件的清理
保存的位置 :C:\Users\Administrator\Recent
删除命令:
del /f /s /q "%userprofile%\Recent\*.\*"
如果命令不行,手动删除
%userprofile% == C:\Users\Administrator
4.文件的覆写删除
这种删除一般是无法删除的
cmd下:
cipher /w:D:\test (复写删除test文件夹下的内容)单个文件
format 盘符 (格式化)整个盘符
5.学习安全软件如何清理
火绒,360啊,看他们清除文件的路径
6.停止日志记录
1.基于powershel
https://github.com/hlldz/Invoke-Phant0m
在powershell下
使用方法:(前提powershell的策略是不严格)
导入.ps1文件
Import-Module Invoke-Phant0m.ps1
Invoke-Phant0m
缺点:直接把线程杀死了,无法恢复,除非重启电脑
2.基于c(作业)
https://github.com/QAX-A-Team/EventCleaner
cmd下,管理员权限
EventCleaner suspend 暂停日志线程,停止日志记录
EventCleaner normal 恢复日志线程
EventCleaner 100 删除 event record id 为 100 的日志
优点:这个工具会把记录日志的线程挂起,然后再恢复过来
0x04.windows清理时间痕迹
1.伪造文件修改时间(作业)
powershell下:
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("E:\test")
每次运行时间都会变化
2.伪造痕迹(作业)
伪造日志:
eventcreate -l system -so administrator -t warning -d "this is a test" -id 500
类型:系统 管理员 警告 内容 i
日志挂起,伪造时间,伪造痕迹这三个是实战中经常使用的
0x05.windows痕迹清理总结
重点内容:
痕迹清理的目的
windows痕迹记录的机制
事件查看器的使用及文件和注册表的位置
学习路径:
蓝队排查
安全软件
windows文件系统
windows事件机制
如何发现第三方设备:
设备和设备之间连接:
网口
端口
注意事项:
能单条指定删除就优先使用:在痕迹清理中为了最大化我们的隐蔽性,我们如果能单条指定删除某个内容就优先使用这种方法。
文件的删除尽量使用覆写的方式:传统的删除文件在短时间内被复原的机会很大,我们在操作删除文件的时候尽可能使用覆写的方式减少被复原的机会。
伪造痕迹也很重要:在某些特定的场景下伪造痕迹也是我们提高自己隐蔽性的一种可靠的方法
实战经验:
删除指定记录真的很重要:在实战中关闭进程记录看似很有用,但是在有经验的蓝队中完全就是暴露自己整个攻击时间的弱点,删除自己需要的记录才是最实用的
网络隧道也是隐藏痕迹的一种方法:端口转发、内网穿透等知识点其实在实战中就是一种网络连接痕迹隐藏的一种方式
思考时间差:如果痕迹隐藏是用来拖下一步渗透测试的时间差的话就需要评估蓝队人员的痕迹排查和电子取证能力以估算自己当前痕迹清理能争取到的时间差为下一步行动做好时间规划