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

觀點

隱形車

2009 / 08 / 03
GREG HOGLUND 翻譯 ■ JENNY
隱形車
Rootkit已經深植在您的系統中了。您不能再認為只使用防毒軟體就可以找出並移除它。Rootkit就像是一輛隱形車,都是被撞上(資料外洩)後才知道痛。

  Rootkit是一個令資訊長充滿夢魘的字眼。它可以像是蠕蟲透過網路耗盡您的資源,或掩護竊取敏感資訊的後門程式。使用者完全不會察覺自己的信用卡資料被竊取了,並且還會帶來高昂的事件處理成本。Rootkit在過去總是被低調的討論,擔心只要一談及該話題Rootkit就一個跟著一個接踵而來。到了今日,Rootkit就如同一般的惡意程式,只是較難以偵測與移除。

  敵對公司、犯罪組織和恐怖份子使用這些工具來攻擊網路和竊取資料。客戶資料的失竊將造成公司百萬以上的財務損失,而且通常內部人員才是造成資料遺失最大的問題。有百分之七十以上的公司,他們的價值在於握有的智慧財產資產,這也是競爭對手主要想要取得的資料。Rootkit可以在不被偵測到的狀況下用來竊取資訊,這也是為何Rootkit是如此危險。

  壞份子設計Rootkit隱藏系統資訊讓你在數年內也不會發現,因此他們就可以持續存取您的資訊。雖然Rootkit有各種的外觀和功能,但相對於後門來說Rootkit還算是一個新名詞。許多Rootkit所使用的技術是在90年代初期由病毒開發者所研發的,並且因為網際網路的推波助瀾下,造成遠端存取式後門跟著茁壯。過去Rootkit一直是以Unix系統為攻擊目標,而今日也被發展到已經普遍的存在於Winodws主機上。

  Rootkit已經夠強悍到可以躲避主機型的防火牆、防毒軟體和入侵偵測/防禦系統。今日,Rootkit更進軍到手機、64位元的Vista作業系統和裝置韌體上。不論舊版或新式的Rootkit正持續威脅著您的資料。

隱藏的管理者

  許多IT安全專家並不知道現在Rootkit的功能已經越來越強悍,而且比廠商所宣稱的更難以偵測。

  目前商用或實驗性產品都無法很有效地偵測Rootkit。包含從特徵模式掃描器(signature-based scanning)到啟發式(heuristics)偵測技術,對Rootkit均無法有效偵測。近來SAIC及DARPA的HBGary為了對抗Rootkit,研發了免費的偵測工具。沒有任何一個單一工具可以偵測所有Rootkit。大部分的工具甚至對於我們取樣的Rootkit只能偵測不到百分之二十五的數量。多麼令人驚訝的數據,許多我們所取樣的Rootkits已經被公開使用達數年之久了。
  有些Rootkits會使用變形(polymorphism)的技術讓每一個惡意程式都是唯一的,甚至有不同的雜湊值(hash),因此會讓使用以特徵模式為主的防毒掃描軟體偵測效能不佳。這表示如果有三千台機器被感染,那麼惡意程式檔案就會有三千種不同的雜湊結果-但是它們還是代表相同的惡意程式擁有相同的功能。如果連已經公開使用達數年之久的Rootkit都無法有效的被偵測,那麼該如何偵測經過精心變造和未知的Rootkit呢?

  Rootkit為了能夠大量的竊取資訊並躲避現有的商業安全技術,因此根據傳統的檔案與程式隱藏技術來進行發展。惡意程式開發者設計能夠透過網路進行溝通的獨立後門系統,該後門還會內嵌複雜的程式碼來實做獨立於作業系統的TCP/IP網路流量。

  傳統開放原始碼的Rootkit和現代武裝強化後的Rootkit的差異就如同玩家的自由交易市場相對於會員專屬的武器交易會。武裝強化後的Rootkit針對現有的商業偵測解決方案來進行躲避技術的發展。這些技術包含反電腦鑑識(anti-forensics)、反追蹤(antidebugging)、加密、隱藏的命令與控制管道(covert command-and-control channels)、鍵盤記錄、遠端畫面記錄、透過麥克風的遠端聲音警報器、電子郵件暨加密前後的文字擷取以及隱藏的資料竊取。

  還有更嚴重的。偵測與證據蒐集工具最大的問題就是反電腦鑑識技術。舉例來說,鑑識分析很大一部分的工作就是復原硬碟中的檔案資料。如果Rootkit或者惡意程式沒有在硬碟中儲存資料,那麼這類型的鑑識就沒有任何效用。事實上,許多新型的Rootkit都是使用「只存在於記憶體」的方式來躲避以分析磁碟為主的電腦鑑識。

  最常被用來進行反電腦鑑識的技術是被稱為「加殼(packing)」的技術,這表示惡意程式可以很簡單的對它的資料和程式碼進行加密,讓逆向工程-這是分析和對抗Rootkit很重要的步驟-更加的困難和消耗資源。為了能夠了解程式內含的資料,逆向工程師必須付出更多的心力才能分析該程式。其它的反電腦鑑識技術還包含偵側虛擬主機(virtual machines)上對於Rootkit的除錯或執行行為。

當Rootkit成為管理者

  不管你的風險評估做的多好,一定會有Rootkit溜進您的環境並攻擊您。這是自然的法則。

  企業級的解決方案常常會產生出一大堆錯誤的資訊。這些解決方案不是顯示過少的資訊就是顯示一堆和攻擊沒有直接關係的資料。您的事件處理員工必須從這些資料中找出真正的攻擊證據。過濾解決方案可以剔除雜訊並找出真正的攻擊資訊。資料蒐集器(data aggregator)也可以從防火牆、主機型入侵預防系統與網路型入侵偵測系統中蒐集資訊,但是這些資料都是非常高階的資訊-來源和目的IP位址,某些封包標頭資訊等。這些資訊可能會告訴您哪些網站位址被用來下載惡意程式執行檔,但是卻不會複製並儲存這些惡意程式。您並沒有保留真正的資料流-攻擊過程中實際涉及的檔案和封包-而這些正是您在還原攻擊時所需要的資料。

  如果您想要還原攻擊是如何穿透您的網路,這些資料是很重要的。就算封包資料已經被儲存了,因為儲存容量的限制它們也無法被保存太久-最好是兩週。通常當事件被偵測到的時候這些封包資料都已經流失了,因為事件是發生在數個月之前。

  攻擊者了解這些限制,所以讓惡意程式表現的像是系統中的雜訊。例如,被竊取的資料會使用看起來無害的協定被傳送出您的網路之外;也許看起來就像是日常的Web或者DNS流量,但是其實是進行後門行為。

  新型態的攻擊一直被開發出來,自動化偵測無法永遠取代人力所組成的處理小組。攻擊者不斷地精進它們的方法和工具。有效的防禦需要人類的創造力來減緩潛在的威脅。例如,就算沒有偵測新Rootkit的特徵模式,一個受感染的主機可能會表現出異常的行為。許多的攻擊是在使用者通報他們的電腦發生異常之後才被發掘。當網路中的某台主機對網路進行通訊埠掃描、發動分散式阻斷服務攻擊或者提供盜版音樂,就可能代表該主機已經遭受感染。有的時候受感染的狀況是透過網路閘道器上所擷取到的惡意程式或封包而發現。

  在威脅被辨識之前,可能需要從各種來源擷取證據才能結合出一個大方向。例如,可以利用已知殭屍網路(botnet)黑名單交叉比對往外連線的網路流量,或者是針對後門程式進行逆向工程。

  當你捕捉到惡意程式的樣本,工作才剛開始。您可以針對該惡意程式進行整個企業的掃描,但是這並不保證你會了解這個威脅的本質。在許多的案例中,雖然可以找出有哪些主機已經遭受感染,卻無法得知這些惡意程式已經存在該主機上多久時間、它如何運行以及哪些資料已經被竊取了。這些問題都極度需要透過電腦鑑識分析才能取得解答。

  要找到良好的電腦鑑識分析師是很困難的,因此在您現存的小組中培養電腦鑑識分析師是比較有效的方法,而且也可以建立良好的企業形象。數位鑑識產品可以幫助您更容易來蒐集證據,但是某些惡意程式會進行反鑑識的行為,讓您難以去復原關於惡意程式如何運行或者它正在竊取哪些資訊的證據。

  當您是在大型的網路中進行分析,可以從多重來源的資料(像是同時取得網路及主機端入侵偵測系統的資料)來減少假警報進而進行證據的推演。擁有較好的工具就代表您的回應小組擁有較佳的處理能力。

  在地理位置上分散的網路環境中,遠端鑑識能力就顯得非常重要。事件回應小組可以透過一通電話之後開始進行遠端的評估:他們可能會在可疑的主機上安裝管理用的代理程式,對該主機進行遠端的評估並決定是否應該將該主機離線以便後續的分析。

  當捕捉到惡意程式,自動化的逆向工程可以針對這個未知的惡意程式解答出許多重要的問題並且可以節省下數小時或數天冗長的人力時間。

  經過良好的鑑識評估後,您的小組應該擁有足夠的資訊去製作網路入侵偵測系統的特徵,然後在防火牆上捕捉該攻擊的變化。依照您製作的特徵的類型,您可以捕捉惡意程式執行檔來預防更多主機的感染或者偵測到命令與控制頻道(command-and-control channel)、找出網路中被感染的位置以及阻擋惡意程式的連線。設定電子郵件的保護來阻擋附件中含有執行檔或內含下載的超連結的郵件的傳送 。使用主機型入侵預防系統(HIPS)來掃描您企業中的主機系統。

挖出危險

  提取和移除又是另一個問題。如同樹上的有刺鐵絲網,在沒有中止它之前很難從系統中將Rootkit給提取出來。例如,某個Rootkit可能沒有將自己寫入硬碟中。相反的,該Rootkit將自己安插到作業系統的核心程式與開機磁區中。移除Rootkit可以讓系統恢復到正常狀況,但也可能導致系統再也無法開機。或者,您根本無法確定是否已經移除了所有的Rootkit。由於Rootkit是設計來進行隱藏的工作,所以您會遺漏任何資訊沒有檢查到是正常的。也由於這些原因,最佳的選擇方案是重新安裝受感染的系統而不是碰運氣看看是否已經移除乾淨。

  當然有的時候無法重新安裝,您沒有選擇只能嘗試移除Rootkit。例如,有問題的主機是無法離線的重要伺服器。在這類狀況下您可以建立磁碟映像檔(drive image)來進行分析。有許多的工具都可以用來對硬碟進行映像檔的製作,利用製作出的映像檔可以在不碰觸原始系統的狀況下進行鑑識分析。硬碟映像檔可以放在像是VMWare這一類的虛擬主機上重新開機。使用虛擬主機技術搭配逆向工程技術進行像是自動追蹤的功能,可以取得許多關於惡意程式的行為的資訊。您也可以試著從虛擬系統中移除Rootkit看看會造成什麼樣的影響。

滲透內部人員

  Rootkit與電子郵件傳遞的病毒不同,不會盲目攻擊。通常都是透過想竊取資訊和想暗中刺探員工的內部人員手動安裝的。在這樣的狀況下,您可能會想要靜靜的監視任何可疑的行為並取得證據。

  通常為了達到這個目的,會使用主機型的代理程式技術來監視系統行為和蒐集證據。這個代理程式技術通常會以服務的形式被安裝在電腦中,而且會採取隱藏自己不讓使用者發現的步驟。它會擁有擷取螢幕畫面的能力,竊聽鍵盤行為和監視電子郵件。您的回應小組可以數位監聽電腦、追蹤可疑的行為與蒐集證據。這也許是唯一的機會來偵測共犯有誰、找出哪些資料被列為目標以及揭露威脅有多嚴重。舉證出您的鑑識軌跡對於執法單位、您的保險公司和董事會來說是非常重要的。而且也能夠證明您是否符合政府遵循的要求。

  主機型的竊聽對於鑑識加密通訊行為特別有效。就算是磁碟型的鑑識也拿加密沒輒。但是,不論使用哪一種加密方式,沒有加密過的資料一定會存在於某個地方,通常都是放在記憶體中,而主機型的竊聽就可以擷取記憶體中加密前的資料。然而,當你面對的是步步為營的管理者或技術高超的遠端駭客,攻擊者可能會察覺他或她正被監視中。請準備好您的代理監視工具-小部分的商業主機型監視工具會使用精良的隱藏技術。大部分的工具都是使用騙小孩的方式來進行隱藏。它們可能只是更改程式或服務的名稱,讓它們看起來沒有那麼容易被發現而已。

艱鉅的任務

  Rootkit是先進的後門,被設計來不被偵測和移除進而可以持續進行監視和竊取行為。很可悲的是偵測技術正遠遠的落後中,而且僅僅使用證據蒐集工具是不夠的。目前必須極力依靠人力分析來偵測並減緩Rootkit的威脅,但目前人員能力並不完備。

  一個設計良好的Rootkit幾乎不可能被發現,所以通常都是在被感染許久後才被發現。為了評估網路的損害與減緩威脅電腦鑑識就變得相當重要。最佳的防禦方法是結合各種解決方案,使用各種偵測方案並投資可以進行惡意程式行為分析的逆向工程實驗室。是否可以進行遠端系統評估、擷取程式和磁碟映像檔對於您分析能力有多好是很重要的。最後,Rootkit的偵測還是有人力上的問題,如何有效並降低雜訊以及問題的規模都會影響著您的小組的效能。

逆向工程分析

  逆向工程可以用來分析Rootkit,但是由於技術培養不易及工具的缺乏,導致極少單位能夠完成此工作。

  有的時候可以透過逆向工程來取得最佳的證據。某個Rootkit或者後門惡意程式通常都會內含特定的命令。遠端的攻擊者可以傳送命令要求惡意程式去複製重要的檔案、電子郵件或者企業內的資料庫。一旦進行程式碼逆向工程,這些功能都會被揭露出來。電腦鑑識分析師可以找出惡意程式擁有哪些能力,進而推導出攻擊者的意圖。這可以用來描繪出威脅的特性並判斷其他系統是否已經遭受感染。逆向工程可以協助您:

1. 開發:發展單一的偵測特徵來找出可能有各種變形的相同惡意程式。

2. 學習:如果Rootkit在進行網路溝通時會做加密的話,可以學習如何對擷取到的封包進行解密。可以用來揭露哪些資料已經被傳送出公司網路之外,或是復原哪些遠端的控制命令已經被傳送。

3. 了解:了解惡意程式如何滲透進網路之內-攻擊者使用哪一種軟體攻擊程式,哪些系統可能還存在弱點可以被攻擊等。

  雖然進行逆向工程可以帶來這麼多好處,但是大部分的組織不會進行逆向工程。原因是現在並沒有太多工具可以很簡單的完成逆向工程。現存先進的工具都沒有提供良好的使用文件而且要求使用者必須去閱讀難懂的反組譯指令。在最近的CEIC安全研討會中,只有一家廠商提供對惡意程式進行逆向工程的產品。

  對於逆向工程的需求正在增加中,但是這個議題才剛開始被注意到。幸運的是,數位電腦鑑識的市場正在迅速成長中,許多提供遠端鑑識、即時鑑識(“live” forensics)、惡意程式行為分析、自動逆向工程以及秘密監視內部威脅的新產品被開發出來。

專家建議

NOD32產品技術經理  盧惠光

  Rootkit已成為很多惡意程式的一部分, 而且技術門檻慢慢降低, 未來可能變成大部份惡意程式都有Rootkit。雖然Rootkit本身並不會對系統直接造成損害,但Rootkit是惡意程式的一個強力的保護及隱藏工具,使惡意程式難被發現和清除,可以說是惡意程式的保護衣物,現時大部份的惡意程式都是從系統中盜取資訊。大部份的Rootkit都內建在木馬和廣告程式內,所以預防Rootkit都是和預防木馬一樣,除了建議安裝並定期更新防毒軟體之外,建議用戶:1.不要執行任何來歷不明的軟體;2.不要隨意打開郵件附檔;3.儘量少用共用檔夾;4.經常升級系統等。

趨勢科技技術顧問簡勝財

  所謂的Rootkit是一種被利用來將惡意程式隱藏在系統中的技術,甚至可利用來置換正常檔案。一般來說Rootkit不會單獨存在,會與一些惡意程式整合,用來隱藏惡意程式的蹤跡,來逃避資安軟體的檢查,且現在惡意程式已逐漸變成利益導向,設計也越形精巧及複雜,要察覺實屬不易。其隱形的功能,讓惡意程式可在使用者的電腦上為所欲為不被發現,個人的機敏資料也可能因此不保。一般使用者很難察覺電腦是否被植入Rootkit,必須透過專業的資安軟體協助,最重要的還是要做好防範措施,目前惡意程式多半利用使用者在瀏覽網頁時伺機植入,所以建議企業級用戶必須從閘道端開始防護,先阻擋或過濾有害的網頁,可大大降低使用者中毒的機會。而一般使用者除了安裝防毒軟體外,也必須定期更新軟體的修補程式,小心使用聊天軟體等。

奕瑞科技總經理張義淵


  Rootkit雖然無法防止偵測,在系統內隱形能力仍佔有明顯的優勢。新型態的隱形惡意程式及虛擬技術的執行,是能夠預期的變化。然而,此方法仍未發展至成熟階段,未來幾年內也不會構成主要威脅,也無法廣泛使用。病毒寫作者所面對的最大難題之一,便是如何將惡意程式碼藏匿在受感染的機器中,而不被使用者發現。在病毒寫作者的理想世界中,防毒解決方案也將無法偵測到惡意程式碼,如今寫作惡意程式碼已不再是個人娛樂,而是可以獲利(當其牽涉到犯罪行為時)的行業,對那些為錢賣命的駭客而言,消匿自身的蹤跡也就益形重要。

  很遺憾地,截至目前為止,關於偵測Rootkit的方式,並不存在通則。然而下列方法可通用於大部份的Rootkit:

1. 調查不正常的檔案行為、網路資源使用、排程及重新開機時的工作啟動,以及使用者帳號受監控的情形。

2. 使用下列公用程式,協助偵測系統中是否存在Rootkit:Saint Jude、Chrootkit、RkScan、Carbonite、Kstat、Rootkithunter、Tripware、Samhain等。

3. 採用已經加入偵測Rootkit功能的防毒軟體版本。

4. 在最新版本的Windows中,寫作Rootkit會變得更為困難,因為系統程式碼與系統架構將無法修改。由作業系統開發者所採取的此一步驟將降低(或至少能暫時降低)新版本Windows中的新Rootkit數量。

  由於Rootkit的問題已經被安全軟體公司所重視,因此只要採用專門的Anti-Rootkit的工具或者已經針對Rootkit的部份加入偵測功能的防毒軟體,便可以協助企業來偵測或者預防此類的問題。Rootkit會以某種形式干擾系統功能,所有偵測Rootkit的方法皆依靠此點而進行。

「Rootkit」小常識

  「Rootkit」一字來自UNIX界;但目前通常用於描述Windows木馬程式作者所運用的隱形技術。起初,「Rootkit」指的是一組程式,可讓駭客藉此躲過偵測。為達成此目的,可執行的系統檔案(如login、ps、ls、netstat等)或系統程式庫(libproc.a)會遭到更換,或安裝核心模組。這兩種動作只有一個相同目的:防止使用者收到正確資訊,知道電腦上發生了什麼事。Rootkit的普及,部份須歸因於目前在網際網路上公開流傳著許多Rootkit的原始程式碼。對於病毒寫作者而言,將這類程式碼作出小小的變化,相對上來說是較容易的。影響Rootkit使用量增加的另外一項因素,則是因為多數Windows使用者習慣使用系統管理員帳號,而非建立個別的使用者帳號。如此使得在受害機器上安裝Rootkit更加容易許多。Rootkit可用於偽裝惡意程式碼的存在,使其不被使用者及防毒解決方案發現。病毒寫作者與遊走於法律邊緣的間諜軟體類開發者視此點為獨特的賣點。

資料來源:奕瑞科技總經理張義淵


Greg Hoglund是資訊安全公司HBGary的執行長也是Rootkits: Subverting the Windows Kernel and Exploiting Software: How to Break Code一書的共同執筆人。