付影平 馬 龍
(1.西安郵電大學(xué)信息中心,陜西 西安 710061;2.西安郵電大學(xué)計(jì)算機(jī)學(xué)院,陜西 西安 710061)
隨著移動(dòng)通信網(wǎng)絡(luò)技術(shù)的高速發(fā)展及移動(dòng)互聯(lián)網(wǎng)的普及,智能手機(jī)做為一種便捷的上網(wǎng)設(shè)備已被廣泛接受。據(jù)IDC2014年1月份數(shù)據(jù)報(bào)告,在過去的一年里,智能手機(jī)的全球出貨量突破10 億,Android 智能手機(jī)的份額更是占到了78.6%[1]。目前,針對的手機(jī)的騷擾電話、短信,病毒的侵襲等問題,國內(nèi)外有一些解決的辦法[2]。但對于手機(jī)廠商或者運(yùn)營商等的定制軟件的無端啟動(dòng)連接則沒有很好的辦法解決。本文分析了手機(jī)防火墻的主要工作模式,基于開源軟件Netfilter 框架提出了一種能綜合解決問題的方案。
手機(jī)防火墻的主要功能包括:通信攔截(騷擾電話短信),聯(lián)網(wǎng)過濾、權(quán)限管理三個(gè)方面。
與系統(tǒng)的交互主要包括:設(shè)置通訊黑名單,設(shè)置攔截關(guān)鍵字,在軟件權(quán)限分級結(jié)果上進(jìn)行添加信任操作,在風(fēng)險(xiǎn)應(yīng)用啟動(dòng)是彈框提示時(shí)進(jìn)行確認(rèn)操作和設(shè)置禁用聯(lián)網(wǎng)程序列表。
目前,Android 網(wǎng)絡(luò)防火墻是存在其他多種實(shí)現(xiàn)方式的,包括了應(yīng)用層的敏感函數(shù)hook、框架層的INTERNET 權(quán)限,以及基于Netfilter框架的Android 防火墻。他們的主要工作模式和優(yōu)缺點(diǎn),序號(hào)1:工作位置:Android 應(yīng)用層:敏感函數(shù)hook;工作原理:通過調(diào)用Android Framework 來實(shí)現(xiàn)網(wǎng)絡(luò)通訊的,所以遍歷對這些類中的所有函數(shù)然后把它們一個(gè)一個(gè)的全部鉤起來,這樣就可以起到防火墻所需的作用;主要方式:使用對每一個(gè)應(yīng)用本身進(jìn)行修改的方式加入Hook 代碼,之后再通過進(jìn)程注入的方式將Client 代碼再一次寫進(jìn)每個(gè)應(yīng)用的進(jìn)程中。當(dāng)進(jìn)程存在網(wǎng)絡(luò)活動(dòng)時(shí),應(yīng)用進(jìn)程會(huì)發(fā)起IPC 請求到Server 進(jìn)程并由Server 進(jìn)程決定是否對其放行;優(yōu)缺點(diǎn):優(yōu)勢就體現(xiàn)在無需root也可實(shí)現(xiàn)控制不能做到對所有的網(wǎng)絡(luò)訪問入口的攔截對騷擾短信電話攔截需另外開發(fā)。序號(hào)2:工作位置:Android 框架層:android.permission.INTERNET 權(quán)限;工作原理:在Android 操作系統(tǒng)中,任何應(yīng)用都必須申請android.permission.INTERNET 權(quán)限后才能訪問網(wǎng)絡(luò)。當(dāng)Zygote 服務(wù)fork()到一個(gè)AndroidManifest.xml 中存在該權(quán)限的應(yīng)用時(shí),會(huì)將其加入到inet 組中;主要方式:其一是變更應(yīng)用的AndroidManifest.xml 文件來去除對應(yīng)的權(quán)限,其二就是重寫Zygote 進(jìn)程阻止其在對說明文件偵測后將inet 加入應(yīng)用的gid 組中;優(yōu)缺點(diǎn):實(shí)現(xiàn)起來不算復(fù)雜。
對于一個(gè)被設(shè)置過的gid 組,程序不再擁有修改的權(quán)限,雖然能從根本上實(shí)現(xiàn)對應(yīng)用的上網(wǎng)權(quán)限禁止,但想再次獲得上網(wǎng)權(quán)限就必須使用Zygote 服務(wù)再一次生成對短信電話的攔截需另外開發(fā)。序號(hào)3:工作位置:Linux 內(nèi)核層:Netfilter/iptables:工作原理:Android 操作系統(tǒng)采用的是Linux 內(nèi)核,而在Linux 內(nèi)核中,Netfilter 在TCP/IP 的協(xié)議棧中加入了相應(yīng)的Hook,我們使用這些鏈鉤子來過濾或者丟棄指定的數(shù)據(jù)包:主要方式:要利用Linux 為我們提供的另一個(gè)工具iptables 來簡化這一步驟:優(yōu)缺點(diǎn):不需要進(jìn)程注入,又能對Wifi 和3G 網(wǎng)絡(luò)區(qū)分控制。
但需要取得root 權(quán)限。
安卓智能手機(jī)系統(tǒng)是基于Linux 操作系統(tǒng)的實(shí)現(xiàn)。Netfilter 是由Rusty Russell 提出的內(nèi)核防火墻框架,該框架分為用戶層和內(nèi)核層部分,在用戶層的iptables 的作用就是創(chuàng)建出鏈表規(guī)則,完成這些包過濾任務(wù)的還是位于內(nèi)核底層的Netfilter 以及相關(guān)的一些其它模塊。這個(gè)機(jī)構(gòu)既簡潔又靈活,可實(shí)現(xiàn)安全策略應(yīng)用中的許多功能。
對于一個(gè)Linux 自帶的防火墻來說,Netfilter 模塊中存放著各種表,每個(gè)表中又存在著不同的鏈,每個(gè)鏈中定義著各式的規(guī)則,而iptables 需要做的就是控制這些規(guī)則的增加、刪除、修改等操作,從而達(dá)成對網(wǎng)絡(luò)數(shù)據(jù)包的控制。
利用Netfilter 實(shí)現(xiàn)網(wǎng)絡(luò)防火墻比較簡單,只需要簡單的配置好安卓的開發(fā)環(huán)境,安裝好Netfilter 代碼,建立項(xiàng)目結(jié)構(gòu),然后以面向?qū)ο蟮姆绞秸{(diào)用Netfilter 所帶iptable 命令并進(jìn)行防火墻的搭建就行了。
圖1 項(xiàng)目結(jié)構(gòu)
在Broadcast.java 中重寫了onReceive 方法,這樣做可以在啟動(dòng)時(shí)就直接調(diào)用已經(jīng)定義好的iptables 規(guī)則。
圖2 重寫onReceive 方法
MainActivity.java 的作用就是定義程序的界面,它繼承Activity類,所有的交互都在這個(gè)類中實(shí)現(xiàn)。
圖3 MainActivity.java
圖4 ScriptThread
Interface.java 在這個(gè)項(xiàng)目中承擔(dān)著對常量數(shù)據(jù)進(jìn)行定義,配置生成iptables 腳本文件,生成App 信息等非常重要的工作,同時(shí)需要指出的是,SharePreference 是Android 中提供的一種用來存放簡單配置信息的數(shù)據(jù)類型,在這里正是使用的這種機(jī)制解決的iptables 規(guī)則存放問題。
Android 上的廣播存在著兩種不同的類型,一般情況下的廣播是異步的,這樣會(huì)被每一個(gè)接收者同時(shí)得到,這樣做是沒辦法實(shí)現(xiàn)攔截的,所以我們需要使用有序廣播的方式,提高優(yōu)先級獲得廣播。此時(shí)對于需要攔截的情況,只要終止廣播就可以實(shí)現(xiàn)黑名單攔截。
圖5 類PhoneReceiver
自Android 正式進(jìn)入4.0 時(shí)代以來,整個(gè)系統(tǒng)的長足進(jìn)步是每個(gè)人都看在眼里的,但是作為一把雙刃劍的開源政策在為Android 拉攏來眾多人氣的同時(shí),也必須為現(xiàn)在這種“碎片化”的狀況買單。
Netfilter 框架作為一種很好的開源防火墻的軟件實(shí)現(xiàn),因?yàn)橛辛薸ptable 命令規(guī)則的配置使用而變得比較簡單了,是的我們可以按照自己的意愿來進(jìn)行手機(jī)的防護(hù),對手機(jī)安全不失為一種好的辦法。
[1]李剛.瘋狂Android 講義[M].2 版.電子工業(yè)出版社,2014,02,01.
[2]徐娟娟,李玲玲.基于Netfilter 的防火墻原理分析[J].安徽淮南:信息產(chǎn)業(yè),2011.
[3]康海燕,陳然,苑曉姣,李清華.基于Android 防火墻日志系統(tǒng)的研究與實(shí)現(xiàn)[J].北京:北京信息科技大學(xué)學(xué)報(bào),2012,8.
[4]張磊.基于系統(tǒng)的手機(jī)防火墻的設(shè)計(jì)與實(shí)現(xiàn)[J].應(yīng)用研發(fā),2013.
[5]張?zhí)K穎.基于Android 系統(tǒng)的手機(jī)防火墻的設(shè)計(jì)及實(shí)現(xiàn)研究[J].信息與電腦,2012,12.