亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android手機App安全漏洞整理(小結)

 更新時間:2018年09月06日 09:16:24   作者:Caaacy_YU  
這篇文章主要介紹了Android手機App安全漏洞整理(小結),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文主要介紹了APP安全漏洞整理,分享給大家,具體如下:

1.源碼安全漏洞

1.1 代碼混淆漏洞

當前APK文件的安全性是非常令人堪憂的。APK運行環(huán)境依賴的文件/文件夾 res、DEX、主配文件Lib 只有簡單的加密或者甚至沒有任何加密。諸如apktool這類工具可輕易將其破解,再配合其他例如dex2jar、jd-gui等工具基本可以做到:源碼暴露、資源文件暴露、主配文件篡改、核心SO庫暴露、暴力破解惡意利用等。因此需要對安卓代碼進行代碼混淆。

代碼混淆(Obfuscated code)亦稱花指令,是將計算機程序的代碼,轉換成一種功能上等價,但是難于閱讀和理解的形式的行為。將代碼中的各種元素,如變量,函數(shù),類的名字改寫成無意義的名字。比如改寫成無意義的單個或多個字母,如a,Ac,甚至改寫成“__”這樣的符號,使得閱讀的人無法根據(jù)名字猜測其用途。代碼混淆并不能真正阻止反向工程,只能增大其難度。因此,對于對安全性要求很高的場合,僅僅使用代碼混淆并不能保證源代碼的安全,但是可以在一定程度上保護開發(fā)者的勞動成果。

1.2 Dex保護漏洞

Dex是Dalvik VM executes的全稱,即Android Dalvik執(zhí)行程序,相當于安卓中的.exe文件,Dex為Android應用的核心,保護不當容易被反編譯,暴露程序重要信息,面臨被植入廣告、惡意代碼、病毒等風險。

另外當使用DexClassLoader加載外部的 apk、jar 或 dex文件,當外部文件的來源無法控制時或是被篡改,此時無法保證加載的文件是否安全。加載惡意的dex文件將會導致任意命令的執(zhí)行。

1.3 so保護漏洞

so庫一般是程序里面核心代碼塊,通過Android提供的NDK技術將核心代碼用安全性更高的C/C++語言實現(xiàn)并提供給Java層調用來保證程序核心代碼的安全。高性能的代碼一般都會采取C/C++實現(xiàn),通過Android的NDK技術來讓Java層直接使用。其安全性相對于Java會高很多,相對于Java代碼來說其反編譯難度要大很多,但對于經驗豐富的破解者來說,仍然是很容易的事,可以通過暴力破解或國外高價工具來將其破解。應用的關鍵性功能或算法,都會在so中實現(xiàn),如果so被逆向,應用的關鍵性代碼和算法都將會暴露。

1.4 調試設置漏洞

如果在AndroidManifest.xml配置文件中設置了application屬性為debuggable=“true”,則應用可以被任意調試,這就為攻擊者調試和破解程序提供了極大方便。如果開啟,可被Java調試工具例如jdb進行調試,獲取和篡改用戶敏感信息,甚至分析并且修改代碼實現(xiàn)的業(yè)務邏輯,例如竊取用戶密碼,繞過驗證碼防護等。

2. 組件安全漏洞

2.1組件導出漏洞

組成Apk的四個組件,Activity,Service,Broadcast Receiver 和Content Provider,如果設置了導出權限,都可能被系統(tǒng)或者第三方的應用程序直接調出并使用。組件導出可能導致登錄界面被繞過、信息泄露、數(shù)據(jù)庫SQL注入、DOS、惡意調用等風險。

2.2 Activity組件漏洞

Activity是Android組件中最基本也是最為常見用的四大組件之一,是一個負責與用戶交互的組件。Activity組件中存在以下常見的漏洞。

 (1)activity綁定browserable與自定義協(xié)議

activity設置“android.intent.category.BROWSABLE”屬性并同時設置了自定義的協(xié)議android:scheme意味著可以通過瀏覽器使用自定義協(xié)議打開此activity??赡芡ㄟ^瀏覽器對app進行越權調用。

(2)ActivityManager漏洞

ActivityManager類中的killBackgroundProcesses函數(shù),用于殺死進程,屬于風險API。

還有通過ActivityManager被動嗅探intent。Intent嗅探腳本首先調用一個Context.getSystemService()函數(shù),并傳給它一個ACTIVITY_SERVICE標志的標識符,該函數(shù)返回一個ActivityManager類的實例,它使得該腳本能夠與activity manager進行交互,并通過這個對象調用ActivityManager.getRecentTasks()方法。最后把intent相關的信息格式化成字符串返回出來。

2.3 Service組件漏洞

Service作為Android中四大組件之一,擁有重要的地位。Service具有和Activity一樣的級別,只是沒有界面,是運行于后臺的服務。其他應用組件能夠啟動Service,并且當用戶切換到另外的應用場景,Service將持續(xù)在后臺運行。另外,一個組件能夠綁定到一個service與之交互(IPC機制),例如,一個service可能會處理網絡操作,播放音樂,操作文件I/O或者與內容提供者(content provider)交互,所有這些活動都是在后臺進行。從表面上看service并不具備危害性,但實際上service可以在后臺執(zhí)行一些敏感的操作。

Service存在的安全漏洞包括:權限提升,拒絕服務攻擊。沒有聲明任何權限的應用即可在沒有任何提示的情況下啟動該服務,完成該服務所作操作,對系統(tǒng)安全性產生極大影響。

2.4 Broadcast Receiver組件漏洞

Broadcast Receiver是“廣播接收者”的意思,就是用來接收來自系統(tǒng)和應用中的廣播。

(1)權限管理不當

Broadcast Receiver執(zhí)行一些敏感操作時,會通過intent來傳遞這些信息,這種傳遞數(shù)據(jù)的方式是容易被惡意攻擊的。在發(fā)掘broadcastreceiver中的漏洞時,最大的問題是確定輸入是否可信,以及破壞性有多強。

 以下面這段代碼為例(有縮略):

    <receiver
android:name=”.broadcastreceivers.SendSMSNowReceiver”
android:label=”Send SMS”>
    …………
         <actionandroid:name=”org.owasp.goatdroid.SOCIAL_SMS” />
    …………
    <uses-permissionandroid:name=”android.permission.SEND_SMS”/>
    …………

在上面這段代碼中,濫用了一個沒有進行適當權限保護的broadcast receiver,由于這個組件缺乏權限保護,使得攻擊者可以在沒有發(fā)送短信權限的情況下發(fā)送短信,這個漏洞的危害在于,攻擊者可以在用戶不知情的情況下發(fā)送短信去訂購一個付費服務,或者泄漏設備中的信息。

(2)BroadcastReceiver導出漏洞

當應用廣播接收器默認設置exported='true',導致應用可能接收到第三方惡意應用偽造的廣播,利用這一漏洞,攻擊者可以在用戶手機通知欄上推送任意消息,通過配合其它漏洞盜取本地隱私文件和執(zhí)行任意代碼。

(3)動態(tài)注冊廣播組件暴露漏洞

Android 可以在配置文件中聲明一個receiver或者動態(tài)注冊一個receiver來接收廣播信息,攻擊者假冒APP構造廣播發(fā)送給被攻擊的receiver,是被攻擊的APP執(zhí)行某些敏感行為或者返回敏感信息等,如果receiver接收到有害的數(shù)據(jù)或者命令時可能泄露數(shù)據(jù)或者做一些不當?shù)牟僮鳎瑫斐捎脩舻男畔⑿孤┥踔潦秦敭a損失。

2.5 Content Provider組件漏洞

Content Provider為存儲和獲取數(shù)據(jù)提供統(tǒng)一的接口。可以在不同的應用程序之間共享數(shù)據(jù)。

(1)讀寫權限漏洞

Content Provider中通常都含有大量有價值的信息,比如用的電話號碼或者社交帳號登錄口令,而確認一個content provider是否有能被攻擊的漏洞的最好的辦法,就是嘗試攻擊它一下。

可以用drozer來尋找一些不需要權限的contentprovider:

dz> runapp.provider.info –permission null

這條命令能列出所有不需要任何讀寫權限的Content Provider,然后找到相對應的包,去訪問給定包存放在它的Content Provider中的數(shù)據(jù)。如果一些Content Provider的URI不需要讀權限,那就可以通過drozer工具提取其中的數(shù)據(jù)。在某些情況下,設置和執(zhí)行讀寫權限不當,也會將ContentProvider中的數(shù)據(jù)暴露給攻擊者。除了提取數(shù)據(jù),對于寫權限管理不當?shù)腃ontent Provider還可以向其中寫入數(shù)據(jù),使得攻擊者可以將惡意數(shù)據(jù)插入到數(shù)據(jù)庫中。

(2)Content Provider中的SQL注入漏洞

和Web漏洞類似,安卓APP也要使用數(shù)據(jù)庫,那就也有可能存在SQL注入漏洞。主要有兩類,第一類是SQL語句中的查詢條件子語句是可注入的,第二類是投影操作子句是可注入的。使用drozer可以很容易的找出查詢條件子句可注入的content provider。

dz> runapp.provider.query [URI] –selection “1=1”

也可以使用其他恒為真的值,例如“1-1=0”,“0=0”等等。如果APP存在SQL注入漏洞,那么輸入這行指令后就會返回數(shù)據(jù)庫中的整張表。

(3)Provider文件目錄遍歷漏洞

當Provider被導出且覆寫了openFile方法時,沒有對Content Query Uri進行有效判斷或過濾。攻擊者可以利用openFile()接口進行文件目錄遍歷以達到訪問任意可讀文件的目的。

2.6 Intent組件漏洞

Intent(意圖)主要是解決Android應用的各項組件之間的通訊。

(1)隱式意圖調用漏洞

封裝Intent時采用隱式設置,只設定action,未限定具體的接收對象,導致Intent可被其他應用獲取并讀取其中數(shù)據(jù)。Intent隱式調用發(fā)送的意圖可能被第三方劫持,可能導致內部隱私數(shù)據(jù)泄露。

(2)意圖協(xié)議URL漏洞

intent schemeURLs(意圖協(xié)議URL),可以通過解析特定格式的URL直接向系統(tǒng)發(fā)送意圖,導致自身的未導出的組件可被調用,隱私信息泄露。

2.7 WebView組件漏洞

WebView是一個基于webkit引擎、展現(xiàn)web頁面的控件。

(1)Webview明文存儲密碼風險

Android的Webview組件中默認打開了提示用戶是否保存密碼的功能,如果用戶選擇保存,用戶名和密碼將被明文存儲到該應用目錄databases/webview.db中。而本地明文存儲的用戶名和密碼,不僅會被該應用隨意瀏覽,其他惡意程序也可能通過提權或者root的方式訪問該應用的webview數(shù)據(jù)庫,從而竊取用戶登錄過的用戶名信息以及密碼。

(2)Webview遠程代碼執(zhí)行漏洞

Webview是Android用于瀏覽網頁的組件,其包含的接口函數(shù)addJavascriptInterface可以將Java類或方法導出以供JavaScript調用,實現(xiàn)網頁JS與本地JAVA的交互。由于系統(tǒng)沒有限制已注冊JAVA類的方法調用,因此未注冊的其它任何JAVA類也可以被反射機制調用,這樣可能導致被篡改的URL中存在的惡意代碼被執(zhí)行,用戶手機被安裝木馬程序,發(fā)送扣費短信,通信錄或者短信被竊取,甚至手機被遠程控制。

(3)Webview繞過證書校驗漏洞

客戶端的Webview組件訪問使用HTTPS協(xié)議加密的url時,如果服務器證書校驗錯誤,客戶端應該拒絕繼續(xù)加載頁面。但如果重載WebView的onReceivedSslError()函數(shù)并在其中執(zhí)行handler.proceed(),客戶端可以繞過證書校驗錯誤繼續(xù)訪問此非法URL。這樣將會導致“中間人攻擊”,攻擊者冒充服務器與銀行客戶端進行交互,同時冒充銀行客戶端與銀行服務器進行交互,在充當中間人轉發(fā)信息的時候,竊取手機號,賬號,密碼等敏感信息。

(4)未移除有風險的Webview系統(tǒng)隱藏接口

android webview組件包含3個隱藏的系統(tǒng)接口:searchBoxJavaBridge, accessibilityTraversal以及accessibility,惡意程序可以利用它們實現(xiàn)遠程代碼執(zhí)行。需通過顯示調用removeJavascriptInterface移除這三個系統(tǒng)隱藏接口。

(5)WebView忽略SSL證書錯誤

WebView調用onReceivedSslError方法時,直接執(zhí)行handler.proceed()來忽略該證書錯誤。忽略SSL證書錯誤可能引起中間人攻擊。 

3.數(shù)據(jù)安全漏洞

3.1 數(shù)據(jù)存儲漏洞

(1)SharedPreferences漏洞

當使用getSharedPreferences打開文件,第二個參數(shù)設置為MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE。當前文件可以被其他應用讀取或寫入篡改,導致信息泄漏或更嚴重的問題。

(2)File任意讀寫漏洞

如果開發(fā)者使用openFileOutput(String name,int mode)方法創(chuàng)建內部文件時,使用MODE_WORLD_READABLE或 MODE_WORLD_WRITEABLE模式,就會讓這個文件變?yōu)槿挚勺x或全局可寫的。

3.2 數(shù)據(jù)加密漏洞

(1)明文數(shù)字證書漏洞

Apk中使用的數(shù)字證書可被用來校驗服務器的合法身份,以及在與服務器進行通信的過程中對傳輸數(shù)據(jù)進行加密、解密運算,保證傳輸數(shù)據(jù)的保密性、完整性。明文存儲的數(shù)字證書如果被篡改,客戶端可能連接到假冒的服務端上,導致用戶名、密碼等信息被竊??;如果明文證書被盜取,可能造成傳輸數(shù)據(jù)被截獲解密,用戶信息泄露,或者偽造客戶端向服務器發(fā)送請求,篡改服務器中的用戶數(shù)據(jù)或造成服務器響應異常。

(2)AES/DES弱加密

在AES加密時,使用“AES/ECB/NoPadding”或“AES/ECB/PKCS5padding”的模式。ECB是將文件分塊后對文件塊做同一加密,破解加密只需要針對一個文件塊進行解密,降低了破解難度和文件安全性。

(3)setSeed偽隨機數(shù)漏洞

本地加密時如果使用SecureRandom中的setSeed方法設置種子將會造成生成的隨機數(shù)不隨機,使加密數(shù)據(jù)容易被破解。在SecureRandom生成隨機數(shù)時,如果不調用setSeed方法,SecureRandom會從系統(tǒng)中找到一個默認隨機源。每次生成隨機數(shù)時都會從這個隨機源中取seed。

3.3 數(shù)據(jù)傳輸漏洞

(1)SSL通信服務端檢測信任任意證書

自定義SSL x509 TrustManager,重寫checkServerTrusted方法,方法內不做任何服務端的證書校驗。黑客可以使用中間人攻擊獲取加密內容。

(2)未使用HTTPS協(xié)議的數(shù)據(jù)傳輸

無線傳輸?shù)臄?shù)據(jù)能被第三方輕易截獲,由于客戶端與服務器之間的傳輸數(shù)據(jù)遵循通信協(xié)議指定的格式和內容類型,如果未使用加密措施,傳輸數(shù)據(jù)可被還原成網絡層的數(shù)據(jù)包并進行解包分析,直接暴露用戶的各種關鍵數(shù)據(jù),例如用戶名,密碼等。加入了SSL(Secure SocketLayer)子層實現(xiàn)的HTTPS協(xié)議可確保數(shù)據(jù)在網絡上加密傳輸,即使傳輸?shù)臄?shù)據(jù)被截獲,也無法解密和還原。

(3)HTTPS未校驗服務器證書漏洞

使用HTTPS協(xié)議時,客戶端必須對服務器證書進行完整校驗,以驗證服務器是真實合法的目標服務器。如果沒有校驗,客戶端可能與仿冒的服務器建立通信鏈接,即“中間人攻擊”。仿冒的中間人可以冒充服務器與銀行客戶端進行交互,同時冒充銀行客戶端與銀行服務器進行交互,在充當中間人轉發(fā)信息的時候,竊取手機號,賬號,密碼等敏感信息。

(4)HTTPS關閉主機名驗證

構造HttpClient時,設置HostnameVerifier時參數(shù)使用ALLOW_ALL_HOSTNAME_VERIFIER或空的HostnameVerifier。關閉主機名校驗可以導致黑客使用中間人攻擊獲取加密內容。

(5)開放socket端口

app綁定端口進行監(jiān)聽,建立連接后可接收外部發(fā)送的數(shù)據(jù)。攻擊者可構造惡意數(shù)據(jù)對端口進行測試,對于綁定了IP 0.0.0.0的app可發(fā)起遠程攻擊。

3.4 日志信息漏洞

(1)調試日志函數(shù)調用風險

調試日志函數(shù)可能輸出重要的日志文件,其中包含的信息可能導致客戶端用戶信息泄露,暴露客戶端代碼邏輯等,為發(fā)起攻擊提供便利,例如:Activity的組件名,是Activity劫持需要的信息;通信交互的日志,會成為發(fā)動服務器攻擊的依據(jù);跟蹤的變量值,可能泄露一些敏感數(shù)據(jù),輸入的賬號、密碼等。

4.業(yè)務邏輯漏洞

4.1 權限漏洞

(1)全局文件可讀寫

APP在創(chuàng)建內部存儲文件時,將文件設置了全局的可讀權限。攻擊者惡意讀取文件內容,獲取敏感信息,或惡意寫文件,破壞完整性。

(2)敏感權限調用

在Manifest文件中調用一些敏感的用戶權限,敏感行為包括發(fā)送、攔截短信,讀取、修改通訊錄、通話記錄,撥打電話,發(fā)送地理位置,使用攝像頭,訪問瀏覽器歷史記錄等。函數(shù)調用這些敏感行為,可能導致用戶隱私數(shù)據(jù)泄露,釣魚扣費等風險。

(3)冗余權限

如果調用了非必須的權限,就會出現(xiàn)冗余權限,冗余權限可導致串謀攻擊,串權限攻擊的核心思想是程序A有某個特定的執(zhí)行權限,程序B沒有這個權限。但是B可以利用A的權限來執(zhí)行需要A權限才能完成的功能。

4.2 業(yè)務漏洞

業(yè)務漏洞需要依靠機器和人共同檢測,需要根據(jù)應用功能作用的不同來進行判斷。機器可以檢測一些通用的業(yè)務漏洞,例如廣告、非授權下載、扣費短信等業(yè)務,而人工則判斷應用在面向不同業(yè)務邏輯時產生的漏洞,例如登錄驗證不完善、不可信的敏感數(shù)據(jù)交付等。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論