卜同同 曹天杰



摘 要:針對Android權限機制存在的問題以及傳統的應用風險等級評估方法的不足,提出了一種基于權限的Android應用風險評估方法。首先,通過對應用程序進行逆向工程分析,提取出應用程序聲明的系統權限、靜態分析的權限以及自定義的權限,和通過動態檢測獲取應用程序執行使用到的權限;然后,從具有惡意傾向的組合權限、“溢權”問題和自定義權限三個方面對應用程序進行量性風險評估;最后,采用層次分析法(AHP)計算上述三個方面的權重,評估應用的風險值。對6245個軟件樣本進行訓練,構建自定義權限數據集和具有惡意傾向的權限組合數據集。實驗結果表明,與Androguard相比,所提方法能更精確地評估應用軟件的風險值。
關鍵詞:Android安全;風險評估;應用權限;量性評估;靜態分析;動態檢測
中圖分類號: TP309.2
文獻標志碼:A
Abstract: Focusing on the problems existing in Android permission mechanism and poor capability of traditional measurement methods of Android software security, a risk assessment method of Android APP based on permission was proposed. Firstly, the system permissions declared by application, the permissions obtained through static analysis and custom permissions were extracted by reverse-engineering analysis of application. At the same time, the permissions used by executing application were extracted through dynamic detection. Secondly, quantitative risk assessment of applications was performed from three aspects: permission combination of hiding malicious intent, “over-privilege” problem and custom permission vulnerability. Finally, the Analytic Hierarchy Process (AHP) evaluation model was adopted to calculate the weights of three aspects above for estimating risk value of application. In addition, custom permission data set and permissions combination dataset with hiding malicious intent were built by training 6245 software samples collected from application store and VirusShare. The experimental results show that the proposed method can assess risk value of application software more accurately compared with Androguard.
Key words: Android security; risk assessment; application permission; quantitative assessment; static analysis; dynamic detection
0 引言
隨著移動互聯網的快速發展,手機逐漸成為用戶連接網絡和存儲個人信息最重要的設備,在人們生活中處于越來越重要的地位。根據國際數據公司(International Data Corporation, IDC)的統計[1],智能手機公司在2017年的出貨量為14.6億部,其中約85%的設備運行Android平臺。與此同時,Android系統的開放性吸引了更多的應用程序開發者;而Android應用程序的多樣性同樣吸引了越來越多的用戶開始嘗試并使用Android系統的智能手機,但是這也是信息科技(Information Technology, IT)專家的焦慮之源。由于智能手機中存放著大量高度隱私的個人數據,故智能手機比PC掌握用戶更多的敏感數據,吸引了更多的黑客注意,這對于Android生態系統以及用戶個人數據的安全性提出了更高的安全要求。
為了保證護用戶數據的安全隱私及系統資源,Android操作系統采用了沙盒機制,在默認情況下,Android應用只能訪問有限的系統資源,除此之外,Android OS還采用了權限機制來限制對敏感資源的訪問。雖然自Android 6.0以來,Android平臺采用了動態權限授予機制,允許用戶在安裝應用程序以后,可以撤銷或授予應用程序敏感權限進行敏感操作,以保證用戶數據的安全和隱私;但是,動態權限授予機制依賴于用戶對于Android權限有充分的認識,并能妥善地管理應用權限這個前提。然而Bagheri等[2]學者的研究表明只有極少的用戶關注并熟悉Android動態運行時權限。此外,非專業用戶并不知道,在危險權限組的第一個權限使用提醒時授予該應用此權限并不再主動撤銷授權。該應用在擁有此項權限的狀態下,再申請使用此危險權限組的其他權限時,Android系統會在不與用戶交互的情況下直接授權。Android粗粒度的權限授予機制、Android應用開發者的過度申請權限、多個應用利用自定義權限漏洞而提升權限和第三方應用市場不完善的審核機制等,使得Android軟件大量存在“溢權(over-privilege)”和權限泄露等問題,從而導致Android應用的質量良莠不齊。由此可見,Android采用的權限機制對用戶數據安全性進行保護的方法并不能夠達到理想的安全防御效果。為了保護用戶,Android應用市場非常需要更好的風險評估方法來定量評估應用程序可能帶來的威脅。
1 相關工作
權限是Android系統安全模型的第一道防線,能保證應用安全地訪問敏感數據以及跨應用交互。Google[3]提供了關于正確使用Android權限模型的建議和最佳做法,但最終依靠應用程序開發人員將其正確用于產品中。
近年來Android權限機制存在的問題被越來越多的研究學者所關注。Felt等[4]提出了Android應用程序存在“溢權”現象:很多Android應用程序開發人員為了后續再開發或收集用戶偏好信息等原因,在軟件開發中突破了“最小權限原則”,在應用程序清單文件中申請過多的權限,使得多達三分之一的應用程序存在“溢權”問題。
張銳等[5]提出了采用卡方檢驗計算各權限屬性對于分類結果的影響大小,利用權限之間以及權限和惡意傾向的相關性,去除冗余權限特征、對權限屬性聚類,提取具有代表性的權限特征,并進一步減少冗余后,利用基于不同權限特征權重的改進樸素貝葉斯算法進行軟件分類,能夠初步檢測Android應用軟件是否有惡意傾向。實驗表明,應用的權限組合才是決定應用威脅性的關鍵。
Google驗證了文獻[6]中提出的嚴重的自定義權限漏洞,惡意軟件開發者可以利用這些漏洞來開發應用來獲得對關鍵平臺和應用程序資源的未經授權的訪問。利用這些漏洞,應用軟件可以繞過請求用戶授予/拒絕權限的交互界面而直接獲取高風險的系統資源,并且還可以未經授權訪問其他應用程序的受保護組件。這嚴重違反了Android運行時權限模型中應始終保持的一個關鍵安全原則:沒有用戶交互授權,不應授予應用任何危險的運行時權限。Android上自定義的兩種權限漏洞攻擊為自定義權提升攻擊和混淆代理攻擊。
權限信息是檢測Android軟件的關鍵因素之一。大量研究學者針對權限存在的問題來評估應用程序的隱私風險或安全等級。Hamed等[7]提出了一種主動的面向用戶的方法,讓用戶意識到授予Android應用程序權限所涉及的隱私風險。該模型的參數是權限及其相互作用的嚴重性和相對重要性。徐君鋒等[8]通過對Android軟件逆向分析,根據不同系統權限安全等級劃分,給定安全范圍內的安全系數,并對Android軟件進行初步安全評分;同時結合Android軟件的認證強度和第三方應用市場上的違規記錄,再綜合度量軟件的最終安全信用指數。文獻[9]中提出使用靜態代碼指標作為預測器,首先對靜態代碼度量進行初步風險評分,在進一步作數據處理確定各個靜態代碼度量的風險等級,最后選擇合適的靜態代碼度量來預測和評估與Android應用程序相關的安全和隱私風險。Android多準則應用程序信任評估器(Multi-criteria App Evaluator of TRust for AndrOID, MAETROID)[10]是一個用來評估Android應用程序的可信度的框架,可以評估應用程序對用戶造成風險的概率。在部署時對應用程序進行多準則分析,返回一個簡單易懂的應用程序風險等級評估,即判斷應用程序是可信還是中等風險或高風險,旨在幫助用戶決定是否要安裝新的應用程序。該框架以應用程序所申請的權限集合、從市場收集到的應用程序質量和受歡迎程度作為一組元數據。
2 評估方法
目前的研究主要是針對應用程序本身的代碼元數據數量進行統計分析,并沒有將自定義權限漏洞放入應用風險評估中。本文針對Android權限機制存在的問題,提出一種由具有惡意傾向的系統權限組合檢測評估模塊、系統權限的“溢權”的檢測評估模塊和自定義權限漏洞的檢測評估模塊構成的定量應用風險評估方法。
2.1 具有惡意傾向的權限組合檢測評估
應用程序可以通過申請組合的權限來實現對用戶隱私信息的竊取和傳播。例如,APP_M申請了連接網絡和讀取聯系人這組權限,就存在未經用戶同意而收集用戶通信錄信息,為進一步的廣告推廣、甚至電話或者短信詐騙助力。文獻[11]的實驗結果證明,應用程序的權限組合能夠檢測Android應用軟件是否有惡意傾向,是判定應用程序威脅性的重要因素,但它并沒考慮應用本身的用途,只考慮了權限本身。例如,位置定位權限對于導航和地圖類應用程序是必要權限,對于健身運動類應用是非必要權限,對于主題壁紙類應用是非需權限。通過對收集的良性應用程序進行逆向工程,提取權限信息樣本,根據各類應用程序的使用概率,將每類單個應用權限分為三個威脅級別。
定義1 根據單個權限pi在該類應用程序的必要性,其威脅值取為1,3,5中的一個:
T(pi)=1, pi對該類應用程序有明顯的必要性3, pi對該類應用程序有一定的必要性5, pi對該類應用程序有很弱的必要性
在影音播放類中:網絡連接、訪問網絡狀態和寫入外部存儲等權限明顯很必要;而讀取短信和發送短信在用戶登錄過程中有一定的必要性;寫短信和使用指紋硬件等權限在該類應用的必要性很弱。在各類應用中,權限的必要性越強,其威脅性越小。采用層次分析法(Analytic Hierarchy Process, AHP)計算單個權限的威脅值T(pi)。
不同的權限組合有不同的安全威脅值,根據有惡意傾向的組合權限不同的收集來源定義組合權限的威脅級別。
定義2 權限組合pci的威脅性級別值為:
T(pci)=1, pci來自相關文獻的實驗結果3, pci來自Mal_Per_group5, pci來自典型的利用權限組合的攻擊
其中,Mal_Per_group的收集在3.1.2節中詳述。具有惡意傾向的權限組合檢測算法如下所示。
RRper_group為從應用程序請求的權限組中去除待評估App所屬類常用權限組的非空真子集的剩余權限組。該方法根據式(1)計算該應用程序由于使用的權限的組合帶來的風險。
其中:T(pci)為Mal_Per_group中具有惡意傾向的權限組和的威脅值,λm代表具有惡意傾向的權限組合在應用風險評估中的權重。
2.2 “溢權”檢測評估
手機應用軟件管理著大量的用戶個人信息,例如:身份證、地址、通信記錄、短信、郵箱等,這為通過不同方法來分析用戶和操縱這些數據獲得利益提供了新的契機。不僅惡意軟件,甚至有些合法軟件也濫用這些信息。例如:Twitter手機軟件在沒得到用戶同意的情況下,將用戶的個人信息公之于眾。在應用被允許執行敏感操作時,用戶數據有可能被修改甚至丟失。
Android應用軟件普遍存在著“溢權”問題。例如,38.5%的學習幫助類應用程序為了定向推廣自己的應用軟件,而申請危險權限組PHONE中的READ_PHONE_STATE來讀取用戶手機狀態。若應用程序在清單文件中申請的權限,不存在于靜態分析得到的權限列表中,則該應用程序就擁有過度權限。此時,過度權限集是申請的權限集與靜態分析得到的權限集的差集;反之,若一個權限存在靜態分析得到的權限中,而不存在應用程序在清單文件中申請的權限時,則稱該權限為提升權限;然后,將其與從動態執行獲取的日志文件中提取的動態權限列表相比較,兩者的差集記為靜默權限。
該方法將應用程序申請的系統權限列表記為Rper_list,將靜態分析的系統權限列表記為Sper_list,將動態分析得到的系統權限列表記為Dper_list。系統權限的“溢權”檢測的詳細步驟如算法2所述。
本文提出的風險評估方法根據式(2)計算由系統權限的“溢權”帶來的風險:
其中:T(opi)代表Oper_list中的系統權限對應的保護等級的權重,λo表示了“溢權”問題評估應用程序安全時的權重。
2.3 自定義權限的風險評估
Android提供一組權限標簽來保護系統和用戶資源。與此同時,Android平臺允許不受信任的第三方應用聲明自己的自定義權限,來限制其他應用程序對該應用程序組件的訪問。簡而言之,Android的權限模型是通過使用一組名為權限的安全標簽,規范對平臺和應用程序資源的訪問。為了保護平臺資源(例如,麥克風、互聯網等),平臺使用由系統本身引入的預定義權限集。權限模型還為平臺提供更細粒度的安全性,以此保護不同應用程序或系統組件之間的進程間通信(Inter-Process Communication, IPC),為此Android引入了自定義權限:這些是應用程序定義的權限,允許開發人員通過其他應用程序控制對其應用程序組件的訪問。實際上,在第三方應用程序中使用自定義權限非常常見。根據本文對各個應用市場頂級免費應用程序的研究,約72%的應用程序定義了自定義權限。其中30%的自定義權限的保護等級為Normal,即只要申請了就可以使用,如表1所示。
從表1可以看出,應用程序自定義保護等級為Dangerous的權限較少,而絕大多數的自定義權限的保護等級為Signature和Normal。自定義權限提升攻擊通過在清單文件中聲明保護級別為Signature或Normal的自定義權限,并將此自定義權限設置為系統權限組的一部分,而Android系統允許第三方開發者將自定義權限聲明為系統權限組的一部分,使應用程序可以繞過用戶權限授予界面,并自動獲取任何危險的系統權限。故該方法中自定義權限的保護級別為Signature或Normal的權重比保護級別為Dangerous和SignatureorSystem大,而在混淆代理攻擊中,攻擊者利用缺乏Android自定義權限的命名約定,來對一個使用自定義權限保護組件的受害者應用程序發起攻擊。故該方法對從各大官網收集到應用程序的分析,提取應用程序的自定義權限存入自定義權限數據集CPer_set中,對待測試的APP的自定義權限進行檢查并對CPer_set進行補充。
自定義權限通過為IPC提供安全性,在支持Android平臺的可重用性方面發揮了重要作用;因此,對其正確操作的任何威脅都可能導致應用程序和平臺本身的安全性受到損害。該模塊主要針對由重名的自定義權限帶來的混淆代理的可能性進行評估。利用這個自定義權限漏洞,應用可以繞過用戶同意屏幕來授予/拒絕權限以獲取高風險系統資源,并且還可以未經授權訪問其他應用的受保護組件。由于現在Android規定在同一個物理設備上,不允許存在兩個應用程序定義相同名稱的權限。為了完成這個攻擊,惡意應用程序開發者需要開發至少兩個應用:
1)定義者攻擊應用程序。通過重新使用相同的權限名稱來欺騙受害者應用程序的自定義權限,并將保護級別更改為危險。
2)用戶攻擊應用程序。它只在其清單文件中請求此權限。
編寫Python腳本cusPermission.py提取收集到的應用程序自定義的權限,存儲為cusPer.set,其存儲結構為[權限,權限組,權限定義應用包名稱(權限等級),申請該權限的應用包名稱];編寫getCusPermission.py,提取待檢測應用程序在AndroidManifest.xml文件中定義的權限列表cusPlist,該部分檢測分為兩個模塊:數據集獲取模塊和分析評估模塊。
根據式(3)計算由自定義權限漏洞問題帶來的風險:
其中:T(cpi)代表自定義權限的定義的保護級別的權重,λc代表自定義權限問題在評估應用程序風險時的權重。
3 方法實現與結果分析
3.1 數據集收集
本文通過檢測分析806個應用市場可下載的安卓應用、5439個惡意樣本和Android官方網站發布的權限文檔,構建各類應用程序常用的組合權限數據集、具有惡意傾向的權限組合數據集和Android原生權限數據集。
3.1.1 多類應用程序常用的組合權限數據集
編寫Python腳本從百度手機助手、小米應用商店和華為應用市場爬取下載量較高、獲得官方版認證的、安全優質的Android應用軟件。相對于官方應用市場沒有任何說明的評分,高下載量更能代表用戶使用的滿意度較高、權限使用在用戶的接受范圍之內。
該方法共收集了806個不同的安卓應用,主要分為以下類別:影音播放(95)、社交通信(76)、學習幫助(39)、新聞閱讀(43)、運動健康(36)、金融理財(80)、游戲娛樂(139)、網上購物(48)、辦公工具(36)、拍攝美化(57)、主題壁紙(52)、地圖導航(24)、旅游購票(22)、生活實用(59)。例如,影音視聽類應用常用的權限組如表2所示。
由于權限組的存在,若授予了權限組中任一權限,該應用若申請同一權限組中的其他權限,系統不再與用戶交互而直接為該應用授予其申請該組內的權限。故該類別的權限組還需添加STORAGE組中的READ_EXTERNAL_STORAGE危險權限。
3.1.2 具有惡意傾向的權限組合數據集
本文從VirusShare[12]中獲得的5439個惡意樣本,對其中50個家族成員數大于10的5048個樣本進行反編譯字節碼操作,并從其清單文件中提取權限,將其家族成員都使用的權限作為權限集的一個權限組合。該方法會對數據集進行進一步去除冗余、計算權限組合的權重,將其存入惡意軟件家族常用權限組合的數據集Mal_Per_group。例如:從相關安全網站收集相關的最新的權限攻擊實例,將其加入到數據集Mal_Per_group。例如,Android版本在7.1.2及以下都會受到Cloak&Dagger攻擊的影響,而該攻擊是一種利用權限不匹配問題來訪問Android設備的攻擊方法,主要通過獲取SYSTEM_ALERT_WINDOW和BIND_ACCE-SSIBILITY_SERVICE權限來實施攻擊。故Cloak&Dagger惡意軟件家族的常用權限組為[SYSTEM_ALERT_WINDOW,BIND_ACCESSIBILITY_SERVICE]。
3.1.3 Android原生權限
編寫Python腳本對Android官方網站的上發布的權限文檔進行分析,統計文檔中的權限及其級別。目前共有152個原生權限,包括:38個保護等級為normal的權限,27個保護等級為dangerous的權限,10個等級為signature的特殊權限,19個等級為signature|privileged(同API≤23,signatureOr-System)的權限,44個不提供給第三方應用使用的權限,此外還有14個權限在版本更新中不再建議使用的權限。
3.2 權限提取
通過靜態分析,對Android安裝包(Android Package, APK)文件的逆向分析,從清單文件中提取應用程序申請的系統權限Rper_list;靜態分析smali代碼提取敏感應用程序編程接口(Application Programming Interface, API),通過收集的map-ping映射得到對應的靜態權限列表Sper_list;通過自動運行注入了1000個不同的基于Android的Monkey測試套件的事件,以提取包括被調用的方法在內的運行信息的日志,然后通過分析日志信息,提取動態權限列表Dper_list。其具體過程如圖1所示。
3.3 權重計算
本文采用了層次分析法來計算同一層次影響評估結果的各因素的權重。AHP是定性和定量相結合的分析方法。該方法將復雜的問題層次化,對影響決策目標的判斷因素進行量化分析,是一種層次權重決策分析方法。
將該方法使用作為指標層的評估因素有:具有惡意傾向的權限組、系統權限的“溢權”、自定義權限漏洞。
構建判斷矩陣,并使用Matlab程序實現層次分析方法,計算出具有惡意傾向的權限組權重為:λm=0.3255,系統權限的“溢權”權重為:λo=0.2772,自定義權限漏洞權重為:λc=0.3973。
3.4 實驗結果分析
本文所提方法的實驗結果表明,應用程序所需的權限數量和自定義的權限數量并不是影響風險值分數的主要因素。從表3可以看出,應用com.xiaoyu.rightone申請的權限數量少于com.imjingjing.jingjing,但是其風險評分明顯高于com.imjingjing.jingjing。
此外,統計數據表明,現存的應用都申請了允許訪問網絡的權限和訪問網絡狀態這兩個權限。拍攝美化類應用除了申請必要的拍攝和讀寫存儲器權限外,通常還會申請定位和讀取聯系人權限;社交通信類的自定義權限最多,主題壁紙類的自定義權限與其他應用程序自定義權限重名的最多,且主題壁紙類申請的權限數較多故風險值平均較高;直播類應用申請的權限最多,平均風險值最高。
Androguard[13]主要用來進行靜態分析,提供了很多模塊供分析人員使用,有很多靜態分析工具都是基于它,其中Androrisk.py模塊用于評估APK文件中潛在的風險。該模塊主要是利用權限和DEX文件對APK文件進行風險評估,其中將權限按功能分為:隱私權限、普通權限、與收費有關的權限、聯網類的權限、信息類的權限、危險權限、簽名或系統權限、通話類的權限、簽名權限和全球定位系統(Global Positioning System, GPS)權限,通過Fuzzy算法對應用程序風險進行評估。表4展示了兩種方法評估的主要因素及最終評估的風險值,其各列名為應用程序在清單文件中申請的系統權限數(Number of system Permissions declared in the Manifest file, NPM)、自定義權限數(Number of Custom Permissions, NCP)、與別的應用程序定義的權限同名的自定義權限個數(Number of Custom permissions with the Same name as those defined by other APPs, NCS這個的縮寫是對應表4中的“NSC”嗎?為何表示C的Custom,卻在S的前面?英文全稱正確嗎?請明確。縮寫是對應表4中的“NSC”,這兩處都確定為“NCS”。)、使用Androrisk.py模塊得到的風險評估分數(Risk Assessment Scores using Androrisk.py module, RASA)、本文方法對測試應用程序風險評估分數(Risk assessment Scores using this Quantitative Evaluation method, RSQE)。
Androrisk.py模塊是靜態檢測中的常用方法,從實驗結果上看有靜態檢測本身的局限性,從表4可以看出,其實驗結果會有較大的誤差;而本文方法相對于Androrisk增加了自定義權限風險評估和系統“溢權”風險評估,能夠更精確地評估應用程序的風險。
根據實驗結果和三個方面潛在的威脅,為了進一步方便用戶理解由于權限機制造成的風險,可將應用程序潛在的風險值劃分為四三個風險等級:待測應用程序的風險值為[0,30)區間,則認為應用程序的風險等級為低風險;待測應用程序的風險值為[30,70)區間,則認為應用程序的風險等級為中等風險;待測應用程序的風險值大于70,則認為應用程序的風險等級為高風險。
4 結語
本文通過提取權限信息,提出了一種新的基于權限的Android應用程序風險評估方法。針對應用市場提供的應用程序質量參差不齊和風險等級評估的不透明等問題,該方法通過靜態分析和動態檢測權限的使用情況,從系統權限和自定義權限帶來的威脅,來定量評估應用程序的潛在風險值。實驗驗證,本文的風險評估方法能有效地度量應用程序的風險,為進一步分析應用程序的安全性提供了參考,但自定義權限數據集還不充分,需要進一步補充完善。
參考文獻 (References)
[1] IDC. Smartphone market share [EB/OL]. (2018-02-20)[2018-03-29]. https://www.idc.com/promo/smartphone-market-share/os.
[2] BAGHERI H, KANG E, MALEK S, et al. A formal approach for detection of security flaws in the Android permission system [J]. Formal Aspects of Computing, 2017, 9: 1-20.
[3] Google. Permissions best practices [EB/OL]. (2018-01-20)[2018-03-26]. https://developer.android.google.cn/training/permissions/best-practice.
[4] FELT A P, CHLN E, HANNA S, et al. Android permissions demystified[C]// CCA2011: Proceedings of the 18th ACM Conference on Computer and Communications Security. New York: ACM, 2011:627-638.
[5] 張銳,楊吉云.基于權限相關性的Android惡意軟件檢測[J].計算機應用,2014,34(5):1322-1325.(ZHANG R, YANG J Y. Android malware detection based on permission correlation[J]. Journal of Computer Applications,2014, 34(5):1322-1325.)
[6] TUNCAY G S, DEMETRIOU S, GANJU K, et al. Resolving the predicament of Android custom permissions[C]// NDSS 2018: Proceedings of the 2018 Network and Distributed System Security Symposium. Piscataway, NJ: IEEE, 2018:1-16.
[7] HAMED A, AYED H K B. Privacy risk assessment and users awareness for mobile APPs permissions[C]// Proceedings of the 2017 International Symposium on Computer Systems and Applications. Piscataway, NJ: IEEE, 2017:1-8.
[8] 徐君鋒,王嘉捷,朱克雷,等.基于AHP的安卓應用安全信用指數度量方法[J].清華大學學報(自然科學版),2018,58(2):131-136.(XU J F, WANG J J, ZHU K L, et al. Credit index measurement method for Android application security based on AHP[J]. Journal of Tsinghua University (Science and Technology), 2018,58(2):131-136.)
[9] RAHMAN A, PRADHAN P, PARTHO A, et al. Predicting Android application security and privacy risk with static code metrics[C]// Proceedings of the 2017 IEEE/ACM International Conference on Mobile Software Engineering and Systems. Piscataway, NJ: IEEE, 2017:149-153.
[10] DINI G, MARTINELLI F, MATTEUCCI I, et al. Risk analysis of Android applications: a user-centric solution [J]. Future Generation Computer Systems, 2018, 80: 505-518.
[11] TANG W, JIN G, HE J, et al. Extending Android security enforcement with a security distance model[C]// Proceedings of the 2011 International Conference on Internet Technology and Applications. Piscataway, NJ: IEEE, 2011: 1-4.
[12] VXShare. VirusShare[EB/OL]. [2017-10-09]. https://vir-usshare.com.
[13] DESNOS A, GUEGUEN G, BACHMANN S. Androguard package[EB/OL]. [2017-12-29]. http://androguard.readthedocs.io/en/latest/api/androguard.html.