袁 源,慕德俊,戴冠中
(西北工業大學自動化學院控制與網絡研究所,西安 710072)
智能手機[1]逐漸融合了聲音、圖像、視頻、網絡與電子商務,成為強大的個人終端,但同時也開始面臨巨大的安全威脅。為了兼容高耗能硬件和應用程序,智能手機一般都配有完善的操作系統(諾基亞的Symbian、蘋果的iPhone、微軟的Windows Mobile、谷歌的Android 等),可以像計算機一樣安裝多種第三方軟件,功能不斷擴展,如:藍牙、視頻通話、股票銀行業務、GPS(Global Positioning System,全球定位系統)、WAP 上網等,使其成為黑客攻擊的新目標[2-3]。2010年7 月在拉斯維加斯舉行的Defcon安全大會上,Trustwave 安全公司的研究人員展示一個內核級的Rootkit,如果用戶在Andriod 手機上閱讀短信,就會自動撥打一個未經授權的長途電話,并自動開啟GPS 進行地理位置定位,安全隱患嚴重。如今,智能手機的安全問題已逐漸涉及到個人隱私、企業發展甚至國家安全等方面,再加上針對智能手機的安全廠商緊缺稀少,該領域技術和安全機制的發展相對緩慢,手機用戶的安全防護意識較為不足,智能手機的安全威脅日益嚴峻。根據最近一份來自Mcafee的報告顯示,全球近14%的智能手機用戶已經被惡意軟件感染,因此,關于智能手機安全技術的研究刻不容緩。
針對智能手機中Rootkits的技術原理與檢測方法進行研究,結構如下:第1 節介紹智能手機中Rootkits的主要功能;第2 節分析Rootkits的實現技術;第3 節提出智能手機系統中Rootkits的檢測方案;最后總結全文,并就智能手機安全的重要性和未來發展方向進行一定的討論。
Rootkits 可以讓攻擊者隱蔽地監聽或記錄智能手機通話的隱私數據。無論何時只要發生Rootkits感興趣的事件,惡意操作就會被激活。例如,當日歷程序顯示的備注信息中含有某個關鍵詞(如會議)時,Rootkits 就能激發惡意操作,悄悄撥打攻擊者的電話,從而遠程監聽本次會議內容。另外,當受害者撥打某個指定電話時,Rootkits 也可以激活并記錄本次通話的信息。
Rootkits 必須有能力攔截報警信號,才能觸發。Rootkits 程序通過hook 系統調用表和用惡意寫操作地址替換真實寫操作系統調用地址來達到此目的[4]。當報警信號發出后,Rootkits 程序寫操作攔截顯示在屏幕上的消息,檢測其中的三個子字符串。首先是“Windows Prop”子字符串,該字符串顯示當前消息為通知類型;然后檢查是否存在“Clock”字符串,該字符串用來驗證消息是否來自時鐘程序;最后是“NETWM Type:6”子字符串,該字符串代表產生報警信號。通過匹配算法,如果字符串中含有預定義的關鍵詞,就激發后續的惡意操作。
當Rootkits 激活惡意操作,就會模擬用戶空間通信應用程序來撥打電話。正常的應用程序會向內核發送一系列系統調用,用以啟動GSM 設備,并設定其撥打指定的號碼。Rootkits 程序通過發送與內核AT 命令相同的序列來達到此目的(電話號碼就是其中某個參數)。AT 命令激活了電話子系統,并成功建立起同攻擊者之間的連接。以Windows Mobile系統為例,創建呼叫是一個基本操作,利用了PhoneMakeCall 函數,只需傳入兩個參數:電話號碼和字符串false,就可以實現不需要確認的自動呼叫[5]。這樣一來,處于手機一定范圍內的所有聲音信息都會被監聽。而且手機的聲音接收裝置越敏感,它接收到的聲音就越細微。
GPS是一個串行設備,Rootkits 可以很容易地從內核串行設備列表的成員變量名上定位到GPS 設備,然后從相關的tty_driver 結構體中獲取目標的當前地理位置信息。即使用戶禁用了GPS,由于Rootkits 在內核模式下運行的特性,完全可以啟動GPS設備。在獲得目標地理位置信息后,Rootkits 會生成一條短信,通過GSM 調制解調器配置為文本模式來發送短信,最后Rootkits 會禁用該設備。這種攻擊非常隱秘,唯一可見的痕跡是收到電話清單時,才會發現發送給未知號碼的短信。
GPS 和藍牙設備屬于高耗能服務。Rootkits 通過向GPS 和藍牙設備相應的電源設備文件寫入“1”指令,從而開啟對應的服務。這種攻擊會很快耗盡智能手機的電池,根據實驗測試,同時開啟GPS 和藍牙服務,手機電池的待機時間只有原來的十分之一[4]。人們在緊急情況下越來越依賴于手機,那么當用戶最需要手機時,該攻擊會導致拒絕服務攻擊。
手機殺毒軟件不僅可以遍歷手機文件系統中的文件信息,還可以對手機中的運行任務進行查詢監視。如果Rootkits的一些特征符合某種已知病毒的特征碼,毫無疑問這個Rootkits 程序就會被關閉。因此,Rootkits 必須實現自身文件、任務的隱藏。
對于任何手機Rootkits 來說,它首要的任務是隱藏自身。Rootkits 程序初次運行在手機系統上時,它會將手機存儲器上的文件刪掉。同時,它監視系統的狀態變化,一方面監視手機上是否運行了殺毒軟件,如果沒有就將自己重新創建在手機系統上;另一方面,它會監視手機是否被關機,如果是,它馬上將自己寫入文件系統,保證下次開機時自己能順利啟動。
Rootkits的文件隱藏還體現在一些對系統設置的利用上,如手機系統的注冊表文件(主要針對Windows Mobile)、設置文件為系統屬性(Symbian 系統)等等。
智能手機系統與計算機操作系統有著一定的區別,因此很難利用計算機操作系統下的一些方法來實現任務/線程隱藏,例如鉤子技術。通常,手機系統會將手機運行中的數據保存在一些關鍵的位置,以便能夠隨時使用和修改。Rootkits 通過對手機系統緩存中涉及到任務信息的核心數據進行修改,從而改變手機系統的某些顯示而實現。
另一個方法是利用系統的漏洞。按照操作系統的設計理念,操作系統本身的代碼會運行在系統的某一個高地址內存中,這段內存地址是不允許用戶程序訪問的。如果訪問到操作系統本身的地址,那么系統會立刻禁止此次訪問,給出一個警告提示。可是一些手機操作系統的設計者為了簡單(或者為了加快系統的開發成品時間),往往會去掉這部分代碼。這時,如果手機系統將系統內的所有任務/線程信息存儲在內存高地址,Rootkits 程序就可以直接訪問這個地址,然后修改該處的原始內容,而手機系統會忽略這種改變,Rootkits 就可以輕易的隱藏自身,同時躲過殺毒軟件的查殺。
上述隱藏方法仍然屬于應用層范疇,沒有涉及到系統內核的層面,要實現隱藏程序行為顯得有點力不從心。內核級的Rootkits 常常作為驅動程序安裝在手機系統中,成為系統不可分割的一部分,并且能夠通過驅動程序與系統的核心數據進行交互。它可以改變系統的核心數據,包括任務/線程信息,文件數據信息,甚至還可以修改系統的運行狀態[6-7]。如果智能手機采用了Linux 操作系統,可以利用文獻[6-7]中的LKM 技術,截獲部分系統調用,輕松實現對Rootkits 文件、任務的隱藏。
例如,Android 系統使用select()和read()等函數從Modem 驅動程序的相關文件描述符中讀取上報。如圖1 所示,一旦Rootkits 劫持了sys_read()系統調用,就可以截獲Modem 上報的一切外來通信,包括手機收到的短信和呼叫等。這樣一來,Rootkit就能對目標手機接收到的所有短信進行截獲,并對短信中的內容進行分析,其攻擊行為就能得以觸發和實施。

圖1 截獲read 系統調用原理圖
目前,卡巴斯基、Symantec、Mcafee、小紅傘、瑞星等網絡安全公司都推出了相應的手機殺毒軟件,功能比較完善。但是,由于手機殺毒軟件開發需要的一些核心技術沒有被手機系統開發商公布,以及程序調試難度大、手機病毒分析不夠完善、通用性等方面的問題,仍然存在較多的弊端。
早期的Rootkits 主要是替換系統的二進制文件,這樣可以通過Tripwire 和AIDE 等工具檢查系統文件的完整性來判斷。目前的Rootkits 在內核模式下運行,很容易規避用戶模式下反病毒軟件的檢測,下面闡述其它一些檢測思想。
虛擬化技術的主要目標是讓用戶能夠擁有多重功能,例如同一個電話可供多個賬戶使用。虛擬化一個很大的特性是同等性:程序在虛擬機上運行時的行為和直接在本地硬件上運行時的行為相同。Rootkits 檢測器利用這個特性,在一個單獨的虛擬機中執行并監視智能手機操作系統的內存,從虛擬環境和物理環境差異性的角度進行檢測,比較流行的有四種對比算法:TSC時間檢測法、外部時間源檢測法、基于時間的TLB 檢測法和基于頁面內容的TLB檢測法。目前,不少商家在努力建設智能手機虛擬監視器,為在智能手機上實施Rootkits 檢測提供可行的途徑。需要注意的是,這類Rootkits 檢測工具通常都采用計算密集型算法,定期獲取并掃描受監視的操作系統內存,這有可能會流失大量電量,從而導致該類檢測工具的實用性受到質疑,因此還需要開發智能手機檢測相應的新型節能技術。
文件回調函數檢測法是手機系統在發現文件系統變化后,由它提供給應用程序的一個信號。應用程序收到該信號就可以知道文件系統在哪里發生了變化,然后通過對比添加的文件是否具有病毒庫中某個病毒的特征判斷是否是Rootkits 程序。該方法的缺點是Rootkits種類繁多,不可能記錄每一種Rootkits(特別是新出現的Rootkits)的特征信息,容易出現漏判。
針對智能手機的某些特性,可采用以下手段來輔助檢測:
1)檢查手機系統開機和關機配置文件。Rootkits 很可能通過這兩種配置文件來長期駐留于手機系統中。
2)檢查手機電池的使用情況。智能手機Rootkits 在操作各手機硬件完成攻擊的同時,勢必會大幅度降低手機電池使用時間。
3)查詢話費詳單。重點排查其中頻繁出現的陌生號碼。無論多么高超的手機Rootkits 技術,只要攻擊者嘗試從遠程控制目標手機,都無法改變基站中留下的通訊記錄,而這些記錄可以通過話費詳單來體現。
通過分析智能手機中Rootkits 技術原理,并以此為基礎,對其預防和檢測方法進行了一定程度的討論。隨著3G時代的來臨,手機支持電子商務、電子支付、股票交易等增值業務的廣泛應用,黑客已經把目光鎖定到智能手機上。即使像Android 這類具有強大技術背景支持的智能手機操作系統,同樣可能被安裝內核級Rootkits,實施各種攻擊行為。因此手機用戶、手機廠商都應該對智能手機的安全予以足夠的重視,及時升級軟硬件系統,彌補各種系統漏洞,不斷采用更為高效、全面、節能的檢測技術,才有可能減少Rootkits 帶來的危害。未來智能手機中的Rootkits 技術將會越來越趨向于多樣化、隱蔽化、底層化和頑固化,其檢測技術也勢必變得更加復雜,只有不斷加強對Rootkits技術原理的研究,綜合利用各類檢測手段,才能準確地檢測出惡意軟件的存在。
[1]Duanwx131.智能手機[EB/OL].http://baike.baidu.com/view/535.htm.
[2]鄭昌興.手機病毒防治方法及其發展趨勢分析[J].信息技術,2010(2):122-124.
[3]姜楠,王健.手機病毒與防護[J].計算機安全,2004(12):58-61.
[4]Jeffrey Bickford.Rootkits 技術:智能手機的攻擊與啟示[J].黑客防線,2010(2):57-63.
[5]王繼剛.手機病毒大曝光[M].西安:西安交通大學出版社,2009:55-57.
[6]陳華亭.基于LKM的Rootkit 技術[J].計算機工程與科學,2004,26(2):89-90.
[7]袁源,戴冠中.LKM 后門綜述[J].計算機科學,2008,35(7):5-8.