你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> iOS平台個人網銀APP的安全測試報告

iOS平台個人網銀APP的安全測試報告

編輯:IOS開發基礎

幾年來,我一直在從事有關個人網銀APP的安全性研究。在這份報告中,我使用了黑盒和靜態分析的方法,對全球最具影響力的四十個iPhone/ipad網銀APP進行了安全測試。

以下國家的個人網銀APP被納入測試:

1415950115964.jpg

研究說明

1. 本研究在40小時內(不連續)完成

2. 為了保護這些應用程序的所有者及其用戶,本研究沒有公布發現的漏洞以及利用它們的方法

3. 所有的測試都只在應用程序(客戶端)上執行;研究排除了任何服務器端的測試

4. 已經聯系了一些受影響的銀行並提交了漏洞報告

測試過程

我們對每個網銀應用程序進行了如下測試:

傳輸安全
明文流量
不當的會話處理
正確驗證SSL證書
編譯器的保護
反破解保護
PIE編譯
用stack cookies編譯
自動引用計數
uiwebviews
數據驗證(輸入,輸出)
分析UIWebView的實現
不安全的數據存儲
SQLlite數據庫
文件緩存
檢查屬性列表文件
請檢查日志文件
Logging
自定義日志
nslog報表
崩潰報告文件
二元分析
分解應用
檢測的匯編代碼保護混淆
檢測防篡改保護
檢測反調試保護
協議處理程序
客戶端注入
第三方的庫

結果概述

14159503419648.jpg

黑盒分析結果

下列工具被用於黑盒分析:

otool (object file displaying tool)[1]
Burp pro (proxy tool)[2]
ssh (Secure Shell)

40%通過APP Store審核的APP不會驗證SSL證書,這使得他們容易受到中間人攻擊。[ 3 ]

少量應用程序(小於20%)不具備位置獨立的可執行程序(PIE)和堆棧溢出保護功能。這些功能可能有助於減輕內存洩漏攻擊的風險。

>#otool –hv MobileBank
Mach header
magic cputype cpusubtype     caps    filetype ncmds        sizeofcmds      flags
MH_MAGIC     ARM         V6  0×00     EXECUTE    24       3288        NOUNDEFS DYLDLINK 
PREBOUND TWOLEVEL

許多應用程序(90%)包含幾個無SSL的鏈接貫穿在應用中。這允許攻擊者截獲流量,注入任意JavaScript / HTML代碼,進而創建偽造登錄。

此外,發現50%的程序很容易通過UIwebview受到JavaScript注入攻擊,通過不安全注射的UIWebView JavaScript實現。在某些情況下,原生iOS功能被暴露,允許受害者的設備發送短信或電子郵件。

14159505324705.jpg

一種新的網絡釣魚攻擊正在流行:當受害者因為網上銀行密碼已過期,而按提示輸入自己的用戶名和密碼。攻擊者此事可以竊取受害者的憑證並完全獲得了訪問用戶帳戶的權限。

下面的示例顯示個人銀行應用UIWebView漏洞

它允許一個虛假的HTML形式被注入攻擊者利用來誘騙用戶輸入他們的用戶名和密碼,然後把他們的憑據發送到惡意網站。

14159505528516.jpg

14159505902653.jpg

另外一個引起我注意而做的測試,是70%的APP沒有替代認證的解決方案,如多因素認證,可能有助於減輕釣魚攻擊的風險。

大多數由應用程序產生的日志文件暴露敏感信息,如崩潰報告。這種信息可能被洩露,幫助攻擊者利用0day 漏洞應用尋找和開發針對目標用戶的應用。

360桌面截圖20141118110849.jpg

大多數應用程序通過蘋果系統日志公開敏感信息。

下面的例子是從控制台系統使用iPhone配置實用工具(IPCU)。身份驗證過程的應用程序轉儲的用戶憑據。

…CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.Jun 22 16:20:37 Test Bankapp[2390] : USER-IDXRSPASSWORDxxxxxxxxJun 22 16:20:37 Test Bankapp[2390] : ]]]]]]]]]]]]] wxxx.xxxxx.com
Jun 22 16:20:42 Test Bankapp[2390] : RETURNED:
Jun 22 16:20:42 Test Bankapp [2390] : CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
…
Static Analysis Results
The following tools were used for the static analysis and decryption:
IDA PRO (disassembler tool) [4]
Clutch (cracking utility) [5]
objc-helper-plugin-ida [6]
ssh (Secure Shell)
gdb (debugger tool)
IPCU [7]
The binary code of each app was decrypting using Clutch. A combination of decrypted code and code disassembled with IDA PRO was used to analyze the application.
Hardcoded development credentials were found in the code.
__text:00056350  ADD             R0, PC ; selRef_sMobileBankingURLDBTestEnv__
__text:00056352 MOVT.W          R2, #0×46
__text:00056356 ADD             R2, PC  ; “https://mob_user:[email protected]/internal/db/start.do?login=mobileEvn”
__text:00056358 LDR             R1, [R0] ; “setMobileBankingURLDBTestEnv_iPad_mobil”…
__text:0005635A MOV             R0, R4
__text:0005635C BLX             _objc_msgSend
__text:00056360 MOV             R0, (selRef_setMobileBankingURLDBTestEnvWithValue_iPad_mobileT_ – 0×56370) ; selRef_setMobileBankingURLDBTestEnvWithValue_iPad_mobileT_
__text:00056368 MOVW            R2, #0xFA8A
__text:0005636C ADD             R0, PC ; selRef_setMobileBankingURLDBTestEnvWithValue_i_mobileT_
__text:0005636E MOVT.W          R2, #0×46
__text:00056372 ADD             R2, PC  ; “https://mob_user:[email protected]/internal/db/start.do?login=mobileEvn&branch=%@&account=%@&subaccount=%@”
__text:00056374 LDR             R1, [R0] ; “setMobileBankingURLDBTestEnvWith_i”…
__text:00056376 MOV             R0, R4
__text:00056378 BLX             _objc_msgSend
By using hardcoded credentials, an attacker could gain access to the development infrastructure of the bank and infest the application with malware causing a massive infection for all of the application’s users.
Internal functionality exposed via plaintext connections (HTTP) could allow an attacker with access to the network traffic to intercept or tamper with data.
__text:0000C980 ADD             R2, PC  ; “http://%@/news/?version=%u”
__text:0000C982 MOVT.W          R3, #9
__text:0000C986 LDR             R1, [R1] ; “stringWithFormat:”
__text:0000C988 ADD             R3, PC  ; “Mecreditbank.com”
__text:0000C98A STMEA.W         SP, {R0,R5}
__text:0000C98E MOV             R0, R4
__text:0000C990 BLX             _objc_msgSend
__text:0000C994 MOV             R2, R0
…
__text:0001AA70 LDR             R4, [R2] ; _OBJC_CLASS_$_NSString
__text:0001AA72 BLX             _objc_msgSend
__text:0001AA76 MOV             R1, (selRef_stringWithFormat_ – 0x1AA8A) ; selRef_stringWithFormat_
__text:0001AA7E MOV             R2, (cfstr_HttpAtmsOpList – 0x1AA8C) ; “http://%@/atms/?locale=%@&version=%u”
__text:0001AA86 ADD             R1, PC; selRef_stringWithFormat_
__text:0001AA88 ADD             R2, PC; “http://%@/atms/version=%u”
__text:0001AA8A
__text:0001AA8A loc_1AA8A                               ; CODE XREF: -[BranchesViewController processingVersion:]+146j
__text:0001AA8A MOVW            R3, #0x218C
__text:0001AA8E LDR             R1, [R1]
__text:0001AA90 MOVT.W          R3, #8
__text:0001AA94 STMEA.W         SP, {R0,R5}
__text:0001AA98 ADD             R3, PC  ; “Mecreditbank.com”
__text:0001AA9A MOV             R0, R4
__text:0001AA9C BLX             _objc_msgSend

此外,20%的程序通過http明文發送帳戶激活碼。即使這個功能對設置初始帳戶是有限制的,其相關風險也很高。如果攻擊者可以攔截流量的話,那麼他就可以劫持一個會話並盜取受害者的賬戶信息,而且最重要的是沒有任何證據可以檢測到這種攻擊。

在仔細研究每個應用程序的系統之後,我們發現有些人使用一個未加密的SQLite數據庫存儲諸如銀行賬戶詳細信息、交易歷史等類的敏感信息。攻擊者可以漏洞利用程序遠程的訪問這些數據;如果攻擊者可以通過物理方式訪問這台設備的話,那麼他就會在受害者機器上安裝一些可以從文件系統中竊取信息的越獄軟件。

下面的例子展示了從APP的文件系統中獲取一個SQLite數據庫存儲的未加密的銀行賬戶資料。

360桌面截圖20141118111006.jpg

其他鏡像信息洩露被發現,包括:

內部IP地址

__data:0008B590 _TakeMeToLocationURL DCD cfstr_Http10_1_4_133
__data:0008B590                                         ; DATA XREF: -[NavigationView 
viewDidLoad]+80o
__data:0008B590                                         ; __nl_symbol_ptr:_TakeMeToLocationURL_ptro
__data:0008B590                                      ; 
“http://100.10.1.13:8080/WebTestProject/PingTest.jsp”

內部系統地址:

_cstring:000CC724 aUsersXXXXPro DCB 
“/Users/Scott/projects/HM_iphone/src/HBMonthView.m”,0

盡管披露這些信息不會產生什麼重大影響,但是如果攻擊者收集了很多這類的漏洞,那他就可以更好地理解應用程序的內部布局和服務器端的基礎設施。這樣一來攻擊者就可以針對應用程序的客戶端和服務器端實施特定的攻擊。

結論

從防守的角度來看,使用以下建議可以降低安全風險:

1、確保所有的連接都使用安全傳輸協議

2、用SSL證書檢查客戶端應用程序

3、使用iOS數據保護的API加密儲存在客戶端的敏感信息

4、檢測設備是否有越獄

5、使用混淆匯編代碼和反調試技巧,增加攻擊者逆向的難度

6、刪除所有調試語句和符號文件

7、刪除應用程序中的開發信息

現在移動設備(智能手機、平板電腦)上也可以安裝個人網銀應用程序了,這對全球金融公司來說又是一個巨大的安全挑戰。金融業應提高移動個人網銀APP的安全性。

參考文獻

[1]http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/otool.1.html

[2] http://portswigger.net/burp/editions.html

[3] https://www.owasp.org/index.php/Man-in-the-middle_attack

[4] https://www.hex-rays.com/products/ida/

[5] https://www.appaddict.org/forum/index.php?/topic/40-how-to-crack-ios-apps/

[6] https://github.com/zynamics/objc-helper-plugin-ida

[7] http://support.apple.com/downloads/#iphone%20configuration%20utility

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved