曹宏盛,焦 健,陳 昕,劉其源1(北京信息科技大學網絡文化與數字傳播北京市重點實驗室,北京100101)
2(北京信息科技大學計算機學院,北京100101)
E-mail:jiaojian@bistu.edu.cn
傳統的惡意軟件分析往往依賴于分析人員的經驗.面對如今樣本數量巨大的惡意軟件,傳統的人工分析很難滿足現實的需求;傳統的惡意軟件檢測工具一般以特征或行為模式作為檢測的依據,其存在以下問題:
1)無法反映惡意軟件的狀態變化;
2)無法了解惡意軟件達到某狀態的執行邏輯.
因此,傳統的惡意軟件分析在方法上依舊面臨著嚴峻的挑戰,一定程度上這些問題已經成為了Android安全的發展瓶頸.
隨著這些年的發展,研究者在惡意軟件行為這方面加大了研究力度.王兆國、李城等人[1]通過將函數調用看作行為,構造隱私竊取的行為鏈,分析惡意軟件中存在的隱私竊取路徑,它將隱私竊取行為分為三個過程:隱私數據竊取、隱私數據傳遞、隱私數據泄露,通過WxShall算法分析出可達的所有可疑路徑,進而確定存在的隱私泄露路徑.AppContext[2]將應用中的敏感API調用視為安全敏感行為,根據API的上下文環境判斷移動應用的行為是良性的還是惡意的,文章認為安全敏感行為的觸發可以根據上下文環境判斷,例如導致敏感行為發生的觸發事件或外界環境條件.Cheng S等人[3]利用商業化的反匯編工具IDA pro實現反匯編信息的搜集,構建污點分析引擎與常量分析引擎實現隱私泄露類行為以及常量使用類惡意行為的檢測.DroidADDMiner[4]通過構造敏感API的數據依賴路徑圖,結合常量使用和上下文環境信息,最終給出機器學習所需的特征向量構造方法,對惡意軟件的特定行為進行特征化的檢測,該行為與特定敏感API調用相對應.
綜上所述,目前針對惡意軟件行為的研究集中在識別上,通過軟件行為特征匹配對比,上下文分析,敏感數據依賴等方法,達到識別的目的.但是缺乏對惡意軟件的行為以及相關行為所引起的狀態變化的描述以及可視化展示.顏色Petri網(CPN)能夠很好地描述這種行為模型.它本身具有適合于描述異步的、并發的計算機模型的特點,而且其“庫所、變遷”等符號非常適合描述軟件的執行行為及其過程,能夠對這些行為做仿真和動態演示.本文在目前已有的Android惡意軟件行為研究基礎上給出行為及其狀態變化模型,在顏色Petri網理論基礎上以該行為模型作為輸入,給出行為可視化自動生成的方法.該方法首先給出軟件行為模型,然后給出petri網的成分抽取步驟,將抽取的petri網成分映射到該工具的.cpn文件元素中,自動生成.cpn文件,最后利用CPN Tool工具進行動態仿真.通過使用現有的惡意軟件進行實驗,驗證該可視化自動生成方法的可行性.
本文結構如下:第2節,介紹惡意軟件的行為建模;第3節給出了基于有色petri網的形式化建模方法;第4節為實驗分析;最后是本文的結論.
惡意軟件作者制作并傳播惡意軟件必然是為了獲取某些利益.在行為理論中,Bratman[5]認為意圖是基于未來導向的行為序列.為了獲取利益,惡意軟件制作者將會按照一定的設計邏輯,賦予軟件達到獲利目的執行邏輯.而獲利目的的達成往往表現為惡意軟件中某些設備資源的最終狀態,而達到這一狀態的執行邏輯則表現為一系列的敏感函數調用或代碼段的執行,即軟件行為.在前期的工作中[13],我們給出了意圖、行為序列、狀態等概念的建模.以下是相關概念的闡述:
軟件程序的構成可以看作是數據結構與算法的組合,因此在程序中我們可以將某一函數調用看作是一種操作,多個含有特定關系的操作序列將會完成一定的功能.因此,行為序列可以看成是一系列具有內在關聯的函數調用,在本文研究可看成是android的API調用.

函數可以抽象為一種映射關系,表示如下:

操作的對象是某一組輸入數據(包括android系統的消息、用戶/系統操作、用戶隱私數據以及程序初始化常量值等);當某一觸發條件滿足后,惡意軟件開始操作的進程,這組數據經過一系列的函數操作后最終達到某一最終狀態.狀態則可以認為是某一時刻,所關注的對象的特征的取值.數據的三元組如下:

因此,如果這些數據的某些特征的取值,達到相應的條件時,可以認為存在此目的.本文給出意圖的組成如下:

通過安全廠商賽門鐵克[6]給出的惡意軟件的動機分析、2016互聯網安全威脅報告[7]以及移動互聯網惡意代碼描述規范[8],本文總結歸納得到惡意軟件的六種主要意圖,分別是竊取用戶隱私、消耗用戶資費、惡意扣除用戶費用、傳播惡意軟件、惡意信息展示以及勒索用戶,即,意圖集合={竊取用戶隱私,消耗用戶資費,惡意扣除用戶費用,傳播惡意軟件,惡意信息展示,勒索用戶}
本文的主要工作是行為可視化自動生成方法.介紹行為抽取,主要是為了說明可視化生成算法的輸入BM_File(Behavior Model File)可以通過分析抽取惡意軟件的行為而得到,如文獻[13].惡意軟件行為抽取圍繞安全敏感行為的分析,安全敏感行為往往由Android特定的敏感API接口所實現,故針對敏感API的分析是惡意軟件行為分析的重點.圍繞獲取的底層敏感API進行安全分析,一方面減少了待分析的API數量,提升了分析的效率;另一方面降低了安全無關結果的干擾,提升了分析的準確率.在描述敏感API的語義級行為時,需要分析以下四個安全要素:
1)敏感API調用與依賴關系:敏感API調用能夠直接反映app安全相關的行為,此外,特定API間的依賴關系也能表明app的某種特殊行為.
2)觸發條件:特定API調用的觸發條件隱藏著潛在的安全風險.某個API調用的惡意性判定有時需要依賴于特定前置條件的存在,例如:如果缺失了用戶同意的條件判定,則可能導致非法操作.
3)入口點:一系列API調用的入口點是一個重要安全因素,API調用的入口點直接或者間接地觸發該調用發生.可以依據入口點信息推斷用戶是否知曉該API的調用.
4)常量參數:常量分析通過揭示特定參數的值能夠傳遞語義信息,并且給出細粒度的API語義.例如:Runtime.exec()可能會執行各種shell命令,比如ps或chmod,根據輸入的常量參數而有所不同.

圖1 隱私泄露類app的環境依賴圖樣例Fig.1 Example of environmental dependency graph for privacy leak app
為抽取惡意軟件中存在的行為事實,需要對安全要素進行組織,采用圖結構表示該安全要素.構造敏感API數據依賴圖模型需要有三個功能模塊:
1)敏感API的查找(接口輸入是反編譯的程序源碼或反編譯后的中間圖表示和敏感API特征庫,輸出是敏感API的信息,包括函數名、函數位置、參數個數、觸發條件、入口點函數);
2)敏感API的參數分析(接口輸入是敏感API與程序表示,輸出是參數個數,參數名,參數值);
3)任意兩敏感API間的依賴關系分析(該接口的輸入是任意兩敏感API和程序表示,輸出是兩者之間的依賴關系,具有指向性).
某個隱私泄露類app的環境依賴圖模型可以描述如圖1所示,其中,每一個節點均是以某一敏感API為中心的,節點間的有向邊表示敏感API間的數據或控制依賴關系,加黑處為函數原型,針對每一個函數原型,分別對應有其入口點信息(BroadcastReceiver.onReceiver),常量參數(Setconst)信息,條件因素(Setcond)信息等.
敏感API環境依賴圖模型構造的目的是為了提取Andriod應用中的行為事實,重點針對敏感API的語義進行行為抽象.由行為(函數)定義知:行為識別分為三個階段:
1)敏感API到行為名的映射,得到程序中敏感API對應的行為集 Set={Act1,Act2,…,Actn};
2)行為輸入客體識別(依據常量參數、API函數定義、變量參數),客體識別包括三個部分:客體名識別,客體屬性確定,屬性值確定;
3)行為輸出客體的確定.
語義映射依賴于敏感API與行為名、客體、客體特征的映射關系,自動化地提取需要構造敏感API特征庫TAB:
1)敏感API的搜集,主要依賴敏感權限組中包含的API;
2)依據API官方文檔的定義對特定API的定義進行描述,主要獲取行為描述語言,行為客體的確定和描述方式;
3)確定不同行為對應的客體屬性,并劃定客體屬性值的取值范圍.
文獻[13]中給出了基于行為事實的行為意圖推理方法,它的輸出也是本文Petri網建模的輸入之一,即行為模型文件BM_File.BM_File中給出了意圖元素的描述:行為集合、行為間關系集合.根據該模型文件,可以獲取惡意軟件中存在的行為、行為之間的關系以及這些行為的執行對行為客體(設備資源)產生的影響(客體特征).行為間的關系通過客體被聯系起來,基本的關系有順序關系、并發關系,它們分別用has-CompoundWith和hasCombinationWith表示,下面將針對意圖描述文件BM_File的自動可視化做進一步的闡述.
Petri網是1962年由Carl Adam Petri[9]提出的一種模型,用于描述分布式系統,適用于對具有同步、并發和沖突的離散事件系統進行建模和分析.接下來介紹如何從第二章提到的惡意軟件行為模型自動生成CP-net,并給出算法步驟.
為了將BM_File文件中涉及的概念都能在可視化中體現,我們使用顏色petri網建模.
根據文獻[10],顏色petri網的主要元素分別是:庫所、顏色集、標識、變遷、弧以及變量.首先抽取出顏色petri網的主要成分.因為庫所(PLACE)表示CP-net的狀態,因此抽取data的“數據客體,特征”組成庫所;函數作為CP-net的變遷(TRANS);
顏色集(COLOR),表示庫所的類型,也就是將庫所分類.本文通過特征值來確定顏色集的數據類型,所以將顏色集的組成確定到特征級別,因此與庫所一樣通過抽取data的“數據客體,特征”組成顏色集,作為庫所的類型;
標識(token),表示CP-net的一個狀態,也就是token,抽取初始行為的輸入數據相應的特征值,作為對應該庫所的初始標識.
變量(VAR),用于保存和傳遞數據值,抽取特征作為相應庫所的變量.
弧(ARC),則通過庫所與變遷之間的關系進行抽取.庫所指向變遷的弧稱為PtoT,將對應的變量傳遞給變遷;變遷指向庫所的弧稱為TtoP,根據行為的輸入數據的特征值,生成判定條件,根據行為的輸出數據的特征值,生成條件的執行部分.

該算法從BM_File文件中抽取CPN文件(可視化文件)的各個元素,算法偽代碼如下:遷的關系矩陣.當字符串中含有"hasCompoundWith"時,該函數通過抽取該字符串的行為名稱,并與actionSetNum匹配,得到編號.根據編號,為矩陣相應元素賦值,生成矩陣.add-ActSeq(),該函數的功能是生成行為序列,用于變遷的布局.矩陣和行為序列如圖2所示,左邊為變遷的關系矩陣,當rij=1時,表示第i個變遷和第j個變遷存在順序關系.

圖2 矩陣和行為序列實例Fig.2 Example of matrix and behavior sequence
generateArc(trans,var),利用變遷和庫所中的元素,生成弧.對于PtoT弧,我們以var作為其值;TtoP弧,我們使用trans的輸入庫所的mark生成判定條件,trans的輸出庫所的mark生成其執行內容.
CPN Tools作為顏色Petri網的建模和分析工具,其文件格式是基于XML的.cpn文件.加載的文件以及保存的文件都是基于XML的.cpn文件.
.cpn文件的XML格式使用DTD進行描述.該XML表示中,主要包括五部分的內容描述,分別是:顏色集、變量、庫所、變遷以及連接庫所和變遷的弧,具體格式由文獻[11]給出.根據文獻[11]給出的具體的格式,將已經抽取的元素信息生成該格式的內容.庫所在.cpn文件中的格式如圖3所示.

圖3 庫所在.cpn文件中的格式Fig.3 Format of the place in the.cpn file
.cpn文件生成算法Generate_cpn()主要由三部分組成:
1)從.cpn模板文件中抽取petri網主要元素的xml文件格式模板;2)通過3.1得到的各個元素和xml文件格式模板,生成各元素的xml文件內容;3)將各元素的xml文件內容插入到.cpn模板文件中,生成新的.cpn文件.該算法的偽代碼如下:VAR,分別表示.cpn模板文件、變遷集合、庫所集合、弧集合、顏色集集合、變量集合.

其中extractTemplate()表示抽取各個成分的xml文件格式模板,分別保存到 T_color,T_var,T_trans,T_place,T_arc 這些字符串數組中.
xml_trans=addXmlTrans(T_trans,trans),該函數將 trans這個變遷中的數值,添加到T_trans模板中,形成該變遷具體的xml文件內容,并追加到xml_trans中.同理,xml_place、xml_color分別保存了庫所、顏色集這些元素的xml文件內容.
通過遍歷T_CPN字符串數組,將對應元素(庫所、變遷等)的XML文件內容添加到新的.cpn模板文件中,形成新的模板文件文件.當遍歷到主要成分的位置時,通過Insert()函數,將對應的xml文件內容插入到要生成的.cpn文件.isInsertColor標識T_CPN中顏色集的模板內容是否已經添加.
4.1.1 BM_File 文件實例
本文對 GoldDream,GGTracker,HippoSMS,Zitmo 等惡意軟件進行了實驗,這些惡意軟件具有不同的惡意意圖,如竊取用戶隱私,消耗用戶資費等.這里使用GoldDream作為實例,介紹本文的實驗步驟.GoldDream[12]能夠執行注冊高優先接收器,監視電話、短信,后臺程序搜集信息并發送到遠程服務器等行為.此外,它也能夠根據遠程服務器的指令執行一些操作.根據2.1給出的行為模型,GoldDream的行為模型文件(BM_File)如圖4所示.

圖4 GoldDream的行為模型文件實例Fig.4 Behavior model file instance of GoldDream
ACTSEQ表示行為集合.hasCompoundwith表示復合關系(前者的輸出是后者的輸入),可知各個行為之間的關系,從而得到行為序列.
行為ACT_transmit2,它的一個輸出數據為(PhoneCall,position,remoteServer),其中 PhoneCall是數據客體,表示來電信息;position是特征,表示信息位置;remoteServer是特征值,表示遠程服務器地址.這三元組表示了數據當前的狀態.在行為ACT_transmit2之后沒有后續的處理,因此,數據客體Phone-Call的最終狀態為(PhoneCall,position,remoteServer),表示來電信息被發送到遠程服務器,存在隱私信息被泄漏的可能.
4.1.2 顏色petri網成分抽取實例
根據圖4給出的GoldDream隱私信息竊取行為的輸入文件,給出具體的建模過程.首先抽取元素,用于.cpn文件生成.通過抽取客體名和特征得到顏色集,抽取特征得到變量,如表1所示.

表1 顏色集和變量說明Table 1 Color set and variable description
庫所作為表示系統狀態的元素.抽取客體、特征,組合得到庫所.如表2所示.

表2 庫所說明Table 2 Place description
通過抽取行為名構成petri網模型的變遷,如表3所示.

表3 變遷說明Table 3 Trans description
在成分抽取之后,通過3.2的.cpn生成方法得到Gold-Dream惡意樣本的隱私竊取的.cpn文件..cpn文件在建模工具CPN Tools中仿真的結果如圖5和圖6所示.其中圖5表示初始狀態,圖6表示最終狀態.

圖5 GoldDream隱私竊取行為模型初始狀態Fig.5 Initial state of privacy theft behavior model of GoldDream
如圖5和圖6所示,橢圓表示庫所,矩形表示變遷.圖5為初始狀態,如橢圓框所示,電話信息(phoneCall)和短信信息(SmsMessage)還保存在設備中(inDevice,分別如標識③、④旁的橢圓框所示,即token所示);廣播(Broadcast_)也未被監聽(false,如標識①、②所示);遠程服務器敏感地址(Address)也未被使用(false).如標識⑥所示,弧上方的橢圓框中的position是變量,用于保存和傳遞電話信息的位置,變量的抽取如表1所示.如標識⑦弧下方橢圓框中是弧的判定條件,如3.1對弧的介紹.圖6為最終狀態,廣播(Broadcast_)已經處于被監聽的狀態(true,如標識①、②所示);敏感地址(Address)被使用,如標識⑤所示,此時token的值為true;電話信息(phoneCall)和短信信息(SmsMessage)信息被發送到遠程服務器(標識③、④所示為remoteServer).現實中信息泄漏也必須包含信息被發送到外部地址,才能達到泄漏的目的.因此該模型的仿真過程及其最終狀態符合實際情況.

圖7 GoldDream在線檢測結果對比Fig.7 Online test results comparison of GoldDream
表4中給出了三個在線檢測平臺的檢測結果比較,騰訊手機管家的檢測結果給出了GoldDream的行為和行為關系的文字描述,但沒有直觀的動態展示.梆梆安全給出了Gold-Dream涉及的行為,但沒有給出行為之間的順序關系,并且一些行為在正常的軟件中,也是存在的,比如開機啟動、獲得網絡連接等.愛加密通過分析,只給出了軟件需要獲取的權限,但沒有給出軟件行為,并且一些權限在正常的應用中也同樣存在.

表4 檢測結果對比Table 4 Comparison of detection results
騰訊手機管家、梆梆安全與本方法的性能比較,如表5所示.

表5 檢測結果性能對比Table 5 Comparison of detection result performance
可以看出本方法獲取的行為和關系數量都大于或等于其他系統的數量.其中梆梆安全的8個行為中,包括了“開機啟動”和“獲取網絡鏈接”這兩個正常的軟件中也會有的行為.
同時,通過分析騰訊手機管家、梆梆安全和愛加密的檢測結果三者的結果,也可以佐證本文檢測結果的正確性.例如騰訊手機管家提到的“私自發送短信,記錄用戶隱私信息并上傳到遠端服務器”;梆梆安全提到的“發送短信”以及愛加密中的“允許接收和處理短信,允許處理更改外撥電話”都與圖6中的“access1 SMS,access2 phonecall and transmit1 SMS,transmit phonecall”對應.
愛加密中的“允許訪問網絡,允許查看網絡狀態”、梆梆安全中的“獲取通話狀態,獲取網絡連接”都與圖6中的“monitor1 broadcast”相對應.
通過本方法給出的實驗結果與騰訊手機管家、梆梆安全和愛加密的檢測結果對比,本文提供了一個更為直觀容易理解的動態演示的方式,使用戶能更清楚地明白該軟件在自身的運行過程中做了哪些行為,以及這一系列行為最終達到的狀態,為用戶對該軟件的判斷評估提供了參考依據.
本文給對惡意軟件的行為進行了形式化的描述,給出了行為及其相關狀態變化的模型,并以此行為模型作為輸入,根據顏色petri網理論,結合CPN tools工具的.cpn文件的XML格式,提出了惡意軟件行為的可視化自動生成算法.針對惡意軟件進行了實例建模,生成惡意軟件行為對應的.cpn文件,并利用CPN tools對該軟件進行了仿真.最后在實驗部分,通過把本方法的實驗結果與騰訊手機管家、梆梆安全和愛加密三個平臺的在線檢測結果進行比較驗證,證明了本文提出的可視化自動生成方法的可行性和正確性,并且該方法的結果更為直觀容易理解,使用戶能更清楚地明白該軟件在自身的運行過程中做了哪些行為,以及這一系列行為最終達到的狀態,為用戶對該軟件的判斷評估提供了參考依據.