https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/
https://www.informationsecurity.com.tw/Seminar/2024_PaloAlto/

觀點

Spyware技術發展&偵防挑戰

2010 / 05 / 07
邱銘彰
Spyware技術發展&偵防挑戰

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端,做遠端遙控。近來由於FirewallNAT的普及,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透過KernelAPI再取得檔案列表來比較。如果有Rootkit存在,API可能被Rootkit攔截而傳回比較少的資料,如此一比較就可以得知哪些檔案是該看到卻是被隱藏的,這樣的動作也稱為交叉對照式偵測(Cross-View based Detection)。RKRRegistry方面也是一樣方式,也可以找出隱藏的資料。好端端地,檔案幹嘛要隱藏呢?這麼心虛的檔案,看來是Spyware重點嫌疑犯,千萬別放過!(如圖2)

 

RKR的缺點有兩項,第一是它需要蠻長的分析時間(還真的蠻久),在Registry部分,它會把Registry整個Dump下來再分析找出隱藏的資料,而在檢測隱藏檔案部分,因為是直接讀取NTFS資料,所以所花的時間跟檔案數量呈正比。雖然這些都是很完整的檢查,但幾乎是把你的電腦翻過來找一遍。第二是RKRNTFS得到的資料有時會成為誤判,影響偵測結果,這點倒是很嚴重。

 

* IceSword

在「邪惡軟體攻佔地球」一文中提及這套程式,RKR比較注重靜態資料分析,IceSword對於執行中的Spyware/Rootkit有比較好的偵測。它可以偵測出隱藏的Process,這可以補足RKR的一些死角。另一個很重要的功能是,它可以分析出SSDT Hook,這種類型的Hook是幾乎是Rootkit必備的手法,有了這項分析,你可以很輕易找出這些Rootkit。但是請注意,有部分的正常軟體也是會做SSDT Hook,像是虛擬光碟的Driver,所以要仔細觀察,別殃及無辜。(如圖3)

 

Icesword另一項特殊功能是可以直接操作File SystemRegistry,不受其他程式或是Rootkit干擾,這有點類似RKR,但是更好用,你可以直接編輯或是瀏覽檔案系統與登錄檔,刪除有問題的Spyware

 

檢查不正常的程式(Check Malicious Process

* Process Explorer

Process ExplorerSystemInternals網站上一個很有名的工具。望文生義就知道這是一個以Process為觀察對象的工具,它比Windows內建的Taskmgr功能強很多,幾乎可以觀察Process的所有資訊,像是載入的DLL、所擁有的HandleThread資訊…等,真是五花八門。對我們偵查Spyware來說,有幾項資訊可以特別注意,例如Process的完整檔名、載入DLLProcess的父執行緒以及Command Line(如圖4)

 

那什麼是不正常的Process呢?這說來就比較籠統了,除了一些來路不明的Process之外,你還可以特別注意一些檔案的位置。例如有時候會看到一些奇怪IEProcess,但是卻不是放在C:\Program Files\Internet Explorer\的目錄之下。或者是偽裝成系統案檔名稱的Spyware,例如本來檔名應該是iexplore.exe,但是它卻可能是 “iexplorer.exe”多一個r字母,這很容易眼花漏看,尤其當你很想下班的時候,特別容易發生!另一種狀況是,明明沒有看到任何IE的視窗,但是卻發現有IEProcess在執行!那麼你也可能已經被“某知名”的Spyware入侵了,以上都是要特別當心的。

 

* File Signature Verification

此工具可以跟內建的數位簽章作驗證,用來檢查Windows中的系統檔案是否被變更或是被Spyware感染。更好的是你也許不知道,它可是Windows內建的工具,放在c:\windows\system32\sigverif.exe。可以讓你在密密麻麻的系統資料夾中找出的奇怪檔案。(如圖5)

 

在檢視結果的時候要注意,有些Windows自己的系統檔是沒有簽章的,而且有些系統元件可能也沒有,例如廠商提供的Driver也是沒有簽章的,所以要自行斟酌。也許,這以後MicrosoftVista會有更嚴謹的規定,讓廠商也要提供數位簽章。

 

檢查網路的活動(Check Network Actives

並不是所有的Spyware都會有網路活動,但是如果Spyware把蒐集的資料送出去的話,或者接受Hacker的遠端搖控,就會造成當事人實質的損害,資料一旦外洩就不是一般的事件處理了。因此具有網路活動是後門的重要特徵。接下來所介紹的這兩個工具,能幫助我們觀察各個Process的網路活動,揪出鬼鬼祟祟的通訊。

 

* FPort

通常大家都聽過用netstat an來看系統上所以有被使用的TCP或是UDPPort,也可以觀察連線的狀態,但是這有一個很嚴重的缺點:你無法得知是哪一個Process在使用這些Port,這樣你就不能找出嫌疑犯了,我們想要知道資訊並不只是“電腦有Spyware”這樣的答案,更需要知道“哪一個程式是Spyware”。FPort可以提供你這樣的資訊,讓你知道Port對應的Process。不過好消息是,自從Windows XP之後,netstat也升級了,所以也可以提供相同資訊,你只要下netstat ano,多一個了o選項就可以顯示Process ID

 

* TDImon

如果你想看各Process即時的網路活動,尤其當你懷疑小偷正在搬資料,或是Hacker正在線上熱情地跟你“Say Hello”時,都可以透過TDImon來觀察現行犯。顧名思義這是一個TDIMonitor,所有程式的正常的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的元件,掛在IEProcess中運作,如此一來,不論偵測或移除都是一項挑戰。

 

Explorer

跟上一個相仿,寫在這邊的DLL都會變成檔案總管的元件,跟IE不一樣,Explorer是一定會啟動的,它不僅是檔案總管也是Windows桌面的Shell,所以是很好寄生的對象。近來筆者蒐集到的樣本中,尤其是使用Installed Components這個機碼的Spyware有越來越多的趨勢,要十分注意。

 

Services

Service程式是即使你沒有Login,只要Windows啟動就會執行的程式,大都是以系統程式為主。Service Control ManagerSCM)會檢視這個Key的內容來啟動程式,所以Spyware也會加以利用。

 

我還要更多!

整體來說,我們缺乏有效的新工具來偵測日新月異Spyware。這裡沒有針對商業的Anti-Spyware系統特別介紹,主因是這些系統的偵測能力並沒有受到筆者肯定。這一大堆的SpyXXX系統,據研究和觀察有三個缺點:

1. 通常是屬於特徵比對式(Pattern-Matching Based)的靜態分

    析,而且都是只針對RegistryKey來檢測,如同只看檔名來

   做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是很值得的。