觀點

木馬程式檢測程序與技巧Step By Step

2005 / 02 / 03
文/路克
木馬程式檢測程序與技巧Step By Step

木馬程式都有一個伺服端與用戶端,一般而言在受害者機器上的,稱為伺服端(Server);遠端進行操控的稱為用戶端(Client)。木馬程式具有隱蔽、自動啟動、欺騙、自我恢復、破壞、傳輸資料的行為特徵,以下針對木馬程式的各種屬性作探討,以研擬相關對策,收知己知彼之效。
木馬的種類
依照木馬程式目的來分類:其最終的目的就是蒐集情資、等待時機執行破壞任務、當作跳板進行滲透。其手段包含匿蹤、佔領、遠端遙控、截聽封包、記錄鍵盤輸入資料、破壞、傳遞情資、提供封包轉送達到跳板功能…等。絕大部分的木馬程式所具備的功能與目的,不僅具備單一功能、單一目的,而是具備混合功能(hybrid) 與多目標導向。
依照木馬的植入技術來分類:一般常見的有執行檔(Executable File)、透過動態連結檔注射( DLL Injection)、動態網頁伺服程式木馬(ASP、PHP Trojan)、透過瀏覽器漏洞入侵的網頁木馬(一般稱為BMP Trojan或 GIF Trojan)以及透過電子郵件入侵的郵件附件木馬。

木馬的藏身處
木馬程式主要藏身於系統目錄、易忽略之目錄,例如:Windows 的系統目錄 "winnt\system"、"winnt\system32",以及其下的子目錄。木馬的藏身處,主要考慮不容易被發現的隱蔽性,放在不常用的目錄中,以類似於系統程式名稱的方式掩人耳目,像是 regedit 跟 regedlt 或 reged1t,這三個檔案名稱,不仔細看不容易發現有異。目的就是為了達到匿蹤的效果,以延長其任務運作時間。

木馬的啟動方式
在Windows 2000中的註冊表(Registry)中,有幾組機碼可以使木馬程式於開機時啟動,或者經由其他事件的發生,連帶啟動木馬程式,以達到長駐於系統之中的目的。包括:啟動區、連帶啟動區…等,皆為常見啟動木馬的參數存放處,整理於表1。
藏匿於系統啟動選單之中,以Windows 2000 為例:在“C:\Documents and Settings\Administrator\「開始」功能表\程式集\啟動”及“C:\Documents and Settings\All Users\「開始」功能表\程式集\啟動”兩處均可能成為木馬藏匿的地點。藏匿於此,於開機過程中便會自動啟動木馬程式。(使用者名稱為Administrator或其他名稱。)
藏匿於一般程式中,透過用戶自網際網路下載至內部網路執行,該程式遭到置換或感染,當程式一執行便將木馬啟動,而產生兩個不同的程序,一個是原本應用程式的程序,另一個則是木馬程序,例如:網路上常常可見 flash製作的動畫檔案,當編譯為執行檔案時,便可將木馬藏於其中。

木馬檢測程序說明
1. 接獲資訊安全通報,展開清查,並提升監控層級。若發現可疑程式,應仔細確認並通報。
2. 以現有之防毒軟體、木馬偵測程式可偵測出該木馬程式,可使用現成工具軟體隔離並移除,完成之後應向上呈報,反應至CERT等專責單位,以收區域聯防之效。
3. 無法以現有之防毒軟體、木馬偵測程式偵測出該惡意程式,或者是新版的病毒碼未釋出,但是已經在安全通報中詳述該程式之特徵與處置方法。應依既定之處理方式完成隔離、清除、記錄相關作業,並向上呈報。
4. 發現未知之可疑程式,尤其是大規模的感染情況,應先向上呈報。若已經具備木馬檢測經驗與能力,可依處理程序針對本機、網路通訊、稽核檔案(本機、防火牆等),進行檢測與清除。清除步驟與檢核表請參考表2。檢測過程的畫面與相關資料檔案,應蒐整封裝,以利專業單位進行分析;若未具備相關處置能力與經驗,應該立即尋求協助,並監控網路通訊行為與保存現場,待專業人員進行處置。
5. 若該事件擴大為大規模之案件,則應組成專案小組進行調查處置,以避免案件危害持續擴大。

木馬檢測作業步驟與注意事項
1. 一般而言,檢測木馬程式的步驟,包含本機檢測、網路通訊的檢測與記錄以及稽核檔案的過濾分析,綜合以上三大步驟才可以完整地過濾出可疑之程序(Process)和可疑的主機。在《資安人》第8期p.117至p.119的文章中已提及相關步驟與工具,本文在此僅稍作補充。
2. 本機檢測的項目包含:
檢查可疑之程序,比對Windows系統之正常程序,找出產生該程序的檔案所在,檢查檔案名稱、大小及相關屬性。建議使用Process Explorer,它可以檢測出掛載於正常程序下的子程序。
檔案名稱為原作業系統正常之應用程式,無法判定其是否為正常檔案,或是木馬偽裝。可與正常檔案(同一作業系統且相同版本)進行檔案HASH值(MD5)比較。 ?檢查機碼(Registry)之特定欄位,請參考上頁表1(常見遭木馬更動之註冊表清單)。若在上述欄位找到相同之可疑程式,大概有九成的機率確定是異常的程序所為。
將上述可疑之程序另外複製保存,並抓下當時之畫面(Screenshot),並將可疑的Registry輸出,封存以利後續處置。
3. 通訊檢測︰
列出對外開放之服務埠號,找出可疑程式所開放的通訊服務。如:activeport、fport。
使用 netstat –an 10 > comm.log 指令,可將相關通訊連線的過程記錄於 comm.log 檔案中。
運用現成之連線監聽工具,記錄封包與流量,如:windump、ethereal、sniffer。
4. 稽核檔檢測
針對可疑主機之IP位址,調出相關日期的防火牆、入侵偵測系統的稽核檔案(Log),進行過濾與比對。
若本機安全性稽核已經開啟,亦可參考相關之系統、安全事件之稽核檔案。
分析稽核檔案,可以回溯遭植入木馬的日期,以及相關之資料流向,再者,亦可追朔來源主機位址及其他相關的受害主機位址。
5. 封存項目
將上述之檢測資料與結果,利用壓縮的方式,加密封存,一併提交給專業驗測單位進行分析。
封存的項目應包含:可疑程式本身、相關資訊的快照(如:Process 列表、檔案屬性及檔案目錄之畫面)、註冊機碼、通訊檢測記錄檔、相關之稽核檔案。
6. 檢核表
本文針對以上檢測程序,彙整為木馬程式檢測檢核表(checklist)供參考使用。請參考表2。
7. 報告格式
木馬檢測報告的內容,除了作為總結整個木馬檢測任務之外,還包含行政上之程序說明、檢討處置過程與需要加強之處。一般應該具備以下項目:
基本資料:單位、人員、聯絡方式。
案件概述:狀況描述、發現日期、報案日期、結案日期等重要資訊。
受檢測環境資料:作業系統、已安裝之應用程式、該主機提供之服務與用途、存放資料之機密等級、信賴網域及主機等相關資料。
案件及處置概述:處置步驟概述、參與人員,通報經過與通報時間。
可疑程式描述:路徑、檔案名稱、封存檔名稱與內容對照表,可將前述之檢核表作為附件。
損害估計與檢討:本事件所造成網路、檔案、擴散範圍及設備之損害估計,相關檢討與未來需求。

資安是無止境的輪迴
圖2可說明處置木馬程式各階段的任務狀況與目標,以及參與人員之權責。在未發佈安全通報之前,必須做好資安稽核與抽查、對於各設施的異常警示作分析處置,方可主動出擊,防範於未然。發現木馬程式或是接到安全通報時,應在第一時間依程序實施檢測,完成監控與現場保存,以及尋求專業協助。向上呈報是必要的程序,除了讓資安管制單位可以掌握災情,透過通報體系提醒各單位防範,亦可充份得到上級長官的支持,編成專案小組辦理。完成檢測工作之後,最重要的還是進行損害評估、依災難復原計劃逐步恢復運作,並提出專案報告。後續則針對弱點進行補強、更改防火牆及其他設施之組態與規則設定,以有效杜絕類似之資安事件再度重演。
木馬程式的演進,間接促使防毒軟體、掃木馬軟體核心引擎的升級,當新的木馬程式採用更高深的技術,大玩捉迷藏遊戲,相對的,偵測軟體功能和木馬檢測技巧就再度提升。”Security is an ongoing process; it掇 never done.”, 資安是無止境的輪迴,沒有所謂的結束,天天都有新的挑戰。

表1 木馬可能藏匿之註冊表清單
1. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
2.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
3.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
4.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
5.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceSetup
6.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceSetup
7.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
8.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
9.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
10.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
11.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
12.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
13.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit
14.HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\WinLogon
15. HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Explorer\Shell Folders
16. HKEY_CLASSES_ROOT\txtfile\shell\open\command
17. HKEY_CLASSES_ROOT\Briefcase\shell\open\command
18. HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\
19. HKEY_CLASSES_ROOT\exefile\shell\open\command
20. HKEY_CLASSES_ROOT\???file \shell\open\command (???)表示可能為任何副檔名之名稱