識別移動環(huán)境的木馬化應(yīng)用程序的制作方法
【專利摘要】識別出移動環(huán)境的木馬化apps。從一個或多個外部來源獲得特定移動環(huán)境的多個apps。從所述apps提取代碼和數(shù)字簽名者并存儲。對于所述所獲得apps中每個給定的特定app,將所述特定app的所述代碼與其他所獲得apps的所述代碼進(jìn)行比較,以確定所述特定app是否1)包含與所述其他apps中的一者共同的至少預(yù)定閾值量的代碼,以及2)包含其中不含有的附加代碼。如果是這樣的話,將所述特定app的所述數(shù)字簽名者與所述其他app的所述數(shù)字簽名者進(jìn)行比較。如果還是這樣的情況:所述特定app的所述數(shù)字簽名者與所述其他app的所述數(shù)字簽名者不同,則將所述特定app識別為被木馬化。
【專利說明】識別移動環(huán)境的木馬化應(yīng)用程序
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明總體涉及計算機(jī)安全,并且更具體地講,涉及識別移動環(huán)境的木馬化應(yīng)用 程序。
【背景技術(shù)】
[0002] 諸如智能手機(jī)和平板電腦的移動計算設(shè)備每天得到越來越廣泛的使用。安卓是用 于此類移動設(shè)備的一種基于Linux的開源操作系統(tǒng),它正獲得日益普及的市場份額。大量 開發(fā)者編寫在安卓設(shè)備上運(yùn)行的應(yīng)用程序("apps")。通過谷歌公司(Google)運(yùn)行的在 線安卓市場,這些apps中的許多可供購買或供免費(fèi)使用。安卓apps也可從其他網(wǎng)上商店 和另外的第三方站點(diǎn)下載。由于安卓環(huán)境的開放性質(zhì),任何人都可以創(chuàng)建和分發(fā)安卓apps。
[0003] 由于其開放性,安卓平臺易受到稱為木馬化(trojanization)的攻擊。為了實現(xiàn) 該攻擊,惡意方以從在線商店或其他來源下載的合法app開始。攻擊者除去app的數(shù)字簽 名,添加另外的(惡意的)代碼到app上,用匿名數(shù)字證書為app重簽名,并通過現(xiàn)有信道 之一將當(dāng)前惡意app再分發(fā)給無防備用戶。這被稱為使app木馬化。實際上,攻擊者正利 用安卓開發(fā)和分發(fā)環(huán)境的開放性將惡意代碼隱藏在現(xiàn)有合法app中。試圖下載并運(yùn)行合法 app的用戶會被誘使下載木馬化的版本。當(dāng)木馬化app在用戶的安卓設(shè)備上運(yùn)行時,攻擊者 添加的新代碼可執(zhí)行惡意功能,例如竊取聯(lián)系信息、記錄數(shù)據(jù)輸入、發(fā)送欺詐性通信,等等。
[0004] 有必要解決該問題。
【發(fā)明內(nèi)容】
[0005] 木馬化app管理系統(tǒng)識別移動環(huán)境中的木馬化apps,例如木馬化的安卓apps。特 定的移動環(huán)境下的大多數(shù)應(yīng)用程序是從一個或多個app商店和/或其他第三方來源獲得 的。從所獲得的app提取代碼、數(shù)字簽名者和一些實施例中的日期(如,發(fā)布日期)并有效 地存儲。例如,該數(shù)據(jù)可存儲在代表apps的數(shù)據(jù)結(jié)構(gòu)數(shù)組中,使得存在與每一個所獲得的 apps相關(guān)的數(shù)組的單獨(dú)元素。在不同實施例中,從每個app提取代碼可采取不同形式,例如 從app的所有類中的所有方法中提取原始字節(jié)碼,提取app中存在的類的名稱以及每個類 的定義方法的名稱,提取app的每個類中的每個方法的散列,提取描述app的可能執(zhí)行路徑 的流程圖,等等。
[0006] 對于所獲得apps中每個給定的特定app,將特定的所獲得app的代碼與多個其他 所獲得apps的代碼進(jìn)行比較,以確定特定的所獲得app是否1)包含與其他所獲得apps中 的一者通用的至少預(yù)定閾值量的代碼,以及2)包含其中不含有的另外代碼。在一個實施例 中,該過程包括將特定的所獲得app的代碼與每一個其他所獲得的apps中的代碼進(jìn)行比 較。在另一個實施例中,該過程經(jīng)優(yōu)化,使得特定的所獲得app的代碼僅與其他所獲得apps 的子集的代碼進(jìn)行比較。在該情況下,該子集僅由與特定的所獲得app的至少一些代碼有 共同之處的那些所獲得的apps組成。
[0007] 對如下情況作出響應(yīng),而將特定app的數(shù)字簽名者與其他app的數(shù)字簽名者進(jìn)行 比較:確定1)特定的所獲得app包含與所獲得apps中的另一個app通用的至少預(yù)定閾值量 的代碼,以及2)特定的所獲得app包含在其他所獲得app中不含有的另外代碼。在一個實 施例中,也將特定app的日期與其他app的日期進(jìn)行比較。響應(yīng)于如下情況,而將特定app 識別為木馬化app :確定1)特定app包含與其他app通用的至少預(yù)定閾值量的代碼,2)特 定app包含其他app中不含有的另外代碼,3)特定app的數(shù)字簽名者與其他app的數(shù)字簽 名者不同,以及(可選)4)特定app的日期晚于其他app的日期。
[0008] 作為對識別木馬化app的響應(yīng),可執(zhí)行另外的步驟,例如標(biāo)記木馬化app以供人類 分析者人工檢查,對木馬化app進(jìn)行排隊以用于自動化的惡意代碼分析,將木馬化app相關(guān) 的信息傳輸至集中式安全組件,將木馬化app列入黑名單,等等。
[0009] 本
【發(fā)明內(nèi)容】
和以下【具體實施方式】中所述的特征和優(yōu)點(diǎn)并不包括全部,并且特別 地,相關(guān)領(lǐng)域的普通技術(shù)人員在考慮其附圖、說明書和權(quán)利要求書后,許多另外的特征和優(yōu) 點(diǎn)將顯而易見。此外,應(yīng)該指出的是,說明書中所用的語言主要被選擇用于可讀性和指導(dǎo)目 的,而不是被選擇用來限定或限制本發(fā)明的主題,必需借助權(quán)利要求書確定此發(fā)明主題。
【專利附圖】
【附圖說明】
[0010]圖1為根據(jù)一些實施例的示例性網(wǎng)絡(luò)體系結(jié)構(gòu)的框圖,其中可實現(xiàn)木馬化app管 理系統(tǒng)。
[0011] 圖2為根據(jù)一些實施例的適用于實現(xiàn)木馬化app管理系統(tǒng)的計算機(jī)系統(tǒng)的框圖。
[0012] 圖3為根據(jù)一些實施例的木馬化app管理系統(tǒng)的操作的框圖。
[0013] 圖4為根據(jù)一些實施例的木馬化app管理系統(tǒng)的操作的流程圖。
[0014] 這些圖僅出于舉例說明的目的來示出各種實施例。本領(lǐng)域技術(shù)人員根據(jù)下列討論 將易于認(rèn)識到,在不脫離本文所述原理的情況下,可采用本文所述的結(jié)構(gòu)和方法的替代實 施例。
【具體實施方式】
[0015] 圖1為框圖,示出了示例性網(wǎng)絡(luò)體系結(jié)構(gòu)100,其中可實現(xiàn)木馬化app管理系統(tǒng) 101。所示網(wǎng)絡(luò)體系結(jié)構(gòu)100包括多個客戶端103A、103B和103N,以及多個服務(wù)器105A和 105N。在圖1中,木馬化app管理系統(tǒng)101被示出為駐留在服務(wù)器105A上。應(yīng)當(dāng)理解這僅 是例子,并且在各種實施例中該系統(tǒng)101的各種功能可在服務(wù)器105、客戶端103上被實例 化,或可在多個客戶端103和/或服務(wù)器105之間分發(fā)。
[0016] 客戶端103和服務(wù)器105可使用計算機(jī)系統(tǒng)210(例如圖2所示和下文所述的計 算機(jī)系統(tǒng))實現(xiàn)。客戶端103和服務(wù)器105通信地耦合到網(wǎng)絡(luò)107,例如經(jīng)由以下結(jié)合圖2 所述的網(wǎng)絡(luò)接口 248或調(diào)制解調(diào)器247進(jìn)行??蛻舳?03能夠使用例如網(wǎng)頁瀏覽器或其他 客戶端軟件(未示出)訪問服務(wù)器105上的應(yīng)用程序和/或數(shù)據(jù)。
[0017] 雖然圖1示出了三個客戶端和兩個服務(wù)器作為例子,實際上可部署更多(或更少) 客戶端103和/或服務(wù)器105。在一個實施例中,網(wǎng)絡(luò)107為互聯(lián)網(wǎng)的形式??稍谄渌麑嵤?例中使用其他網(wǎng)絡(luò)107或基于網(wǎng)絡(luò)的環(huán)境。
[0018] 圖2為適用于實現(xiàn)木馬化app管理系統(tǒng)101的計算機(jī)系統(tǒng)210的框圖??蛻舳?103和服務(wù)器105可以此類計算機(jī)系統(tǒng)210的形式實現(xiàn)。如圖所示,計算機(jī)系統(tǒng)210的一 個組件是總線212??偩€212通信地耦合計算機(jī)系統(tǒng)210的其他組件,例如至少一個處理 器214 ;系統(tǒng)存儲器217 (如,隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、閃存);輸入/輸出 (I/O)控制器218 ;音頻輸出接口 222,其通信地耦合到外部音頻設(shè)備,例如揚(yáng)聲器系統(tǒng)220 ; 顯示適配器226,其通信地耦合到外部視頻輸出設(shè)備,例如顯示屏224 ; -個或多個接口,例 如串行端口 230、通用串行總線(USB)插座230、并行端口(未示出)等等;鍵盤控制器233, 其通信地耦合到鍵盤232 ;存儲接口 234,其通信地耦合到至少一個硬盤244 (或其他形式的 磁介質(zhì));軟盤驅(qū)動器237,其被配置為接收軟盤238 ;主機(jī)總線適配器(HBA)接口卡235A, 其被配置為與光纖通道(FC)網(wǎng)絡(luò)290連接;HBA接口卡235B,其被配置為連接到SCSI總線 239 ;光盤驅(qū)動器240,其被配置為接收光盤242 ;鼠標(biāo)246 (或其他指針設(shè)備),其例如經(jīng)由 USB插座228耦合到總線212 ;調(diào)制解調(diào)器247,其例如經(jīng)由串行端口 230耦合到總線212 ; 以及網(wǎng)絡(luò)接口 248,其例如直接耦合到總線212。
[0019] 其他組件(未示出)可以類似方式連接(如,文檔掃描儀、數(shù)字相機(jī)、打印機(jī)等 等)。相反地,圖2中所示的所有組件不需要都存在。可以使用與圖2中所示方法不同的方 法來互連這些組件。
[0020] 總線212允許處理器214與系統(tǒng)內(nèi)存217之間的數(shù)據(jù)通信,如上所指出的,所述系 統(tǒng)內(nèi)存既包括RAM,也包括ROM和/或閃存。RAM通常是將操作系統(tǒng)和應(yīng)用程序加載到其中 的主存儲器。除其他代碼外,ROM和/或閃存還可包含控制某些基本硬件操作的基本輸入 輸出系統(tǒng)(BIOS)。應(yīng)用程序可存儲在本地計算機(jī)可讀介質(zhì)(如,硬盤244、光盤242)上并 加載到系統(tǒng)內(nèi)存217中并且被處理器214執(zhí)行。應(yīng)用程序也可以從遠(yuǎn)程位置(即,位于遠(yuǎn) 程的計算機(jī)系統(tǒng)210)加載到系統(tǒng)內(nèi)存217中,例如經(jīng)由網(wǎng)絡(luò)接口 248或調(diào)制解調(diào)器247進(jìn) 行。在圖2中,木馬化app管理系統(tǒng)101被示出為駐留在系統(tǒng)內(nèi)存217中。木馬化app管 理系統(tǒng)101的工作方式將在下文結(jié)合圖3更詳細(xì)解釋。
[0021] 存儲接口 234耦合到一個或多個硬盤244 (和/或其他標(biāo)準(zhǔn)存儲介質(zhì))。硬盤244 可以是計算機(jī)系統(tǒng)210的一部分,或者可以是物理上獨(dú)立的,可以通過其他接口系統(tǒng)進(jìn)行 訪問。
[0022] 網(wǎng)絡(luò)接口 248和/或調(diào)制解調(diào)器247可直接或間接通信地耦合到網(wǎng)絡(luò)107,例如互 聯(lián)網(wǎng)。此類耦合可以是有線的或無線的。
[0023] 圖3示出了根據(jù)一些實施例的木馬化app管理系統(tǒng)101的操作。如上文所述,木 馬化app管理系統(tǒng)101的功能可駐留在客戶端103、服務(wù)器105上,或者可在多個計算機(jī)系 統(tǒng)210之間分發(fā),包括在基于云的計算環(huán)境內(nèi),其中木馬化app管理系統(tǒng)101的功能作為網(wǎng) 絡(luò)107上的服務(wù)提供。應(yīng)當(dāng)理解,雖然木馬化app管理系統(tǒng)101在圖3中被示出為單個實 體,但所示木馬化 app管理系統(tǒng)101代表功能集合,其可根據(jù)需要被實例化為單個或多個模 塊(木馬化app管理系統(tǒng)101的特定多個模塊的實例化在圖3中示出)。應(yīng)當(dāng)理解,木馬化 app管理系統(tǒng)101的模塊可在任何計算機(jī)系統(tǒng)210的系統(tǒng)內(nèi)存217 (如,RAM、R0M、閃存)內(nèi) 被實例化(例如被實例化為目標(biāo)代碼或可執(zhí)行映像),使得當(dāng)計算機(jī)系統(tǒng)210的處理器214 處理模塊時,計算機(jī)系統(tǒng)210執(zhí)行相關(guān)功能。如本文所用,術(shù)語"計算機(jī)系統(tǒng)"、"計算機(jī)"、 "客戶端"、"客戶端計算機(jī)"、"服務(wù)器"、"服務(wù)器計算機(jī)"和"計算設(shè)備"意指被配置和/或被 編程為執(zhí)行所述功能的一個或多個計算機(jī)。另外,實現(xiàn)木馬化app管理系統(tǒng)101的功能的 程序代碼可存儲在計算機(jī)可讀的存儲介質(zhì)上。任何形式的有形計算機(jī)可讀的存儲介質(zhì)可用 于該語境,例如磁或光存儲介質(zhì)。如本文所用,術(shù)語"計算機(jī)可讀的存儲介質(zhì)"并不意味著 電信號與底層物理介質(zhì)分離。
[0024] 如圖3所示,木馬化app管理系統(tǒng)101通過獲得給定移動設(shè)備環(huán)境可用的apps301 并用與其他apps相關(guān)的特定特征識別這些apps來檢測木馬化apps303,如下文詳細(xì)描述。 在一個實施例中,移動設(shè)備環(huán)境是安卓環(huán)境,并且木馬化app管理系統(tǒng)101從一個或多個 app商店和/或其他第三方來源305獲得安卓apps301。應(yīng)當(dāng)理解,木馬化app管理系統(tǒng) 101并不限于在安卓環(huán)境內(nèi)操作,并且在其他實施例中可獲得和處理其他移動設(shè)備環(huán)境的 apps301〇
[0025] 木馬化app管理系統(tǒng)101的app獲取模塊313獲得給定移動設(shè)備環(huán)境的多個 apps301,例如安卓apps301,其為安卓應(yīng)用程序包("APK")文件的形式(用于分發(fā)和安裝 安卓apps301的文件格式)。app獲取模塊313從一個或多個外部來源305獲得apps301, 所述一個或多個外部來源例如是提供apps301下載的app商店或其他第三方網(wǎng)站。在一個 實施例中,當(dāng)木馬化app管理系統(tǒng)101激活時,app獲取模塊313從一個或多個外部來源305 獲取所有可供下載的apps301。在一個實施例中,app獲取模塊313在用戶設(shè)備(如,智能 手機(jī)、平板電腦)上運(yùn)行并識別和獲得新的和/或未知的apps301?;谟脩粼O(shè)備的app獲 取模塊313將所獲得apps301提交到中央位置的木馬化app管理系統(tǒng)101 (在例如服務(wù)器 105上運(yùn)行)。這使木馬化app管理系統(tǒng)101能夠發(fā)現(xiàn)從許多不同用戶設(shè)備(未示出)提 交的新apps301,而不必爬行互聯(lián)網(wǎng)。
[0026] 木馬化app管理系統(tǒng)101的提取模塊307從每個所獲得app301提取要分析的代碼 309。在該語境中,提取代碼309可包括提取代碼309相關(guān)的數(shù)據(jù),例如方法或類的名稱;計 算類和/或方法的散列;以及使用這些散列,或提取實際的可執(zhí)行代碼309自身。如本文所 用,代碼309的分析以及所提取的代碼309在不同實施例中可采取不同形式。在一個實施 例中,提取模塊307提取app301所用的每個方法的完全限定名稱(即,方法的完整原型,例 如 "float classa :methoda(int bar,float []ack) ")。在另一個實施例中,提取模塊 307 提取app301中的類的名稱。在其他實施例中,提取模塊307使用標(biāo)識符而非名稱(例如散 列)來識別方法(或類)。在另一個實施例中,提取模塊提取整塊的機(jī)器/字節(jié)碼并將其歸 一化。將所提取的字節(jié)碼歸一化可涉及例如將可能在不同可執(zhí)行文件中有差異的索引歸一 化,同時仍然保留全部機(jī)器代碼(dalvik/java字節(jié)碼)語義。在又一個實施例中,提取模 塊307創(chuàng)建app301中代碼309的可能執(zhí)行路徑的流程圖。
[0027] 提取模塊307還提取每個app301的簽名者311的身份。安卓apps301 (和許多其 他移動環(huán)境的apps301)由分發(fā)方(如,開發(fā)者)簽名。例如,安卓系統(tǒng)要求所有apps301 用證書進(jìn)行數(shù)字簽名,該證書的私有密鑰由app301的開發(fā)者持有。安卓系統(tǒng)不會安裝或運(yùn) 行未正確簽名的app301。然而,用于為安卓app301簽名的證書不必由認(rèn)證機(jī)構(gòu)簽名。實際 上,通常情況是,安卓apps301用由分發(fā)方自簽名的證書簽名。
[0028] 在一個實施例中,提取模塊307還獲得發(fā)布(或首次發(fā)現(xiàn)、獲得、下載等等)每個 app301(如,每個APK文件)的日期315。日期信息可例如從app301的標(biāo)頭中的時間戳獲 得。在另一個實施例中,未提取或進(jìn)一步處理日期315。
[0029] 如下文更詳細(xì)解釋,比較不同apps301的代碼309和簽名者311 (和一些實施例中 的日期315)相關(guān)的數(shù)據(jù),以識別木馬化apps303。為了便于該比較,木馬化app管理系統(tǒng) 101的所提取數(shù)據(jù)存儲模塊317例如以數(shù)組323的形式(或另一種格式,例如數(shù)據(jù)庫、表、列 表等等)存儲所提取數(shù)據(jù)(代碼309、簽名者311和可選地日期315),其中每個條目包含特 定app301的所提取數(shù)據(jù)。在一個實施例中,所述提取數(shù)據(jù)存儲模塊317將提取的數(shù)據(jù)存儲 在類對象的數(shù)組323中,所述類包括成員1)方法,2)簽名者和3)日期(可選)。例如,在app 類被稱為APKInfo的一個實施例中,來自app301的所有方法的完全限定名稱的集合存儲在 APKInfo.methods 中。(方法名稱的集合可包括例如{void classa:methoda(int a),int classa :methodb(double b), void classb :methodc(void), void classb :methodd(char g)}。)app301的簽名者311存儲在APKInfo. signer中,并且發(fā)布(或發(fā)現(xiàn)等等)的日期 315 存儲在 APKInfo. date 中。
[0030] 應(yīng)當(dāng)理解所提取數(shù)據(jù)的存儲的特定實現(xiàn)涉及可變設(shè)計參數(shù)。例如,代表與app301 有關(guān)的信息的類(或其他數(shù)據(jù)結(jié)構(gòu))的格式,以及用于存儲其實例的數(shù)組323(或其他數(shù)據(jù) 結(jié)構(gòu))的格式在各實施例之間可以有差別。另外,如上文所指出的,從每個app301提取的 特定數(shù)據(jù)在各實施例之間也可以有差別。例如,在一些實施例中,提取代碼309而非方法名 稱,例如類別名稱、流程圖等等。
[0031] 一旦從所獲得apps301提取數(shù)據(jù)并存儲,就可通過將其所提取數(shù)據(jù)與其他所獲得 apps301的所提取數(shù)據(jù)進(jìn)行比較(或在一些優(yōu)化實施例中與其他的子集進(jìn)行比較,如下文 所解釋),確定所獲得apps301中的特定app是否為木馬化app303。更具體地講,木馬化app 管理系統(tǒng)101的比較模塊319將從所獲得apps301中的特定app提取的代碼309相關(guān)的數(shù) 據(jù)(如,方法名稱、散列、原始字節(jié)碼等等)與每個其他所獲得apps301的代碼309相關(guān)的 數(shù)據(jù)進(jìn)行比較。在一個實施例中,通過執(zhí)行這些比較,比較模塊319確定進(jìn)行木馬化分析的 所獲得apps301中的特定app是否具有與其他中任何一者相同的代碼309,以及一些另外 的代碼309。例如,在所提取的代碼309相關(guān)的數(shù)據(jù)為方法名稱的形式的實施例中,比較模 塊319確定apps301中的特定app是否具有與apps301中的另一個app相同的所有方法, 以及一個或多個另外的方法。在提取類別名稱而非方法名稱的實施例中,確定特定app301 是否具有與另一個app301相同的類,以及一個或多個另外的類。為使現(xiàn)有app301木馬化 而添加的代碼309不必以新的、單獨(dú)的類或方法的形式,也可附加或插入到在原始的合法 app301中發(fā)現(xiàn)的已有方法中去。為了檢測以這種方式木馬化的apps301,比較模塊319可 確定特定app301是否包含與另一個app301相同的類別和方法,但特定app301的一個或多 個方法中存在一些附加的代碼309。該場景也是木馬化的指示。由于木馬化app303是通過 將惡意代碼添加到現(xiàn)有的合法app301而創(chuàng)建的,具有與另一個app301相同的代碼309以 及一些附加代碼309的app301如果是由不同作者/簽名者生成,則被認(rèn)為是可疑的。
[0032] 在一些實施例中,與其他apps301進(jìn)行比較的特定app301不必與另一個被標(biāo)記為 可疑的apps301的所有代碼309都相同,而是具有至少預(yù)定閾值的公共代碼309。預(yù)定閾值 可以是給定百分比的形式,包括實質(zhì)多數(shù)(如,85%、90%、95%等等)、方法或類的臨界子 集、功能的臨界核心(如由例如流程圖等所確定)等等。被標(biāo)記為可疑的app301中的附加 代碼309可包括一個或多個附加的方法或類、一個或多個修改的方法或類、預(yù)定閾值的附 加或修改的功能等等。由于許多apps301通常使用可用的第三方庫(如,廣告庫、用戶界面 庫、通信庫等等)實現(xiàn)基本功能,因此,在一些實施例中在確定特定app301與另一個app301 是否具有共同的預(yù)定閾值的代碼309時,此類庫被排除在考慮之外。
[0033] 如果進(jìn)行木馬化分析的特定app301的代碼309相關(guān)的數(shù)據(jù)與apps301中的另一 個app的代碼309相關(guān)的數(shù)據(jù)的比較指示特定app301是可疑的,則比較模塊319還比較兩 個apps301的簽名者311,并且在一些實施例中,還比較日期315。由于木馬化app303是通 過修改合法app301、除去其簽名并對其重簽名而創(chuàng)建的,可預(yù)期木馬化app303具有與其所 基于的合法app301不同的簽名者311。另外,由于木馬化app303是基于底層的、預(yù)先存在 的合法app301,木馬化app303通常具有更晚的日期315。因此,若基于代碼309比較而認(rèn)為 app301可疑,則進(jìn)行這些另外的比較中的一者或兩者。若這指示所考慮的這兩個apps301 具有不同簽名者311(并且另外在一個實施例中,可疑app301具有比另一個app301更晚 的日期315),則木馬化app管理系統(tǒng)101的木馬化app識別模塊321識別被分析為木馬化 app303的特定app301。因此,具有與另一個app301相同的代碼309 (或至少臨界質(zhì)量的通 用代碼309)以及一些附加的代碼309并具有不同的簽名者311 (并且在一個實施例中還具 有更晚的發(fā)布日期315)的app301被判定為木馬化app303。通過以這種方式比較每個特定 的所獲得app301與其他所獲得apps301,識別出木馬化apps303。
[0034] 若識別出木馬化app303,則可根據(jù)需要采取各種步驟作出響應(yīng)。例如,被判非法 的app303可進(jìn)行標(biāo)記以供人類分析者人工檢查,進(jìn)行排隊以用于自動惡意代碼分析,報告 至集中式安全服務(wù)器(未示出),列入黑名單,等等。換句話講,木馬化app管理系統(tǒng)101可 充當(dāng)過濾器,其自動識別具有表現(xiàn)出木馬化的某些特征的apps301。被木馬化app管理系統(tǒng) 101判定非法的apps301可隨后根據(jù)需要進(jìn)行處理,例如對它們進(jìn)行進(jìn)一步審查和分析,和 /或采取保護(hù)用戶不受其影響的步驟。
[0035] 為了說明木馬化app管理系統(tǒng)101的操作,現(xiàn)在更詳細(xì)描述若干特定例子。應(yīng)當(dāng) 理解,這些例子中所述的實現(xiàn)細(xì)節(jié)僅是說明性的,并且可在其他實施例中作出不同的設(shè)計 選擇。在一個特定實施例中,按如下方式識別木馬化安卓apps303。
[0036] 從各種已知App商店網(wǎng)站305下載安卓apps301 (為APK文件)。類APKInstance 用于代表所下載APK文件中的一個特定APK文件,并且具有成員l)APKInstance. methods、 2) APKInstance. signer 和 3) APKInstance. date,其中方法(methods)是 APK 文件中所有方 法的名稱的集合,簽名者(signer)是APK文件的數(shù)字簽名者311,并且日期(date)是APK 文件的發(fā)布日期315。若η為集合中APK文件的數(shù)量,則分配具有η個APKInstance對象的 數(shù)組 323APKInfo [η]。
[0037] 對于η個APK文件中的每個文件count = 1. . η,提取下列信息并存儲在 APKInf〇[count]中:1)將來自ΑΡΚ文件的所有方法的完全限定名稱的集合存儲在 APKInfo [count] .methods 中;2)將 APK 文件的數(shù)字簽名者 311 存儲在 APKInfo [count], signer中;以及3)將每個APK文件的發(fā)布日期315存儲在APKInfo [count] · date中。
[0038] 然后檢查集合中的每個APK文件,以便通過按如下方式將其與其他APK文件比 較,來確定其是否已被木馬化。若i等于正檢查的APK文件并且count等于APKInfol. . . η 中所代表的η個APK文件中的每個,對于計數(shù)1. . . η,若計數(shù)不等于i,則將APKInfo [i]與 APKInfo [count]進(jìn)行比較。若 APKInfo [i]· methods 包含 APKInfo [count]· methods 中的每 個完全限定的方法,并且APKInfo [i] · methods包含APKInfo [count] · methods中未包含的 至少一個附加的方法,并且APKInfo[i]· signer指示與APKInfo[count]· signer不同的數(shù) 字簽名者 311,并且(可選)APKInfo [i]· date 晚于 APKInfo [count]· date,則 APKInfo [i] 被判定為APKInfo[count]的木馬化版本。
[0039] 可修改上述實施例以在類別層級而非方法層級上操作。在實施例的基于類的版本 中,查看正檢查的APK文件是否包含其他APK文件的每個類(而非方法),以及至少一個附 加的類。不論是檢查方法還是類,這些實施例都可識別新APK文件,所述新APK文件包含來 自原始APK文件的代碼309的超集(S卩,具有所有相同代碼309以及一些附加的代碼309), 并且由與原始APK文件不同的簽名者311簽名。
[0040] 上述實施例(不論在代碼分析方面是基于方法還是基于類)具有復(fù)雜度ο (N2),其 中N為要分析的APK文件的數(shù)量??梢酝ㄟ^減少需要與給定APK文件進(jìn)行比較的APK文件 集合的方式進(jìn)行優(yōu)化,降低時間復(fù)雜度(如,降低至〇(N))。這可以例如通過如下方式進(jìn)行: 僅將APK文件與具有共同代碼309 (如,方法)的其他APK文件進(jìn)行比較,而非與集合中的 每個其他APK文件進(jìn)行比較。
[0041] 例如,在一個優(yōu)化實施例中,數(shù)組APKInfo[l. . η]按照每個元素 APKInfo[count]. methods中的方法的數(shù)量從最少方法到最多進(jìn)行排序(或按照類的數(shù)量、或按照如流程圖 中所指示的代碼309的量等等)。創(chuàng)建映射(如,散列映射),其將在集合中的任何APK文 件中的每個方法映射到方法所在的每個APK文件的數(shù)組323的索引。通過使用上述預(yù)構(gòu)建 的映射數(shù)據(jù)結(jié)構(gòu),表1中的偽代碼所實現(xiàn)的算法可用于有效地識別木馬化APK。應(yīng)當(dāng)理解, 表1中的偽代碼示出了一個可能實施例的特定例子,其經(jīng)優(yōu)化以降低時間復(fù)雜度。
[0042] 表 1
[0043]
【權(quán)利要求】
1. 一種用于識別移動環(huán)境的木馬化apps的計算機(jī)實現(xiàn)方法,所述方法包括如下步驟: 通過計算機(jī)從至少一個外部來源獲得特定移動環(huán)境的多個apps ; 將所述所獲得apps中的第一特定app的代碼相關(guān)的數(shù)據(jù)和數(shù)字簽名者與所述多個的 至少一個其他所獲得app的代碼相關(guān)的數(shù)據(jù)和數(shù)字簽名者進(jìn)行比較; 確定所述所獲得apps中的所述第一特定app包含:1)所述所獲得apps的第二特定app 中所含的至少預(yù)定閾值量的代碼,2)所述所獲得apps的所述第二特定app中不存在的附加 代碼,以及3)與所述所獲得apps的所述第二特定app不同的簽名者;以及 響應(yīng)于所述確定,而將所述所獲得apps中的所述第一特定app識別為木馬化app。
2. 根據(jù)權(quán)利要求1所述的方法,還包括: 將多個apps間共同的庫排除在以下情況之外:1)將所述所獲得apps中的第一特定 app的代碼相關(guān)的數(shù)據(jù)與至少一個其他所獲得app的代碼相關(guān)的數(shù)據(jù)進(jìn)行比較,以及2)確 定所述所獲得apps的所述第一特定app包含:所述所獲得apps的第二特定app中所含的 至少預(yù)定閾值量的代碼,以及所述所獲得apps的所述第二特定app中不存在的附加代碼。
3. 根據(jù)權(quán)利要求1所述的方法,還包括: 對于每個特定的所獲得app,從所述特定的所獲得app提取代碼相關(guān)的數(shù)據(jù)。
4. 根據(jù)權(quán)利要求3所述的方法,其中從所述特定的所獲得app提取代碼相關(guān)的數(shù)據(jù)還 包括: 提取所述特定的所獲得app使用的每個方法的完全限定名稱。
5. 根據(jù)權(quán)利要求3所述的方法,其中從所述特定的所獲得app提取代碼相關(guān)的數(shù)據(jù)還 包括: 提取所述特定的所獲得app使用的每個類的完全限定名稱。
6. 根據(jù)權(quán)利要求3所述的方法,其中從所述特定的所獲得app提取代碼相關(guān)的數(shù)據(jù)還 包括: 創(chuàng)建描述所述特定的所獲得app的可能執(zhí)行路徑的流程圖。
7. 根據(jù)權(quán)利要求3所述的方法,其中從所述特定的所獲得app提取代碼相關(guān)的數(shù)據(jù)還 包括: 從所述app的所有類別中的所有方法提取原始字節(jié)碼;以及 將所述所提取原始字節(jié)碼歸一化。
8. 根據(jù)權(quán)利要求7所述的方法,其中從所述特定的所獲得app提取代碼相關(guān)的數(shù)據(jù)還 包括: 創(chuàng)建所述歸一化的所提取原始字節(jié)碼的散列。
9. 根據(jù)權(quán)利要求1所述的方法,還包括: 對于每個特定的所獲得app,從所述特定的所獲得app提取數(shù)字簽名者的身份。
10. 根據(jù)權(quán)利要求1所述的方法,還包括: 對于每個特定的所獲得app,從由如下組成的日期的組獲得所述特定的所獲得app相 關(guān)的日期:發(fā)布所述特定app的日期、發(fā)現(xiàn)所述特定app的日期、下載所述特定app的日期、 和獲得所述特定app的日期、以及所述特定app包含在其標(biāo)頭中的日期。
11. 根據(jù)權(quán)利要求1所述的方法,還包括: 將所述所獲得apps中的所述第一特定app的代碼相關(guān)的數(shù)據(jù)與所述多個的所述其他 所獲得apps中每一者的代碼相關(guān)的數(shù)據(jù)進(jìn)行比較,以確定所述所獲得apps的所述第一特 定app是否1)包含與所述其他所獲得apps中的一者通用的至少預(yù)定閾值量的代碼,以及 2)包含所述其他所獲得apps中的所述一者中不含有的附加代碼。
12. 根據(jù)權(quán)利要求1所述的方法,還包括: 將所述所獲得apps中的所述第一特定app的代碼相關(guān)的數(shù)據(jù)與所述多個的所述其他 所獲得apps的子集中的代碼相關(guān)的數(shù)據(jù)進(jìn)行比較,以確定所述所獲得apps的所述第一特 定app是否1)包含與所述其他所獲得apps中的一者共同的至少預(yù)定閾值量的代碼,以及 2)包含所述其他所獲得apps中的所述一者中不含有的附加代碼。 其中所述多個的所述其他所獲得apps的所述子集僅由具有與所述所獲得apps中的所 述第一特定app通用的至少一些代碼的那些所獲得apps組成。
13. 根據(jù)權(quán)利要求1所述的方法,還包括: 將所述所獲得apps中的所述第一特定app的代碼相關(guān)的數(shù)據(jù)與所述多個的其他所獲 得apps的代碼相關(guān)的數(shù)據(jù)進(jìn)行比較; 對如下情況作出響應(yīng),而將所述所獲得apps中的所述第一特定app的所述數(shù)字簽名者 與所述所獲得apps中的所述第二特定app的所述數(shù)字簽名者進(jìn)行比較:確定1)所述所獲 得apps中的所述第一特定app包含與所述所獲得apps中的第二特定app共同的至少預(yù)定 閾值量的代碼,以及2)所述所獲得apps中的所述第一特定app包含所述所獲得apps中的 所述第二特定app中不含有的附加代碼。
14. 根據(jù)權(quán)利要求13所述的方法,還包括: 對如下情況作出響應(yīng),而將所述所獲得apps中的所述第一特定app的所述日期與所述 所獲得apps中的所述第二特定app的所述日期進(jìn)行比較:確定1)所述所獲得apps中的所 述第一特定app包含與所述所獲得apps中的第二特定app共同的至少預(yù)定閾值量的代碼, 以及2)所述所獲得apps中的所述第一特定app包含所述所獲得apps中的所述第二特定 app中不含有的附加代碼;以及 僅響應(yīng)于如下情況,而將所述所獲得apps中的所述第一特定app識別為木馬化app : 確定1)所述所獲得apps中的所述第一特定app包含與所述所獲得apps中的所述第二特 定app共同的至少預(yù)定閾值量的代碼,2)所述所獲得apps中的所述第一特定app包含所述 所獲得apps中的所述第二特定app中不含有的附加代碼,3)所述所獲得apps中的所述第 一特定app的所述數(shù)字簽名者與所述所獲得apps中的所述第二特定app的所述數(shù)字簽名 者不同,以及4)所述所獲得apps中的所述第一特定app的所述日期晚于所述所獲得apps 中的所述第二特定app的所述日期。
15. 根據(jù)權(quán)利要求1所述的方法,還包括: 對將所述所獲得apps中的所述第一特定app識別為木馬化app作出響應(yīng),執(zhí)行由如下 組成的步驟的組中的至少一個另外的步驟: 標(biāo)記所述木馬化app以供人類分析者人工檢查; 對所述木馬化app進(jìn)行排隊以用于自動惡意代碼分析; 將所述木馬化app相關(guān)的信息傳輸至集中式安全組件;以及 將所述木馬化app列入黑名單。
【文檔編號】G06F21/56GK104067283SQ201380006506
【公開日】2014年9月24日 申請日期:2013年1月25日 優(yōu)先權(quán)日:2012年1月25日
【發(fā)明者】C·納徹伯格 申請人:賽門鐵克公司