宋玉言
(北方工業(yè)大學(xué) 信息學(xué)院,北京 100144)
搭載Android操作系統(tǒng)的智能手機(jī)發(fā)展迅速,對(duì)于人們的日常生活的幫助和影響越來越大。根據(jù)中國信通院發(fā)布的權(quán)威數(shù)據(jù)顯示,2020年,中國國內(nèi)手機(jī)總出貨量累計(jì)達(dá)到3.08億部,其中智能手機(jī)出貨量達(dá)到2.96億部,占比達(dá)到96%[1]。
全球智能手機(jī)市場(chǎng)經(jīng)過10余年激烈的競爭與發(fā)展,到2020年底,谷歌公司的Android系統(tǒng)和蘋果公司的IOS系統(tǒng)占據(jù)了智能手機(jī)市場(chǎng)的絕大部分份額[2]。Android操作系統(tǒng)的市場(chǎng)份額迅速增長的原因之一是由于Android系統(tǒng)基于Linux系統(tǒng)打造,具有良好的開源性。但正是由于其開源性等特點(diǎn),Android系統(tǒng)本身存在許多的安全漏洞,容易成為黑客等不法分子攻擊的目標(biāo)[3]。
圖1 Android平臺(tái)組件Fig.1 Android platform components
要想及時(shí)地防范不法黑客針對(duì)Android系統(tǒng)的惡意攻擊,就需要安全研究人員盡可能早地了解整個(gè)Android系統(tǒng)并發(fā)現(xiàn)其存在的系統(tǒng)安全漏洞,及時(shí)作出改進(jìn)與防范。要達(dá)到以上目的,滲透測(cè)試技術(shù)是個(gè)非常好的方式之一[4]。滲透測(cè)試技術(shù)是一種安全的測(cè)試性技術(shù),在實(shí)際使用的網(wǎng)絡(luò)條件下,通過編寫各種腳本程序或使用專業(yè)軟件,站在黑客的視角下對(duì)Android手機(jī)進(jìn)行模擬攻擊,查看Android手機(jī)被攻擊后的結(jié)果,通過研究分析實(shí)驗(yàn)結(jié)果,驗(yàn)證評(píng)估Android手機(jī)存在的各種安全漏洞和可能造成的影響[5]。
現(xiàn)有的傳統(tǒng)滲透測(cè)試技術(shù),主要針對(duì)基于傳統(tǒng)網(wǎng)絡(luò)下的系統(tǒng)和設(shè)備,缺少以針對(duì)現(xiàn)代移動(dòng)網(wǎng)絡(luò)下的設(shè)備進(jìn)行的測(cè)試技術(shù),特別是搭載Android系統(tǒng)的智能手機(jī)。所以通過研究移動(dòng)互聯(lián)網(wǎng)和Android操作系統(tǒng)的安全機(jī)制,并通過設(shè)計(jì)研究相應(yīng)的滲透測(cè)試技術(shù)發(fā)現(xiàn)其系統(tǒng)漏洞,對(duì)于防范不法分子的惡意攻擊和維護(hù)Android操作系統(tǒng)的安全有著十分重要的意義[6]。
Android是一種基于Linux的開放源代碼軟件棧,為各類設(shè)備和機(jī)型而創(chuàng)建。
Android平臺(tái)主要組件如圖1所示。
圖2 實(shí)驗(yàn)流程Fig.2 Experimental flow
圖3 實(shí)驗(yàn)環(huán)境搭建Fig.3 Construction of experimental environment
滲透測(cè)試是一種基于攻擊目標(biāo)的測(cè)試方法,通過模擬主動(dòng)攻擊目標(biāo)系統(tǒng),查看其存在的問題。其目的在于通過主動(dòng)的模擬攻擊,站在黑客的角度,在攻擊過程中找到目標(biāo)系統(tǒng)的弱點(diǎn)、漏洞和缺陷等[7]。
根據(jù)上述對(duì)Android系統(tǒng)和滲透測(cè)試的流程研究與分析,本研究將針對(duì)Android移動(dòng)設(shè)備的滲透測(cè)試實(shí)驗(yàn)流程設(shè)計(jì)為制定測(cè)試方案、被測(cè)目標(biāo)信息收集、實(shí)施滲透測(cè)試、完成實(shí)驗(yàn)結(jié)果分析4個(gè)階段[8]。實(shí)驗(yàn)流程如圖2所示。
在滲透測(cè)試實(shí)驗(yàn)實(shí)施之前,需要制定完善的測(cè)試方案。包括確定測(cè)試目標(biāo)、范圍、計(jì)劃、測(cè)試工具、環(huán)境搭建等。
首先,建立無線網(wǎng)絡(luò)環(huán)境,測(cè)試平臺(tái)為兩臺(tái)PC主機(jī),分別搭載win10系統(tǒng)和kali linux系統(tǒng)。
搭建無線網(wǎng)絡(luò)環(huán)境,本研究選用Tenda AC6 1200M 11AC無線路由器建立實(shí)驗(yàn)無線網(wǎng)絡(luò)。滲透測(cè)試實(shí)驗(yàn)環(huán)境搭建如圖3所示。
將兩臺(tái)測(cè)試PC主機(jī)和兩臺(tái)被測(cè)目標(biāo)Android智能手機(jī)連接在同一wifi網(wǎng)絡(luò)下,并測(cè)試其連接性,為接下來實(shí)驗(yàn)做好準(zhǔn)備。
圖4 Ping掃射代碼實(shí)現(xiàn)Fig.4 Implementation of Ping sweeping code
圖7 端口掃描代碼實(shí)現(xiàn)Fig.7 Port scan code implementation
1)Ping掃射
Ping掃射程序原理基于ICMP協(xié)議。Ping掃射規(guī)定在一定的時(shí)間內(nèi),探測(cè)主機(jī)向目標(biāo)主機(jī)發(fā)送一個(gè)包含當(dāng)前時(shí)間值的ICMP數(shù)據(jù)包后,收到了來自目標(biāo)主機(jī)的ICMP回送數(shù)據(jù)包,則表示Ping成功。
Ping掃射程序校驗(yàn)方法代碼實(shí)現(xiàn)如圖4所示。
程序流程圖如圖5所示。
如果在實(shí)驗(yàn)中不明確被測(cè)目標(biāo)的IP地址,此程序就無法實(shí)現(xiàn)Ping出目標(biāo)。為解決此問題,可將上述程序中的對(duì)單一IP地址進(jìn)行Ping掃射修改為對(duì)一段范圍內(nèi)的IP地址進(jìn)行Ping掃射,程序流程圖如圖6所示。
2)端口掃描
根據(jù)TCP連接和端口掃描相關(guān)技術(shù)原理,本研究通過python編寫了TCP端口掃描程序。具體內(nèi)容為對(duì)目標(biāo)系統(tǒng)的某個(gè)端口建立完整的TCP連接,通過連接的建立情況判斷一個(gè)目標(biāo)地址的端口開放情況。
端口掃描代碼實(shí)現(xiàn)如圖7所示。
程序流程圖如圖8所示。
3)Syn flood攻擊
通過python中的scapy模塊,構(gòu)建Syn Flood攻擊。
圖5 Ping掃射程序流程圖Fig.5 Flow chart of Ping scanning program
圖6 范圍Ping掃射流程圖Fig.6 Flow chart of range Ping sweeping
圖8 端口掃描程序流程圖Fig.8 Flow chart of port scanning program
Syn Flood攻擊代碼實(shí)現(xiàn)如圖9所示。
程序流程圖如圖10所示。
1)Ping掃射
當(dāng)已知被測(cè)目標(biāo)設(shè)備的IP地址時(shí),選用Ping掃射(單一)程序進(jìn)行實(shí)驗(yàn),可快速Ping到目標(biāo)設(shè)備。
首先,運(yùn)行單一IP地址Ping掃射python程序,對(duì)兩個(gè)目標(biāo)Android設(shè)備進(jìn)行探測(cè)。
然后,對(duì)IP地址為172.20.10.5的搭載Android8.0的三星s8進(jìn)行Ping掃射。結(jié)果如圖11所示。
這里顯示此程序成功Ping到IP地址為172.20.10.5的三星s8測(cè)試設(shè)備。
圖9 Syn Flood攻擊代碼實(shí)現(xiàn)Fig.9 Implementation of Syn Flood attack code
圖10 Syn flood攻擊程序流程圖Fig.10 Flow chart of Syn Flood attack program
圖11 s8 Ping掃射結(jié)果Fig.11 Result of s8 Ping
圖12 范圍Ping掃射結(jié)果Fig.12 Range Ping results
圖13 s8端口掃描結(jié)果Fig.13 Scan result of s8 port
圖14 Syn Flood程序運(yùn)行結(jié)果Fig.14 Running result of Syn Flood program
小米4手機(jī)實(shí)驗(yàn)結(jié)果與s8類似。若被測(cè)目標(biāo)設(shè)備的具體IP未知,處于某IP段內(nèi),選 用范圍IP地址Ping掃射程序進(jìn)行實(shí)驗(yàn)??砂l(fā)現(xiàn)一定IP范圍內(nèi)的目標(biāo)設(shè)備,但當(dāng)較與單一IP地址Ping掃射程序用時(shí)較長。
運(yùn)行Ping掃射(范圍)程序,對(duì)給定IP范圍內(nèi)的目標(biāo)設(shè)備進(jìn)行Ping掃射。結(jié)果如圖12所示。
實(shí)驗(yàn)結(jié)果表明,此程序能夠發(fā)現(xiàn)IP地址為172.20.10.2和172.20.10.3的兩臺(tái)Android智能手機(jī)。
此實(shí)驗(yàn)結(jié)果表明:Ping掃射可以發(fā)現(xiàn)局域網(wǎng)內(nèi)存在的兩臺(tái)Android手機(jī)。
將實(shí)驗(yàn)重復(fù)20次,20次實(shí)驗(yàn)中成功20次,失敗0次,成功率100%。20次實(shí)驗(yàn)程序執(zhí)行所需時(shí)間平均為10.92s,比掃描單一IP地址的Ping程序所需時(shí)間較長。
2)端口掃描
首先,對(duì)搭載Android8.0的三星s8進(jìn)行實(shí)驗(yàn)。
打開被測(cè)手機(jī)的14806端口,隨后運(yùn)行python程序“端口掃描”,對(duì)已開放14806端口的三星s8手機(jī)進(jìn)行端口掃描,結(jié)果如圖13所示。
此實(shí)驗(yàn)結(jié)果表明,當(dāng)Android8.0設(shè)備的某端口打開時(shí),端口掃描程序能夠檢測(cè)到Android設(shè)備的此端口處于打開狀態(tài)。
小米4手機(jī)實(shí)驗(yàn)結(jié)果與s8類似。
1)拒絕服務(wù)滲透
首先,對(duì)搭載Android8.0的三星s8進(jìn)行實(shí)驗(yàn)。
運(yùn)行python程序“Syn flood”,輸入目標(biāo)Android設(shè)備的IP地址并指定端口號(hào),可進(jìn)行源地址為隨機(jī)生成、自由輸入,使用本機(jī)的多線程Syn flood攻擊。如圖14所示。
根據(jù)20次實(shí)驗(yàn)結(jié)果平均值,被測(cè)目標(biāo)讀取網(wǎng)頁時(shí)間實(shí)驗(yàn)結(jié)果如圖15所示。
此實(shí)驗(yàn)結(jié)果表明,拒絕服務(wù)攻擊對(duì)Android8.0手機(jī)讀取網(wǎng)頁的影響較大。
小米4手機(jī)實(shí)驗(yàn)結(jié)果與s8類似。
被測(cè)目標(biāo)實(shí)時(shí)網(wǎng)速如圖16所示。
圖15 讀取網(wǎng)頁時(shí)間Fig.15 Time of reading web page
圖16 實(shí)時(shí)網(wǎng)速變化Fig.16 Real time network speed change
圖17 設(shè)備能耗變化Fig.17 Energy consumption change of equipment
此實(shí)驗(yàn)結(jié)果表明,拒絕服務(wù)攻擊對(duì)Android8.0手機(jī)的網(wǎng)絡(luò)連接影響較大。
小米4手機(jī)實(shí)驗(yàn)結(jié)果與s8類似。
被測(cè)目標(biāo)實(shí)時(shí)能耗如圖17所示。
實(shí)驗(yàn)數(shù)據(jù)表明,拒絕服務(wù)攻擊對(duì)Android8.0手機(jī)的設(shè)備能耗的影響非常大。
小米4手機(jī)實(shí)驗(yàn)結(jié)果與s8類似。
被測(cè)目標(biāo)CPU使用率如圖18所示。
由此看出,在遭受20次Syn Flood拒絕服務(wù)攻擊過程中,CPU平均使用率平均增加14.51%,受到較大影響。
小米4手機(jī)實(shí)驗(yàn)結(jié)果與s8類似。
2)ARP欺騙
在進(jìn)行ARP攻擊之前,查看被攻擊主機(jī)的ARP緩存表,打開cmd,輸入arp -a,如圖19所示。
圖19中顯示,攻擊主機(jī)中的ARP緩存表記錄了網(wǎng)關(guān)、被攻擊目標(biāo)手機(jī)和攻擊主機(jī)的MAC地址,可發(fā)現(xiàn)被攻擊目標(biāo)手機(jī)的MAC地址和攻擊主機(jī)不同。
圖18 CPU使用率變化Fig.18 CPU Utilization change
圖19 被攻擊主機(jī)ARP緩存表Fig.19 ARP Cache table of attacked host
在kali linux中利用arpspoof工具,對(duì)被測(cè)目標(biāo)手機(jī)發(fā)起ARP欺騙攻擊,如圖20所示。
圖20 發(fā)起ARP攻擊Fig.20 Launching ARP attack
圖21 被攻擊后ARP緩存表Fig.21 ARP Cache table after being attacked
圖22 運(yùn)行driftnetFig.22 Running drivetnet
從圖20中可以看出,此時(shí)攻擊主機(jī)不斷地向被測(cè)目標(biāo)手機(jī)發(fā)送ARP應(yīng)答包,這個(gè)應(yīng)答包將網(wǎng)關(guān)的IP地址192.168.1.1和虛擬機(jī)的MAC地址50:2B:73:D5:71:08綁定在一起,從而將被測(cè)目標(biāo)手機(jī)的ARP緩存表中的網(wǎng)關(guān)的MAC地址修改為攻擊主機(jī)的MAC地址。
檢查物理機(jī)的ARP緩存表,檢查其是否遭遇了ARP欺騙。結(jié)果如圖21所示。
從圖21中可以看出,此時(shí)被攻擊目標(biāo)手機(jī)的ARP緩存表中的MAC地址和攻擊主機(jī)的MAC地址是一樣的。可以認(rèn)定,物理機(jī)遭遇了ARP欺騙。
此時(shí),被攻擊目標(biāo)手機(jī)和網(wǎng)關(guān)通信的數(shù)據(jù)包都會(huì)流經(jīng)攻擊主機(jī),那么可以在攻擊主機(jī)的虛擬機(jī)中利用driftnet工具,捕獲被攻擊手機(jī)正在瀏覽的圖片。
在虛擬機(jī)中的kali linux系統(tǒng)中,打開driftnet。如圖22所示。
從圖22中可以看出,攻擊主機(jī)正在不斷地捕獲被測(cè)目標(biāo)手機(jī)和網(wǎng)卡之間的數(shù)據(jù)包。在被測(cè)目標(biāo)手機(jī)中,打開一個(gè)應(yīng)用,瀏覽圖片。如圖23所示。
圖23 手機(jī)端瀏覽圖片F(xiàn)ig.23 Browsing pictures on mobile terminal
圖24 driftnet窗口顯示圖片F(xiàn)ig.24 Image displayed in the driftnet window
在攻擊主機(jī)中的driftnet窗口中監(jiān)看。如圖24所示。
實(shí)驗(yàn)結(jié)果表明,被測(cè)目標(biāo)手機(jī)可被ARP欺騙攻擊,導(dǎo)致信息泄露。
本章依次對(duì)Android8.0手機(jī)和Android10.0手機(jī)進(jìn)行了Ping掃射實(shí)驗(yàn)、端口掃描實(shí)驗(yàn)、拒絕服務(wù)攻擊實(shí)驗(yàn)和ARP欺騙實(shí)驗(yàn),并進(jìn)行了實(shí)驗(yàn)數(shù)據(jù)分析。根據(jù)各實(shí)驗(yàn)結(jié)果表明,兩臺(tái)搭載Android8.0和Android10.0系統(tǒng)的智能手機(jī)不存在過濾Ping掃射和端口掃描的防火墻,普通的Ping掃射和端口掃描都能成功實(shí)施在目標(biāo)手機(jī)上;兩臺(tái)搭載Android8.0和Android10.0系統(tǒng)的智能手機(jī)也不存在抵御Syn Flood拒絕服務(wù)攻擊的防火墻,在受到此類攻擊時(shí),兩臺(tái)Android智能手機(jī)在實(shí)時(shí)網(wǎng)速、讀取網(wǎng)頁時(shí)間、CPU使用率以及實(shí)時(shí)能耗上的數(shù)據(jù)都產(chǎn)生了十分大的波動(dòng),對(duì)于日常使用有著較大影響;兩臺(tái)搭載Android8.0和Android10.0系統(tǒng)的智能手機(jī)也無法抵御ARP欺騙,實(shí)驗(yàn)結(jié)果表明,ARP欺騙可成功獲取目標(biāo)手機(jī)的信息,造成嚴(yán)重的信息泄露。
本文首先介紹了Android系統(tǒng)的基本架構(gòu)和市場(chǎng)占有情況,分析了Android系統(tǒng)各組件的基本情況。隨后介紹了滲透測(cè)試的基本內(nèi)容,通過研究國內(nèi)外現(xiàn)有的滲透測(cè)試技術(shù),并結(jié)合Android系統(tǒng)的特點(diǎn),選擇適當(dāng)?shù)臐B透測(cè)試技術(shù),設(shè)計(jì)并通過python和kali linux系統(tǒng)實(shí)現(xiàn)對(duì)Android移動(dòng)設(shè)備的滲透測(cè)試實(shí)驗(yàn)。通過分析實(shí)驗(yàn)數(shù)據(jù),發(fā)現(xiàn)Android系統(tǒng)在能耗管理和信息安全等方面存在的漏洞。
此次滲透測(cè)試實(shí)驗(yàn)的結(jié)果表明,無論是最新的Android10.0系統(tǒng)還是目前市場(chǎng)占有率最高的Android8.0系統(tǒng),都在抵御拒絕服務(wù)攻擊方面的漏洞;參與實(shí)驗(yàn)的兩臺(tái)Android手機(jī)在受到Syn Flood這一泛洪類拒絕服務(wù)攻擊時(shí),皆受到網(wǎng)絡(luò)限制、能耗上升等影響。另外,通過arpspoof軟件偽造MAC地址,從而進(jìn)行的ARP欺騙攻擊也對(duì)兩臺(tái)Android手機(jī)造成了影響,使得兩臺(tái)手機(jī)的信息遭到泄露。
通過此實(shí)驗(yàn),實(shí)現(xiàn)了滲透測(cè)試對(duì)移動(dòng)目標(biāo)設(shè)備的滲透實(shí)例。通過分析實(shí)驗(yàn)數(shù)據(jù),可為之后的研究打下基礎(chǔ)。