陳朗 王春玲
摘要:由于近年來,隨著無線網(wǎng)絡(luò)的普及和 4G 向5G網(wǎng)絡(luò)過渡時代的到來,移動手機憑借其簡單易用、便于攜帶等特點迅速取代筆記本電腦、臺式電腦等其他移動設(shè)備成為使用率最高的個人上網(wǎng)設(shè)備。同時,線下生活與移動互聯(lián)網(wǎng)大部分重疊,比如購物、支付、物流、銀行、外賣等業(yè)務(wù)都可以通過手機設(shè)備來實現(xiàn)。研究公司Gartner最近發(fā)布了一份數(shù)據(jù),數(shù)據(jù)顯示去年在全世界銷售的智能手機中,有大約99.9%的設(shè)備都是基于Android或iOS平臺的,可以看出其他系統(tǒng)的移動設(shè)備在市場上已經(jīng)沒有太多的份額。作為在移動設(shè)備市場領(lǐng)域占有率高達 87.5%的 Android 手機,針對其漏洞掃描處理的研究對于保護個人隱私信息和財產(chǎn)安全具有重要意義。研究在 Android 平臺的第三方app漏洞挖掘方法有利于及時發(fā)現(xiàn)并修補 Android 平臺漏洞,同時便于提高 Android 平臺的安全性。第三方app漏洞有可能是應用開發(fā)者無意或是有意留下一些漏洞,這些漏洞利用現(xiàn)在的木馬程序通常不是一個獨立的程序,而是把惡意代碼注入用戶使用頻率高、并不會引起人警覺的app中蒙蔽用戶,讓用戶認為與其他應用沒有區(qū)別,比如上文中提到的實現(xiàn)購物、支付、物流、銀行、外賣等功能的第三方app中,竊取用戶信息和資源。惡意軟件能給用戶隱私帶來的威脅非常普遍,但是一些看似普通的軟件也達不到?jīng)]有惡意行為的要求。因此,為了保障手機用戶的信息和資源開發(fā)手機漏洞掃描軟件保護用戶安全十分必要。
關(guān)鍵詞:5G網(wǎng)絡(luò);移動手機;app漏洞;惡意代碼;用戶信息安全
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)25-0020-03
對第三方app傳統(tǒng)的漏洞掃描方法的重要目的就是最大限度地找出app中存在的漏洞威脅。以便于后續(xù)分析存在的漏洞,常用的漏洞挖掘方法是動、靜態(tài)分析為主。
傳統(tǒng)的漏洞挖掘方法包括靜態(tài)分析和動態(tài)分析,靜態(tài)分析是指不用運行被檢測的軟件,而只是靜態(tài)地檢查程序代碼、界面或文檔中可能存在的不正確內(nèi)容的過程。動態(tài)分析指的是讓被測程序運行起來,輸入合適的測試數(shù)據(jù),檢查實際輸出結(jié)果和預期輸出結(jié)果相不相符的過程,所以判斷一個測試屬于動態(tài)測試還是靜態(tài)的,唯一的標準就是看是否運行程序。
在很多的漏洞挖掘技術(shù)中,軟件滲透測試,模糊測試,靜態(tài)數(shù)據(jù)流分析應用相對比較廣泛,其次是利用數(shù)據(jù)科學以及人工智能領(lǐng)域技術(shù)的方法來對app漏洞進行分析和挖掘漏洞,在2011年以后人們對機器學習和數(shù)據(jù)的挖掘技術(shù)有了很大的關(guān)注。由于機器學習方法已經(jīng)在不同的應用場景都有著顯著且卓越的效果,且能發(fā)現(xiàn)手機中存在的未知和潛在漏洞,所以本文重點研究基于機器學習的手機漏洞掃描處理系統(tǒng)的設(shè)計。
1 基于機器學習漏洞掃描處理系統(tǒng)設(shè)計
機器學習所關(guān)聯(lián)范圍都是基于有大量的數(shù)據(jù)基礎(chǔ)支撐而實現(xiàn)的。機器學習中所涉及的監(jiān)督學習會有兩套不同類型的樣本集,訓練和測試數(shù)據(jù),通常我們把手上總數(shù)據(jù)的90%作為訓練樣本來訓練分類器,另外10%的數(shù)據(jù)用作測試已經(jīng)訓練的分類器,用于得到分類器在分類結(jié)果的正確率。數(shù)據(jù)量越大,測試結(jié)果的準確率越高?;跈C器學習的app漏洞掃描處理系統(tǒng)的設(shè)計需要面對的問題就是如何將移動設(shè)備上的app以數(shù)據(jù)的形式呈現(xiàn)出來,并且選擇適當?shù)乃惴▽Ω鱾€app進行分類。
1.1 信息采集
對于Android系統(tǒng)中第三方app的漏洞來說,找到app的相關(guān)重要屬性標簽,是判斷其是否存在漏洞的重要依據(jù)。用機器學習的方法來實現(xiàn)漏洞掃描就必須又有大量的漏洞數(shù)據(jù)來支撐前期的監(jiān)督學習,而建立數(shù)據(jù)集可以通過CVE來輔助實現(xiàn)。CVE被認為是一個字典表,即每個CVE漏洞都有它唯一的編號Name。圖1是CVE漏洞信息列表的詳細信息。
圖中顯示CVE漏洞編號以及涉及的app應用名稱,版本信息,手機型號和具體漏洞信息的描述。截至目前,CVE中有119095條漏洞條目信息。在CVE中搜索列表中輸入Android條目,顯示有5160條信息。如果能把有關(guān)Android的漏洞信息作為機器學習的數(shù)據(jù)集基礎(chǔ),運用python爬蟲技術(shù)爬取cve中關(guān)于android漏洞信息,那么在采集信息方面的問題已經(jīng)得到解決,下一步就是處理數(shù)據(jù)信息。
1.2 漏洞信息處理
當?shù)玫綐永畔⒅笫褂胟鄰近算法對我們得到的信息進行分類,對模型進行訓練。一旦另外輸入樣例的時候,在訓練數(shù)據(jù)集中匹配與該實例最鄰近的K個實例,這K個實例的多數(shù)屬于某類,就把該輸入實例分類到這個類中,差異越小,相似度越高。屬性向量,為將訓練樣例發(fā)送給機器,我們要用合適的方法描述這些樣例。最常見的方法就是使用所謂的屬性,在“漏洞”問題域中,可以有種屬性,比如App名稱,App版本信息,手機型號,存在漏洞等,見圖2。在后期的研究過程中進一步深入了解如何添加每一個樣例的相關(guān)屬性,減少不相關(guān)屬性的影響,不相關(guān)屬性會增加計算開銷且存在一定的誤導性。
將得到的特征數(shù)據(jù)導入分類器中,把待處理的數(shù)據(jù)格式改編為分類器可以接受的格式。如何確定一個app是否存在漏洞,通過屬性向量的相似性可以了解,機器學習的任務(wù)是把這些異議減到最小。每一個樣例都能表示為n維空間中的一個點,這個事實使得計算每對樣例之間的集合距離成為可能,例如計算其歐氏距離。尋找對象x的最近鄰的一個常用方法就是比較從x到每個訓練樣例之間的集合距離。通過屬性值來計算相似性的表達式為:[d=i=1N(x1i-x2i)2]
1.3 訓練結(jié)果
建立訓練模型之后,這組數(shù)據(jù)就線性可分(linearly separable)了。為了測試分類器的效果,我們可以用已經(jīng)知道結(jié)果的數(shù)據(jù)來檢測結(jié)果,判斷分類器給出的結(jié)果是否符合預期目標。通過大量基礎(chǔ)的測試與數(shù)據(jù)分析,我們就可以分析出分類器的錯誤率。再次給分類器一個新的數(shù)據(jù)的時候,就可以分類成功從而得到結(jié)果。
由于所有的數(shù)據(jù)點都在一個平面直角坐標系中,所以此時一條線可以將此平面分割開來。支持向量(support vector)就是與分隔線距離最小的點集。接下來要試著最大化支持向量到分隔面的距離,需要找到此問題的優(yōu)化求解方法。
以用戶數(shù)量作為圖像的y軸,隱私類型出現(xiàn)次數(shù)為x軸。用戶數(shù)量數(shù)值越高出現(xiàn)的app漏洞可能性越小,用戶數(shù)量和漏洞數(shù)量之間存在一定的線性關(guān)系。分析數(shù)據(jù)的過程中我們需要將差值最大的數(shù)據(jù),也就是對實驗結(jié)果影響最大的特征值數(shù)據(jù)進行調(diào)整,在處理一些有差異的取值范圍的特征值時,通常采用的方法是將數(shù)值歸一化。可以將取值范圍調(diào)整為0到1之間。存在公式能把各種取值范圍的特征值換算為0到1區(qū)間里面的數(shù)值:newValue = (oldValue-min)/(max-min) 。
輸入數(shù)據(jù)給分類器會輸出一個類別標簽,如果輸入app數(shù)據(jù)是存在漏洞的那么就會出現(xiàn)在圖中+號集中位置,如果在-號集中位置那么則不存在漏洞。輸入一個未知app數(shù)據(jù),分析樣本集中所有app與未知app的距離,按照距離的遠近進行遞增排序,計算出k個距離最近的app。假定k=10,則兩個最靠近的電影依次是Bosch Smart Camera和Tootdon for Mastodon 。k-近鄰算法按照距離最近的兩個app的類型,決定未知app的類型,而這兩個app都存在漏洞,因此我們判定未知app存在漏洞。
2 結(jié)語
在互聯(lián)網(wǎng)飛速發(fā)展的時代,人們的生活逐漸向智能化邁進。相對于傳統(tǒng)的漏洞掃描方法而言,運用機器學習方法的優(yōu)勢在于可以處理更大的數(shù)據(jù)量,且數(shù)據(jù)量越大準確度越高,可處理數(shù)據(jù)量遠高于人工分析,體積更大且有利于對未來數(shù)據(jù)更新分類,將新輸入樣例與以往樣例數(shù)據(jù)匹配對比得出結(jié)論。通過常用預測模型,進行實驗,科學對比結(jié)果,最后通過圖形,表格方式形象地表達出來,同時減少實驗成本和負擔。本文研究與分析了在傳統(tǒng)Android 的系統(tǒng)漏洞,機器學習方法對漏洞掃描的原理和設(shè)計,使漏洞掃描系統(tǒng)更加智能化且效率更高。
參考文獻:
[1] 于浩佳.Android應用漏洞分析及安全性評估技術(shù)研究[D].江蘇:南京師范大學,2018.
[2] 劉昊晨.基于Lua引擎的Android漏洞檢測工具研究[D].四川:西安電子科技大學,2015.
[3] 許杰.基于機器學習的醫(yī)療健康分類方法研究[D].河南:鄭州大學,2018.
[4] 成厚富.智能手機漏洞挖掘技術(shù)研究[D].四川:西安電子科技大學,2008. DOI:10.7666/d.y1246905.
[5] [美]Peter Harrington 著,李銳、李鵬、曲亞東 譯.機器學習實戰(zhàn)[M].人民郵電出版社,2013.
[6] [美]米羅斯拉夫·庫巴 著.機器學習導論[M].特機械工業(yè)出版社,2016-11-01.
[7]戴春春.漏洞利用自動生成算法的設(shè)計與實現(xiàn)[D].四川:西安電子科技大學,2017.
[8] 劉柳.Android手機用戶隱私保護系統(tǒng)及其關(guān)鍵技術(shù)的研究[D].四川:電子科技大學,2017.
[9] 張翼飛.中國智能手機現(xiàn)狀研究及建議[J].社會科學前沿,2018,7(10):1670-1674.
[10] 劉蓉,于浩佳,陳思遠, 等.基于APP分層結(jié)構(gòu)的Android應用漏洞分類法[J].信息安全研究,2018,4(9):792-798.
[11] 郝蕾.Android系統(tǒng)開發(fā)APP端常見安全漏洞解讀[J].計算機與網(wǎng)絡(luò),2016,42(21):59.
【通聯(lián)編輯:李雅琪】