◆胡 悅 劉嘉勇 黃 誠
(四川大學(xué)電子信息學(xué)院 四川 610065)
針對HTTPS的HEIST攻擊及檢測技術(shù)研究
◆胡 悅 劉嘉勇 黃 誠
(四川大學(xué)電子信息學(xué)院 四川 610065)
通過分析HEIST攻擊的技術(shù)路線和實現(xiàn)方法,建立了HEIST攻擊威脅模型。該攻擊可以繞過HTTPS加密得到明文信息,影響巨大,并且現(xiàn)有WAF無法對其有效防御。本文提出了一種基于支持向量機的HEIST攻擊檢測方法。該方法從文本特征、統(tǒng)計特征和窗口特征三個角度對樣本數(shù)據(jù)進行特征提取,完成SVM選擇器訓(xùn)練實現(xiàn)攻擊行為定位。在此基礎(chǔ)上完成了攻擊檢測實驗,實驗結(jié)果表明,該方法能及時準(zhǔn)確定位HEIST攻擊行為,完成威脅感知。
HTTPS; HEIST; BREACH; 信息安全
HTTPS是以安全為目標(biāo)的HTTP通道,它通過SSL/TLS協(xié)議將網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)進行有效的加密。戴爾安全報告顯示,2015年第四季度全球HTTPS連接平均占網(wǎng)絡(luò)連接的64.6%[1],這說明HTTPS方式已成為網(wǎng)絡(luò)連接的主流。但是HTTPS協(xié)議并不是完全安全的,常見的HTTPS攻擊方法有BEAST、Lucky-13、RC4 Biases、CRIME、BREACH等[2]。其中CRIME[3]和BREACH[4]都是利用數(shù)據(jù)壓縮來破解HTTPS加密數(shù)據(jù)的攻擊方式,不同的是CRIME的目標(biāo)是SSL/TLS壓縮,BREACH的目標(biāo)是HTTPS表頭壓縮。由于BREACH針對的是更廣泛被使用的壓縮方式,BREACH的影響也更為嚴(yán)重。此外,CRIME和BREACH都需要攻擊者監(jiān)聽網(wǎng)絡(luò)流量來測量加密響應(yīng)的大小[5],使得這兩種攻擊都要借助中間人攻擊。
Mathy Vanhoef和Ven Goethem[7]發(fā)現(xiàn)的HEIST攻擊則能夠消除中間人攻擊的限制,因為HEIST可以利用TCP協(xié)議的特性來測量HTTPS響應(yīng)信息的大小,大大降低了CRIME和BREACH攻擊的門檻。攻擊者只需要誘使目標(biāo)用戶訪問一個惡意網(wǎng)站,結(jié)合HEIST和BREACH這兩種攻擊技術(shù),就能從經(jīng)過加密的響應(yīng)數(shù)據(jù)中提取并解密郵箱地址等其他用戶隱私數(shù)據(jù),對用戶信息安全帶來極大的威脅。目前,在HEIST攻擊防范上只有禁用第三方cookie,但是這種方式會使網(wǎng)頁在線服務(wù)無法正常運行。針對上述情況,文本建立了HEIST攻擊威脅模型,根據(jù)威脅模型設(shè)計了一種HEIST攻擊檢測系統(tǒng),通過對服務(wù)器日志和流量的分析,從文本特征、統(tǒng)計特征、窗口特征三個角度來檢測HEIST攻擊,有助于提升Web系統(tǒng)安全性。
1.1 HEIST攻擊
HEIST是HTTPS上的一種旁路攻擊方式,其工作原理是通過破解TCP上的HTTPS響應(yīng)方法來測量HTTPS響應(yīng)的長度。HEIST攻擊主要利用Service Workers[8]引入的Fecth API和Resource Timing API來實現(xiàn)。
Fecth API通過fetch()可以獲取任何資源,包括身份驗證方式下的跨域,能夠打破同源策略的限制,讀出跨域請求的響應(yīng)。Fetch API與Promise一起工作,對遠程資源發(fā)起的請求會返回一個Promise對象。在TCP握手和SSL/TLS協(xié)商過后,瀏覽器向服務(wù)器發(fā)送GET或POST請求,然后等待服務(wù)器的響應(yīng),當(dāng)瀏覽器當(dāng)接收到第一個字節(jié)的響應(yīng)數(shù)據(jù)后,Promise對象根據(jù)fetch()的結(jié)果可以resolve或者fail,并且可以訪問Response對象,這時候Response對象仍然有數(shù)據(jù)流入,使瀏覽器可以在完全下載之前開始處理響應(yīng)。然而,在TCP層,若服務(wù)器響應(yīng)報文大于最大傳輸單元(MSS),服務(wù)器會將響應(yīng)拆分為多個TCP分組,這些分組會根據(jù)TCP擁塞控制機制[9]來發(fā)送,發(fā)送的TCP窗口大小等于擁塞窗口的大小。若服務(wù)器傳送的數(shù)據(jù)大于擁塞窗口則需要分多次傳輸,即需要多個RTT時間完成數(shù)據(jù)的傳輸。圖1和圖2分別表示HTTP響應(yīng)對應(yīng)單個TCP窗口的時間抽和HTTP響應(yīng)需要兩個TCP窗口的時間軸。
圖1 HTTP響應(yīng)對應(yīng)單個TCP窗口的時間軸
圖2 HTTP響應(yīng)對應(yīng)兩個TCP窗口的時間軸
Promise.resolve()解析的時間與接收到初始擁塞窗口相符,知道資源何時被下載完成,就可以確定響應(yīng)是在單個TCP窗口還是需要多個TCP窗口。瀏覽器獲取網(wǎng)頁時會對網(wǎng)頁中每一個對象(腳本文件、圖片等)發(fā)起一個HTTP請求,Resource Timing API中performance.getEntries方法會以數(shù)組形式返回這些請求的時間統(tǒng)計信息,資源完全接收時間為數(shù)組最后一項的responseEnd。圖3示例了JavaScript如何獲取第一次TCP返回時間和資源完全接收時間差,T1是第一次TCP返回的時間,T2是資源完全接收的時間。如果是單個TCP窗口,T2-T1通常在1ms以內(nèi),結(jié)果非常小。如果是多個TCP窗口,T2-T1隨著附加的往返時間會明顯增加很多。實際情況中,初始擁塞窗口的預(yù)定值通常為10MSS[10],MSS的值為1460,響應(yīng)小于還是大于初始擁塞窗口可以歸結(jié)為確定響應(yīng)是小于還是大于約14kB。
很多時候請求的結(jié)果包含請求的參數(shù),利用這一點,將響應(yīng)分為兩個部分,一部分是想得到的實際大小,另外一部分是控制的請求參數(shù),這里稱之為反射參數(shù)。反復(fù)調(diào)整反射參數(shù),能夠得到第一次TCP返回的最大可能尺寸(對每個服務(wù)器來說一般是一個固定值),再減去HTTP和SSL/TLS的header的尺寸就可以得到響應(yīng)大小。例如,反射參數(shù)是708字節(jié)的時候正好可以一次TCP請求返回,反射參數(shù)為709字節(jié)時,總響應(yīng)需要兩個TCP窗口,則響應(yīng)大小為10*1460(MSS)-528(HTTP響應(yīng)報頭)-26(SSL/TLS頭)-708 = 13337字節(jié)。
圖3 第一次TCP返回時間和資源完全接收時間差代碼示例
HEIST利用兩個新的API得出目標(biāo)主機發(fā)送的窗口數(shù)量,整個過程中通過一段JavaScript代碼來確定HTTPS響應(yīng)信息的實際大小。然后,惡意HEIST代碼就可以配合BREACH攻擊來從用戶的請求數(shù)據(jù)中提取出加密信息。
1.2 BREACH攻擊
BREACH利用gzip壓縮還原HTTPS響應(yīng)中的秘密信息,進行BREACH攻擊,必須滿足以下兩個條件:
(1)服務(wù)器響應(yīng)能反映注入的額外數(shù)據(jù);
(2)攻擊者能監(jiān)聽網(wǎng)絡(luò)流量測量加密響應(yīng)的大小。
BREACH攻擊思想是若注入的額外數(shù)據(jù)與秘密重復(fù),gzip壓縮會更有效的壓縮響應(yīng)信息,gzip的這種特性已被證明可以用來解密[4](如CSRF tokens)。圖4為HTTPS請求和對應(yīng)的響應(yīng)報文的一部分,上面部分的HTTPS請求的URL參數(shù)會包含在下面HTTPS響應(yīng)體中。
攻擊者可以利用惡意JavaScript代碼來控制用戶user參數(shù)中“CSRFtoken=”值,如果〈guess〉中第一個字符與CSRFtoken中相同,gzip能通過字符替換來使壓縮響應(yīng)變小。反復(fù)改變和測量響應(yīng)大小能夠一個一個猜解出CSRFtoken中的字符直到恢復(fù)整個秘密。
圖4 HTTPS請求和響應(yīng)報文
猜測字符需要監(jiān)聽網(wǎng)絡(luò)流量來測量加密響應(yīng)的大小,之前要借助中間人攻擊,但是利用HEIST僅需在瀏覽器執(zhí)行一段惡意Javascript代碼即可,BREACH攻擊同樣可以獲取網(wǎng)頁上的用戶的郵箱地址等隱私信息,使得BREACH攻擊能夠很輕松的被攻擊者利用,對HTTPS安全帶來極大的威脅。
威脅建模能對威脅和漏洞進行結(jié)構(gòu)化的評估,將威脅建模方法應(yīng)用到Web應(yīng)用程序中,能夠充分理解和識別系統(tǒng)現(xiàn)存的威脅。根據(jù)這些威脅信息,就能夠采取適當(dāng)?shù)膶Σ呦踩[患,從而降低被攻擊的風(fēng)險。
DFD是數(shù)據(jù)流程圖,能夠抽象性和概括性地描述信息流和數(shù)據(jù)在系統(tǒng)中流動和被處理的過程。根據(jù)HEIST攻擊定義的DFD威脅模型能有助于評估系統(tǒng)存在的HEIST攻擊隱患和對網(wǎng)站進行風(fēng)險評估。本文站在受害者的角度,對HEIST攻擊建立DFD威脅標(biāo)準(zhǔn)模型,分兩層對HEIST攻擊進行分解,0級DFD說明攻擊的整個數(shù)據(jù)流向,1級DFD具體展現(xiàn)了HEIST和BREACH攻擊數(shù)據(jù)流。
圖5為0級HEIST攻擊DFD,表示受害者點擊惡意鏈接后,受害者的瀏覽器將提交惡意請求,HEIST攻擊利用惡意JavaScript讓受害者發(fā)送大量的HTTPS請求并分析猜解返回的HTTPS響應(yīng)包直到獲取受害者的完整的秘密信息,如步驟1~7所示。1受害者訪問攻擊者網(wǎng)站,2攻擊者注入惡意JavaScript代碼,3受害者瀏覽器發(fā)送大量HTTP請求,4目標(biāo)網(wǎng)站響應(yīng),5攻擊者根據(jù)返回時間得到響應(yīng)大小,6攻擊者利用BREACH攻擊,7攻擊者得到受害者隱私信息。
圖5 HEIST攻擊0級DFD
圖6為HEIST攻擊1級DFD,攻擊者偽造惡意網(wǎng)站引誘用戶訪問就能夠?qū)嵤〩EIST攻擊。HEIST攻擊通過反射參數(shù),根據(jù)返回響應(yīng)包的時間差來判斷出正好符合一個TCP窗口的數(shù)據(jù)包,進而得到響應(yīng)信息的大小。圖7為BREACH攻擊1級DFD,BREACH攻擊主要利用gzip壓縮特性來解密HTTPS響應(yīng)包,并且HTTPS響應(yīng)包要包含受害者發(fā)送的HTTPS請求參數(shù)。如果受害者登錄目標(biāo)網(wǎng)站,并且BREACH攻擊猜解的信息中包含CSRFToken,能夠突破系統(tǒng)CSRF防御導(dǎo)致更嚴(yán)重的后果。
圖6 HEIST攻擊1級DFD
圖7 BREACH攻擊1級DFD
如上文所述,HEIST威脅模型精確描述了攻擊行為,攻擊者要進行HEIST攻擊,首先要對用戶釣魚或者發(fā)送垃圾郵件,并且用戶啟用JavaScript。這種只用通過惡意JavaScript代碼執(zhí)行攻擊的方式,使用戶和系統(tǒng)很難采取有效的防御措施。HEIST攻擊使BREACH攻擊不再需要借助于中間人攻擊,大大降低了BREACH攻擊的門檻,而BREACH攻擊利用的是很多網(wǎng)站都會使用的gzip壓縮技術(shù),使得Web應(yīng)用在未來可能遭到頻繁的BREACH攻擊。
根據(jù)HEIST攻擊DFD威脅模型,可以總結(jié)歸納出HEIST攻擊的三個重要特征,有助于系統(tǒng)有效的發(fā)現(xiàn)和檢測HEIST攻擊。
(1)同一個IP地址集中請求同一個頁面:HEIST攻擊使目標(biāo)用戶在一段時間內(nèi)不停地向服務(wù)器發(fā)送請求,在日志統(tǒng)計中將表現(xiàn)出某個IP地址對某個頁面的請求數(shù)很高。
(2)HTTPS請求參數(shù)特征:BREACH攻擊會破解響應(yīng)信息獲取用戶隱私信息,因此請求參數(shù)中會包含user、uid、csrftoken、cookie、.com等涉及敏感信息的字符。在日志分析中可以匹配這些特征字符分析。
(3)TCP窗口數(shù)量:HEIST攻擊利用TCP協(xié)議來竊取HTTPS加密信息,會根據(jù)TCP窗口數(shù)量來定位響應(yīng)信息的大小,系統(tǒng)在流量監(jiān)測方面可以依據(jù)擁塞窗口TCP分包來辨別。
3.1 方案設(shè)計
根據(jù)HEIST威脅模型設(shè)計了針對HEIST入侵檢測的方法,該方法根據(jù)攻擊的特征進行提取建立風(fēng)險模型,如圖8所示。對日志文件和流量進行特征匹配,完成對HEIST攻擊感知和定位。
攻擊檢測模型分為日志分析模塊和流量分析模塊,對服務(wù)器當(dāng)前狀態(tài)進行提取。日志分析模塊首先通過預(yù)處理模塊完成日志的格式化處理,以訪問時間為基準(zhǔn)依次輸出,每一條訪問記錄保存為一維數(shù)組中間文件,數(shù)組元素包括請求時間,請求源IP、請求路徑,狀態(tài)碼。將格式化的中間文件分別傳入文本特征分析模塊和統(tǒng)計特征分析模塊。
圖8 攻擊檢測方法
3.2 文本特征分析
文本特征分析模塊通過風(fēng)險模型的文本特征規(guī)則使用匹配器進行分析。對HEIST攻擊的行為特征進行提取構(gòu)造特征圖,行為特征圖由特征點和特征邊組成。點和邊的特征主要由手工定義DFA得到。匹配器根據(jù)規(guī)則對輸入內(nèi)容進行檢測,輸出風(fēng)險值R。
點特征為單條日志訪問記錄中存儲的信息的內(nèi)容特征,如權(quán)值為0.3的點特征規(guī)則r’@.*?..*?s’。命中該規(guī)則表明該條記錄使用了HEIST攻擊敏感參數(shù)。
邊特征為記錄多條數(shù)據(jù)之間的依賴關(guān)系的規(guī)則,分為兩類。第一類為用戶行為依賴邊,以日志記錄的IP字段為導(dǎo)向,進行邊匹配時,首先將同IP請求的路徑構(gòu)造成一個時間軸對象,將源IP賦值給對象名,以時間順序建立鍵值對,鍵名為請求時間,鍵值為請求路徑。該對象記錄了單用戶在一定時間內(nèi)的行為。依次將相鄰的多個鍵值對的值輸入匹配器,輸出命中的特征邊的序號和次數(shù)。如權(quán)值為0.7的規(guī)則r’(w*?.php?csrf=w*)[s|S]*?1w’,獲取參數(shù)內(nèi)容長度逐步增長的請求行為。第二類邊為資源請求依賴邊,以服務(wù)器資源為導(dǎo)向構(gòu)造對象,對象名為uri字段中頁面名稱,鍵值對建立和匹配方法由第一類特征邊類推。完成基礎(chǔ)規(guī)則定義后,使用大量攻擊日志對行為進行提取補充,增加點和邊的規(guī)則。具體規(guī)則和權(quán)值示例可見表1。
表1 文本特征權(quán)值參照表
分析器風(fēng)險值計算公式如下:其中xij為點或邊的對應(yīng)第j條規(guī)則是否命中的布爾值,pij為該規(guī)則的權(quán)值,N為特征點,C為特征邊為點和邊特征權(quán)值和。
3.3 統(tǒng)計特征分析
統(tǒng)計特征分析,主要考慮客戶端對服務(wù)器的請求頻率,通常正常的同一個客戶端在一段時間內(nèi)對服務(wù)器的請求數(shù)量較低,而攻擊者控制的客戶端會向服務(wù)器發(fā)送大量的請求。根據(jù)HEIST攻擊的訪問頻次對單個IP的行為進行定位,頻率的計算公式如下:
3.4 窗口特征分析
HEIST攻擊會將大量數(shù)據(jù)字節(jié)注入到網(wǎng)絡(luò),服務(wù)器會增大擁塞窗口以便把更多的分組響應(yīng)包發(fā)送出去。對系統(tǒng)的擁塞窗口大小進行獲取,窗口分析程序輸出結(jié)果為一個布爾值C,表示指定時間范圍內(nèi)擁塞窗口的變化情況,默認(rèn)值為0,當(dāng)擁塞窗口大小前后發(fā)生顯著增大后穩(wěn)定現(xiàn)象時,將C置1。
3.5 判斷器
將分析模塊輸出的風(fēng)險值f{R,P,C}置入判斷器,由于各分析模塊并非互不相干,因此在簡單空間模中無法快速進行結(jié)果判斷。本文選取SVM分類算法對風(fēng)險值進行判定。
SVM算法將輸入空間映射到一個高維度空間,使樣本在該空間現(xiàn)性可分。算法筠連特征選取為上述三個風(fēng)險值,本文使用libsvm和liblinear開源庫完成SVM,懲罰系數(shù)置為0.2,核函數(shù)選取如下:
提取蜜罐獲取的HEIST攻擊特征與正常行為數(shù)據(jù)作為實驗數(shù)據(jù),將數(shù)據(jù)2/3作為訓(xùn)練數(shù)據(jù),進行提取置入判斷器模型進行訓(xùn)練。使用樣本剩余1/3作為實驗數(shù)據(jù),測試服務(wù)器對防御系統(tǒng)進行檢測,根據(jù)SVM分類計算結(jié)果,輸出是否存在HEIST攻擊行為及存在攻擊行為的源IP。檢測結(jié)果節(jié)選如下:
表2 檢測結(jié)果表
實驗結(jié)果表明,該方法能有效的捕獲HEIST攻擊行為,現(xiàn)有的WAF產(chǎn)品暫時還沒有檢測HEIST攻擊的能力,因此未做對比試驗。由于訓(xùn)練數(shù)據(jù)有限,選擇器的判斷能力存在提升空間。
本文首先闡述了HEIST攻擊原理,然后建立了HEIST攻擊威脅模型并提出了針對HEIST攻擊的檢測方法,對日志記錄的字段數(shù)據(jù)進行信息提取與分析處理,從文本特征、統(tǒng)計特征和窗口特征三個角度對HEIST攻擊行為進行判斷,通過多次實驗分析,證明了本文設(shè)計的HEIST攻擊檢測方法的可行性和有效性。
[1]戴爾安全年度威脅報告詳解,2016.http://server.51cto.co m/News-507030.htm.
[2]Sarkar.P.G,Fitzgerald.S:Attacks on SSL a comprehensive study of beast,crime,time,breach,lucky 13 and RC4 biases,201 3.https://www.isecpartners.com/media/106031/ssl_attack_survey. pdf(2014).
[3]Tal Be’ery and Amichai Shulman:A perfect crime? onl y time will tell.Black Hat Europe,2013.
[4]Gluck.Y,Harris.N and Prado.A:BREACH:receiving the CRIME attack,2013.
[5]Guha Sarkar P:Modern Attacks on SSL/TLS:Let the BEAST of CRIME and TIME be not so LUCKY[J].Appsec Usa,2013.
[6]Goodin,Dan:HEIST expl — New attack steals SSNs,e mail addresses,and more from HTTPS pages,2016.
[7]M Vanhoef,TV Goethem:HEIST:HTTP Encrypted Info rmation can be Stolen through TCP-windows,2016.
[8]W3C.Service Workers.https://www.w3.org/TR/service -workers/,June 2015.
[9]M.Allman,V.Paxson,and E.Blanton.TCP Congestion Co ntrol.RFC5681,September 2009.
[10]Nandita Dukkipati,Tiziana Refce,Yuchung Cheng, Jerry Chu,Tom Herbert,Amit Agarwal,Arvind Jain,and Natalia Sutin.An argument for increasing TCP’s initial congestion window.Compu ter Communication Review.2010.