Android防火牆實現

2021-07-25 02:23:27 字數 1898 閱讀 2662

智慧型手機網路防火牆的現狀

隨著智慧型手機越來越普及,以及3g網路的快速發展,越來越多的使用者使用手機上網衝浪。於此同時,各類惡意軟體也通過網路來盜取使用者手機上的的隱私,甚至控制使用者的手機。因此智慧型手機上的防火牆應運而生。 與pc上的環境不同, android手機上的網路環境相對沒有那麼複雜。因此現行主流的android防火牆解決方案都是對手機裡的應用設定網路訪問許可權,而不會像pc上的防火牆那樣提供強大的網路監視、資料報過濾、埠監控等功能。

b) android框架層:android.permission.internet許可權 i. 在android系統中,任何想訪問網路的應用必須申請android.permission.internet許可權。當zygote在fork()乙個androidmanifest.xml中帶有這個許可權的應用時,會將當前應用加到inet組中。凡是乙個程序的gid組中有inet,那麼這個應用就有許可權上網。 ii. 因此禁止應用上網有兩種方式:1. 修改應用的androidmanifest.xml,使其沒有android.permission.internet許可權。2. 獲得root許可權,然後注入zygote程序,使其在fork()之後,不要將inet設到應用的gid組中。 iii. 這個方案相對於第乙個方案來說,它可以徹底的遮蔽乙個應用上網。實現起來也不複雜,但是gid組一旦設定後,應用程序將再無許可權修改。因此被禁止掉上網許可權的程序,想要再次獲得上網許可權,則必須殺死,然後重新由zygote程序fork()生成。

c) linux核心層:iptables i. 在linux核心中,networkfilter在tcp/ip的協議棧中加了相應的hook。通過這些hook我們可以對網路資料報可以進行過濾,丟棄,修改等。但直接使用起來相對麻煩。幸好linux給我們提供了乙個強大的工具:iptables來簡化這一過程。iptables是乙個linux命令,通過這個命令,可以對整個系統發出去的包,接收到的包,以及**的包進行攔截,修改,拒絕等操作。具體起使用方法,這裡不再展開,有興趣的朋友可以自行到網上搜尋相應的資料即可。 ii. iptable不僅可以按照uid來禁用應用上網,還可以分別禁用某個uid的3g上網和wifi上網。這給使用者帶來的極大的方便。 iii. 這個方案的優點是,不需要程序注入,所以實現起來相對簡單。同時能夠將3g網路和wifi網路分別禁用,使用者體驗將更加好。此外由於iptables的功能遠不止這些,基於iptables可以實現功能更加強大的防火牆。iptable雖然好,但是也是有缺點的,執行iptables需要root許可權。基於iptables的android防火牆目前有許多,這裡有乙個開源的專案 有興趣的朋友,可以研究一下。目前主流安全軟體的聯網攔截功能,如360手機衛士,手機毒霸等都是使用這一方案。

總結 以上主要介紹了通過三個層面來控制乙個應用的上網。具體使用哪一種,需要看使用者的需求,以及手機的系統環境而定。 a) 如果不能獲得root許可權,基本思路就是定製修改apk,可以考慮加入hook**,或者是壓根在androidmanifest.xml裡將android.permission.internet許可權去除。 b) 如果能獲得root許可權,可以考慮注入zygote,使之fork()之後不加入inet組,還可以注入應用程序加上敏感函式的hook。此外還可以使用iptables命令。 c) 如果使用者希望不殺死程序就實現上網許可權的開關,並且要求可以分別禁用3g網路和wifi網路的話,那麼非iptables不可了。

其實比較下來,還是基於iptables的方案相對較好。它似乎只有乙個缺點就是需要root許可權。但大家又知道一旦手機被root以後,安全性反而將大大降低。我們可否找到一種手機既不被root,又能使用iptables的方案呢?

我們 @安卓安全小分隊 已經實現了上述方案,並且效果還不錯。我們在init.rc裡新增了乙個service,並且授予這個service root許可權。這個service起來之後,會等待client端請求。對於這個client端,我們對外提供了一套sdk,應用程式只需呼叫這套sdk api就可以和這個root service進行通訊了,然後就可以間接執行iptables命令。

防火牆 防火牆安全

作為計算機的第一道屏障,防火牆的重要性不言而喻,儘管防火牆在面臨網路攻擊時仍有很大的缺陷,不如無法阻止自內而外的攻擊,對複雜多變的網路攻擊攻擊無法預警和像ids所做的那樣。但防火牆依然是伺服器乃至個人機的一道不可或缺的屏障。木桶原理 本文將對防火牆做乙個初步的簡介,顯然像我們知道的那樣,防火牆是一款...

防火牆系列(一) 何為防火牆

簡單解釋下內聯網路和外聯網路 內聯網路類似於區域網是指某個企業或者單位內部互動的網路,外聯網路就是外部的internet 部署在使用者內聯網路和外聯網路之間的一道屏障,一切內外聯網路交換的資料都應該通過防火牆裝置。以預先定義好的安全規則為標準,防火牆將對通過他的資料進行安全監測,符合安全規則的資料流...

android85 簡訊防火牆

系統收到簡訊是有廣播的,廣播中包含了簡訊的號碼和內容 簡訊防火牆 系統傳送簡訊廣播時,是怎麼把簡訊內容存入廣播的,我們就只能怎麼取出來 如果簡訊過長,那麼傳送時會拆分成多條簡訊傳送,那麼簡訊廣播中就會包含多條簡訊 4.0之後,廣播接收者所在程序如果從來沒啟動過,那麼廣播接收者不會生效 4.0之後,如...