前言
APP在運行的時候,有海量的文字、圖片、視頻等內容傳輸,全部存在本地既不現實、也不靈活。因此會大量的使用網絡連接來實現APP與云端服務器的數據通信,所以網絡數據傳輸的安全性,往往成為移動app安全最關鍵的一個環節。
如果沒有對這方面進行安全防護,黑灰產業就可以通過安全薄弱的環節,直接制作出協議工具,脫離app本身進行業務操作。
所以從整個過程來看,可以從通信安全和數據安全兩個方面來進行安全性研究和測試。
通信安全
目前市面上有一部分APP與服務器的交互采用的是HTTP協議,如果沒有采取額外的措施,那么用戶數據、交互數據就都是以明文的方式在網絡中進行傳輸,這顯然是極其“不安全”的。
一些有安全意識的APP雖然采用了HTTPS與服務器進行通訊,但是在實現過程中存在漏洞,導致通訊鏈路仍然存在較大的可能性被監聽、解密。例如未做安全處理的HTTPS通訊連接會存在中間人攻擊的安全性風險。
1、TLS
(TLS)安全傳輸層協議,用于在兩個通信應用程序之間提供保密性和數據完整性。
具體的技術說明和細節在網上有很多介紹,這里就不復制、粘貼了。如果沒有采用比較安全的協議進行app和服務器的通信,那么網絡上傳輸的數據就會被其他攔截,進而泄漏用戶的信息以及公司的數據信息。
采用安全傳輸協議后,雖然網絡上傳輸的數據仍然可能被攔截下來,但攔截者此時是沒有辦法解密和還原經過協議加密處理過的數據。
2、證書校驗
這里指HTTPS的單向或雙向驗證。
所謂單向驗證,就是在HTTPS通信中,客戶端驗證服務端的證書;雙向驗證就是客戶端和服務端的證書都需要對方驗證。有了證書校驗,可以在一定程度上預防中間人竊聽。
數據安全
通訊安全的一些措施可以保證客戶端到服務端傳輸過程中的鏈路安全,但是卻不能保證傳輸中數據的安全。
以下圖為例,雖然協議采取了TLS安全協議,但是攻擊者可以通過中間人攻擊的方式捕獲通信數據,獲取明文信息。
因此,為了保護數據安全,有必要使用適當的加密方式。例如重要的注冊登錄接口,就應該使用RSA進行加密,攻擊者即便拿到了客戶端的密鑰或公鑰的一種,也無法進行數據解密。其他非核心的接口,可以用對成加密或其他算法組合而成的加密方式。
中間人攻擊
在測試工作中的抓包這一項活動,其實就包含了中間人攻擊。即便是HTTPS協議,如果缺少安全意識和防護措施,也能造成數據信息的泄漏。
1、HTTP會話劫持
HTTP會話劫持是對HTTP通信進行的一種跟蹤行為。HTTP不會對客戶端的請求或者服務的返回數據進行加密處理,最多只是對數據本身進行一定程度的加密,其中明文數據更容易遭到篡改和重放攻擊。
2、HTTPS會話劫持
在客戶端和服務端的通信中,如果客戶端沒有對服務端的證書進行校驗,攻擊者就能在“中間”分別和客戶端、服務端建立兩個獨立的鏈接并交換數據。例如Charles這個專業的抓包軟件,把證書從軟件中導出并安裝到設備上,就可抓去HTTPS協議的網絡通信了。
安全測試
1、TLS
檢查客戶端網絡連接是否使用了HTPPS協議
2、證書校驗
檢查客戶端和服務端是否進行了證書校驗。
2.1、SSL-pinning存在被繞過分風險
2.2、風險檢查:客戶端本地證書容易遭到竊取
3、數據加密
3.1、檢查傳輸的數據本身是否被加密。
3.2、加密方式是否過于簡單易破。
4、防抓包策略
客戶端是否包含一定程度的防抓包策略,例如代理檢測技術等等。