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事件機制
如何發現第三方設備:
設備和設備之間連接:
網口
端口
注意事項:
能單條指定刪除就優先使用:在痕跡清理中為了最大化我們的隱蔽性,我們如果能單條指定刪除某個內容就優先使用這種方法。
文件的刪除盡量使用覆寫的方式:傳統的刪除文件在短時間內被復原的機會很大,我們在操作刪除文件的時候盡可能使用覆寫的方式減少被復原的機會。
偽造痕跡也很重要:在某些特定的場景下偽造痕跡也是我們提高自己隱蔽性的一種可靠的方法
實戰經驗:
刪除指定記錄真的很重要:在實戰中關閉進程記錄看似很有用,但是在有經驗的藍隊中完全就是暴露自己整個攻擊時間的弱點,刪除自己需要的記錄才是最實用的
網絡隧道也是隱藏痕跡的一種方法:端口轉發、內網穿透等知識點其實在實戰中就是一種網絡連接痕跡隱藏的一種方式
思考時間差:如果痕跡隱藏是用來拖下一步滲透測試的時間差的話就需要評估藍隊人員的痕跡排查和電子取證能力以估算自己當前痕跡清理能爭取到的時間差為下一步行動做好時間規划