2006年真可謂是“間諜軟體年”!這一兩年來,中國大陸網路發展一路竄起,儼然成為駭客大帝國,尤其在開發新的軟體漏洞(0day Exploit),還有Spyware/Rootkit等使『資不安』的產業,都十分有『工業規模』。據『可靠線民』透露,由於台灣網管人力不足,所以許多重要單位的地下網管都在對岸上班,應該幫我們做了很好的『異地備援』,所以如果來個什麼大地震或是大停電,大家其實都不用怕了!
說到間諜程式,Windows上的Spyware已經發展很久了,早在Windows 95/98時代就有不少成名的Spyware,像是死牛教派組織(一個駭客工具的開發組織,the Cult of the Dead Cow)在1998年推出的Back Orifice 1.2,就是一隻經典的後門程式,轟動一時。之後死牛教派推出了Bo2K,在Spyware的發展史上也是很重要的推手,因為這些後門程式都是以Open Source方式公開,簡潔而優雅的程式架構更奠定他的名氣,也讓這樣的技術散播下去。早期的後門程式的運作方式十分單純,通常是一組Client-Server架構的程式,被控端執行Server端,而Hacker使用Client連進去Server端,做遠端遙控。近來由於Firewall跟NAT的普及,Connect-Back形式或是Http Tunnel的通訊變成主要流行的技術。此外,Spyware的發展也越來越有跟Rootkit結合的趨勢,更加隱匿、更難移除。
在《資安人》28期專家開講「邪惡軟體攻佔地球」一文中,我們介紹過一些Rootkit的概念,也說明了目前常見的Rootkit實作機制。這樣的發展趨勢實在令人擔憂,因為並沒有有效的武器來對抗,各種身懷絕技的Rootkit我們連看都看不到了,這場仗怎麼打下去!
各位應該看過一大堆閒聊打屁地講偵防間諜軟體的文章,也一定有一個大問號-「看了一大堆文章還是不知道如何檢查電腦到底有沒有Spyware?」你也許不是專業的資安事件處理人員,沒有專業的工具,也沒有受過專業的Anti-Spyware訓練。在這裡,幫大家整理一個簡易流程,希望用網路上就找得到的工具,來幫助你能夠自行做電腦健康檢查。(如圖1)
檢查隱藏的惡意程式(Check Hidden Malicious Item)
當你開始著手要偵查Spyware的時候,首先要確認是否有Rootkit在你的電腦上,這一個步驟非常重要,因為有Rootkit存在,極可能會干擾後面其他檢測,使得你在電腦上蒐集的資訊變得不可信任,所以必須先排除已存在的Rootkit才能繼續下去。如果沒有適合的工具,要檢測Rootkit幾乎是不可能的,但只要用對工具,Rootkit反而比其他的Spyware更容易發現!
* RootkitRevealer
這邊先介紹兩個工具一個是RootkitRevealer(簡稱RKR),它專門針對隱藏檔案跟隱藏的Registry做偵測,RKR會直接讀取NTFS的資料,而不是透過OS Kernel,獲得第一手且原始的檔案列表,接著RKR透過Kernel的API再取得檔案列表來比較。如果有Rootkit存在,API可能被Rootkit攔截而傳回比較少的資料,如此一比較就可以得知哪些檔案是該看到卻是被隱藏的,這樣的動作也稱為交叉對照式偵測(Cross-View based Detection)。RKR在Registry方面也是一樣方式,也可以找出隱藏的資料。好端端地,檔案幹嘛要隱藏呢?這麼心虛的檔案,看來是Spyware重點嫌疑犯,千萬別放過!(如圖2)
RKR的缺點有兩項,第一是它需要蠻長的分析時間(還真的蠻久),在Registry部分,它會把Registry整個Dump下來再分析找出隱藏的資料,而在檢測隱藏檔案部分,因為是直接讀取NTFS資料,所以所花的時間跟檔案數量呈正比。雖然這些都是很完整的檢查,但幾乎是把你的電腦翻過來找一遍。第二是RKR由NTFS得到的資料有時會成為誤判,影響偵測結果,這點倒是很嚴重。
* IceSword
在「邪惡軟體攻佔地球」一文中提及這套程式,RKR比較注重靜態資料分析,IceSword對於執行中的Spyware/Rootkit有比較好的偵測。它可以偵測出隱藏的Process,這可以補足RKR的一些死角。另一個很重要的功能是,它可以分析出SSDT Hook,這種類型的Hook是幾乎是Rootkit必備的手法,有了這項分析,你可以很輕易找出這些Rootkit。但是請注意,有部分的正常軟體也是會做SSDT Hook,像是虛擬光碟的Driver,所以要仔細觀察,別殃及無辜。(如圖3)
Icesword另一項特殊功能是可以直接操作File System與Registry,不受其他程式或是Rootkit干擾,這有點類似RKR,但是更好用,你可以直接編輯或是瀏覽檔案系統與登錄檔,刪除有問題的Spyware。
檢查不正常的程式(Check Malicious Process)
* Process Explorer
Process Explorer是SystemInternals網站上一個很有名的工具。望文生義就知道這是一個以Process為觀察對象的工具,它比Windows內建的Taskmgr功能強很多,幾乎可以觀察Process的所有資訊,像是載入的DLL、所擁有的Handle、Thread資訊…等,真是五花八門。對我們偵查Spyware來說,有幾項資訊可以特別注意,例如Process的完整檔名、載入DLL、Process的父執行緒以及Command Line。(如圖4)
那什麼是不正常的Process呢?這說來就比較籠統了,除了一些來路不明的Process之外,你還可以特別注意一些檔案的位置。例如有時候會看到一些奇怪IE的Process,但是卻不是放在C:\Program Files\Internet Explorer\的目錄之下。或者是偽裝成系統案檔名稱的Spyware,例如本來檔名應該是iexplore.exe,但是它卻可能是 “iexplorer.exe”多一個r字母,這很容易眼花漏看,尤其當你很想下班的時候,特別容易發生!另一種狀況是,明明沒有看到任何IE的視窗,但是卻發現有IE的Process在執行!那麼你也可能已經被“某知名”的Spyware入侵了,以上都是要特別當心的。
* File Signature Verification
此工具可以跟內建的數位簽章作驗證,用來檢查Windows中的系統檔案是否被變更或是被Spyware感染。更好的是你也許不知道,它可是Windows內建的工具,放在c:\windows\system32\的sigverif.exe。可以讓你在密密麻麻的系統資料夾中找出的奇怪檔案。(如圖5)
在檢視結果的時候要注意,有些Windows自己的系統檔是沒有簽章的,而且有些系統元件可能也沒有,例如廠商提供的Driver也是沒有簽章的,所以要自行斟酌。也許,這以後Microsoft的Vista會有更嚴謹的規定,讓廠商也要提供數位簽章。
檢查網路的活動(Check Network Actives)
並不是所有的Spyware都會有網路活動,但是如果Spyware把蒐集的資料送出去的話,或者接受Hacker的遠端搖控,就會造成當事人實質的損害,資料一旦外洩就不是一般的事件處理了。因此具有網路活動是後門的重要特徵。接下來所介紹的這兩個工具,能幫助我們觀察各個Process的網路活動,揪出鬼鬼祟祟的通訊。
* FPort
通常大家都聽過用netstat –an來看系統上所以有被使用的TCP或是UDP的Port,也可以觀察連線的狀態,但是這有一個很嚴重的缺點:你無法得知是哪一個Process在使用這些Port,這樣你就不能找出嫌疑犯了,我們想要知道資訊並不只是“電腦有Spyware”這樣的答案,更需要知道“哪一個程式是Spyware”。FPort可以提供你這樣的資訊,讓你知道Port對應的Process。不過好消息是,自從Windows XP之後,netstat也升級了,所以也可以提供相同資訊,你只要下netstat –ano,多一個了o選項就可以顯示Process ID。
* TDImon
如果你想看各Process即時的網路活動,尤其當你懷疑小偷正在搬資料,或是Hacker正在線上熱情地跟你“Say Hello”時,都可以透過TDImon來觀察現行犯。顧名思義這是一個TDI的Monitor,所有程式的正常的Socket動作都是透過TDI來完成,這個工具Hook了系統的TDI介面,記錄下所有網路活動,使Spyware無所遁形。只是有時呈現的資料會很多,可以用Log過濾功能來觀察你的目標Process。(如圖6)
檢查自動啟動項目(Check AutoRuns Registry)
* Autoruns
開機自動執行,是Spyware必備的功能!而且Spyware一定會修改Registry的資料。Windows有太多地方可供Spyware利用了,筆者統計,大概有50多個的地方是Spyware喜歡用的,而且數字一直在成長。有了Autoruns你可以輕易的列出這些會自動執行的程式或是系統元件,也可以直接刪除可疑的機碼。(如圖7)
不過,大部分的Spyware都幾乎集中在幾個惡名昭彰的機碼中,先重點介紹幾個:
Logon
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunXX這個Run開頭的系列是常被使用的機碼,牌子雖老人氣尚旺!蠻多Spyware還是會利用一下。
Internet Explorer
這是目前流行的Spyware,大都會使用Internet Explorer這頁機碼。尤其在夜深人靜的時候,上了不知名的網站,看了幾張養眼的圖片,一時氣血攻心,意亂情迷,就隨便亂點,它說什麼你都點選OK,這時候奸笑的木馬就進來屠城了。登錄在這邊的COM元件將會變成IE的一部份,這樣的Spyware將不是獨立的EXE而是一個IE的元件,掛在IE的Process中運作,如此一來,不論偵測或移除都是一項挑戰。
Explorer
跟上一個相仿,寫在這邊的DLL都會變成檔案總管的元件,跟IE不一樣,Explorer是一定會啟動的,它不僅是檔案總管也是Windows桌面的Shell,所以是很好寄生的對象。近來筆者蒐集到的樣本中,尤其是使用Installed Components這個機碼的Spyware有越來越多的趨勢,要十分注意。
Services
Service程式是即使你沒有Login,只要Windows啟動就會執行的程式,大都是以系統程式為主。Service Control Manager(SCM)會檢視這個Key的內容來啟動程式,所以Spyware也會加以利用。
我還要更多!
整體來說,我們缺乏有效的新工具來偵測日新月異Spyware。這裡沒有針對商業的Anti-Spyware系統特別介紹,主因是這些系統的偵測能力並沒有受到筆者肯定。這一大堆的SpyXXX系統,據研究和觀察有三個缺點:
1. 通常是屬於特徵比對式(Pattern-Matching Based)的靜態分
析,而且都是只針對Registry的Key來檢測,如同只看檔名來
做Spyware檢查一樣,只根據Registry資料來判斷,容易誤判且
效果不彰。
2. 何況再加上PE Packer技術的成熟,Spyware的變種很快速,要
逃避特徵檢查“十分容易”。這對於只認檔案的特徵的Anti-
Spyware甚至是Anti-Virus系統來說,是一項艱鉅的挑戰。
3. 我們所使用的Anti-Spyware/Anti-Virus系統,都是國外研發
的。但是對於對岸的駭客,有系統地開發出的
Rootkit/Spyware幾乎沒有抵抗能力,而且國內大部分的入侵
事件大都是使用大陸的Rootkit完成的。目前真能對於
Rootkit/Spyware檢查的工具也是很有限,表1比較了幾個資安
事件處理人員常用的掃描工具,對於各種常見的
Rootkit/Spyware的偵防能力,讓你了解不同工具的專長領域
(但只要是Pattern-Matching Based Detection都不在我們的考量
中)。
-
Rootkit Revealer:由Sysinternals開發,在「邪惡軟體攻佔地球」文中已介紹。
-
BlackLight:由F-Secure開發,目前已經整合到他們的掃毒程式套件中。
-
KProcCheck:這是新加坡SIG2組織研究的,是一個實驗型的工具程式,有Source code可以參考。
-
IceSword:由對岸同胞“大牛”Pjf開發,在大陸頗具盛名,幾乎是完全Kernel Mode完成的偵測工具,功能強大,對於Rootkit特別有效。
-
Archon:這是由艾克索夫實驗室開發的系統,偏重於User Mode的惡意程式分析。
筆者除了研究相關的Rootkit/Spyware技術發展之外,有鑒於目前工具的缺乏,同時也已開發了一套掃描程式Archon,希望能夠藉由工具將專家的知識及經驗複製出來。採用的掃描演算法是以軟體行為分析模式為主,特別是在針對Rootkit或是DLL型式等惡意程式時,能有很高的偵測能力,補足掃毒軟體或是其他以Pattern-Matching為主HIDS的不足。
目前Archon掃描報告主要是提供給專業資安人員使用,較偏技術面的報告。下面是一個偵測的例子,除了發現有API Hooking之外,也偵測出Injection DLL跟隱藏的IE。(如圖8)
結論
我們介紹了幾個很有用且免費的工具,但要檢測Spyware這類惡意程式其實並不是很容易,主因是大部分人對什麼是正常程式行為不解了,更遑論要找出異常行為。但只要越了解我們所使用的環境,越了解資安的威脅,提升正確觀念,就越能自己維護資訊安全。各種Spyware的氾濫,造成的威脅已經嚴重危害個人財產;既然六分鐘都可以護一生了,多花些時間自我檢查一下Spyware是很值得的。