李明坤,胡曦明,2*,李 鵬,2
(1.陜西師范大學 計算機科學學院,陜西 西安 710119;2.現代教學技術教育部重點實驗室,陜西 西安 710119)
作為提供信息加密、身份驗證和完整性驗證等安全服務支撐HTTPS安全鏈接的SSL協議(secure sockets layer),面臨會話劫持攻擊、剝離攻擊和數據密文解密攻擊等多種攻擊[1-4]。有關移動終端的SSL安全分析表明,安智網和360手機安卓市場近6萬個應用軟件中約有59.25%的應用軟件使用了與SSL相關的API,存在可信證書鏈缺陷的軟件占77.1%,SSL錯誤忽略缺陷的軟件占比33.29%,不可信證書鏈攻擊成功的軟件占比17.39%,無域名認證攻擊成功的軟件占比15.22%[5];即使大部分網絡銀行類APP完整實現了SSL證書公鑰綁定,也依然存在諸多安全隱患。
反觀高校SSL協議安全技術應用發展現狀:一方面,SSL協議作為計算機相關專業的教學重點得到了廣泛關注和持續研究;但另一方面,SSL協議安全技術長期停留于基于PC真機或仿真平臺局限在學校實驗室的內部網絡環境中實施的傳統模式,例如:華南師范大學石碩基于“PC+服務器”開展SSL實驗[6];海南經貿職業技術學院黃雪琴采用仿真平臺開展SSL協議實驗[7];溫州大學黃輝使用ASA模擬器開展SSL實驗[8]。在高校建設面向移動互聯網新經濟深化產教融合培養網絡安全卓越工程師的背景下,探索在真實的移動互聯網環境下,基于手機、筆記本電腦和PAD等設備的新型SSL協議個人移動安全技術和實驗應用成為了富有時代性、緊迫性和教育價值的新課題。
SSL協議在TCP/IP分層模型中工作在傳輸層和應用層之間,為互聯網環境中的兩個通信進程提供安全及數據完整性保障。從協議體系結構上來看,SSL協議分為上下兩個協議子層,上層是SSL握手協議簇(SSL Handshake Protocol),具體包括SSL握手協議(SSL Handshake Protocol)、修改密文協議(Change Cipher Protocol)和告警協議(Alert Protocol);下層是SSL記錄協議(SSL Record Protocol),具體定義了兩種報文,分別為發送信息報文(Send Information Packet)和接受信息報文(Accept Information Packet)。
SSL握手協議負責通信雙方的身份驗證、參數協商和交換密鑰以建立安全的加密通道,修改密文協議負責將參數更新信息進行加密、壓縮并告知對端,告警協議負責在通信異常時向對端發出警告或致命兩類報文。SSL記錄協議分別定義了發送信息報文和接受信息報文,接受信息報文對接收的加密數據進行解密、合并和傳輸,發送信息報文則對發送數據進行加密、分組和傳輸。
如圖1所示,SSL記錄協議首先將應用數據分為多個片段并對片段進行壓縮,隨后附上由安全哈希協議或消息摘要等算法生成的加密MAC作為消息身份驗證代碼,然后根據雙方協商的加密方式與參數對數據進行加密,最后封裝SSL首部[9]。SSL握手協議簇通過客戶端和服務器之間四個階段的會話協商機制,建立起安全的數據傳輸通道,具體過程如下。

圖1 SSL協議安全機制
(1)Hello階段。
客戶端與服務器分別向對方發送ClientHello和SeverHello報文,客戶端發送一個隨機數給服務器,客戶端與服務器相互交換加密套件(Support Ciphers)與版本信息(SSL Version)等安全信息。
(2)服務器認證階段。
服務器向客戶端發送Certificate、Server Key Exchange和ServerHello Done等身份證書報文實現自身身份驗證并與客戶端交換公鑰與參數。在Certificate報文中,服務器需要向客戶端發送整個證書鏈,包括服務器CA(數位憑證認證機構)、中間CA以及到達可信的根CA所需要的所有中間證書。大部分公共簽名機構CA不直接在服務器證書上簽名,中間CA是由根CA對其簽名驗證的,由根CA離線存儲以保證信息的安全。個人移動端一般僅信任根CA,這樣服務商同樣需要向其他CA申請證書,多級遞進確保證書的安全。在SSL協議握手期間服務器會向客戶端發送整個證書鏈。
(3)客戶端發送共享密鑰和加密套件階段。
客戶端首先向服務器發送包含組裝共享密鑰的預主密鑰、一個隨機數和加密套件的Client Key Exchange報文,服務器收到預主密鑰后,將預主密鑰與收到的兩個隨機數組合生成共享密鑰,然后通過Change Cipher Spec報文通知服務器之后的報文會用共享密鑰加密,在此基礎上客戶端發送握手信息摘要經加密成的Encrypted Handshake Message報文,以便于服務器驗證共享密鑰的有效性。
(4)服務器發送用戶注冊信息階段。
服務器向客戶端發送包含客戶端登陸會話所需Session信息的New Session Ticket報文,然后發送Change Cipher Spec報文通知客戶端之后的報文同樣采用共享密鑰加密,最后服務器同樣發送Encrypted Handshake Message報文將握手信息摘要發送給客戶端,以便于客戶端接受后確認共享密鑰的有效性。
在分析SSL協議和SSL安全機制的基礎上,該文探索基于手機、筆記本電腦等個人移動端在真實互聯網環境下構建SSL協議安全技術系統,實現輕量化、便攜化的SSL協議攻擊與防御。
基于個人移動端的SSL協議安全技術總體架構包含四個模塊,如圖2所示。

圖2 基于個人移動端的SSL協議安全技術總體架構
(1)攻擊方模塊:由筆記本電腦組成,與服務器和客戶端在同一網絡環境下,負責對客戶端模塊進行證書偽造攻擊、跳轉篡改攻擊等SSL攻擊操作。
(2)SSL服務器模塊:由內容服務器組成,負責與客戶端建立HTTPS鏈接。由于攻擊對象為SSL客戶端,該安全技術不會對服務器造成任何不良影響,因此既可以自行搭建私網服務器,也可以采用公網的服務器。該文以百度服務器與163郵箱服務器為例,以更加真實地測試SSL安全。
(3)SSL客戶端模塊:由手機、PAD等個人移動設備組成,與服務器建立HTTPS鏈接,作為被攻擊方。
(4)數據測量與分析模塊:由筆記本電腦組成,負責對SSL攻擊進行數據測量和可視化分析,而如何從SSL客戶端獲取數據是安全技術的難點。
基于個人移動端的SSL協議安全技術環節如圖3所示。

圖3 基于個人移動端的SSL協議安全技術環節
技術環節總體上分為:搭建環境、攻擊與防御、測量分析。首先采用“個人移動端+內容服務器”搭建技術環境,在此基礎上可以開展X.509證書偽造、鏈接跳轉篡改和繞過SSL綁定攻擊等多種SSL典型攻擊以及ARP防御、反向驗證和安全開發與使用等防御,在實現過程中通過實時抓包分析、證書解密等方法實現對實現過程的數據測量和可視化分析。
整個安全技術需要基于手機、筆記本電腦等個人移動端設備完成SSL攻擊、防御與測量分析等一系列復雜功能,包括證書偽造、鏈接跳轉篡改、手機抓包等,而這部分正是整個安全技術的難點所在。該文以常見的X.509證書偽造攻擊和鏈接跳轉篡改攻擊為例,實現過程中使用到的設備有一臺HP 8GRAM+1TROM/I5 /GTX1050TI筆記本電腦,作為攻擊方和數據測量與分析的設備;一臺MI 驍龍835/6GRAM+64GROM手機,作為客戶端和數據測量與分析的設備;一臺SSL服務器 BAIDU HTTPS SERVER/163 HTTPS SERVER,作為SSL服務器。
在此基礎上,該安全技術所用的手機和筆記本電腦等個人移動設備配置方法,如圖4所示,包括關鍵步驟、詳細操作和工具實例。

圖4 個人移動端軟件環境配置
(1)攻擊原理。
在SSL客戶端訪問一個基于SSL加密的Web時,需要三個步驟驗證證書服務器的有效性[10]:①該證書的主題名與訪問服務站點的名稱一致性;②該證書的有效期限;③該證書與證書鏈中數字簽名的匹配。若以上步驟有任意一個沒有通過,SSL協議就會向客戶端發出警告,指出證書存在安全問題。此時需要用戶來決定是否繼續使用,攻擊方由此利用用戶安全意識缺乏進行攻擊,若用戶選擇信任不安全的證書,或者被攻擊方惡意控制將偽造的證書加入信任列表,從而造成基于X.509證書偽造的SSL會話劫持攻擊。
(2)實現流程。
基于X.509證書偽造的攻擊流程如下:
①HTTPS連接協商:攻擊方同時與客戶端、服務器發出HTTPS連接協商,攻擊方截獲并轉發客戶端與服務器之間的所有請求與響應。當攻擊方截獲客戶端發給服務器的ClientHello請求時,記錄隨機序列在內的相關信息之后再轉發給服務器。
②攻擊方代替客戶端對服務器進行驗證:該步驟為證書偽造攻擊的關鍵步驟,當攻擊方截獲服務器發給客戶端的響應及服務器證書時,保存包括隨機序列和session的相關信息,將數據包中的證書重組替換為偽造的X.509證書,重新打包數據之后轉發給客戶端。
③攻擊方截獲服務器與客戶端交換的密鑰:客戶端發送密鑰給服務器,攻擊方截獲密鑰再轉發給服務器,若服務器要求對客戶端進行認證,則攻擊方需要截獲用戶證書并重新打包轉發。
④攻擊方基于偽造的X.509證書實施攻擊:攻擊方利用偽造的證書同時和服務器與客戶端建立HTTPS鏈接,但服務器與客戶端并不知道攻擊方作為中間人劫持了HTTPS鏈接,隨后服務器與客戶端之間傳輸的數據都可以被攻擊方明文解析。
(3)操作與關鍵配置。
X.509證書偽造攻擊在攻擊方和被攻擊方通過命令行輸入命令和瀏覽器建立HTTPS鏈接等方式,共需要五個步驟完成。X.509證書偽造攻擊的操作步驟與關鍵配置如表1所示。

表1 X.509證書偽造攻擊操作與關鍵配置
(4)數據測量與可視化分析。
根據被攻擊方抓包得到的報文可以看到攻擊方保持了證書id等外部信息不變,但實則替換了證書內部的加密協商相關字段值,由此達到攻擊方可以明文解密被攻擊方與服務器之間HTTPS鏈接的目的。
攻擊方進行X.509證書偽造攻擊之后,使用fiddler對被攻擊方的HTTPS訪問請求進行抓包分析,如圖5所示。攻擊方從截獲的報文中可以監控被攻擊方的網絡訪問記錄,本例訪問了百度移動端站點www.m.baidu.com;在此基礎上,攻擊方通過X.509證書偽造攻擊可以進一步竊取被攻擊方的個人私密信息,如被攻擊方的cookie值。在被攻擊方通過HttpCanary抓包,可以驗證攻擊方竊取的cookie值的真實性。

圖5 證書對比分析
(1)攻擊原理。
使用者在申請HTTPS鏈接時有兩種實現方式[11],一種是在輸入網址時添加前綴https://指定該鏈接為HTTPS鏈接,另一種是使用者如果沒有指定鏈接是HTTP還是HTTPS,瀏覽器會默認為HTTP類型,此時跳轉到HTTPS就需要利用HTTP的302狀態來重定向為HTTPS鏈接。大部分人圖方便并不會采用第一種實現方式,而第二種實現方式就給了攻擊方攻擊的機會[12]。一個完全由SSL加密的HTTPS通信變成了加密的HTTPS通信和明文傳輸的HTTP會話混合的傳輸方式,如果HTTP通信被劫持,那么HTTPS會話也會遭到劫持。
(2)實現流程。
基于鏈接跳轉篡改攻擊流程如下:
①HTTPS鏈接協商:攻擊方分別向客戶端、服務器發出HTTP和HTTPS鏈接協商,攻擊方截獲并轉發客戶端與服務器之間的所有請求與響應。
②攻擊方替換服務器HTTPS流量中的信息:攻擊方截獲服務器發給客戶端的HTTPS流量,攻擊方解析該數據包并將其中的替換成,將Location:https://...替換成Location:http://..,保存修改的URL后,重新打包數據并轉發給客戶端。
③攻擊方轉發修改客戶端HTTP流量中的信息:攻擊方截獲并解析客戶端發給服務器的HTTP請求,與之前保存的URL對比之后,若存在要修改的HTTP URL,則替換為原HTTPS URL,重新打包數據并轉發給服務器。
④攻擊方維持與客戶端和服務器之間的虛假HTTPS鏈接:分別與客戶端和服務器維持HTTP和HTTPS鏈接。
(3)操作與關鍵配置。
鏈接跳轉篡改攻擊在攻擊方和被攻擊方通過命令行輸入命令和瀏覽器建立HTTPS鏈接等方式,共需要四個步驟完成。鏈接跳轉篡改攻擊的操作步驟與關鍵配置如表2所示。

表2 鏈接跳轉篡改攻擊操作與關鍵配置
(4)數據測量與可視化分析。
攻擊方進行鏈接跳轉篡改攻擊之后,使用fiddler對被攻擊方的HTTPS訪問請求進行抓包分析,如圖6所示。攻擊方從截獲的報文中可以看到被攻擊方與服務器之間建立的會話都是HTTP鏈接,本例中被攻擊方與163郵箱移動站點建立了HTTP鏈接,地址欄信息為http://smart.mail.163.com。由于鏈接跳轉篡改攻擊將HTTPS鏈接篡改為了HTTP鏈接,攻擊方可以輕易竊取被攻擊方的個人私密信息,如被攻擊方的cookie值。如圖7所示,在被攻擊方通過HttpCanary抓包,可以驗證攻擊方竊取的cookie值的真實性。

圖6 數據可視化分析

圖7 攻擊端截獲的信息
SSL協議的個人移動端防御的關鍵在于如何有效防止攻擊方與服務器和客戶端建立虛假的HTTPS鏈接,具體可從四個方面實施。
(1)ARP防御。
在證書偽造攻擊和鏈接跳轉篡改攻擊中都需要攻擊方接入網絡并對被攻擊方進行ARP攻擊,因此針對ARP欺騙、DNS欺騙等網絡欺騙的防御方法同樣適用于SSL攻擊防御。常用的有動態ARP檢測、靜態IP-MAC綁定和安裝ARP防火墻等[13]。
(2)提高用戶安全意識。
證書偽造攻擊需要用戶安裝并信任偽證書,鏈接跳轉篡改攻擊則利用了用戶缺乏直接建立HTTPS鏈接的安全意識,因此用戶良好的安全意識可以有效防止SSL攻擊。例如,在網上注冊、登陸等需要提供私密信息時,選擇帶有https://前綴的網址;更換使用360等具有安全防護功能的瀏覽器并及時更新;盡量避免使用未知的wifi熱點。
(3)反向驗證。
SSL協議中僅要求在建立HTTPS鏈接時,客戶端驗證服務器的身份,使得攻擊方可以作為中間人偽裝成客戶端或服務端與對端建立虛假的HTTPS鏈接,因此服務器要求反向驗證客戶端身份可以防止SSL攻擊。例如,服務器在建立鏈接與通信過程中也要求客戶端使用證書與數字簽名驗證自身身份。
(4)提高開發者安全意識。
在對于78名Android和IOS開發者調查中發現,僅14名開發者意識到不完整實現SSL協議會遇到很多安全問題[14]。證書偽造攻擊利用了開發者對于證書綁定實現的忽視,因此開發者良好的安全意識可以減少受到SSL攻擊的可能。例如,完整的實現SSL相關接口;使用SSL Pinnng技術將證書與應用程序綁定[15-16]。
基于個人移動端的SSL協議安全技術可以完全依托個人移動端實現真實網絡環境中的SSL協議攻擊與防御,使得學生在居家條件下仍然可以利用手機、筆記本電腦等個人設備完成實驗,從而實現學生居家邊學邊做“停課不停練”。針對本校2017級計算機科學與技術專業創新班學生開展問卷調查,全班46人共收回有效問卷42份,結果表明該技術具有輕量化、實景化、便攜化和個性化的獨特優點。
(1)技術效能對比。
超過95%的學生有計算機和手機,83%的學生在疫情期間習慣使用手機上網課,80%的學生在疫情期間習慣使用計算機上網課。
根據調查問卷的結果,50%的學生認為基于計算機的實驗技術在易操作性上有優勢,分別有56%、49%、46%、65%的學生認為基于手機的實驗技術在易配置、直觀性、真實性和成本低方面有明顯優勢,而僅有20%的學生認為基于仿真的實驗技術在實驗真實性方面有微弱的優勢。
(2)實驗模式創新。
師生可以在遠程同步進行實驗,教師可以通過示范、答疑等方式對實驗的重難點分析解決。這種理論與實踐一體化的教學模式為有效破除高校人才培養存在的“眼高手低”“高分低能”等現實弊病提供了切實可行的教學模式創新空間。
根據調查問卷的結果,96%的學生認為教學中的同步實驗是很有必要的,79%的學生認為手機實驗能很好的實現教學與實驗的同步,但僅41%的學生認為手機實驗能代替傳統計算機實驗與仿真實驗,大部分學生對于手機實驗替代傳統實驗并不樂觀,而以手機為支點結合筆記本電腦等個人移動設備的實驗方式應用范圍更加廣泛。
隨著5G移動網絡的快速普及,個人移動端用戶規模和應用領域將迎來新一輪高速發展,以手機為支點的新應用、新業態和新模式進一步滲透融入國民經濟和社會生活。該文提出基于手機、筆記本電腦等個人移動端的SSL協議安全技術設計,并具體實現X.509證書偽造和鏈接跳轉篡改等典型SSL攻擊。疫情期間,該技術的應用實現了學生在居家環境下開展網絡安全實驗“停課不停練”,形成了以學習體驗為核心的個人掌上移動實驗室,經過實踐檢驗具有輕量文章、實景化和便攜化的優點,為網絡安全技術創新開拓實踐新途徑。