關(guān)于HTTPS独旷,我經(jīng)常會(huì)提到的就是中間人攻擊构眯,那究竟什么是中間人攻擊呢?中間人攻擊哈垢,即所謂的Main-in-the-middle attack(MITM)妻柒,顧名思義,就是攻擊者插入到原本直接通訊的雙方耘分,讓雙方以為還在直接跟對(duì)方通訊举塔,但實(shí)際上雙方的通訊對(duì)方已變成了中間人,信息已經(jīng)是被中間人獲取或篡改求泰。
由前文我們知道央渣,HTTPS在建立了TCP連接之后,會(huì)進(jìn)行SSL握手(SSL Handshake)來校驗(yàn)證書渴频,協(xié)商加密協(xié)議和對(duì)稱加密的密鑰芽丹,之后就會(huì)使用協(xié)商好的密鑰來進(jìn)行傳輸。所以HTTPS攻擊一般分為SSL連接建立前的攻擊卜朗,以及HTTPS傳輸過程中的攻擊拔第;
常見的HTTPS中間人攻擊,首先需要結(jié)合ARP场钉、DNS欺騙等技術(shù)蚊俺,來對(duì)會(huì)話進(jìn)行攔截,
1惹悄、SSL證書欺騙攻擊
此類攻擊較為簡單常見春叫。首先通過ARP欺騙肩钠、DNS劫持甚至網(wǎng)關(guān)劫持等等泣港,將客戶端的訪問重定向到攻擊者的機(jī)器,讓客戶端機(jī)器與攻擊者機(jī)器建立HTTPS連接(使用偽造證書)价匠,而攻擊者機(jī)器再跟服務(wù)端連接当纱。這樣用戶在客戶端看到的是相同域名的網(wǎng)站,但瀏覽器會(huì)提示證書不可信踩窖,用戶不點(diǎn)擊繼續(xù)瀏覽就能避免被劫持的坡氯。所以這是最簡單的攻擊方式,也是最容易識(shí)別的攻擊方式洋腮。
防范措施 :
釣魚類攻擊箫柳,App直接調(diào)用系統(tǒng)API創(chuàng)建的HTTPS連接(NSURLConnection)一般不會(huì)受到影響,只使用默認(rèn)的系統(tǒng)校驗(yàn)啥供,只要系統(tǒng)之前沒有信任相關(guān)的偽造證書悯恍,校驗(yàn)就直接失敗,不會(huì)SSL握手成功伙狐;但如果是使用WebView瀏覽網(wǎng)頁涮毫,需要在UIWebView中加入較強(qiáng)的授權(quán)校驗(yàn)瞬欧,禁止用戶在校驗(yàn)失敗的情況下繼續(xù)訪問。
2 SSL剝離攻擊(SSLStrip)
SSL剝離罢防,即將HTTPS連接降級(jí)到HTTP連接艘虎。假如客戶端直接訪問HTTPS的URL,攻擊者是沒辦法直接進(jìn)行降級(jí)的咒吐,因?yàn)镠TTPS與HTTP雖然都是TCP連接野建,但HTTPS在傳輸HTTP數(shù)據(jù)之前,需要在進(jìn)行了SSL握手渤滞,并協(xié)商傳輸密鑰用來后續(xù)的加密傳輸贬墩;假如客戶端與攻擊者進(jìn)行SSL握手,而攻擊者無法提供可信任的證書來讓客戶端驗(yàn)證通過進(jìn)行連接妄呕,所以客戶端的系統(tǒng)會(huì)判斷為SSL握手失敗陶舞,斷開連接。
該攻擊方式主要是利用用戶并不會(huì)每次都直接在瀏覽器上輸入https://xxx.xxx.com 來訪問網(wǎng)站绪励,或者有些網(wǎng)站并非全網(wǎng)HTTPS肿孵,而是只在需要進(jìn)行敏感數(shù)據(jù)傳輸時(shí)才使用HTTPS的漏洞。中間人攻擊者在劫持了客戶端與服務(wù)端的HTTP會(huì)話后疏魏,將HTTP頁面里面所有的 https:// 超鏈接都換成 http:// 停做,用戶在點(diǎn)擊相應(yīng)的鏈接時(shí),是使用HTTP協(xié)議來進(jìn)行訪問大莫;這樣蛉腌,就算服務(wù)器對(duì)相應(yīng)的URL只支持HTTPS鏈接,但中間人一樣可以和服務(wù)建立HTTPS連接之后只厘,將數(shù)據(jù)使用HTTP協(xié)議轉(zhuǎn)發(fā)給客戶端烙丛,實(shí)現(xiàn)會(huì)話劫持。
這種攻擊手段更讓人難以提防羔味,因?yàn)樗褂肏TTP河咽,不會(huì)讓瀏覽器出現(xiàn)HTTPS證書不可信的警告,而且用戶很少會(huì)去看瀏覽器上的URL是 https:// 還是 http:// 赋元。特別是App的WebView中忘蟹,應(yīng)用一般會(huì)把URL隱藏掉,用戶根本無法直接查看到URL出現(xiàn)異常搁凸。
防范措施:
該種攻擊方式同樣無法劫持App內(nèi)的HTTPS連接會(huì)話媚值,因?yàn)锳pp中傳入請(qǐng)求的URL參數(shù)是固定帶有“https://” 的;但在WebView中打開網(wǎng)頁同樣需要注意护糖,在非全網(wǎng)HTTPS的網(wǎng)站褥芒,建議對(duì)WebView中打開的URL做檢查,檢查應(yīng)該使用 “https://” 的URL是否被篡改為 “http://” 椅文;也建議服務(wù)端在配置HTTPS服務(wù)時(shí)喂很,加上“HTTP Strict Transport Security”配置項(xiàng)惜颇。
3 針對(duì)SSL算法進(jìn)行攻擊
上述兩種方式,技術(shù)含量較低少辣,而且一般只能影響 WebApp凌摄,而很難攻擊到 Native App , 所以高階的 Hacker漓帅,會(huì)直接針對(duì)SSL算法相關(guān)漏洞進(jìn)行攻擊锨亏,期間會(huì)使用很多的密碼學(xué)相關(guān)手段。由于本人非專業(yè)安全相關(guān)人員忙干,沒有多少相關(guān)實(shí)踐經(jīng)驗(yàn)器予,所以本節(jié)不會(huì)深入講解相關(guān)的攻擊原理和手段,有興趣的同學(xué)可以查看以下拓展閱讀:
OpenSSL漏洞
常見的HTTPS攻擊方法
防范措施:
這類攻擊手段是利用SSL算法的相關(guān)漏洞捐迫,所以最好的防范措施就是對(duì)服務(wù)端 SSL/TLS 的配置進(jìn)行升級(jí):
只支持盡量高版本的TLS(最低TLS1)乾翔;
禁用一些已爆出安全隱患的加密方法;
使用2048位的數(shù)字證書施戴;
防范措施:
不要隨意連入公共場(chǎng)合內(nèi)的WiFi反浓,或者使用未知代理服務(wù)器
不要安裝不可信或突然出現(xiàn)的描述文件,信任偽造的證書赞哗;
App內(nèi)部需對(duì)服務(wù)器證書進(jìn)行單獨(dú)的對(duì)比校驗(yàn)雷则,確認(rèn)證書不是偽造的;
使用WireShark模擬中間人證書偽造攻擊http://blog.csdn.net/phunxm/article/details/38590561
**使用Charles模擬中間人證書偽造攻擊
**http://www.reibang.com/p/a81b496348bc