版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1、移動AP吸全風險分析1.1、安全威脅分析安全威脅從三個不同環(huán)節(jié)進行劃分,主要分為客戶端威脅、數(shù)據(jù)傳輸端威脅和服務(wù)端的威脅。客戶端數(shù)據(jù)傳輸服務(wù)端Internet面臨的主要風險客戶端數(shù)據(jù)傳輸p 加3山服務(wù)則數(shù)據(jù)竊聽中間人攻擊信息泄露業(yè)務(wù)邏輯漏洞SQL注入XSS上傳漏洞暴力破解安全策略反編譯防二次打包組件導(dǎo)出Webview 漏洞鍵盤安全屏幕截屏風險數(shù)據(jù)安全界面劫持本地拒絕服務(wù)數(shù)據(jù)備份風險Debug調(diào)試風險Android測試思維導(dǎo)圖客戶端A?F安全業(yè)務(wù)安全科克東度策略丁筠策弟要蒜足亙雜度要求,不冗琳珍玉弱匕有,認證失咬恢定量連續(xù)X定失敗3次效力5次演起先3,單點登錄限制茉第同一時間只九A一個麻號在
2、一個地方登陸,合活超門策略設(shè)S會話則時用潮g加分林,u;敬慈信危安全味W和密碼輸入惜決時均受力二外號或空碼愷誤”安仝退出客戶璃在用戶退出登錄時,服務(wù)話要及時清除【生否性改驗證更碼傳改變衰有對前窗碼船“證I手一引口你我知消手嫄碼收改時一妾升前手勢在當進行認證手勢密碼:手外密碼木地作息伴行碼他信且煙帶手外我能定笨畤違貨多型證失股說定麻邑應(yīng)煙諼APP加苗或者代碼混滑或杳加克處理防二次打包為正好F簽名至中二次打包后APF的笠名與SFlSfilAFF妥名曲行對比aci網(wǎng)體檢則組件是理1祀外都應(yīng)用出咫/ rxs組件槍則好件是否可以祓外部應(yīng)同詞即-:W-8二crd pm。垃組件檢雉月件是否可以被外部應(yīng)用劃月
3、 bioadO 1sgius組件檢則組件是否可以祓外信應(yīng)用詞而APP所H曰一的文件直累ATP所在日一又件其也比斯員不可侯岳/ 教潴一乂件的安全住圭安信息支行加定存詰效強安全/ LogeM日志同有敬感信息的調(diào)漢信息開關(guān)一定夏天閉 麻文在蚱Sdcard皴底數(shù)VT-存儲在SDcard上面;APP-翕/何是舌存白全感信息,例2&xcm.tokcn、人奇寺口盤珈他者白湍開笈自帛文軟城盤防止糖田卻忤汝士他占安全,十一丁旭機荷卮田穴建起蓄戶一時自定義軟金半逸行隨機化處理國壽整屏防止通過連袋猿3是否可以摧提到用戶上碼朝入隹的交碼界面劫抄防止not w工ty被劫冷本地拒據(jù)帝芬使小叮Rch方式進行摘票所有異章以防
4、止應(yīng)用出雙拒霜用芬任應(yīng)代西族。屆道.elr/iev安全風圈 /、*距文存情扁二應(yīng)用折蚱1備份AFFfi1.ndroL Wriifest. kwJ allovbackup星性退置為亍al迎debugiSlit美 ifldebug 調(diào) lit 功能通過抓包工艮魚看江戶璃AFP也腥芬或逋齒是否采用http。逋值競校聆:替戶端楨存一包跟芬瑞證期豌音征兆的5, 中間會擊史時眠若就江書和本地標簿的一疊。一:蕃戶淋粒米由/湍證書械至、匾卷機構(gòu)、目客白瑞訪近的下T早否R能由手機客戶誡訪日黔證碼m鎰用一次,用宴印失效驗證司/、盼證科有效異國刊,例$05細或者緲鐘內(nèi)有更任意詠2 注冊優(yōu)信也勿攻擊業(yè)莽平行甜女越雙肩
5、伺/二 T二、一幽灰、vxb應(yīng)用常見后問:可如SQL注入, KSS,上傳, 11套文件下軾萼等、反編譯工具有兩種反編譯方式,dex2jar和apktool,兩個工具反編譯的效果是不一樣的,dex2jar反編譯出java源代碼,apktool反編譯出來的是java匯編代碼。dex2jar主要是用來把之前zip解壓出來的 classed.dex轉(zhuǎn)成jar包的jd-gui主要是用來打開 Jar包的2、本地客戶端安全反編譯保護問題描述APP源代碼對于一個公司是非常重要的信息資源,對APP的保護也尤為重要,APP的反編譯會造成源代碼被惡意者讀取,以及APP的邏輯設(shè)計, 反編譯方法 我們一般想要反編譯一個
6、apk,無非就是想獲得三樣?xùn)|西:圖片資源、 XML資源、代碼資源.圖片資源獲取首先準備一個apk,這里是一個.apk后綴的文件,我們先把后綴改成,zip,打開zip文件在res目錄下,我們就可以獲取到我們需要的圖片了。.XML資源獲取我們可以在剛剛打開的zip文件目錄下看到很多.xml的文件,這個xml文件是無法直接打開的,當你嘗試著打開的時候都是亂碼或者是空白,那么我們要如何獲取到這個 xml資源呢,這時候就需要借助一個jar包,就是它,axmlprinter2.jar ,這個東西你只要百度下,就能搜到。然后你把他放跟你解壓出來的xml放在同級目錄下,用 cmd命令找到這個目錄, 我這邊的示
7、例是將 xml放在了 E盤,大家卞據(jù)情況,cd到自己解壓出來的目錄下,然后執(zhí)行java -jar AXMLPrinter2.jar xxxxx.xmlxxxxx.txt 這個時候你就能獲取到xml里的東西啦.代碼資源獲取這個重中之重了,這也是我們主要想要獲取到的東西。但是存在一點,這里能夠正確反編譯出來的只有未加密或者 沒有混淆的代碼,如果想要反編譯一些加密或者混淆后代碼,俺們就需要其他途徑解決了首先要準備兩樣?xùn)|西:dex2jar.rar和jd-gui.zip這兩個工具。dex2jar主要是用來把之前 zip解壓出來的 classed.dex轉(zhuǎn)成jar包的 jd-gui主要是用來打開 Jar包
8、的dex2jar 用法:把dex2jar解壓后,然后將之前 zip的classes.dex放到dex2jar目錄下, 注意,必須要跟 dex2jar.bat是同級目錄。然后又要用到cmd , cd到dex2jar目錄下,打命令行dex2jar.bat classes.dex然后你的目錄里會多一個jar包多了一個 classes-dex2jar.jar 的文件然后在用jd-gui把jar包打開,最終apk的代碼就這樣被剝離出來了檢測方法通過反編譯工具看是否能夠?qū)PP進行反編譯修復(fù)方法采用加密和混淆技術(shù)達到反編譯保護?;煜夹g(shù)作用是增加了用戶反編譯后閱讀代碼的難度。APP二次打包二次打包描述“A
9、ndroicAPP二次打包”則是盜版正規(guī) Android APP,破解后植入惡意代碼重新打包。不管從性能、用戶體驗、外觀 它都跟正規(guī)APP一模一樣但是背后它確悄悄運行著可怕的程序,它會在不知不覺中浪費手機電量、流量,惡意扣費、偷窺隱私等等行為。面對二次打包不少公司都有自己的防范措施,知名公司的APP幾乎都是自己在程序內(nèi)部做過處理防止其APP被二次打包,一旦打包后重新運行則程序自動退出。接下來,我就來詳解一下如何防止APP被二次打包。要實現(xiàn)代碼內(nèi)部防止 APP被二次打包首先得了解 APK的機器識別原理,APK的唯一識別是依靠包名和簽名來做鑒定的,類似豌豆夾的洗白白、360手機衛(wèi)士等安全軟件對 A
10、PK的山寨識別,他們就是依賴包名來確定APK然后通過簽名來確定其是否山寨。 所以說自己的程序內(nèi)部在啟動的時候可以通過獲取APK本身的簽名然后和正確的簽名做對比來識別自己是否被二次打包。防二次打包檢測方法利用二次打包工具對 APP進行二次打包,看APP能否成功打包運行,如果重新打包后無法運行程序說明有防二次打 包安全措施。防二次打包修復(fù)方法采用簽名的方法進行保護:獲取二次打包后APK的簽名與正確的 APK簽名做對比,判斷 APK程序是否進行過二次打包。建議:客戶端使用從屬方證書進行簽名后進行發(fā)布而不是使用第三方開發(fā)商的證書進行簽名,以防開發(fā)商內(nèi)部監(jiān)管 異常,證書濫用的情況出現(xiàn)。組件導(dǎo)出安全四大組
11、件描述Android 主要包含 4 大組件,分別是 activity 組件、service 組件、content provider 組件和 broadcast receiver 組件。 Activity 組件一個Activity通常就是一個單獨的屏幕(窗口)。Activity之間通過Intent進行通信。android應(yīng)用中每一個 Activity都必須要在 AndroidManifest.xml配置文件中聲明,否則系統(tǒng)將不識別也不執(zhí)行 該 Activity。Service 組件(1)service用于在后臺完成用戶指定的操作。(2)開發(fā)人員需要在應(yīng)用程序AndroidManifest.xml
12、配置文件中聲明全部的service,使用標簽。(3)Service通常位于后臺運行,它一般不需要與用戶交互,因此 Service組件沒有圖形用戶界面。Service組件需要繼承Service基類。Service組件通常用于為其他組件提供后臺服務(wù)或監(jiān)控其他組件的運行狀態(tài)。Content Provider 組件android平臺提供了 Content Provider使一個應(yīng)用程序的指定數(shù)據(jù)集提供給其他應(yīng)用程序。其他應(yīng)用可以通過ContentResolver類從該內(nèi)容提供者中獲取或存入數(shù)據(jù)。(2)只有需要在多個應(yīng)用程序間共享數(shù)據(jù)是才需要內(nèi)容提供者。例如,通訊錄數(shù)據(jù)被多個應(yīng)用程序使用,且必須 存儲在
13、一個內(nèi)容提供者中。它的好處是統(tǒng)一數(shù)據(jù)訪問方式。(3) ContentProvider實現(xiàn)數(shù)據(jù)共享。ContentProvider用于保存和獲取數(shù)據(jù),并使其對所有應(yīng)用程序可見。這是不同應(yīng)用程序間共享數(shù)據(jù)的唯一方式,因為 android沒有提供所有應(yīng)用共同訪問的公共存儲區(qū)。broadcast receiver(1)你的應(yīng)用可以使用它對外部事件進行過濾,只對感興趣的外部事件(如當電話呼入時,或者數(shù)據(jù)網(wǎng)絡(luò)可用時)進行接收并做出響應(yīng)。廣播接收器沒有用戶界面。然而,它們可以啟動一個 activity或serice來響應(yīng)它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種
14、方式來吸引用戶的注意力,例如閃動背燈、震動、播放 聲音等。一般來說是在狀態(tài)欄上放一個持久的圖標,用戶可以打開它并獲取消息。(2)廣播接收者的注冊有兩種方法,分別是程序動態(tài)注冊和AndroidManifest文件中進行靜態(tài)注冊。(3)動態(tài)注冊廣播接收器特點是當用來注冊的Activity關(guān)掉后,廣播也就失效了。靜態(tài)注冊無需擔憂廣播接收器是否被關(guān)閉,只要設(shè)備是開啟狀態(tài),廣播接收器也是打開著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在觸發(fā)時也會對它起作用。四大組件總結(jié)4大組件的注冊4大基本組件都需要注冊才能使用,每個 Activity service Content Provider都需要在
15、 AndroidManifest文件中進行 配置。AndroidManifest文件中未進行聲明的activity 服務(wù)以及內(nèi)容提供者將不為系統(tǒng)所見,從而也就不可用。而broadcast receiver廣播接收者的注冊分靜態(tài)注冊(在 AndroidManifest文件中進行配置)和通過代碼動態(tài)創(chuàng)建并以 調(diào)用Context.registerReceiver()的方式注冊至系統(tǒng)。需要注意的是在 AndroidManifest文件中進行配置的廣播接收者會隨系統(tǒng)的啟動而一直處于活躍狀態(tài),只要接收到感興趣的廣播就會觸發(fā)(即使程序未運行)。4大組件的激活內(nèi)容提供者的激活:當接收到 ContentReso
16、lver發(fā)出的請求后,內(nèi)容提供者被激活。而其它三種組件activity、服務(wù)和廣播接收器被一種叫做intent的異步消息所激活。組件安全檢查方法1、AndroidManifest.xml文件中activity組件里面有設(shè)置 android:exported為true ,表示此組件可以被外部應(yīng)用調(diào)用。2、AndroidManifest.xml文件中activity組件里面有設(shè)置 android:exported為false,表示此組件不可以被外部應(yīng)用調(diào) 用。只有同一個應(yīng)用的組件或者有著同樣user ID的應(yīng)用可以3、AndroidManifest.xml 文件中 activity 組件里面沒有設(shè)
17、置android:exported 屬性,但是有 intent -filter ,則 exported默認屬性為true, true表示此組件可以被外部應(yīng)用調(diào)用。4 AndroidManifest.xml 文件中 activity 組件里面沒有設(shè)置 android:exported 屬性,也沒有設(shè)置 intent filter,則 exported 默認屬性為false, false表示此組件不可以被外部應(yīng)用調(diào)用。只有同一個應(yīng)用的組件或者有著同樣user ID的應(yīng)用可以備注:采用drozer工具可以進行檢測組件是否存在導(dǎo)出風險修復(fù)建議(1)如果應(yīng)用的Service組件不必要導(dǎo)出,或者組件配置了
18、intent filter標簽,建議顯示設(shè)置組件的“android:exported屬性為false(2)如果組件必須要提供給外部應(yīng)用使用,建議對組件進行權(quán)限控制Webview漏洞WebView任意代碼執(zhí)行漏洞描述出現(xiàn)該漏洞的原因有三個WebView 中 addJavascriptInterface () 接口WebView 內(nèi)置導(dǎo)出的 searchBoxJavaBridge_寸象WebView 內(nèi)置導(dǎo)出的 accessibility 和 accessibilityTraversalObject 對象addJavascriptInterface接口引起遠程代碼執(zhí)行漏洞JS調(diào)用Android的其
19、中一個方式是通過addJavascriptInterface接口進行對象映射,當JS拿至U Android這個對象后,就可以調(diào)用這個 Android對象中所有的方法,包括系統(tǒng)類(java.lang.Runtime類),從而進行任意代碼執(zhí)行。searchBoxJavaBridgejU 口引起遠程代碼執(zhí)行漏洞在Android 3.0以下,Android系統(tǒng)會默認通過 searchBoxJavaBridge_勺Js接口給 WebView 添加一個JS映射對象: searchBoxJavaBridge歲寸象該接口可能被利用,實現(xiàn)遠程任意代碼。accessibility和accessibilityTra
20、versal接口引起遠程代碼執(zhí)行漏洞問題類似以上檢測方法addJavascriptInterface接口引起遠程代碼執(zhí)行漏洞檢查是通過addJavascriptInterface接口進行對象映射searchBoxJavaBridgejU 口引起遠程代碼執(zhí)行漏洞檢查是否通過 searchBoxJavaBridge_勺Js接口給WebView添加一個JS映射對象accessibility和accessibilityTraversal接口引起遠程代碼執(zhí)行漏洞問題類似以上修復(fù)建議addJavascriptInterface接口引起遠程代碼執(zhí)行漏洞Android 4.2 版本之后Google在Andro
21、id 4.2版本中規(guī)定對被調(diào)用的函數(shù)以JavascriptInterface進行注解從而避免漏洞x x xAndroid 4.2 版本之前在Android 4.2版本之前采用攔截 prompt ()進行漏洞修復(fù)。searchBoxJavaBridgejU 口引起遠程代碼執(zhí)行漏洞刪除 searchBoxJavaBridgeJU 口/通過調(diào)用該方法刪除接口removeJavascriptInterface ();accessibility和accessibilityTraversal接口引起遠程代碼執(zhí)行漏洞刪除 accessibility 和 accessibilityTraversal 接 口密
22、碼明文存儲漏洞描述WebView默認開啟密碼保存功能:mWebView.setSavePassword(true)開啟后,在用戶輸入密碼時,會彈出提示框:詢問用戶是否保存密碼;如果選擇是,密碼會被明文保到/data/data/databases/webview.db 中,這樣就有被盜取密碼的危險檢測方法方法1、用戶輸入密碼時看是否有彈出提示框,詢問用戶是否保存密碼,如果有詢問則表示存在漏洞,否則不存在。方法2、檢查代碼中 setSavePassword的值是否為false。修復(fù)建議關(guān)閉密碼保存提醒WebSettings.setSavePassword(false)數(shù)據(jù)安全-本地敏感信息安全AP
23、P所在目錄的文件權(quán)限、問題描述測試客戶端APP所在目錄的文件權(quán)限是否設(shè)置正確,非 root賬戶是否可以讀,寫,執(zhí)行 APP目錄下的文件。檢測方法采用ls -查看app目錄的文件權(quán)限,其它組成員不允許讀寫權(quán)限。Linux文件權(quán)限為第一個為文件所有者對此文件的權(quán)限,第二個為所有者所在組的其它成員對此文件的權(quán)限,第三個為其他組成員對此文件的權(quán)限。修復(fù)建議檢查App所在的目錄,其權(quán)限必須為不允許其他組成員讀寫SQLite數(shù)據(jù)庫文件的安全性描述SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng).是開源的,高效率的,可嵌入且程序驅(qū)動的數(shù)據(jù)庫。我們都知道,Android系統(tǒng)內(nèi)置了 SQL
24、ite數(shù)據(jù)庫,并且提供了一整套的API用于對數(shù)據(jù)庫進行增刪改查操作。數(shù)據(jù)庫存儲是我們經(jīng)常會使用到的一種存儲方式,相信大多數(shù)朋友對它的使用方法都已經(jīng)比較熟悉了吧。在Android中,我們既可以使用原生的 SQL語句來對數(shù)據(jù)進行操作,也可以使用Android API提供的CRUD方法來對數(shù)據(jù)庫進行操作, 兩種方式各有特點,選擇使用哪一種就全憑個人喜好了。不過,使用SQLite來存儲數(shù)據(jù)卻存在著一個問題。因為大多數(shù)的 Android手機都是Root過的,而Root過的手機都 可以進入到/data/data/databases目錄下面,在這里就可以查看到數(shù)據(jù)庫中存儲的所有數(shù)據(jù)。如果是一般的數(shù)據(jù)還 好,
25、但是當涉及到一些賬號密碼,或者聊天內(nèi)容的時候,我們的程序就會面臨嚴重的安全漏洞隱患。檢測方法手機進行root之后,查看/data/data/databases下的數(shù)據(jù)庫文件是否包含敏感信息。修復(fù)建議重要信息進行加密存儲Logcat 日志描述檢測客戶端對應(yīng)的 Logcat日志是否會打印一些用戶或服務(wù)器的敏感信息。檢測方法通過usb連接手機,然后使用adb logcat -v time d:xx的方式獲取logcat信息或者使用DDMS工具查看logcat信息。修復(fù)建議具有敏感信息的調(diào)試信息開關(guān)一定要關(guān)閉。對于安卓開發(fā)來講,我們解決敏感信息問題就是對重要數(shù)據(jù)進行加密存儲,10g日志不打印敏感信息。
26、切記不要把賬號密碼等敏感信息保存在本地明文存儲,如果一定要存儲敏感信息務(wù)必進行加密存儲重要信息。敏感數(shù)據(jù)明文存儲于 Sdcard描述Android提供了幾種保存持久化應(yīng)用數(shù)據(jù)的選擇,其中之一就是外部存儲( /sdcard,/mnt/sdcard )。外部存儲包括設(shè) 備內(nèi)部的微型或標準大小的SD卡,掛載到PC上的Android設(shè)備存儲卡以及 Android/obb目錄。Android4.1之前的版本,存放在外部存儲的文件是world -readable (能夠被任何用戶讀取的)和 world -writable (能夠被任何用戶寫入)。從Android4.1到Android4.3 ,一個app想
27、要寫入外部存儲的任意文件時,只需在AndroidManifest文件中聲明 WRITE_EXTERNAL_STORAGE限。但從Android4.4開始,引入了基于目錄結(jié)構(gòu)創(chuàng)建分組和文件模式,這 使得一個app在外部存儲中的只能在以自己包名命名的目錄下才具有文件的讀寫權(quán)限。非系統(tǒng)級的app只允許在Android/data/目錄下操作。因此,每個app的文件讀寫權(quán)限被獨立開來,不能互相訪問。上面描述的訪問權(quán)限限制的不足,導(dǎo)致寫入到外部存儲的文件可能存在被同一設(shè)備上不同的app修改和讀取的風險(Android4.4 之前版本)。檢測方法查看是否有代碼把內(nèi)容寫入到外部存儲設(shè)備。修復(fù)建議在將文件保存到
28、外部存儲之前,先對文件內(nèi)容進行加密。鍵盤安全風險鍵盤劫持測試描述安卓應(yīng)用中的輸入框默認使用系統(tǒng)軟鍵盤,手機安裝xx啟,xx取:以通過替換系統(tǒng)軟鍵盤,記錄應(yīng)用的密碼。檢測方法通過觀察app在輸入密碼的地方是否會彈出自定義的軟鍵盤。修復(fù)建議建議客戶端開發(fā)自定義軟鍵盤而不是使用系統(tǒng)軟件盤以防止鍵盤劫持x xox軟鍵盤安全性測試描述測試客戶端是否使用隨機布局的密碼軟鍵盤。檢測方法用眼觀察每次彈出來的自定義的軟鍵盤是否隨機變化布局修復(fù)建議建議客戶端對自定義軟鍵盤進行隨機化處理,同時在每次點擊輸入框時都進行隨機初始化。屏幕錄像測試描述測試通過連續(xù)截圖,是否可以捕捉到用戶密碼輸入框的密碼。檢測方法通過連續(xù)截
29、圖,是否可以捕捉到用戶密碼輸入框的密碼。修復(fù)建議建議客戶端針對第三方或系統(tǒng)截屏編寫抵抗邏輯,例如屏蔽和截屏相關(guān)的函數(shù)或是當客戶端處于進程棧頂層時將截屏圖片用純黑XX序?qū)ο筮M行覆蓋。界面劫持保護界面劫描述Activity劫持是指當啟動某個窗口組件時,被惡意應(yīng)用探知,若該窗口界面是惡意程序預(yù)設(shè)的x 象,惡意應(yīng)用將啟動自己仿冒的界面覆蓋原界面,用戶在毫無察覺的情況下輸入登錄信息,惡意程序在把獲取的數(shù)據(jù)返回給服務(wù)端。需要理解,Android啟動一個 Activity時,是這樣設(shè)計的,給 Activity加入一個標志位 FLAG_ACTIVITY_NEW_TASK比 能使它置于棧頂并立馬呈現(xiàn)給用戶。但是
30、這樣的設(shè)計卻有一個缺陷。如果這個Activity是用于盜號的偽裝 Activity呢? 這種現(xiàn)象在XcodeGhost事件中,已經(jīng)被證實是可以實現(xiàn)的。在Android系統(tǒng)當中,程序可以枚舉當前運行的進程而不需要聲明其他權(quán)限,這樣的話,就可以編寫一個程序,啟動一個后臺的服務(wù),這個服務(wù)不斷地掃描當前運行的進程,當發(fā)現(xiàn)目標進程啟動時,就啟動一個偽裝的Activity o如果這個Activity是登錄界面,那么就可以從中獲取用戶的賬號密碼,具體的過程如下圖:界面劫持防護方法作為一名移動應(yīng)用開發(fā)者,要防御APP被界面劫持,最簡單的方法是在登錄窗口等關(guān)鍵Activity的onPause方法中檢測最前端Ac
31、tivity應(yīng)用是不是自身或者是系統(tǒng)應(yīng)用。如果檢測到不是自己,則彈出告警或者退出。界面劫持案例應(yīng)用存在釣魚劫持風險。應(yīng)用程序沒有做防釣魚劫持措施,通過劫持應(yīng)用程序的登錄界面,可以獲取用戶的賬號和密碼,可能導(dǎo)致用戶賬號信息的泄露。嫄犀盼巴B中4 10:33口電話號碼注冊忘記密碼整改建議應(yīng)用程序自身通過獲取棧頂activity ,判斷系統(tǒng)當前運行的程序,一旦發(fā)現(xiàn)應(yīng)用切換(可能被劫持),給予用戶提示以防范釣魚程序的欺詐。獲取棧頂activity (如下圖),當涉及敏感activity (登錄、交易等)切換時,判斷當前是否仍留在原程序,若不是則通過Toast給予用戶提示。使用HTML5架構(gòu)或andro
32、id+HTML5混合開發(fā),實現(xiàn)登陸、支付等關(guān)鍵頁面,降低被劫持的風險。本地拒絕服務(wù)漏洞描述Android系統(tǒng)提供了 Activity、Service和Broadcast Receiver等組件,并提供了 Intent機制來協(xié)助應(yīng)用間的交互與通訊, Intent負責對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,Android系統(tǒng)則根據(jù)此Intent的描述,負責找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用1。Android應(yīng)用本地拒絕服務(wù)漏洞源于程序沒有對Intent.getXXXExtra()獲取的異?;蛘呋螖?shù)據(jù)處理時沒有進行異常捕獲,從而導(dǎo)致x X#可通過向受
33、害者應(yīng)用發(fā)送此類空數(shù)據(jù)、異常或者畸形數(shù)據(jù)來達到使該應(yīng)用crash的目的,簡單的說就是 x X#通過intent發(fā)送空數(shù)據(jù)、異 常或畸形數(shù)據(jù)給受害者應(yīng)用,導(dǎo)致其崩潰。本地拒絕服務(wù)漏洞影響范圍:Android系統(tǒng)所有版本漏洞檢測方法使用Android掃描工具可以進行掃描。修復(fù)建議本地拒絕服務(wù)漏洞修復(fù)建議:1)將不必要的導(dǎo)出的組件設(shè)置為不導(dǎo)出出于安全考慮,應(yīng)將不必要的組件導(dǎo)出,防止引起拒絕服務(wù),尤其是殺毒、安全防護、鎖屏防盜等安全應(yīng)用;在AndroidMenifest.xml 文件中,將相應(yīng)組件的 android:exported屬性設(shè)置為 false如下示例:intent處理數(shù)據(jù)時進行捕獲異常建議
34、處理通過Intent.getXXXExtra()獲取的數(shù)據(jù)時進行以下判斷,以及用 try catch方式進行捕獲所有異常,以防 止應(yīng)用出現(xiàn)拒絕服務(wù)漏洞:1)空指針異常;2)類型轉(zhuǎn)換異常;3)數(shù)組越界訪問異常;4)類未定義異常;5)其他異常;數(shù)據(jù)備份 allowBackup漏洞描述Android API Level 8及其以上Android系統(tǒng)提供了為應(yīng)用程序數(shù)據(jù)的備份和恢復(fù)功能,此功能的開關(guān)決定于該應(yīng)用 程序中AndroidManifest.xml文件中的 allowBackup 屬性值,其屬性值默認是True。當 allowBackup 標志為 true時,用戶即可通過adb backup和
35、adb restore來進行對應(yīng)用數(shù)據(jù)的備份和恢復(fù),這可能會帶來一定的安全風險。Android 屬性allowBackup安全風險源于 adb backup容許任何一個能夠打開USB調(diào)試開關(guān)的人從 Android手機中復(fù)制應(yīng)用數(shù)據(jù)到外設(shè),一旦應(yīng)用數(shù)據(jù)被備份之后,所有應(yīng)用數(shù)據(jù)都可被用戶讀??;adb restore容許用戶指定一個恢復(fù)的數(shù)據(jù)來源(即備份的應(yīng)用數(shù)據(jù))來恢復(fù)應(yīng)用程序數(shù)據(jù)的創(chuàng)建。因此,當一個應(yīng)用數(shù)據(jù)被備份之后,用戶即 可在其他Android手機或模擬器上安裝同一個應(yīng)用,以及通過恢復(fù)該備份的應(yīng)用數(shù)據(jù)到該設(shè)備上,在該設(shè)備上打 開該應(yīng)用即可恢復(fù)到被備份的應(yīng)用程序的狀態(tài)。尤其是通訊錄應(yīng)用,一旦應(yīng)
36、用程序支持備份和恢復(fù)功能, x x者即可通過 adb backup和adb restore進行恢復(fù)新安 裝的同一個應(yīng)用來查看聊天記錄等信息;對于支付金融類應(yīng)用,x xW通過此來進行惡意支付、盜取存款等;因此為了安全起見,開發(fā)者務(wù)必將 allowBackup標志值設(shè)置為false來關(guān)閉應(yīng)用程序的備份和恢復(fù)功能,以免造成信息泄露和財產(chǎn)損失。1、不在AndroidManifest.xml文件設(shè)置 allowBackup屬性值,其默認值為 true,則應(yīng)用可通過 adb命令進行備份 整個應(yīng)用的數(shù)據(jù)AndroidManifest.xml 文件內(nèi)容: 2、在 AndroidManifest.xml 文件顯
37、示設(shè)置 allowBackup 屬性值為 false,即 android:allowBackup=false,則 Android 應(yīng) 用不可通過adb命令進行備份和恢復(fù)整個應(yīng)用的數(shù)據(jù)AndroidManifest.xml 文件內(nèi)容: 檢測方法查看AndroidManifest.xml文件中是否有 allowBackup,如果沒有則 allowBackup屬性值,默認allowBackup值為True, 則默認為可以備份應(yīng)用數(shù)據(jù),存在安全風險;如果 allowBackup屬性值為false,則不可以備份應(yīng)用數(shù)據(jù)。修復(fù)方法把 AndroidManifest.xml 文件中 allowBackup
38、屬性值設(shè)置為 false。Debug調(diào)試描述在準備發(fā)布應(yīng)用之前要確保關(guān)閉debug屬性,即設(shè)置 AndroidMainifest.xml中android:debuggable=false , false表示關(guān)閉debug調(diào)試功能,true表示開啟debug調(diào)試功能,但是有時候會忘記關(guān)掉這個屬性。Debug調(diào)試開啟會存在應(yīng)用被調(diào)試的風險。檢測方法在發(fā)布之前最好進行測試,使用 aapt工具: aapt list -v -a myfile.apk這個命令將會打印和apk相關(guān)的所有詳細信息,找到 android:debuggable;它的值分為:0 x0: debuggable false0 xfff
39、fffff: debugabble true例如,在我的測試中,這一行的信息是:A: android ebuggable(0 x0101000f)=(type 0 x12)0 x0這說明我的 Release Build已經(jīng)關(guān)閉了 debuggable!修復(fù)建議把 debuggable 關(guān)閉android:debuggable=false3、通信過程安全通信保密性采用HTTPS通信描述驗證客戶端和服務(wù)器之前的通信是否使用https加密信道,采用https協(xié)議通信可以防止信息在傳輸過程被竊聽的風檢測方法通過抓包工具(例如 burpsuite fiddler)抓取通信信息,看是否進行加密通信。修復(fù)建
40、議使用https進行加密通信。SSL劫持x x TE書校驗描述目前雖然很多 Android APP使用了 https通信方式,但是只是簡單的調(diào)用而已,并未對SSL證書有效性做驗證,https通信只是對通信信道進行了加密,可以防止監(jiān)聽數(shù)據(jù)的風險,但是無法防止中間人xx式,通過中間人攔截代理方式可以讓采用 https通信的數(shù)據(jù)暴露無遺,這樣xxa就可以利用中間人攔截代理來做劫持xx,x這種漏洞讓https形同虛設(shè),可以輕易獲取手機用戶的明文通信信息。證書校驗是為了防止中間人劫持xx, 6為強校驗和弱校驗。強校驗就是在手段端先預(yù)埋好服務(wù)端的證書,當手機端與服務(wù)端通信時獲取證書,并且與手機本地預(yù)埋的服
41、務(wù)端證書做對比,一旦不一致,則認為遭到了中間人劫持xx,x自動斷開與服務(wù)端的通信。弱校驗則是在手機端校驗證書的域名和手機真實訪問的域名是否一致、證書頒發(fā)機構(gòu)等 信息。強校驗流程圖:APP服務(wù)器弱校驗流程圖:APP服務(wù)器方案對比力殺優(yōu)點缺點強校驗:服務(wù)器證書鎖定安全性最高,實施XX必 須拿到對應(yīng)服務(wù)器私鑰 證書。更換證書時APP影響大弱校驗:根證書鎖定+域 名驗證更換服務(wù)器證書不受影 響安全性和CA機構(gòu)以及域 名驗證機制有美。檢測方法通過抓包看手機端程序是否運行正常,如果通過代理方式抓包,手機APP自動強制退出,說明手機APP有做證書校驗。整改方法采用強校驗或者弱校驗方法。訪問控制描述測試客戶端
42、訪問的URL是否僅能由手機客戶端訪問。是否可以繞過登錄限制直接訪問登錄后才能訪問的頁面,對需要二次驗證的頁面(如私密問題驗證),能否繞過驗證。檢測方法利用截包工具獲取 url,能用瀏覽器打開該 urL修復(fù)建議建議服務(wù)器進行相應(yīng)的訪問控制,控制對應(yīng)頁面僅能通過手機客戶端訪問。同時進行頁面訪問控制,防止繞過登陸 直接訪問頁面的非法訪問。4、服務(wù)端安全安全策略設(shè)置密碼復(fù)雜度策略描述測試客戶端程序是否檢查用戶輸入的密碼,禁止用戶設(shè)置弱口令檢測方法修改設(shè)置用戶名密碼時,可以設(shè)置111111類似弱口令修復(fù)建議建議在服務(wù)器編寫檢測密碼復(fù)雜度的安全策略,并將其運用到賬號注冊,密碼修改等需要進行密碼變更的場景,
43、以防止X X#通過弱密鑰遍歷賬戶的方式進行暴力猜解。認證失敗鎖定策略描述測試客戶端是否限制登錄嘗試次數(shù)。防止X X使用窮舉法暴力破解用戶密碼檢測方法錯誤密碼登錄t#求多次(10次以上還沒有就有問題了,一般都是3次)修復(fù)建議建議在服務(wù)端編寫賬戶鎖定策略的邏輯,當一天內(nèi)多次輸入密碼錯誤時進行賬號鎖定以防止X X#通過暴力猜解密碼。單點登錄限制策略描述測試能否在兩個設(shè)備上同時登錄同一個帳號。檢測方法測試能否在兩個設(shè)備上同時登錄同一個帳號。修復(fù)建議建議在服務(wù)器進行賬號登陸限制相應(yīng)邏輯代碼的編寫,通過Session或數(shù)據(jù)庫標志位的方式控制同一時間只有一個設(shè)備可以登陸某一賬號。會話超時策略描述測試客戶端在一定時間內(nèi)無操作后,是否會使會話超時并要求重新登錄。超時時間設(shè)置是否合理。檢測客戶端在一定時間內(nèi)無操作(20分鐘足夠),是否會話超時登錄建議建議在客戶端編寫會話安全設(shè)置的邏輯,當 10分鐘或20分鐘無操作時自動退出登錄狀態(tài)或是關(guān)閉客戶端。界面切換保護描述檢查客戶端程序在切換到后臺或其他應(yīng)用時,是否能恰當響應(yīng)(如清除表單或退出會話),防止用戶敏感信息泄露檢測方法應(yīng)用切換到后臺但程序沒有結(jié)束運行,再返回應(yīng)用的時候是否有身份驗證,手勢密碼或者登陸密碼。修復(fù)建議建議客戶端添加響應(yīng)的邏輯,在進行進程切換操作時提示用戶確認是否為本人操作。UI敏感信息安全描述檢查客戶端的各種功能,看是否存
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- 校園各項消防安全管理工作計劃三篇
- 【可行性報告】2025年防毒面具項目可行性研究分析報告
- 照明工業(yè)刻錄機行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 音樂一年級下冊教學(xué)計劃
- 開學(xué)典禮演講稿范文15篇
- 志愿者2022工作計劃安排三篇
- 語文教研組工作計劃
- 中航重機驗資報告
- 工作保證書集合15篇
- 軍工合作合同范例
- 2025年中國稀土集團總部部分崗位社會公開招聘管理單位筆試遴選500模擬題附帶答案詳解
- 超市柜臺長期出租合同范例
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測試語文試題(含答案)
- 【8物(科)期末】合肥市第四十五中學(xué)2023-2024學(xué)年八年級上學(xué)期期末物理試題
- 統(tǒng)編版2024-2025學(xué)年三年級語文上冊期末學(xué)業(yè)質(zhì)量監(jiān)測試卷(含答案)
- 從0 開始運營抖?音號sop 文檔
- 2024-2025學(xué)年深圳市初三適應(yīng)性考試模擬試卷歷史試卷
- 16J914-1 公用建筑衛(wèi)生間
- 贊比亞礦產(chǎn)資源及礦業(yè)開發(fā)前景分析
- 大型儲罐吊裝方案
評論
0/150
提交評論