?

移動應用App中間人攻擊防御方法研究

2022-06-26 12:51吳學敏劉亞飛
通信電源技術 2022年2期
關鍵詞:中間人數字簽名公鑰

吳學敏,顏 軍,劉亞飛

(1.成都工業學院,四川 成都 610000;2.成都云盯科技有限公司,四川 成都 610000)

0 引 言

隨著移動互聯網技術的快速發展,移動應用市場規模的不斷擴大,智能手機已成為人們生活工作必不可缺的產品,其出現和普及極大地促進了移動應用App的快速增長。根據工業和信息化部最新統計數據顯示,截至2021年12月,我國國內市場上監測到的App數量為252萬款,其中本土第三方應用商店App數量為117萬款,蘋果商店(中國區)App數量135萬款[1]。5G網絡時代的來臨,也為App的持續發展和應用提供了堅實的基礎。后疫情時代用戶對移動應用App的依賴度持續增加,移動應用App的使用率在不斷增加,人們在享受智能移動互聯網時代移動應用App帶來的便利的同時,也將面臨諸多安全問題。

近年來,非法移動應用App的數量不斷增加,類型也層出不窮,對移動應用的惡意攻擊現象頻發,特別是一些商業移動應用App已經成為黑產、灰產攻擊的主要目標,安全形勢愈發嚴峻。移動應用系統安全風險問題主要表現在以下3個方面。

(1)移動應用客戶端。移動應用客戶端可能濫用權限,違規收集和使用個人信息,導致用戶的個人隱私泄露。具體表現在本地用戶不知情或未經授權的情形下竊取用戶的個人隱私,如非法打開用戶的本地文件、藍牙、網絡、語音等操作;攻擊者對移動應用App逆向分析,破解,再篡改或插入惡意代碼,二次打包生成一個新應用程序,繞過用戶的加密、認證中心,給用戶使用帶來安全風險,同時竊取開發人員核心代碼算法,侵害開發人員及企業的權益;攻擊者采用其他復雜的技術,對用戶實施敲詐勒索等行為,非法獲利。

(2)服務器。攻擊者利用網絡監聽等手段盜取認證憑據,再重新發給服務器進行認證,對服務器實施重放攻擊;SQL漏洞、XSS安全漏洞;服務器的密碼和身份認證策略等。

(3)客戶端與服務器通信。移動應用App客戶端和服務器網絡通信被非法攔截、篡改,遭遇中間人攻擊[2]。

1 中間人攻擊

1.1 中間人攻擊概述

中間人攻擊是指攻擊者作為第三人的身份分別與需要建立通信關系的兩端建立獨立的聯系,并非法獲取雙方的數據,作為通信兩端的客戶端和服務器都認為自己的連接對象是真實可靠的,但事實上整個會話都被攻擊者完全控制,攻擊者可以攔截通信雙方的通話,獲取敏感信息,甚至篡改部分內容。

1.2 中間人攻擊分析

如圖1所示,中間人發起攻擊的流程如下:

圖1 中間人攻擊時序圖

(1)客戶端向服務器發起HTTPS請求;

(2)Charles(中間人)攔截客戶端的請求,偽裝成客戶端向服務器進行請求;

(3)服務器向“客戶端”返回服務器的CA證書,而“客戶端”實際上是由Charles(中間人)偽裝;

(4)Charles(中間人)攔截服務器的響應,獲取服務器證書公鑰,然后自己制作一張證書,將服務器證書替換后發送給客戶端;

(5)客戶端接收到“服務器”(實際上是中間人Charles)的證書后,生成一個對稱密鑰,用Charles(中間人)的公鑰加密,發送給“服務器”(Charles);

(6)Charles(中間人)攔截客戶端的響應,用自己的私鑰解密對稱密鑰(Charles拿到對稱密鑰),然后用服務器證書公鑰加密,發送給服務器;

(7)服務器用自己的私鑰解密對稱密鑰,向“客戶端”(Charles)發送響應;

(8)Charles(中間人)攔截服務器的響應,替換成自己的證書后發送給客戶端;

(9)至此,連接建立,Charles(中間人)獲取了服務器證書的公鑰和客戶端與服務器協商的對稱密鑰,便就可以解密或者修改加密的報文了。

1.3 移動應用App中間人攻擊測試

本文以Charles抓包工具為例模擬中間人攻擊過程,測試模擬環境是一款商用移動應用App,該App需要購買會員才能獲取如觀看視頻等權益。在該測試過程中,通過Charles工具抓包并修改服務器返回值中的有關字段即可實現非會員觀看視頻等權益。

如圖2所示,Charles工具抓取的數據包為服務器對客服端的返回數據,當該數據中的 “subscribe”字段的值被篡改為1時,App客服端能夠實現解鎖用戶權益。

圖2 Charles抓包數據

從上述測試可知該移動應用App通信過程是基于明文傳輸,安全防護等級較低。

2 中間人攻擊防御方法研究

2.1 SSL Pinning

SSL Pinning稱為證書鎖定(SSL/TLS Pinning),也稱SSL證書綁定,實現的原理是將服務器提供的SSL/TLS證書提前內置到移動端開發的App中,當客戶端發起網絡請求獲取數據時,會將內置在App中的SSL證書與服務器證書內容進行比對,判斷是否一致,如果一致則當前連接合法[3]。SSL Pinning示意如圖3所示。

圖3 SSL Pinning示意圖

為了防止中間人攻擊,需要將App代碼設置為只接收指定域名的證書,不接收系統或瀏覽器內置的CA根證書及其所對應的關聯證書。通過這種授權方式,以確保App客戶端與服務端通信的唯一性和安全性。CA簽發證書都具有時效性,弊端是在證書續期后需要將證書重新內置到App中,所以要求采用該防御策略的App具備端上定期升級的能力。在實際操作中,可以在證書到期之后,通過App警告彈窗提示用戶從指定的應用市場或官網下載最新版本繼續使用。

2.2 數據加密算法

通過中間人攻擊測試分析可知,如果服務器和客服端的通信數據采用密文傳輸,即使被非法攔截獲取,也無法通過篡改對應字段來繞過App解鎖獲取權益。因此抵御中間人攻擊的有效的方法為防范被直接獲取明文,常用的加密方法如下文所述。

2.2.1 對稱加密算法

對稱加密算法采用單個密鑰分別用于數據的加密與解密過程,優點是加密解密速度快、計算量小,因此適用于大量數據加密,其缺點是安全等級低。對稱加密的安全性與加密算法本身沒有多大關系,而取決于密鑰,因而密鑰會隨著加密數據的增加而不斷增加,會給密鑰的分配和管理帶來一定的負擔?;诎踩雷o的考慮,故此次研究不會把對稱加密應用于安全防護策略。

2.2.2 非對稱加密算法

非對稱和對稱加密算法最大的區別是,其采用公鑰和私鑰兩個不同的密鑰進行加、解密,如發送方用公鑰加密數據,接收方用私鑰解密。常用的非對稱算法RSA算法采取加密密鑰和加密算法方法分開,為密鑰的分配和管理提供了方便。

在使用非對稱加密算法時,如公鑰被中間人攻擊獲取,中間人將虛假信息用公鑰加密,冒充發送者發送給接收方,接收方收到的假冒數據也能夠用自己的私鑰解密,但是卻無法辨別發送者的真實身份,基于此可以采用數字簽名的方式來解決。RSA算法是第一個既能用于加密和數字簽名的非對稱算法,是目前所公認的優秀的公鑰方案之一[4]。

在實際的移動應用App開發中,通常直接把公鑰放進代碼里面,若系統被逆向,被中間人攻擊者就能推出加密驗簽的原始內容及其關鍵字段,進而修改對應的業務字段,模擬計算出數字摘要,對App進行“欺騙”,繞過會員購買。為了避免這種情況,較為合理的方式是將公鑰的載入用非字符串、用宏定義代替、或者調用函數規則運算生成密鑰值,提高被逆向軟件直接讀取密鑰的難度。

2.3 數字簽名

數字簽名是保護網絡傳輸信息安全的重要方法之一,可以解決偽造、冒充、抵賴和篡改等問題。數字簽名的實現過程是:(1)消息發送端將原始消息用哈希函數生成數字摘要;(2)用發送端的私鑰對數字摘要進行加密,生成數字簽名;(3)發送端將原始消息和數字簽名一起發送給接收端;(4)接收端用公鑰對數字簽名進行解密還原成數字摘要,并且對原始消息用相同的哈希運算重新生成數字摘要;(5)比對還原后的數字摘要和新生成的數字摘要的一致性,如果一致則表明原始消息未被篡改。

使用數字簽名可以確保接收到的某個信息確實是由相應的發送方所發送,避免了中間人等攻擊者偽造、篡改、冒充消息等。由于私鑰和公鑰都是一一對應的,可以追溯到發送方的身份,數字簽名也能確保發送方不可抵賴性。

3 方法實現及測試

3.1 方法實現

在本系統的工程應用中,采用了數字簽名、SSL Pinning以及禁止App代理3種組合方式,從3個不同方面進行研究及工程應用。

3.1.1 數字簽名的工程實現

在本文研究的移動應用App中,采用了哈希函數SHA256withRSA進行數字簽名和驗簽。數字簽名具體實現過程為先對原始消息(Raw Message)的進行哈希運算(SHA256withRSA)生成數字摘要,再用私鑰(privateKey)對數字摘要加密生成數字簽名(signedHash)。在iOS開發中,可以用系統自帶的Security.framework的SecKeyRawSign函數實現數字簽名,如圖4所示。

圖4 基于Security.framework實現數字簽名

數字簽名實現的核心方法可以簡化為signedHash=SecKeyRawSign(privateKey,rawMessage)

數字簽名驗證的實現過程為首先對原始消息(Raw Message)的進行哈希運算(SHA256withRSA)生成新的數字摘要,其次用公鑰(publicKey)對數字簽名(signedHash)解密還原數字摘要,最后將解密和新生成的數字摘要進行比對。iOS 驗簽的核心代碼可以簡化為Status = SecKeyRawVerify(publicKey,originHash, signedHash)

同樣可以使用iOS 系統自帶的Security.framework中的SecKeyRawVerify方法實現驗簽,如圖5所示。

圖5 基于Security.framework實現驗簽

3.1.2 SSL Pinning的工程實現

在實際應用中,以iOS系統為例,開發者常常使用一款名為AFNetworking的網絡請求庫來請求網絡數據,圖6為該網絡請求庫的相關配置。實現過程是制作格式為.cer的SSL證書,在代碼中讀取該證書并賦值給AFSecurityPolicy。

圖6 基于iOS的AFNetworking相關配置

3.1.3 禁用App代理

采用禁止App通過代理的方式來訪問服務器,與服務器之間直接建立通信連接,以iOS為例,圖7中“connectionProxyDictionary”字段屬性可以用于設置網絡代理,默認值是 NULL,表示允許代理。當該字段被設置為空字典(@{})時,則禁止代理,即可繞過中間人攻擊的數據抓包。

圖7 基于iOS的禁止APP代理配置代碼

3.2 測試分析

3.2.1 SSL-Pinnig

如圖8、圖9所示,通過測試發現,使用SSL Pinning前,Charles可以正常抓包,使用SSL Pinning后無法抓包,該方法在一定程度上可以抵御中間人攻擊。

圖8 未開啟SSL-Pinnig 可以正常抓取數據

圖9 開啟SSL-Pinnig 抓取數據失敗

3.2.2 數字簽名

如圖10所示,驗簽通過后再做邏輯業務和權益的放行,杜絕了Charles斷點修改服務端返回值繞過會員解鎖邏輯或者市面上的代理工具定向修改返回值的操作,一定程度上保證了App的安全,提升了防篡改的能力。

圖10 數字簽名業務判斷

4 結 論

本文分析了移動應用App在網絡通信過程中存在 “中間人”攻擊的安全風險,對防御“中間人”攻擊的方法進行研究,并通過組合方式實現SSL Pinning、數字簽名和禁止App代理上網的工程應用,避免了采用單一的安全防范措施而采用多重防御方法抵御中間人攻擊,通過測試證明該防御策略符合實際應用場景,能夠對商業App的經濟權益起一定的保護作用。

猜你喜歡
中間人數字簽名公鑰
夾在妻子和弟弟中間,怎樣當好中間人?
交通運輸行業數字簽名系統的設計與實現分析
淺析計算機安全防護中數字簽名技術的應用
神奇的公鑰密碼
數字簽名技術在計算機安全防護中的應用
重慶轉口貿易優勢分析及政策建議——利用信息不對稱和中間人理論
國密SM2密碼算法的C語言實現
基于身份的聚合簽名體制研究
跟楊絳學做“中間人”
掌握方法用好數字簽名
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合