999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android系統服務信息分層獲取方法

2021-06-23 09:40:24郭芷含羅森林柯懂湘秦梟喃
計算機工程與應用 2021年12期
關鍵詞:進程關鍵服務

郭芷含,羅森林,柯懂湘,秦梟喃

北京理工大學 信息與電子學院,北京100081

近年來,互聯網、物聯網技術飛速發展,移動終端、智能工業設備等被廣泛使用,萬物互聯正在逐步實現[1]。隨之而來的問題也十分嚴重,針對智能設備的網絡攻擊正在危及物理世界的安全[2]。在移動終端設備中,用戶常常受到垃圾信息、詐騙信息的侵害,面對病毒、木馬導致的金錢損失[3]。在市場份額中,Android系統占據主要成分,目前已運行在超過25億活躍移動設備上[4]。因此,基于Android系統的安全性研究是當前研究的熱點問題,確保數據安全和私密性是Android系統的首要任務[5]。

系統服務(System Service)是Android系統的核心組成部分,指后臺運行的應用程序或系統級進程,具有較高的運行權限[6],也是惡意代碼攻擊的主要目標。系統服務漏洞是Android漏洞的關鍵部分。利用系統服務漏洞,可對Android系統設備實現多種攻擊,其中包括利用PowerManager服務存在的越權訪問漏洞實現關機竊聽、利用鎖屏服務存在的管理漏洞繞過鎖屏密碼解鎖設備、利用媒體服務中的整數溢出漏洞實現選線提升攻擊來控制整個設備。

系統服務關鍵信息獲取是Android系統漏洞挖掘和安全評估的重要步驟。在系統服務漏洞挖掘過程中首先需要獲取關鍵信息,如統計接口數量、分析日志獲取服務名和函數接口名,以及測試的參數數值信息,進而對漏洞挖掘的過程進行跟蹤和分析。當前系統服務關鍵信息獲取已廣泛應用于漏洞挖掘。例如,Long等通過分析包括API和強制清單權限的Android框架,提出了一種基于機器學習的模型[7],檢測針對不同Android版本的隱形惡意軟件;Jung等通過提取許可請求、API調用和運行時行為的信息,提出了一種Android惡意軟件檢測的新方法[8],防止Android惡意軟件的傳播并保護隱私信息免遭破壞。目前常用的系統服務關鍵信息獲取方法主要有人工信息獲取方法和自動化信息獲取方法。人工信息獲取方法需要人工閱讀代碼,獲取信息量少。在自動化信息獲取方法中,基于源碼解析的方法對系統源碼的依賴程度高,無法獲取閉源服務信息;基于Java反射的方法無法獲取Native層信息;基于Binder通信監控的方法在系統兼容性上存在缺陷。因此,目前已有的Android系統服務關鍵信息獲取方法存在獲取信息不全面的缺點。

本文針對系統服務模糊測試過程中系統服務關鍵信息獲取不全面的問題,提出了Android系統服務信息分層獲取方法(A Hierarchical Acquisition Method of Android System Service Information,HAA)。利用該方法對系統服務的跨進程通信數據進行統計分析,能夠有效防護Android系統、攔截惡意行為、識別惡意軟件和診斷系統服務異常等。實驗結果表明,該方法可以全面獲取系統服務接口參數規范、系統服務依賴信息和系統服務進程信息,在保障Android系統安全方面行之有效。

1 相關工作

目前提出的Android系統服務關鍵信息獲取方法主要分為兩類:人工信息獲取方法和自動化信息獲取方法。其中,根據實現原理差異,可將自動化獲取方法分為基于源碼解析方法[9]、基于Java反射方法[10]和基于Binder通信監控方法[11]。

基于人工分析的系統服務關鍵信息獲取方法是通過人工閱讀代碼、調試分析等方法獲取服務依賴關系、服務接口參數信息和服務進程信息。該方法自動化程度低,難以應對大量系統服務信息的獲取。

基于源碼解析的信息獲取方法是通過自動化解析服務源碼中的AIDL文件獲取服務接口參數規范。Gu等人提出的Android系統服務漏洞挖掘方法[12],通過解析AIDL文件獲取服務接口參數規范。上述方法對系統源碼依賴程度高,無法獲取閉源服務信息。并且靜態分析源碼的方法無法獲取服務進程信息,也無法解析源碼獲取服務依賴信息,由于Native層沒有實現AIDL文件,所以無法獲取Native層服務接口參數規范。

基于Java反射的信息獲取方法主要用于系統服務接口參數規范的獲取。調用ServiceManager對象的getService方法獲取框架層的服務,利用反射技術獲取服務接口的函數簽名,并解析簽名信息,以獲取服務接口參數信息。利用Java反射技術獲取接口參數規范,如Iannillo等提出的Chizpurfle[13]。該方法實現簡單且不依賴源碼,可有效獲取Java層服務接口參數規范。但其獲取信息不全面:只能獲取Java層系統服務接口的參數規范,無法獲取Native層服務接口參數規范;也不能獲取服務進程信息和服務依賴信息。

基于Binder通信監控的系統服務關鍵信息獲取方法,主要用于系統服務動態信息的獲取,監控分析Binder通信數據獲取系統服務的關鍵信息。作為系統服務架構實現的基礎,系統服務與其他進程的通信數據經由Binder傳輸,完成系統服務關鍵信息的獲取。該方法在Android安全防護領域用途廣泛,例如惡意行為攔截和惡意軟件識別。根據Binder驅動監控的實現方式,可將其分為修改系統源碼方式和動態插樁、函數Hook方式。系統源碼方式通過修改系統源碼,構建包含Binder監控模塊的Android虛擬環境,監控分析Binder通信數據,獲取系統服務動態信息,如Tam等人提出的CopperDroid[14]。這一類方法的優點是能夠有效獲取系統服務的動態信息,但只能用于虛擬設備,在實際Android設備中無效。第二類方法通過構建動態插樁和Hook函數為核心的機制以監控Binder驅動,監控分析Binder通信數據,獲取系統服務動態信息,如Yoon等人提出的AppScope[15]。這類方法只關注部分系統服務動態信息,并且只針對Java層的Binder通信進行監控,忽略了Native層的Binder通信過程,因此服務信息獲取不夠全面。

針對上述方法存在的自動化程度低、獲取信息不全面和對實際Android設備無效的缺陷,本文提出一種Android系統服務信息分層獲取方法(HAA)。該方法通過Binder通信劫持技術,在系統中構建完整的Binder通信行為監控視圖,并對不同層次Binder通信數據所獲取的系統服務關鍵信息進行分析,實現自動且高兼容性的獲取。

2 Android系統服務信息分層獲取方法原理

2.1 算法模型

針對系統服務關鍵信息獲取不全面的問題,本文提出了系統服務關鍵信息的分層獲取方法。該方法主要分為兩個核心模塊:多層次Binder監控模塊和關鍵信息解析模塊。針對系統服務關鍵信息的自動化獲取,構建完整的三層Binder通信行為監控模塊,攔截系統服務注冊過程獲取系統服務進程信息,實現應用層的序列化記錄、框架層的服務注冊記錄和內核層的通信數據記錄。針對接口參數規范、服務依賴關系和服務進程信息的信息獲取不全的問題,構建關鍵信息解析模塊,分析系統服務通信過程中獲取到的服務依賴關系和接口參數規范,如圖1所示。

圖1 HAA方法原理框圖

2.2 多層次Binder監控模塊

多層次Binder監控模塊監控發生在系統不同層次的Binder行為,分別在系統的應用層、框架層和內核層構建序列化子模塊、服務注冊監控子模塊和數據傳輸監控子模塊。相對其他已有方法,HAA方法在不需要修改源碼的同時,拓寬了監控的范圍,獲取完整的Binder通信數據和通信行為記錄,并且有效克服其他方法僅能夠實現單層動態信息獲取和兼容性差的問題。

多層次Binder監控模塊以Android系統中的Binder通信機制為基礎實現對數據流的監控。為將Java層和Native層的Binder建立通信,該監控模塊依據Native層Binder是Java層Binder映像的特點,在Java層的JavaBBinder和Native層的BBinder上建立Binder通信機制,構建了Java層到Native層的通道。在Java層與Native層的通信時,Java層通過JNI(Java Native Interface)實現對Native層的調用,分為注冊JNI、注冊服務和獲取服務三個階段。在Native層與Java層進行Binder通信時,Native層通過JNI實現對Java層的反調用,調用過程分為獲取對象、獲取屬性及方法、構造對象。在系統中的應用層、框架層和內核層構建序列化子模塊以獲取數據。

在應用層,通過Hook libbinder.so動態庫中的序列化方法監控并記錄應用的序列化操作。在框架層,通過Hook ServiceManager進程的svc_can_register函數,實現系統服務注冊過程監控。在內核層,通過Hook IPCThread類的transact方法,監控并記錄應用的Binder通信數據傳輸行為,如表1所示。

表1 日志條目說明

2.3 關鍵信息解析模塊

關鍵信息解析模塊,是從多層次Binder監控模塊獲取的復雜信息中,解析出規范化且可使用的信息。而多層次數據的數據類型不一致、不同服務間獲取方式不一致將導致關鍵信息解析困難。此模塊將構建3個子模塊,分別用于解析接口參數規范、解析服務依賴關系和解析服務進程信息。相較于其他方法僅能實現服務依賴解析,HAA方法極大擴展了關鍵信息的解析范圍。

2.3.1 參數規范獲取

應用程序跨進程調用系統服務接口的參數需要先經過序列化操作,再通過Binder傳輸。其中,序列化操作將數據變為可存儲、可通過Binder傳輸的狀態。在Android系統中,使用Parcel容器保存序列化的數據。通過監控應用程序調用系統服務接口時對參數進行的序列化操作,可以獲得系統服務接口參數信息。根據序列化數據類型,可將序列化操作分為兩種,HAA方法針對下述兩類序列化操作進行攔截。

對于基本類型、基本類型數組、泛型容器等類型數據,Pracel對象提供和數據類型對應的序列化操作接口實現對該類型的序列化。基本類型如Integer型數據Parcel提供writeInt接口實現序列化操作;基本類型數組如int[]數組型數據,Parcel提供writeInt接口實現序列化操作;泛型容器如List容器型數據,Parcel提供writeIntArray接口實現序列化操作。本方法通過Hook Parcel對象提供的序列化接口監控這類數據類型的序列化操作,如表2所示。

表2 Hook函數列表

對于實現了Parcelable接口的對象,系統通過調用對象自身的writeToParcel方法實現序列化操作,HAA方法對這一類對象序列化的攔截記錄,操作步驟如下:

(1)注入到待監控的服務調用進程。

(2)在進程中遍歷每個被ClassLoader加載的類,查詢每個類是否含有writeToParcel方法,并檢查參數類型確定其是否繼承自Parcelable接口。

(3)對每個Hook函數找到的繼承自Parcelable接口的writeToParcel方法,在調用writeParcel方法時記錄寫入的Parcel對象和寫入的類型。

HAA方法監控系統服務調用時每一次序列化操作與數據傳輸的過程,通過查詢表1中Parcel字和Data字段匹配的記錄,可獲取對應接口的參數規范。

2.3.2 服務依賴解析

根據獲取方式不同,可將Android系統服務分為實名服務和匿名服務。實名服務通過ServiceManager索引,依據服務名稱獲取。匿名服務只能調用其所依賴的實名服務的特定接口來創建。針對匿名服務的模糊測試要根據服務依賴關系獲取匿名服務。

以sip_session匿名服務為例介紹匿名服務的獲取方式,如圖2所示。

具體步驟如下:

(1)客戶端通過ServiceManager獲取SipManager服務,然后通過調用SipManager服務的CreateSession接口創建SipSession服務。

(2)調用readStrongBinder函數,從SipManager服務的返回數據中解析出SipSession服務引用,再利用該引用調用SipSession服務的相關接口。

HAA方法獲取匿名服務依賴關系的具體步驟如下:

(1)監控Binder驅動,獲取實名服務返回的Binder通信數據。

(2)通過Hook Pracel對象的readStrongBinder函數,從通信數據中提取所有匿名Binder引用,并保存其來源,獲取匿名服務所依賴的系統服務。

(3)當后續通過該匿名Binder與匿名服務通信時,從通信數據中提取該匿名服務的名稱,并保存匿名服務名稱和該匿名服務所依賴的實名服務。

2.3.3 進程信息獲取

Android系統服務量大,且運行在系統的不同進程中,為了監控系統服務運行狀態,需要獲取服務進程信息。當啟動實名服務時,需要在ServiceManager服務處注冊才能提供服務。其中匿名服務和其所依賴的實名服務處于同一進程。通過攔截實名服務的注冊過程,可以獲得系統服務進程信息。HAA方法選取ServiceManager的svc_can_register函數監控。svc_can_register函數原型為Int svc_can_register(ubsigneD uid,uint16_t*name)。

svc_can_register函數的參數uid表示服務所在進程ID,參數name表示服務名稱,系統中的實名服務向ServiceManager注冊時,ServiceManager會調用該函數來處理注冊信息。通過Hook函數記錄每次注冊的服務進程ID與服務名稱。

HAA方法在開始監控實名服務注冊過程之前,存在部分實名服務已經注冊完成的情況,無法獲取此類服務的進程信息。為解決該問題,HAA方法先終止Zygote進程,再獲取服務進程信息。HAA方法可獲得所有服務的進程信息。

3 實驗分析

3.1 目的和數據源

為驗證HAA方法的有效性,本實驗在多個Android系統設備中進行系統服務關鍵信息獲取實驗。測試設備包括實體機和模擬器2種類型,測試設備系統包括原生系統和設備制造商定制系統2種類型。從GooglePlay選取15種應用作為測試樣本生成系統服務通信數據,測試應用覆蓋主要應用類別,如表3所示。最后與Chizpurfle[13]所使用的基于Java反射的關鍵信息獲取方法、Gu[12]所使用的基于源碼解析的關鍵信息獲取方法、BadIntent[16]所使用的基于Binder監控的關鍵信息獲取方法進行對比分析實驗。

表3 系統服務信息獲取全面性實驗測試樣本列表

3.2 實驗環境和條件

實驗環境分為兩部分,如表4所示。

(1)多層次Binder通信監控模塊部署環境

分別在Android模擬器、Nexus6P和SamsungS4這三臺測試設備中部署Binder通信監控模塊獲取系統服務通信數據。

圖2 sip_session匿名服務獲取原理圖

表4 實驗環境配置

(2)關鍵信息解析模塊部署環境

在Dell 390臺式機中做監控數據分析工作,用于運行信息解析程序,分析歸納監控數據獲取系統服務關鍵信息。

3.3 評價方法

評價指標包括獲取的系統服務總數N、已正確解析函數規范的服務接口總數I、已正確獲取服務依賴關系的匿名服務總數Nc和已正確獲取進程信息的服務總數N p率。其上述評價方法的計算公式如下:

其中,Ni、N n和N a分別為實驗方法所獲取的Java層實名服務總數、Native層實名服務總數和Native層匿名服務總數;I i、I n和I a分別為已正確解析參數規范的Java層實名服務接口總數、Native層實名服務接口總數和Native層匿名服務接口總數。

3.4 實驗過程及參數

實驗過程的步驟如下:(1)在測試機器中部署自動化測試工具Monkey;(2)在測試機器中安裝所有測試樣本及HAA方法系統服務關鍵信息獲取框架;(3)在測試機器中運行HAA方法,使用Monkey依次啟動每個測試樣本,每個測試樣本運行時長為5 min,導出監控數據,并通過運行關鍵信息解析程序,自動化分析監控數據;(4)統計分析系統服務關鍵信息的獲取結果,根據公式(1)、(2)計算N和I,并記錄HAA方法信息獲取實驗結果;(5)使用Gu等人提出的Android系統服務漏洞挖掘方法[12]、Chizpurfle[13]和Badlntent[16]的關鍵信息獲取方法替換步驟(2)中的HAA方法,重新安排所有測試樣本,消除之前執行樣本帶來的干擾,重復步驟(3)和(4)。

3.5 實驗結果和相關方法比較

表5分別為Android模擬器(系統版本8.0)、Nexus6P(系統版本7.1.2)設備和GalaxyS4(系統版本5.0.1)設備中所獲取信息的實驗結果。

由表5的實驗結果可知:

(1)在系統服務數量上,HAA方法在Android模擬器、Nexus6p和GalaxyS4三個測試環境上的N值分別為114、159和168,高于其他三類方法,這是由于該方法在Native層實名服務總數N n和匿名服務總數Na上獲取的更多的信息。由于Gu無法實現AIDL文件、Chizpurfle依賴Java層的反射特性和BadIntent僅監控單一層次Binder導致這三類方法的N n值為0,都無法獲取到實名服務信息,而HAA在三個測試環境下的N n值分別為13、33和39,且與對比方法相比在Android模擬器和Nexus6P測試環境中具有更高的Na值,分別為19和31,表明該方法能有效提高系統服務信息的獲取數量。這是由于HAA在Native層的BpBinder與BBinder上建立通信機制,構建了Java層到Native層通道,從而實現全面有效地獲取服務關鍵信息。

(2)在系統接口數量上,依據Native層的Binder是Java層Binder的映像的特點,HAA方法利用Java映射,有效聯合Java層和Native層以提取關鍵信息,有效提高了I n值。在三個測試平臺上,I n值分別為101、158和195,解決了其他三類方法無法獲取Native層實名服務接口總數的問題。HAA在三個平臺的I a值分別為185、412和342,均高于Chizpurfle和BadIntent方法,且在Nexus6P和GalaxyS4兩個測試平臺上高于Gu方法的I a值338和92,因此HAA方法能全面有效地獲取服務接口信息。

(3)HAA正確獲取服務依賴關系的匿名服務總數Nc分別為19、31和17,大于對比方法的Nc值,表明該方法能夠實現匿名服務依賴解析,獲取正確的匿名服務接口總數。在正確獲取進程信息的服務總數N p上,HAA分別為114、159和168,大于其他對比方法的N p值,這是由于HAA將Native層的BBinder對象和Java層的JavaBBinder對象關聯起來,通過監控服務注冊過程,準確無誤獲取服務進程信息。

表5 多環境配置下系統服務信息獲取全面性結果

綜上,HAA方法在Android模擬器(系統版本8.0)、Nexus6P(系統版本7.1.2)和GalaxyS4(系統版本5.0.1)三個測試平臺的N值、I值、N c值和N p值都高于其他三類方法,表明該方法能全面地獲取Java層的系統服務接口參數規范、Native層的接口參數規范、系統匿名服務依賴信息和系統服務進程信息,能夠在多個不同Android平臺上全面有效地獲取系統服務信息,具有高兼容性。

4 結束語

本文分析了現有的Android系統服務關鍵信息獲取方法的原理和優缺點,發現現有方法的兼容性、信息獲取全面性和自動化獲取能力方面存在不足,同時提出一種Android系統服務信息分層獲取方法。通過在Android系統的應用層、框架層和內核層分別構建完整的Binder通信行為監控模塊,攔截系統服務注冊過程獲取系統服務進程信息,分析系統服務業務通信過程獲取服務依賴信息與接口參數規范,實現系統服務關鍵信息的自動化獲取。最后在覆蓋實體和虛擬、定制系統和原生系統的3個Android設備中進行了系統服務關鍵信息獲取實驗,并與其他方法進行對比分析。結果表明,Android系統服務信息分層獲取方法能有效地獲取系統服務接口參數規范、系統服務依賴信息和系統服務進程信息,信息獲取全面,實現了系統服務關鍵信息獲取過程的自動化和高兼容性。

猜你喜歡
進程關鍵服務
高考考好是關鍵
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
獲勝關鍵
NBA特刊(2014年7期)2014-04-29 00:44:03
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
生意無大小,關鍵是怎么做?
中國商人(2013年1期)2013-12-04 08:52:52
主站蜘蛛池模板: 亚洲天堂网2014| 在线观看亚洲天堂| 40岁成熟女人牲交片免费| 欧美日韩精品一区二区视频| 国产18页| 天天综合网在线| 少妇精品网站| 国产精品欧美激情| 亚洲一区二区三区国产精华液| 日韩在线永久免费播放| 99re精彩视频| 国产丝袜91| 欧美精品亚洲精品日韩专区| 亚洲av无码人妻| 国产精品网址在线观看你懂的| 欧美一级特黄aaaaaa在线看片| 日韩无码真实干出血视频| 亚洲第一中文字幕| 手机在线国产精品| 久久久久久午夜精品| 91精品专区| 日韩av无码DVD| 秋霞国产在线| 亚洲精品自在线拍| 久久黄色毛片| 激情视频综合网| 亚洲男人的天堂网| 人妻丰满熟妇啪啪| 亚洲综合在线网| 99无码中文字幕视频| 国产成人精品男人的天堂| 2021国产v亚洲v天堂无码| 日韩国产另类| 中文字幕色在线| 中文字幕欧美成人免费| 91日本在线观看亚洲精品| 国产一级视频久久| 色婷婷视频在线| аⅴ资源中文在线天堂| 欧美精品不卡| 香蕉色综合| 99久久人妻精品免费二区| 在线看片中文字幕| 日本精品αv中文字幕| 噜噜噜久久| 国产成人免费| 亚洲色欲色欲www网| 成人无码一区二区三区视频在线观看| 91蜜芽尤物福利在线观看| 亚洲精品成人福利在线电影| 中文字幕人成乱码熟女免费| 国产一级二级在线观看| 任我操在线视频| 性色生活片在线观看| 国产成人91精品| 午夜a视频| av尤物免费在线观看| 又大又硬又爽免费视频| 香蕉久久国产超碰青草| 久久精品丝袜| 免费人成网站在线高清| 日本a∨在线观看| 国产一级毛片网站| 亚洲一级毛片| 久久精品视频亚洲| 伊人欧美在线| 2020精品极品国产色在线观看| 欧美影院久久| 亚洲一区毛片| 久久 午夜福利 张柏芝| 伊在人亞洲香蕉精品區| 国产杨幂丝袜av在线播放| 网友自拍视频精品区| 高潮毛片无遮挡高清视频播放| 亚洲综合极品香蕉久久网| 日韩第九页| 国产乱论视频| 国产激情影院| 中文字幕久久亚洲一区| 在线免费不卡视频| 国产在线精品香蕉麻豆| 国产啪在线91|