国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

物聯(lián)網(wǎng)控制終端APP的安全性分析與加固建議

2019-01-18 01:15吳君軼徐志輝路曉明
關(guān)鍵詞:賬號(hào)密碼終端

◆盧 萍 姜 楠 吳君軼 徐志輝 路曉明

?

物聯(lián)網(wǎng)控制終端APP的安全性分析與加固建議

◆盧 萍1,2姜 楠1吳君軼3徐志輝3路曉明3

(1.北京工業(yè)大學(xué) 北京 100124;2.北京郵電大學(xué) 北京 100876) (3.中移(杭州)信息技術(shù)有限公司 浙江 310012)

隨著智能家居的普及,Android應(yīng)用市場(chǎng)上出現(xiàn)了越來越多的物聯(lián)網(wǎng)控制終端APP,但是由于Android平臺(tái)的高度開放性,使其面臨著諸多安全威脅,本文首先介紹了Android應(yīng)用安全測(cè)試中一些常用的檢測(cè)工具,又選取了一個(gè)物聯(lián)網(wǎng)控制終端APP作為樣本進(jìn)行了安全性檢測(cè),最后給出了相應(yīng)的加固建議。

物聯(lián)網(wǎng);Android APP;安全檢測(cè)

0 引言

近年來,物聯(lián)網(wǎng)發(fā)展迅猛,例如智能家電、智能穿戴、無人機(jī)等智能設(shè)備不斷推出,伴隨著Android應(yīng)用平臺(tái)的普及,越來越多的物聯(lián)網(wǎng)廠商選擇將物聯(lián)網(wǎng)控制終端設(shè)計(jì)成APP的形式安裝在用戶的手機(jī)、平板電腦等移動(dòng)端設(shè)備上。然而物聯(lián)網(wǎng)控制終端APP的質(zhì)量良莠不齊,導(dǎo)致安全問題頻發(fā),不僅可能泄露用戶的隱私數(shù)據(jù),由于物聯(lián)網(wǎng)設(shè)備的特殊性,像攝像頭被控制這種嚴(yán)重的安全事件甚至?xí){用戶的人身和財(cái)產(chǎn)安全[1]。物聯(lián)網(wǎng)控制終端APP在為我們的生活帶來方便的同時(shí)也帶來了巨大的風(fēng)險(xiǎn)。本文主要介紹了現(xiàn)有的移動(dòng)安全檢測(cè)體系并結(jié)合物聯(lián)網(wǎng)控制終端APP進(jìn)行相關(guān)實(shí)踐,最后給出了一些加固對(duì)策。

1 常用物聯(lián)網(wǎng)安全檢測(cè)工具介紹

本節(jié)對(duì)一些常用安全檢測(cè)工具的功能進(jìn)行了簡(jiǎn)要介紹,并根據(jù)本次測(cè)試的需求從中選取了相應(yīng)工具用于測(cè)試。

(1)Android反編譯工具

Apktool是一個(gè)可以用于逆向Android應(yīng)用程序的工具,利用它能夠得到APP的布局和資源文件,并且能夠在進(jìn)行一些修改后重建它們。dex2jar可以將dex文件(記錄一個(gè)Android工程所有類文件信息,是一種可執(zhí)行文件)轉(zhuǎn)換為jar文件(多個(gè)文件組合成的壓縮文件)。JD-GUI是一個(gè)圖形實(shí)用程序,可以使用JD-GUI查看jar文件中的java源代碼內(nèi)容。

(2)Web安全測(cè)試工具

Burpsuite是用于攻擊Web應(yīng)用程序的集成平臺(tái),平臺(tái)集成了Web 代理、網(wǎng)絡(luò)爬蟲、掃描器、自動(dòng)化攻擊、解碼器、中繼器等功能[2],使我們能夠自動(dòng)化地或者手工地更好的完成對(duì)Web應(yīng)用的滲透測(cè)試和攻擊。

(3)APP自動(dòng)安全測(cè)試框架

MobSF(Mobile Security Framework)是一個(gè)開源的適用于Android,IOS,Windows平臺(tái)的自動(dòng)安全測(cè)試框架,能對(duì)移動(dòng)應(yīng)用程序執(zhí)行動(dòng)態(tài)和靜態(tài)分析。

(4)APP安全測(cè)試平臺(tái)

愛加密提供包括安全檢測(cè)、安全加固、威脅感知、安全培訓(xùn)等一整套覆蓋周期流程的解決方案體系,有效保護(hù)移動(dòng)應(yīng)用安全。Testin云測(cè)基于真實(shí)終端設(shè)備環(huán)境,在云端部署了大量的測(cè)試終端供開發(fā)者進(jìn)行測(cè)試,為企業(yè)手機(jī)APP提供包括內(nèi)測(cè)、兼容測(cè)試、功能測(cè)試、性能測(cè)試、bug探索、真機(jī)測(cè)試在內(nèi)的一站式云測(cè)試服務(wù)。

在本文測(cè)試實(shí)例中,使用了Burpsuite作為網(wǎng)絡(luò)代理,用于攔截和轉(zhuǎn)發(fā)HTTP/HTTPS請(qǐng)求,使用dex2jar和JD-GUI對(duì)APP進(jìn)行逆向分析,安全檢測(cè)分類標(biāo)準(zhǔn)參考了Testin的分類標(biāo)準(zhǔn)。

2 移動(dòng)APP安全檢測(cè)體系介紹及檢測(cè)實(shí)例

目前市面上有許多用于移動(dòng)APP安全性檢測(cè)的系統(tǒng),用戶只需簡(jiǎn)單地提供APK安裝包,檢測(cè)系統(tǒng)就會(huì)自動(dòng)的對(duì)安裝包進(jìn)行分析,最后會(huì)給出一份針對(duì)該APP安全性的測(cè)試報(bào)告。雖然自動(dòng)化的APP安全檢測(cè)工具提高了檢測(cè)效率,但是在自動(dòng)化的檢測(cè)過程中可能會(huì)出現(xiàn)一些問題,例如無法成功反編譯APP、難以進(jìn)行邏輯漏洞的挖掘等,這些都需要安全檢測(cè)人員通過長期積累經(jīng)驗(yàn),使用相關(guān)工具,才能進(jìn)行有效的檢測(cè)[3]。本節(jié)將以某物聯(lián)網(wǎng)控制終端APP作為樣本,從不同方面對(duì)其進(jìn)行檢測(cè)。

(1)安全檢測(cè)項(xiàng)

在移動(dòng)端APP的安全檢測(cè)中,本文主要從五個(gè)大的方向?qū)PP進(jìn)行評(píng)估,如圖1所示,包括環(huán)境安全、APP安全、數(shù)據(jù)安全、通信安全、業(yè)務(wù)安全,每個(gè)大的測(cè)試方向內(nèi)僅包括了該類的一些細(xì)分測(cè)試項(xiàng),我們從每個(gè)方向中選取了一些比較重要的細(xì)分測(cè)試項(xiàng)進(jìn)行了測(cè)試。

圖1 APP安全檢測(cè)項(xiàng)

(2)環(huán)境安全

在如果設(shè)備經(jīng)過root,設(shè)備中可能存在惡意軟件,它可以通過取得權(quán)限對(duì)手機(jī)內(nèi)的所有信息進(jìn)行讀取和篡改,一些個(gè)人的隱私信息可能會(huì)因此而泄露。系統(tǒng)權(quán)限的過度開放對(duì)用戶隱私、惡意行為防范等方面造成很大危險(xiǎn)[4]。將某物聯(lián)網(wǎng)控制終端APP安裝在開啟了root權(quán)限的安卓設(shè)備中,打開APP后沒有發(fā)現(xiàn)進(jìn)行Android終端的root環(huán)境檢測(cè)并給出相應(yīng)提示,APP可以正常運(yùn)行。

(3)APP安全

Android程序打包完成之后得到的是一個(gè)APK文件,可以直接安裝到安卓手機(jī)上,反編譯也就是對(duì)這個(gè)APK文件進(jìn)行反編譯,包括對(duì)代碼反編譯和對(duì)資源反編譯,對(duì)代碼進(jìn)行反編譯可以得到該APP的java源代碼,對(duì)資源反編譯可以得到APP的圖片資源文件、AndroidManifest.xml文件和其他的資源文件。攻擊者可以從反編譯得到的代碼中獲取敏感的服務(wù)器地址或者一些用于測(cè)試的用戶名密碼等信息,了解程序的邏輯,更有針對(duì)性的進(jìn)行攻擊。下面我們主要介紹了對(duì)代碼的反編譯。

使用dex2jar,JD-GUI對(duì)APP進(jìn)行安裝包逆向分析。dex2jar用于將dex文件轉(zhuǎn)換為jar文件,JD-GUI用于打開jar文件,查看代碼結(jié)構(gòu)。首先將該APP的APK安裝包的后綴名改為rar,然后將該文件解壓,解壓后的文件中會(huì)有一個(gè)classes.dex文件,將該文件加入dex2jar的根目錄,進(jìn)入該目錄,使用命令行執(zhí)行d2j-dex2jar.bat classes.dex,會(huì)生成一個(gè)名為“classes-dex2jar.jar”的文件,使用JD-GUI打開該文件,會(huì)看到如圖2、圖3所示的目錄結(jié)構(gòu)以及源代碼信息。可以看出該APP沒有經(jīng)過加固,能夠輕易的被反編譯,代碼沒有經(jīng)過混淆,反編譯得到的代碼非常接近源代碼的形式。

圖2 APP反編譯得到的目錄結(jié)構(gòu)

圖3 APP反編譯得到的部分代碼

(4)數(shù)據(jù)安全

在Android平臺(tái)上實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)可以通過多種方式,比較常用有SharedPreferences存儲(chǔ)數(shù)據(jù),SQLite數(shù)據(jù)庫,文件存儲(chǔ)等。使用SharedPreferences存儲(chǔ)數(shù)據(jù)是以xml格式明文存儲(chǔ)的,存儲(chǔ)位置為應(yīng)用程序私有目錄,具體存儲(chǔ)目錄為:/data/data/程序包名/shared_prefs。本次測(cè)試對(duì)使用SharedPreferences存儲(chǔ)的數(shù)據(jù)進(jìn)行了檢測(cè)。

如圖4所示,在被測(cè)試應(yīng)用程序私有目錄下有明文存儲(chǔ)用戶的用戶名、密碼等敏感信息。在有root權(quán)限時(shí)可以進(jìn)入該目錄查看用戶的敏感信息。

圖4 應(yīng)用程序私有目錄存儲(chǔ)內(nèi)容

(5)通信安全

HTTP協(xié)議的傳輸方式有多種,一般常用的是GET和POST,GET的查詢字符串是在GET請(qǐng)求的URL中發(fā)送的,采用的是明文傳輸,而POST是放在報(bào)文內(nèi)部的,由于HTTP協(xié)議無法加密數(shù)據(jù),通過網(wǎng)絡(luò)的嗅探設(shè)備及一些技術(shù)手段,就可以還原HTTP報(bào)文內(nèi)容,所以以上這兩種方式都是不安全的。目前比較安全的是使用HTTPS協(xié)議,HTTPS在HTTP的基礎(chǔ)上加入了SSL/TLS協(xié)議,依靠SSL/TLS證書來驗(yàn)證服務(wù)器的身份,并為客戶端和服務(wù)器端之間建立“加密通道”,確保用戶數(shù)據(jù)在傳輸過程中處于加密狀態(tài)。

使用Burpsuite對(duì)某物聯(lián)網(wǎng)控制終端APP進(jìn)行通信安全檢測(cè),Burpsuite可以轉(zhuǎn)發(fā)所有的HTTP流量,在HTTP history選項(xiàng)卡中可以看到如圖5所示信息,登錄過程使用的是明文傳輸?shù)腍TTP協(xié)議而不是經(jīng)過加密的HTTPS,并且由圖7可知傳輸?shù)臄?shù)據(jù)沒有進(jìn)行加密。

圖5 APP數(shù)據(jù)傳輸使用的通信協(xié)議

(6)業(yè)務(wù)安全

業(yè)務(wù)安全檢測(cè)中選取了密碼找回安全這一項(xiàng)進(jìn)行檢測(cè),具體是檢測(cè)重置任意用戶密碼漏洞。重置任意用戶密碼漏洞利用了服務(wù)器對(duì)驗(yàn)證碼的驗(yàn)證不完善,輸入手機(jī)號(hào)和驗(yàn)證碼進(jìn)行重置密碼的時(shí)候,僅對(duì)驗(yàn)證碼是否正確進(jìn)行了判斷,未對(duì)該驗(yàn)證碼是否與手機(jī)號(hào)匹配做驗(yàn)證。下面將用實(shí)例演示如何通過對(duì)一個(gè)已知密碼的用戶賬號(hào)進(jìn)行重置密碼操作實(shí)現(xiàn)重置任意賬號(hào)的密碼。

首先用兩個(gè)手機(jī)號(hào)分別申請(qǐng)某物聯(lián)網(wǎng)控制終端APP的用戶A、用戶B,A作為已知密碼的賬號(hào),B作為未知密碼的賬號(hào),接下來將通過在A用戶登錄時(shí)做重置密碼和修改數(shù)據(jù)包的操作,最終實(shí)現(xiàn)重置B用戶的密碼。申請(qǐng)賬號(hào)時(shí)兩個(gè)賬號(hào)的密碼均設(shè)置為a123456,賬號(hào)申請(qǐng)成功后選擇退出當(dāng)前賬號(hào)。然后進(jìn)入登錄界面選擇忘記密碼,使用A賬號(hào)的手機(jī)號(hào)接收驗(yàn)證碼,正確填寫接收到的驗(yàn)證碼,將新密碼設(shè)置為a1234567,如圖6所示。

圖6 重置賬戶密碼

開啟Burpsuite進(jìn)行抓包,點(diǎn)擊“提交”,會(huì)抓到如圖7所示的數(shù)據(jù)包,可以看到用戶的密碼,用戶名都是用明文顯示。使用Burpsuite對(duì)數(shù)據(jù)包進(jìn)行修改,將Username改為B賬號(hào)。點(diǎn)擊Burpsuite中的forward轉(zhuǎn)發(fā)數(shù)據(jù)包,服務(wù)器端會(huì)返回一個(gè)表示密碼修改成功的數(shù)據(jù)包。

圖7 登錄數(shù)據(jù)包

接下來驗(yàn)證重置密碼是否成功,使用B賬號(hào)的原密碼a123456進(jìn)行登錄,用Burpsuite抓包得到表示用戶輸入的密碼錯(cuò)誤的數(shù)據(jù)包并且登錄時(shí)顯示密碼錯(cuò)誤,然后使用密碼a1234567進(jìn)行登錄,抓包得到如圖8所示表示登錄成功的成功的數(shù)據(jù)包,賬號(hào)登錄成功。

圖8 登錄成功返回包

3 加固建議

(1)環(huán)境安全

在應(yīng)用的運(yùn)行環(huán)境方面,有必要對(duì)系統(tǒng)進(jìn)行root檢測(cè),一般可以通過檢測(cè)手機(jī)內(nèi)是否有su文件(Android獲取root權(quán)限后,會(huì)存在一個(gè)su文件),su命令能否執(zhí)行確定[5]。如果檢測(cè)到系統(tǒng)已經(jīng)被root,則用戶不能夠繼續(xù)進(jìn)行操作,否則在root環(huán)境中,用戶所做的操作都具有極大風(fēng)險(xiǎn),可能導(dǎo)致隱私泄露等一系列問題。

(2)APP安全

為了對(duì)抗反編譯后直接可以看到APP的源代碼,開發(fā)人員可以在APP發(fā)布前,對(duì)應(yīng)用配置一些混淆規(guī)則進(jìn)行ProGuard混淆,當(dāng)規(guī)則全部配置成功后,對(duì)APK進(jìn)行反編譯,某些函數(shù)名或者變量名就被混淆成了a、b、c等難以理解的字符,從而增加了攻擊者進(jìn)行逆向分析的難度。

APP應(yīng)用加固服務(wù)能夠大大提高應(yīng)用的安全性,Android應(yīng)用經(jīng)過加固以后,可以有效防止APK反編譯、二次打包、植入代碼,防止靜態(tài)注入,動(dòng)態(tài)破解,能夠全面保護(hù)APP安全。原理是通過對(duì)dex進(jìn)行加殼保護(hù),將原始程序隱藏在殼程序尾部,在殼程序運(yùn)行時(shí)通過反射機(jī)制動(dòng)態(tài)加載原程序,從而實(shí)現(xiàn)防止原程序APK文件被反編譯[1]。目前有多家互聯(lián)網(wǎng)安全廠商提供APP應(yīng)用加固服務(wù)。

(3)數(shù)據(jù)安全

默認(rèn)情況下,保存到應(yīng)用內(nèi)部存儲(chǔ)的是應(yīng)用的私有文件,其他的應(yīng)用無法訪問這些文件,當(dāng)這個(gè)應(yīng)用被卸載時(shí),這些文件也會(huì)被移除。但是如果設(shè)備經(jīng)過root,直接進(jìn)入對(duì)應(yīng)的目錄就可以訪問到內(nèi)部存儲(chǔ)的數(shù)據(jù)。所以要對(duì)應(yīng)用本地資源和重要數(shù)據(jù)進(jìn)行防護(hù),將本地?cái)?shù)據(jù)進(jìn)行加密后存儲(chǔ)。

可以通過對(duì)本地?cái)?shù)據(jù)進(jìn)行加密實(shí)現(xiàn)數(shù)據(jù)的安全存儲(chǔ),例如使用AES加密算法對(duì)數(shù)據(jù)進(jìn)行加密,在SO文件中生成密鑰,這樣即使能夠成功反編譯,也很難查看SO文件的代碼邏輯,增加破解成本。

(4)通信安全

網(wǎng)絡(luò)傳輸安全方面,如果使用的是HTTP協(xié)議,由于該協(xié)議是明文傳輸,為提高安全性需要對(duì)數(shù)據(jù)進(jìn)行加密后傳輸,接收端在收到數(shù)據(jù)后進(jìn)行校驗(yàn),防止惡意用戶嗅探和更改數(shù)據(jù)。在本測(cè)試實(shí)例中其使用的是HTTP協(xié)議,傳輸內(nèi)容沒有進(jìn)行加密,導(dǎo)致數(shù)據(jù)包很容易被嗅探并篡改。若要進(jìn)一步的提高安全性,避免使用HTTP明文傳輸數(shù)據(jù)可能泄露敏感信息,可以直接使用HTTPS,這樣即使中間人能夠截獲信息也不能讀懂信息,不能做出針對(duì)性的修改。

(5)業(yè)務(wù)安全

要提高業(yè)務(wù)方面的安全性,需要清楚應(yīng)用程序的工作邏輯,避免出現(xiàn)邏輯缺陷,例如在校驗(yàn)驗(yàn)證碼時(shí),不應(yīng)只對(duì)驗(yàn)證碼進(jìn)行校驗(yàn),還要對(duì)驗(yàn)證碼是否與手機(jī)號(hào)匹配做驗(yàn)證。為降低密碼被暴力破解的風(fēng)險(xiǎn),可以在登錄密碼輸入錯(cuò)誤多次后鎖定賬號(hào)。設(shè)置發(fā)送驗(yàn)證碼有最小時(shí)間間隔,不能頻繁發(fā)送。為避免弱口令帶來的風(fēng)險(xiǎn),在用戶設(shè)置密碼時(shí)進(jìn)行檢測(cè),如果為弱口令,進(jìn)行相應(yīng)提示,或者規(guī)定密碼必須由數(shù)字,大小寫字母組成,密碼位數(shù)不低于6位等,通過這些措施增加破解成本。

4 結(jié)束語

隨著物聯(lián)網(wǎng)的快速發(fā)展,智能家居設(shè)備越來越普及,網(wǎng)絡(luò)攻擊的手段也越來越復(fù)雜,提高物聯(lián)網(wǎng)控制終端APP的安全性迫在眉睫。本文介紹了APP測(cè)試要點(diǎn),通過對(duì)一個(gè)物聯(lián)網(wǎng)控制終端APP進(jìn)行安全檢測(cè),說明市場(chǎng)上的物聯(lián)網(wǎng)控制終端APP在安全方面存在很多問題,希望能提升用戶的安全意識(shí),引起開發(fā)人員的更多思考。

[1]李祖泉.物聯(lián)網(wǎng)控制終端APP安全加固方案設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2018.

[2]俞詩源,王譽(yù)天,劉鑫.Burpsuite 工具在漏洞檢測(cè)中的應(yīng)用[J].信息網(wǎng)絡(luò)安全,2016.

[3]常清雪.移動(dòng)Android APP安全檢測(cè)分析與研究[J]. 信息安全與技術(shù),2016.

[4]賴海超,張君,朱晨鳴.移動(dòng)APP安全及檢測(cè)體系分析[J].計(jì)算機(jī)時(shí)代,2018.

[5]邢曉燕,金洪穎,田敏.Android 系統(tǒng) Root 權(quán)限獲取與檢測(cè)[J].軟件,2013.

本課題得到教育部-中國移動(dòng)科研基金(MCM20170402)資助。

猜你喜歡
賬號(hào)密碼終端
密碼里的愛
復(fù)雜線束在雙BCI耦合下的終端響應(yīng)機(jī)理
玩游戲沒賬號(hào)租一個(gè)就行
施詐計(jì)騙走游戲賬號(hào)
X美術(shù)館首屆三年展:“終端〉_How Do We Begin?”
密碼抗倭立奇功
基于聲波檢測(cè)的地下防盜終端
“吃人不吐骨頭”的終端為王
密碼藏在何處
Google Play游戲取消賬號(hào)綁定沒有Google賬號(hào)也能玩
五原县| 修文县| 克拉玛依市| 科尔| 梅河口市| 阿尔山市| 根河市| 宾川县| 蒙城县| 新闻| 河南省| 车致| 泰和县| 宁明县| 花莲市| 邵阳县| 崇州市| 独山县| 循化| 洪洞县| 济南市| 贵州省| 山丹县| 宁南县| 龙州县| 荣昌县| 汶上县| 嘉祥县| 襄汾县| 邛崃市| 常州市| 彭水| 宜昌市| 涞源县| 淅川县| 绥德县| 曲阜市| 麦盖提县| 光泽县| 荔浦县| 全椒县|