楊愛華 張茂紅
摘要:針對(duì)網(wǎng)上銀行系統(tǒng)的安全性問題,在已給出的基于用戶業(yè)務(wù)的Web應(yīng)用防護(hù)墻框架上加入自學(xué)習(xí)模塊,可以提升用戶介入率,降低WAF誤報(bào)率。該框架還能有效應(yīng)對(duì)支付密碼泄露、數(shù)據(jù)泄露、隱藏表單篡改和cookie欺騙等安全問題,通過實(shí)驗(yàn)驗(yàn)證了所設(shè)計(jì)的cookie防欺騙整體方案和隱藏表單防篡改防護(hù)策略的有效性。
關(guān)鍵詞:Web應(yīng)用防火墻;WAF框架;自學(xué)習(xí)模塊;cookie欺騙防護(hù);隱藏表單防篡改
0引言
隨著網(wǎng)絡(luò)信息的發(fā)展和電子商務(wù)的普及,網(wǎng)上銀行系統(tǒng)如雨后春筍般地快速發(fā)展,網(wǎng)上銀行是金融界的一大創(chuàng)新,給眾多客戶帶來實(shí)實(shí)在在的方便,用戶可以足不出戶地在網(wǎng)上辦理修改密碼、轉(zhuǎn)賬和支付等業(yè)務(wù)。但網(wǎng)上銀行在給客戶帶來方便的同時(shí)也帶來了安全隱患,譬如支付密碼泄露、數(shù)據(jù)泄露、DDoS攻擊及CC攻擊等。目前,網(wǎng)上銀行系統(tǒng)的安全隱患不可小覷,部署WAF可以對(duì)網(wǎng)上銀行系統(tǒng)起到全方位的防護(hù),可以對(duì)Web應(yīng)用層的主流攻擊進(jìn)行阻斷,有效地阻止攻擊者對(duì)網(wǎng)上銀行系統(tǒng)的攻擊。目前國外WAF,比較出名的有imperva,nsfocus,WAF等,國內(nèi)比較出名的有天融信、綠盟和啟明星辰的WAF產(chǎn)品,主要功能有阻斷注入攻擊、cookies以及網(wǎng)絡(luò)欺騙攻擊,XSS攻擊、目錄遍歷.DDoS以及CC攻擊等攻擊。
1WAF中自學(xué)習(xí)模塊
1.1WAF內(nèi)容
WAF部署在客戶端與應(yīng)用程序之間,能實(shí)現(xiàn)對(duì)應(yīng)用程序的防護(hù)功能,通過不改變?cè)芯W(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),部署簡單,容易被用戶接受。WAF的主要工作職責(zé)對(duì)信息竊取、網(wǎng)頁篡改、非法侵入和拒絕服務(wù)起到防護(hù)作用。WAF不僅能保護(hù)網(wǎng)站及服務(wù)器遭受各種惡意攻擊,還能優(yōu)化資源保證Web可靠性與可用性。
1.2自學(xué)習(xí)模塊
根據(jù)網(wǎng)上銀行系統(tǒng)特點(diǎn),路瑞強(qiáng)等人給出了一個(gè)基于用戶業(yè)務(wù)的WAF框架,整體架構(gòu)包括預(yù)處理模塊、防護(hù)模塊、管理模塊和日志模塊。為了提升檢測(cè)速度,降低WAF誤報(bào)率,加入自學(xué)習(xí)模塊。模塊分為學(xué)習(xí)過程和過濾過程,要從正則自適應(yīng)匹配、長度緯度以及語義分析3個(gè)維度來實(shí)現(xiàn),如圖1所示。
自適應(yīng)匹配主要是對(duì)維度的Web請(qǐng)求參數(shù)值進(jìn)行過濾,進(jìn)而自動(dòng)匹配生成適合該參數(shù)值的白名單正則表達(dá)式。當(dāng)應(yīng)用程序接收到用戶的Web請(qǐng)求時(shí),學(xué)習(xí)過程的正則自適應(yīng)匹配函數(shù)會(huì)自動(dòng)識(shí)別,返回相應(yīng)函數(shù)的匹配值,當(dāng)相同的請(qǐng)求再次被接收時(shí),再一次進(jìn)行匹配,如果匹配的數(shù)值高于之前的匹配結(jié)果,則對(duì)應(yīng)的匹配值將重置。在Web請(qǐng)求學(xué)習(xí)的過程中,對(duì)數(shù)值的檢測(cè)會(huì)越來越寬松,降低誤報(bào)率,如有漏報(bào)則人工進(jìn)行審核處理。而檢測(cè)過程的正則自適應(yīng)匹配函數(shù)支持用戶自定義正則,一旦匹配到自學(xué)習(xí)模式記錄的值為字符串類型時(shí),將使用自定義正則進(jìn)行檢測(cè)。用戶可以在管理頁面根據(jù)不同的場(chǎng)景進(jìn)行定制防護(hù),提高自學(xué)習(xí)模式的通用性。
長度維度的學(xué)習(xí)和正則維度類似,當(dāng)新的參數(shù)值長度比舊的參數(shù)值長度大時(shí),會(huì)替代舊長度,處理時(shí)主要考慮降低誤報(bào)因素。
詞法分析,把字符轉(zhuǎn)換為ASCLL碼的十進(jìn)制,之后在進(jìn)行分類,分類規(guī)則如下:
①0~31及127(共33個(gè))是通信專用字符或控制字符,標(biāo)記為c,全稱control;
②中文等分為一類,標(biāo)記為n,即normal:空格;
③—般字符如0,,!,”,@,.,?,標(biāo)記為u,即usual:常見字符;
④其他諸如’,*,{)等標(biāo)記為a,即anomaly:異常字符。
在進(jìn)行分類轉(zhuǎn)換的同時(shí),相同的特征將被合并為一個(gè)。例如,輸入“aaabbbccc大雨傾盆”,將被轉(zhuǎn)換為n,而“大家好”,則將被轉(zhuǎn)換為nun。語法分析維度有迭代次數(shù)的限制,語法分析默認(rèn)最多存儲(chǔ)5個(gè)特征,當(dāng)超過5個(gè)特征數(shù)時(shí),意味著該參數(shù)無固定的特征模式,該維度的檢測(cè)被投向bypass模式。
2WAF安全防護(hù)
當(dāng)用戶開啟WAF的Web特征攻擊過濾庫過濾,可以防護(hù)已確定的SQL注入攻擊、XSS攻擊、CSRF攻擊、命令注入、協(xié)議入侵和會(huì)話固定攻擊等常見Web應(yīng)用層的攻擊。Web特征攻擊過濾庫要及時(shí)跟進(jìn)和升級(jí)。除此之外,用戶還可以開啟自定義策略,譬如HTTP訪問限制、cookie防護(hù)、隱藏表單防護(hù)、盜鏈防護(hù)、XML防護(hù)及應(yīng)用層DDoS攻擊防護(hù)等自定義策略。
2.1支付密碼防泄露
支付密碼泄露問題是網(wǎng)上銀行的一大安全隱患,預(yù)防這一隱患,需要謹(jǐn)防釣魚網(wǎng)站。但釣魚網(wǎng)站利用XSS攻擊漏洞進(jìn)行的釣魚攻擊手段相當(dāng)隱蔽,即使網(wǎng)民的安全意識(shí)相當(dāng)強(qiáng),也無法抵御攻擊,WAF部署在防護(hù)網(wǎng)站與客戶端之間會(huì)阻斷XSS攻擊。XSS攻擊分3種,反射型XSS攻擊、存儲(chǔ)型XSS攻擊和基于DOM的XSS攻擊。編寫XSS攻擊正則,如下所示:黑客制造釣魚網(wǎng)站,若代碼能匹配上WAF的上面這段XSS正則,WAF就會(huì)阻斷請(qǐng)求。黑客的陰謀就不能得逞。
2.2cookie欺騙防護(hù)模塊
當(dāng)用戶在網(wǎng)上選購商品時(shí),會(huì)把選擇好的商品放入購物車。若瀏覽器突然異常關(guān)閉,由于HTTP是無狀態(tài)鏈接,如果沒cookie,購選的商品就不復(fù)存在,這個(gè)結(jié)果是大家最不想看到的,若再次打開購物網(wǎng)重新鏈接HTTP,會(huì)影響網(wǎng)絡(luò)速度。但cookie帶來便利的同時(shí)也會(huì)帶來欺騙。cookie欺騙是指?jìng)卧煊脩羯矸莼驒?quán)限,目的就是想要獲得某些用戶或者某些高級(jí)權(quán)限。在網(wǎng)上銀行系統(tǒng)中,常遇到黑客非法獲取別人的cookie進(jìn)入系統(tǒng)進(jìn)行非琺操作。為了安全,設(shè)計(jì)了—套完整的cookie防欺騙方案。
2.2.1cookie中的secure屬性
該屬性被設(shè)置為“真”時(shí),表示創(chuàng)建的cookies會(huì)被以安全模式向服務(wù)器傳送,也就是只能在HTTPS連接中被瀏覽器傳遞到服務(wù)器端進(jìn)行會(huì)話驗(yàn)證,如果是在HTTP連接中則不會(huì)傳遞該cookie信息,所以不會(huì)被竊取到cookie的具體內(nèi)容。就是只允許在加密的情況下將cookie加在數(shù)據(jù)包請(qǐng)求頭部,防止cookie被帶出來。
2.2.2 HttpOnly屬性
如果在cookie中設(shè)置了“HttpOnly”屬性,那么通過程序(Js腳本、Applet等)將無法讀取到cookie信息,這樣能有效的防止XSS攻擊。secure屬性的目的是防止信息在傳輸過程中被監(jiān)聽捕獲后信息泄漏,HttpOnly屬性的目的是防止程序獲取cookie后進(jìn)行攻擊。但是這2個(gè)屬性并不能解決cookie在本機(jī)出現(xiàn)的信息泄漏的問題(FireFox的插件FireBug能直接看到cookie的相關(guān)信息)。
2.2.3 cookie加密
cookie往往被用于記錄用戶登錄狀態(tài),比如userid盡量不要記錄密碼。因?yàn)閏ookie被存儲(chǔ)在客戶端會(huì)很容易被篡改。為了有效防止XSS攻擊盜取用戶cookie,給cookie加密,這樣可以防止基于cookie的SQL注入、命令注入以及其他五花八門的攻擊。
cookie欺騙防護(hù)的功能核心,在WAF上進(jìn)行cookie加密,加密算法使用MD5,對(duì)userid進(jìn)行加密,加密后的userid被存儲(chǔ)在客戶端的cookie中,由于加密算法不可逆,所以服務(wù)器收到的cookie是無法解密的,服務(wù)器應(yīng)在用戶數(shù)據(jù)列表中增加一個(gè)專用保存MD5加密后的字段userid,然后通過sQL查詢到userid。當(dāng)WAF開啟cookie加密策略,可以有效防止XSS攻擊盜取用戶的cookie,使攻擊者拿到用戶cookie的密文也無濟(jì)于事,最終WAF因無法解密而失效。
2.2.4 cookie簽名
操作辦法是在set-cookie加上防篡改驗(yàn)證碼。如:user name cecgwl23。防篡改驗(yàn)證碼的生成規(guī)則的方法:md5(cookieValue+key)或shal(cookieValue+key),key可以是復(fù)雜服務(wù)器端得到客戶端送上來的cookie,也可以是服務(wù)器端所掌握—個(gè)固定字符串。然后,重新計(jì)算一下驗(yàn)證碼,如一致,則未篡改。在這里,簽名是根據(jù)client ip加密的,惡意者即使拿到cookie,由于簽名驗(yàn)證不通過,無法達(dá)到cookie欺騙的目的。
防護(hù)措施除此以外,設(shè)置cookie有效期限,防止一旦cookie被攻擊者竊取,攻擊者一直使用用戶的賬戶登錄。設(shè)置限制cookie的最大個(gè)數(shù)、cookie名字的最大長度等各項(xiàng)配置多方位防止cookie欺騙的發(fā)生。若防護(hù)系統(tǒng)無需防護(hù),則添加到白名單。
3隱藏表單
在網(wǎng)上銀行系統(tǒng)里,有些表單上的元素為了保密起見對(duì)客戶隱藏,需要把表單設(shè)置為隱藏表單,但依然有被篡改的風(fēng)險(xiǎn)??梢栽赪AF里設(shè)置隱藏表單防篡改策略。隱藏表單的HTML表單字段不會(huì)在屏幕上顯示,表面上看似無法修改,事實(shí)上能被修改。若把價(jià)格設(shè)置為負(fù)數(shù),有的應(yīng)用程序竟然能接受負(fù)數(shù)價(jià)格,攻擊者不僅能收到貨物,銀行卡還能收到退款。
隱藏表單和其他表單類型是一樣的,同樣有value這個(gè)屬性,唯一的區(qū)別在于隱藏表單不會(huì)把這個(gè)元素顯示出來,但在提交過程中仍然有效。中進(jìn)行提交后,應(yīng)用程序會(huì)獲取該元素的值,但數(shù)值不在屏幕上顯示。WAF隱藏表單防篡改策略原理提取特征值:price,隱藏參數(shù)格式:id“price”value。若提交代碼與隱藏參數(shù)格式中內(nèi)容完全匹配,則請(qǐng)求被阻斷。
4實(shí)驗(yàn)部分
4.1支付密碼泄露
用戶在瀏覽器中輸入支付認(rèn)證的信息包括銀行卡號(hào)和密碼。如果攻擊者通過竊聽方式或釣魚網(wǎng)站獲得用戶的支付密碼,就可以通過網(wǎng)絡(luò)進(jìn)入持卡人的賬戶進(jìn)行轉(zhuǎn)賬或者支付,給持卡人帶來經(jīng)濟(jì)上的損失。下面模擬黑客制造釣魚,主要代碼如下:
用戶一旦在網(wǎng)站上輸入賬戶和密碼,點(diǎn)擊“l(fā)ogin”按鈕,賬號(hào)和密碼就會(huì)被黑客獲得。開啟WAIF固化規(guī)則防護(hù)中的XSS攻擊,使用滲透工具burpsite攔截請(qǐng)求,在WAF的防護(hù)下,XSS攻擊請(qǐng)求被攔截。詳情如圖2所示。
同理,WAF開啟表單防護(hù)策略編寫html代碼,。開啟隱藏表單防護(hù)效果如圖3所示。
4.2WAF中的cookie防護(hù)
HTTP cookie是通過客戶端傳送數(shù)據(jù)的另一個(gè)常用機(jī)制,和隱藏表單字段類似,HTTP cookie一般不顯示在屏幕上,不可以由用戶直接修改,但可以使用攔截代理服務(wù)器對(duì)HTTPcookie進(jìn)行修改。抵御風(fēng)險(xiǎn)辦法之一,就是WAIF給cookie加密。開啟WAF的cookie加密策略,使用wireshark工具抓包,cookie加密之后的效果如圖4所示,從圖中可以明顯看出cookie已經(jīng)被加密。
5結(jié)束語
如今,WAF在中國如火如荼地發(fā)展,很多企業(yè)投入到對(duì)WAF的研究之中。WAF為網(wǎng)上銀行系統(tǒng)安全保駕護(hù)航,不僅解決了網(wǎng)上最棘手的安全問題——支付賬戶、密碼和數(shù)據(jù)泄露,同時(shí)通過加入自學(xué)習(xí)模塊提高了用戶參與度,降低了誤報(bào)率,阻斷了黑客的不法攻擊。最后,通過實(shí)驗(yàn)驗(yàn)證了WAIF能很好地防護(hù)網(wǎng)站釣魚攻擊、SQL注入攻擊、cookie欺騙攻擊和隱藏表單篡改攻擊,達(dá)到了預(yù)期的防護(hù)效果。但WAF研究之路還會(huì)很長,因?yàn)橐?guī)則庫要不斷升級(jí)才能阻斷最新類型的攻擊。