- 網絡安全應急響應技術實戰指南
- 奇安信安服團隊
- 3049字
- 2021-01-05 18:11:28
2.4 文件痕跡排查
在應急響應排查的過程中,由于大部分的惡意軟件、木馬、后門等都會在文件維度上留下痕跡,因此對文件痕跡的排查必不可少。一般,可以從以下幾方面對文件痕跡進行排查:
(1)對惡意軟件常用的敏感路徑進行排查;
(2)在確定了應急響應事件的時間點后,對時間點前后的文件進行排查;
(3)對帶有特征的惡意軟件進行排查,這些特征包括代碼關鍵字或關鍵函數、文件權限特征等。
1.Windows系統
1)敏感目錄
在Windows系統中,惡意軟件常會在以下位置駐留。
(1)各個盤下的temp(tmp)相關目錄。有些惡意程序釋放子體(即惡意程序運行時投放出的文件)一般會在程序中寫好投放的路徑,由于不同系統版本的路徑有所差別,但是臨時文件的路徑相對統一,因此在程序中寫好的路徑一般是臨時目錄。對敏感目錄進行的檢查,一般是查看臨時目錄下是否有異常文件。圖2.4.1通過臨時目錄發現可疑程序svchost.exe。

圖2.4.1 通過臨時目錄發現可疑程序svchost.exe
(2)對于一些人工入侵的應急響應事件,有時入侵者會下載一些后續攻擊的工具。Windows系統要重點排查瀏覽器的歷史記錄、下載文件和cookie信息,查看是否有相關的惡意痕跡。如圖2.4.2所示,是在排查瀏覽器下載文件時發現的惡意樣本。

圖2.4.2 排查瀏覽器下載文件時發現的惡意樣本
(3)查看用戶Recent文件。Recent文件主要存儲了最近運行文件的快捷方式,可通過分析最近運行的文件,排查可疑文件。一般,Recent文件在Windows系統中的存儲位置如下:
C:\Documents and Settings\Administrator(系統用戶名)\Recent;
C:\Documents and Settings\Default User\Recent。
如圖2.4.3所示,是打開Recent文件后看到的內容。

圖2.4.3 Recent文件內容
(4)預讀取文件夾查看。Prefetch是預讀取文件夾,用來存放系統已訪問過的文件的預讀取信息,擴展名為pf。之所以自動創建Prefetch文件夾,是為了加快系統啟動的進程。Windows系統利用“預讀取”技術,在實際用到設備驅動程序、服務和shell程序之前裝入它們。這種優化技術也被用到應用軟件上,系統對每個應用軟件的前幾次啟動情況進行分析,然后創建一個描述應用需求的虛擬“內存映像”,并把這些信息保存到Windows\Prefetch文件夾中。一般,在Windows 7系統中可以記錄最近128個可執行文件的信息,在Windows 8到Windows 10系統中可以記錄最近1024個可執行文件。一旦建立了映像,之后應用軟件的裝入速度可大幅提升。Prefetch文件夾的位置為“%SystemRoot%\Prefetch\”。
可以在【運行】對話框中輸入【%SystemRoot%\Prefetch\】命令,打開Prefetch文件夾。之后排查該文件夾下的文件,如圖2.4.4所示。

圖2.4.4 排查Prefetch文件夾下的文件
另外,Amcache.hve文件也可以查詢應用程序的執行路徑、上次執行的時間及SHA1值。Amcache.hve文件的位置為“%SystemRoot%\appcompat\Programs\”,可以在【運行】對話框中輸入【%SystemRoot%\appcompat\Programs\】命令,打開Amcache.hve所在文件夾,Amcache.hve文件如圖2.4.5所示。

圖2.4.5 Amcache.hve文件
2)時間點查找
應急響應事件發生后,需要先確認事件發生的時間點,然后排查時間點前、后的文件變動情況,從而縮小排查的范圍。
(1)可列出攻擊日期內新增的文件,從而發現相關的惡意軟件。在Windows系統中,可以在命令行中輸入【forfiles】命令,查找相應文件,命令的參數情況如圖2.4.6和圖2.4.7所示。

圖2.4.6 命令參數情況1

圖2.4.7 命令參數情況2
【forfiles】命令的使用方法如圖2.4.8所示。使用【forfiles/m *.exe/d+2020/2/12/s/p c:\ /c "cmd/c echo @path @fdate @ftime" 2>null】命令就是對2020/2/12后的exe新建文件進行搜索。在輸入此命令后,找到了oskjwyh28s3.exe文件。

圖2.4.8 【forfiles】命令的使用方法
還可以根據文件列表的修改日期進行排序,查找可疑文件。當然也可以搜索指定日期范圍內的文件夾及文件,如圖2.4.9所示。

圖2.4.9 搜索文件
(2)對文件的創建時間、修改時間、訪問時間進行排查。對于人工入侵的應急響應事件,有時攻擊者會為了掩飾其入侵行為,對文檔的相應時間進行修改,以規避一些排查策略。例如,攻擊者可能通過“菜刀類”工具改變修改時間。因此,如果文件的相關時間存在明顯的邏輯問題,就需要重點排查了,極可能是惡意文件。如圖2.4.10所示,文件的修改時間為2015年,但創建時間為2017年,存在明顯的邏輯問題,這樣的文件就需要重點進行排查。

圖2.4.10 文件的相關時間存在明顯的邏輯問題
3)Webshell
在應急響應過程中,網站是一個關鍵的入侵點,對Webshell(網站入侵的腳本工具)的查找可以通過上述方法進行篩選后再進一步排查。還可以使用D盾、HwsKill、WebshellKill等工具對目錄下的文件進行規則查詢,以檢測相關的Webshell。這里以使用D盾為例,通過掃描文件,可以直接發現可疑文件,如圖2.4.11所示。

圖2.4.11 使用D盾
2.Linux系統
1)敏感目錄
Linux系統常見的敏感目錄如下。
(1)/tmp目錄和命令目錄/usr/bin/usr/sbin等經常作為惡意軟件下載目錄及相關文建被替換的目錄。文件名為crloger8的木馬下載到/tmp目錄下,如圖2.4.12所示。

圖2.4.12 文件名為crloger8的木馬下載到/tmp目錄下
(2)此外,~/.ssh及/etc/ssh也經常作為一些后門配置的路徑,需要重點檢查,如圖2.4.13所示。

圖2.4.13 后門配置路徑
2)時間點查找
(1)通過列出攻擊日期內變動的文件,可發現相關的惡意軟件。通過【find】命令可對某一時間段內增加的文件進行查找。以下為常用的【find】命令。
find:在指定目錄下查找文件。
-type b/d/c/p/l/f:查找塊設備、目錄、字符設備、管道、符號鏈接、普通文件。
-mtime-n+n:按文件更改時間來查找文件,-n指n天以內,+n指n天前。
-atime-n+n:按文件訪問時間來查找文件,-n指n天以內,+n指n天前。
-ctime-n+n:按文件創建時間來查找文件,-n指n天以內,+n指n天前。
使用命令【find/-ctime 0-name "*.sh"】,可查找一天內新增的sh文件,如圖2.4.14所示。

圖2.4.14 查找一天內新增的sh文件
在查看指定目錄時,也可以對文件時間進行排序,圖2.4.15是使用命令【ls-alt|head-n 10】查看排序后前10行的內容。

圖2.4.15 查看排序后前10行的內容
(2)對文件的創建時間、修改時間、訪問時間進行排查。
使用【stat】命令可以詳細查看文件的創建時間、修改時間、訪問時間,若修改時間距離應急響應事件日期接近,有線性關聯,說明可能被篡改。使用【stat commandi.php】命令查詢文件commandi.php的時間信息,如圖2.4.16所示。

圖2.4.16 查詢文件commandi.php的時間信息
3)特殊文件
Linux系統中的惡意文件存在特定的設置、特定的關鍵字信息等。Linux系統中的幾種特殊文件類型可以按照以下方法進行排查。
(1)特殊權限文件查找。如圖2.4.17所示是查找777權限的文件,使用命令【find/tmp-perm 777】,可發現crloger8文件。

圖2.4.17 特殊權限文件查找
(2)Webshell查找。Webshell的排查可以通過分析文件、流量、日志進行,基于文件的命名特征和內容特征,相對操作性較高。通過分析文件的方法進行查找,可以從Webshell中常出現的一些關鍵字著手,對文件進行初篩,縮小排查的范圍。例如,可使用如圖2.4.18所示的語句,其中【find/var/www/-name "*.php"】命令是查找“/var/www/”目錄下的所有php文件,【xargs egrep】及之后的命令是查詢php文件中是否包含后面的關鍵字。

圖2.4.18 語句
除了初篩的方法,還可以使用findWebshell、Scan_Webshell.py等進行掃描排查。
(3)對系統命令進行排查。【ls】和【ps】等命令很可能被攻擊者惡意替換,所以可以使用【ls-alt/bin】命令,查看命令目錄中相關系統命令的修改時間,從而進行排查,如圖2.4.19所示。

圖2.4.19 查看系統命令修改時間
也可以使用【ls-alh/bin】命令查看相關文件的大小,若明顯偏大,則文件很可能被替換,如圖2.4.20所示。

圖2.4.20 查看相關文件大小
(4)Linux的后門檢測,可以使用第三方查殺工具(如chkrootkit、rkhunter)進行查殺。chkrootkit工具用來監測 rootkit 是否被安裝到當前系統中。rootkit是攻擊者經常使用的后門程序。這類后門程序通常非常隱秘、不易被察覺,植入后,等于為攻擊者建立了一條能夠長時間入侵系統或可對系統進行實時控制的途徑。因此,使用chkrootkit工具可定時監測系統,以保證系統的安全。
在使用chkrootkit時,若出現infected,則說明檢測出系統后門;若未出現,則說明未檢測出系統后門,如圖2.4.21所示。也可以使用【chkrootkit-q|grep INFECTED】命令檢測并篩選出存在infected的內容。
使用rkhunter可以進行系統命令(Binary)檢測,包括MD5校驗、rootkit檢測、本機敏感目錄檢測、系統配置檢測、服務及套件異常檢測、第三方應用版本檢測等。排查情況如圖2.4.22和圖2.4.23所示。

圖2.4.21 排查情況

圖2.4.22 排查情況1

圖2.4.23 排查情況2
(5)排查SUID程序,即對于一些設置了SUID權限的程序進行排查,可以使用【find/-type f-perm-04000-ls-uid 0 2>/dev/null】命令,如圖2.4.24所示。

圖2.4.24 排查SUID程序