欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

安卓應用運行時的Activity推斷方法與流程

文檔序號:11920269閱讀:230來源:國知局
安卓應用運行時的Activity推斷方法與流程

本發(fā)明屬于移動終端安全領域,更進一步涉及一種前臺應用運行時Activity推斷方法,可用于對安卓應用的安全分析。



背景技術:

推斷前臺應用運行時Activity的研究源于移動終端應用的邊信道攻擊研究工作,其特點是利用應用運行時所暴露的進程信息,分析進程信息的變化和Activity轉(zhuǎn)換時的關系,收集Activity轉(zhuǎn)換時進程信息并建立應用Activity轉(zhuǎn)換的簽名,在應用運行時收集前臺進程信息并與所建立的數(shù)據(jù)庫進行對比推斷前臺應用Activity。目前,前臺應用Activity的推斷基本都需要向系統(tǒng)申請各種危險權限,而這種方式是很容易被安全程序所檢測的,并且Activity推斷可以作為Activity劫持攻擊、用戶隱私竊取方面的基礎。

阿里巴巴集團控股有限公司在其申請的專利“一種Android系統(tǒng)Activity劫持風險檢測方法及裝置”(專利申請?zhí)?01310195684.0,公開號CN 104182686A)中公開了一種Android系統(tǒng)Activity劫持風險檢測方法及裝置。該方法包括在目標Activity進入激活狀態(tài)之前,獲取當前處于激活狀態(tài)的Activity的特征信息;根據(jù)所獲取的特征信息,判斷所述當前處于激活狀態(tài)的Activity是否符合預設的安全特征;如果否,則確定系統(tǒng)存在Activity劫持風險。上述方案可以在不改變Android系統(tǒng)運行機制的前提下,直接通過擴展系統(tǒng)函數(shù)的方式實現(xiàn),不僅實現(xiàn)簡單,而且通用性強。

Suman Jana and Vitaly Shmatikov在其發(fā)表的論文“Memento:Learning Secrets from Process Footprints”(IEEE Symposium on Security and Privacy,2012)中提出利用應用運行時所暴露的邊信道信息發(fā)起攻擊的方法。該方法通過應用運行時進程的內(nèi)存變化信息,對瀏覽的網(wǎng)頁建立特征數(shù)據(jù)庫,然后通過實時監(jiān)測瀏覽器應用的內(nèi)存變化推斷用戶正在訪問的網(wǎng)頁。該方法的不足在于其主要是針對傳統(tǒng)的桌面應用所實施的推斷方法,而在移動終端方面,由于其所采用標記應用的特征標識單一,內(nèi)存分配機制的不同造成其準確率并不是很高。

Antonio Bianchi,Jacopo Corbetta,Luca Invernizzi,Yanick Fratantonio,Christopher Kruegel,Giovanni Vigna在其發(fā)表的論文“What the App is That?Deception and Countermeasures in the Android User Interface”(IEEE Symposium on Security and Privacy,2015)中提出利用應用運行時系統(tǒng)日志的方式來判斷前臺正在運行的應用Activity,進而發(fā)起Activity劫持攻擊。該方法主要步驟包括:檢測前臺應用運行界面的Activity;推斷用戶正在進行的何種操作;劫持當前Activity。該方案雖說在實現(xiàn)Activity推斷及劫持方面有挺高的正確率,但是讀取系統(tǒng)日志需要申請root權限,而從Android4.0后root權限基本不對第三方應用開放,即使申請到root權限,安全軟件也很容易檢測到其惡意行為。



技術實現(xiàn)要素:

本發(fā)明的目的在于克服上述現(xiàn)有技術的不足,提出一種安卓應用運行時的Activity推斷的方法,提升推斷者的隱蔽性,提高推斷Android應用運行時前臺Activity的正確率。

為實現(xiàn)上述目的,本發(fā)明的技術方案包括如下:

(1)提取應用的所有Activity名稱:對所選取的安卓應用使用ApkTools進行反編譯得到AndroidManifest.xml文件,然后通過定制腳本從該文件中提取應用的所有Activity名稱;

(2)推斷Android應用運行時的Activity轉(zhuǎn)換活動:通過監(jiān)測應用進程的/proc/<pid>/statm文件計算共享內(nèi)存的大小變化,即應用進程所占虛擬內(nèi)存空間減去私有虛擬內(nèi)存空間,推斷應用的Activity轉(zhuǎn)換事件;

(3)確定標記應用的Activity特征信息:

(3a)根據(jù)內(nèi)存大小變化標記Activity轉(zhuǎn)換的ContentProvider查詢和釋放事件;

(3b)通過監(jiān)測CPU的使用時間,區(qū)分Activity轉(zhuǎn)換的不同類型;

(3c)將應用接收數(shù)據(jù)包的大小作為標記Activity轉(zhuǎn)換的網(wǎng)絡活動;

(4)根據(jù)應用運行時標記應用的Activity特征信息,建立應用的Activity簽名數(shù)據(jù)庫:

(5)推斷應用運行的Activity界面:

(5a)從正在運行的應用中提取特征數(shù)據(jù)Sm、Sn、Sc,其中Sm表示內(nèi)存特征數(shù)據(jù)集合Sn表示網(wǎng)絡特征數(shù)據(jù)集合,Sc表示CPU使用時間特征數(shù)據(jù)集合;

(5b)對建立的Activity數(shù)據(jù)庫中每個文件分別計算每個特征的相似性系數(shù),然后,以各特征的相似性系數(shù)的乘積作為運行中應用Activity數(shù)據(jù)庫中Activity相似性度量值,并將該值以(Sign,Sigc)集合的格式添加到數(shù)據(jù)集R中,其中Sign表示數(shù)據(jù)庫中Activity的名稱,Sigc表示Sign與運行中應用Activity的相似性度量值;

(5c)對數(shù)據(jù)集R中的集合,按Sigc的值進行由大到小的排序,選取前5個作為推斷的Activity。

本發(fā)明與現(xiàn)有技術相比存在以下優(yōu)點:

第一,由于本發(fā)明中采用了應用運行時進程所暴露的邊信道信息,使攻擊者在攻擊時不需要申請任何危險權限就可以推斷出前臺應用Activity,相較于通過提取日志來推斷Activity行為,無需申請危險權限,避開現(xiàn)有的安全檢查機制,提高了推斷行為的隱蔽性。

第二,由于本發(fā)明采用了多種特征信息作為Activity轉(zhuǎn)換活動數(shù)據(jù)簽名,相較于僅通過瀏覽器內(nèi)存變化來推斷用戶瀏覽網(wǎng)站的行為,使原本單一的推斷項更加完善,克服了現(xiàn)有技術中在移動終端方面推斷率不高和應用范圍比較局限的問題。

附圖說明

圖1為本發(fā)明的實現(xiàn)總流程圖

圖2為本發(fā)明中推斷Android應用運行時Activity的轉(zhuǎn)換活動子流程圖;

具體實施方式

下面結合圖對本發(fā)明做進一步的詳細描述。

參照圖1,對本發(fā)明的具體實施步驟做進一步的詳細描述。

步驟1.提取應用的所有Activity名稱。

對所選取的應用使用ApkTools反編譯Android應用,通過定制腳本從AndroidManifest.xml中提取該應用的所有Activity名稱。

在本發(fā)明步驟1中的實施例中,以國內(nèi)某銀行應用為例,通過AndroidManifest.xml文件,所提取的Activity數(shù)量為878個。

步驟2.推斷Android應用運行時Activity的轉(zhuǎn)換活動。

Activity的轉(zhuǎn)換活動包括創(chuàng)建一個新的Activity和銷毀當前Activity,對于Android應用,當一個Activity發(fā)生轉(zhuǎn)換時,應用程序和SurfaceFlinger進程的共享內(nèi)存大小就會發(fā)生變化。通過對Android源碼的分析發(fā)現(xiàn),共享內(nèi)存的變化對應著繪制Activity界面過程中GraphicBuffer內(nèi)存的分配和回收。由于對于特定的window其GraphicBuffer的大小是固定的,故可通過讀取保存應用內(nèi)存信息的進程文件/proc/<pid>/statm計算虛擬內(nèi)存大小與私有虛擬內(nèi)存大小差值,推斷出Activity的轉(zhuǎn)換活動,即當差值大于0時,表明系統(tǒng)創(chuàng)建了一個新的Activity,當差值小于0時,表明系統(tǒng)銷毀了一個Activity,當差值為0時,表明沒有發(fā)生Activity轉(zhuǎn)換活動。

步驟3.確定標記Activity特征的進程信息。

(3a)確定內(nèi)存大小變化作為標記Activity進程的特征信息:

作為Android應用四大組件之一的ContentProvider,用來管理對中央數(shù)據(jù)存儲區(qū)的訪問,并為Activity的繪制提供數(shù)據(jù)內(nèi)容。

通過Activity界面顯示內(nèi)容決定應用所占內(nèi)存的大小,即在應用的Activity啟動時,ContentProvider通過調(diào)用onCreate()方法和onResume()方法來查詢內(nèi)容,當ContentProvider調(diào)用onCreate()時,系統(tǒng)會為應用的新分配內(nèi)存,此時可用虛擬共享內(nèi)存和物理共享內(nèi)存之和表示ContentProvider內(nèi)容的大小;當ContentProvider調(diào)用onResume()時,系統(tǒng)會回收為應用上一個Activity分配的內(nèi)存,此時,虛擬共享內(nèi)存表示ContentProvider內(nèi)容的大小。ContentProvider調(diào)用不同的方法,引起應用內(nèi)存的分配和釋放,因此大小變化可以作為標記Activity的特征信息;

(3b)確定CPU執(zhí)行時間作為標記Activity進程的特征信息:

Activity在轉(zhuǎn)換時有兩種類型:當系統(tǒng)調(diào)用onCreate()函數(shù)時,應用創(chuàng)建一個新的Activity,當系統(tǒng)調(diào)用onResume()函數(shù)時,應用會從退回棧中返回已創(chuàng)建的Activity。由于Activity界面的復雜性不同,繪制Activity時每個函數(shù)使用CPU的時間是不同的,對于界面相同的Activity,在創(chuàng)建一個新的Activity時需要調(diào)用onCreate()方法,所以新建一個Activity要比恢復一個已有的Activity花費更多的時間。這樣,通過CPU的使用時間我們可以區(qū)別Activity的不同轉(zhuǎn)換類型和每個Activity轉(zhuǎn)換所需的時間;

(3c)確定網(wǎng)絡活動作為標記Activity進程的特征信息:

在Activity進行裝載時,它會接收來自網(wǎng)絡的內(nèi)容,因此,在轉(zhuǎn)換期間會通過performLaunch()方法來初始化網(wǎng)絡連接。當一個Activity在轉(zhuǎn)換時,它的請求命令串比如HTTP、GET通常是硬編碼,應用的狀態(tài)或用戶的輸入對它的影響非常小,而不同Activity的求命令參數(shù)不同,導致初始化網(wǎng)絡連接時所發(fā)送的字節(jié)數(shù)不同,且由于應用接收到的數(shù)據(jù)是動態(tài)生成的,所以只考慮應用發(fā)送的數(shù)據(jù)表示網(wǎng)絡活動的信息。通過對Android的虛擬文件系統(tǒng)分析發(fā)現(xiàn),/proc/uid_stat/[uid]/tcp_snd文件記錄了應用連接網(wǎng)絡時發(fā)送的網(wǎng)絡字節(jié)數(shù),因此,使用該文件的數(shù)據(jù)作為標記Activity進程的特征信息活動信息。

步驟4.以應用運行時標記進程信息的特征數(shù)據(jù)建立應用的Activity簽名數(shù)據(jù)庫R。

(4a)使用ps命令或其它方式獲取到前臺應用的進程標識符和用戶標識符;

(4b)對該應用的每個Activity,以5s為時間節(jié)點,50ms為間隔,使用adb shell命令循環(huán)讀取應用的/proc/<pid>/statm文件,并將讀取的數(shù)據(jù)處理成(M,cM)格式,其中,E表示該進程所占內(nèi)存大小,cM表示M出現(xiàn)的次數(shù),以此建立Activity內(nèi)存變化特征數(shù)據(jù);

(4c)對該應用的每個Activity,以5s為時間節(jié)點,以50ms為間隔,使用adb shell命令隔循環(huán)讀取應用應用的/proc/uid_stat/uid/tcp_snd文件,并對讀取的數(shù)據(jù)進行處理成(N,cN)格式,其中,E表示該進程發(fā)送第一個數(shù)據(jù)包大小,cN表示N出現(xiàn)的次數(shù),建立Activity轉(zhuǎn)換時網(wǎng)絡活動特征數(shù)據(jù);

(4d)對應用的每個Activity,以5s為時間節(jié)點,以50ms為間隔,使用adb shell命令隔循環(huán)讀取應用應用的/proc/pid/stat文件,并將讀取的數(shù)據(jù)處理成(U,cU)格式,其中,E表示該進程發(fā)送第一個數(shù)據(jù)包大小,cU表示U出現(xiàn)的次數(shù),以此建立Activity轉(zhuǎn)換時CPU使用時間特征數(shù)據(jù);

(4e)對應用的每個Activity收集到的數(shù)據(jù),去除一段時間內(nèi)連續(xù)相同的值,再將它們分別保存至以該Activity命名的文件中,建立應用的Activity特征數(shù)據(jù)庫。

在本發(fā)明步驟4中的實施例中,數(shù)據(jù)庫R中保存有多個文件夾,每個文件夾名為一個應用的名稱,文件夾下包含所有以Activity名命名的文件,每個Activity文件包含了該Activity的特征數(shù)據(jù)。下面為國內(nèi)某銀行應用LoginActivity裝載時內(nèi)存變化信息(7585,12)(7584,11)(7840,1)(6410,1)(5860,1)……(5868,1)(5826,2),括號左邊的值是從/proc/<pid>/statm下收集的程序數(shù)據(jù)段大小,它代表應用數(shù)據(jù)駐留內(nèi)存占內(nèi)存的頁數(shù),括號右邊的值表示當LoginActivity界面在裝載時左邊值出現(xiàn)的次數(shù)。

步驟5.推斷應用運行的Activity界面。

參照圖2,對本步驟的具體實現(xiàn)描述如下:

圖2中移動終端上安裝多個應用,包括普通的應用1、應用2…應用n和用來收集前臺應用進程信息的應用A;數(shù)據(jù)庫R表示應用1到應用n所有應用的Activity簽名數(shù)據(jù)庫;遠程服務器則計算從應用A收集移動終端中某應用的發(fā)送的進程信息和數(shù)據(jù)庫中Activity簽名的相似性系數(shù),并輸出推斷結果,其推斷步驟如下:

(5a)應用A與其它應用在移動終端并行運行,并不斷讀取其它應用進程信息的特征數(shù)據(jù)Sm、Sn、Sc,然后將所讀取到的數(shù)據(jù)發(fā)送到推斷者的遠程服務器上,其中Sm表示內(nèi)存特征數(shù)據(jù)集合,Sn表示網(wǎng)絡特征數(shù)據(jù)集合,Sc表示CPU使用時間特征數(shù)據(jù)集合;

(5b)遠程服務器從建立的Activity數(shù)據(jù)庫R中讀取數(shù)據(jù)庫中每個應用的所有Activity簽名,對每個Activity簽名的每種特征,依次計算每兩個Activity的特征相似度:

其中,r1表示應用A提取的進程信息特征數(shù)據(jù)集合,r2表示數(shù)據(jù)庫R中應用的進程信息特征數(shù)據(jù)集合,∩表示交集,∪表示并集,jaccard(r1,r2)表示集合r1與r2的交集除以r1與r2并集的模;

(5c)以各特征的相似度乘積作為運行中應用Activity數(shù)據(jù)庫中Activity相似性度量值,并將該值以(Sign,Sigc)集合的格式保存在遠程服務器數(shù)據(jù)集S上,其中Sign表示數(shù)據(jù)庫中Activity的名稱,Sigc表示Sign與運行中應用Activity的相似性度量值;

(5d)遠程服務器對數(shù)據(jù)集S,按Sigc的值進行由大到小的排序,選取前m個作為推斷的Activity,并輸出推斷結果。

以上描述僅是本發(fā)明的一個具體實例,不構成對本發(fā)明的任何限制,顯然對于本領域的專業(yè)人員來說,在了解了本發(fā)明內(nèi)容和原理后,都可能在不背離本發(fā)明原理、節(jié)后的情況下,進行形式和細節(jié)上的各種修正和改變,但是這些基于本發(fā)明思想的修正和改變?nèi)栽诒景l(fā)明的權利要求保護范圍之內(nèi)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
灵丘县| 自贡市| 普安县| 中西区| 措美县| 古蔺县| 图片| 宣恩县| 灯塔市| 揭阳市| 凤阳县| 大同县| 满城县| 朝阳县| 三门县| 密山市| 抚远县| 丰台区| 陵川县| 黔东| 十堰市| 东乡| 平原县| 鄂伦春自治旗| 东乌珠穆沁旗| 晴隆县| 汉川市| 句容市| 亳州市| 诏安县| 泗水县| 西乌珠穆沁旗| 锡林浩特市| 广平县| 都兰县| 灌云县| 许昌市| 天峨县| 行唐县| 武山县| 瓮安县|