華文網

今天你搶到回家的火車票了嗎?

2018年春運正如火如荼進行著,朋友之間見面都會忍不住關切地問一句“搶著票了嗎?”

春運又稱“年度全球最大規模的人口流動”,是一部“人民的鬥爭史”,起初是與黃牛鬥智鬥勇,後來為了整治黃牛,

12306不斷升級驗證碼,於是大家又開始與驗證碼鬥智鬥勇。

驗證碼到底是鬧啥類?

簡單來說,就是區分搶票的你是不是人類。為防止伺服器端的資源被用戶端的電腦程式濫用或攻擊,伺服器需要區分當前使用者是電腦還是人類,一般在網站的關鍵操作位置都會採用驗證碼技術來區分。

驗證碼的全稱是:全自動區分電腦和人類的圖靈測試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱CAPTCHA)。是一種區分使用者是電腦或人的全自動化程式。在CAPTCHA測試中,作為伺服器端的電腦會自動生成一個問題由用戶來解答。這個問題可以由電腦生成並評判,但是必須只有人類才能解答。由於電腦無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。

驗證碼的工作原理

常見的圖形驗證碼是與web中的會話相關聯的,在一個會話開始時,在需要使用驗證碼的地方會生成一個與當前會話相關的驗證碼,用戶識別出驗證碼後,通過填寫表單將資料提交給伺服器,伺服器端會驗證此次會話中的驗證碼是否正確。

具體來說,其工作流程如下圖所示:

驗證碼作為區分人與機器的一道重要屏障,與之相關的對抗技術一直在WEB安全研究上有著重要意義。圖片驗證碼生成演算法以及程式實現流程上都有可能帶來問題,容易被攻擊者突破。

圖片驗證碼的生成可能存在如下問題

1) 圖片驗證碼的字元空間小

如果選取的字元空間較小,則讓驗證碼識別變得相對簡單。字母數位組合的字元集比單純為數位的字元集效果要好。

2) 圖片中的字元規則

字元進行變形,扭曲不利於程式的識別,而對人眼識別是無障礙的,但此方法對生成程式來說有一定的難度。

3) 圖片中缺少干擾圖案

干擾圖案能有效增加驗證碼的識別難度,並且對生成程式來說代價小。

驗證碼的程式實現流程方面可能存在如下問題

1) 驗證碼固定

一般來說,如果驗證碼輸入錯誤,驗證碼會自動刷新。

正常情況下,這個過程看起來是沒有問題的。但是,由於HTTP請求回應式的工作原理,使得攻擊者有可能控制驗證碼生成頁面請求不被觸發,使得在伺服器上同一會話內,伺服器端保存的此會話下的驗證碼一直有效。

基於此,伺服器端的正確處理應該是在驗證碼檢驗失敗時,就需要設置此驗證碼失效,同時對生成的每一個驗證碼也需要設置有效期。

2) 驗證碼的字串值出現在返回的回應中

這是屬於程式編碼考慮不當導致,比如忘記注釋掉調試資訊導致。驗證碼可能出現在回應包中的Cookie, URL, 頁面注釋,甚至驗證碼在展示的時候直接就是文本方式,這樣就完全失去了使用驗證碼的價值了。

3) 驗證碼長度可指定

在頁面上存在參數可指定驗證碼的位數,這可簡化識別工作。此問題的出現也可能是調試的需要,並發佈時忘記注釋掉相關代碼而導致。

關於驗證碼的攻防對抗現狀

自驗證碼技術問世以來,其成為自動化程式運行的第一大敵人。在利益的驅動下,突破封鎖技術自然也會產生。

一般來說,驗證碼的對抗技術有如下幾個方面:

1)避免觸發驗證碼

驗證碼的引入會帶來用戶友好度的下降,增加驗證碼輸入以及人眼對驗證碼識別的可能錯誤等,都會帶來不好的使用體驗。這對追求用戶體驗的網站來說,在沒遇到可疑行為時,其採取的策略是默認不開啟驗證碼功能,當觸發可疑行為識別規則時,才會出現驗證碼。基於此原理,對攻擊方來說,就是儘量避免觸發可能出現驗證碼的規則。一般可疑行為識別是通過檢查頻繁嘗試並且出錯這個行為來進行,基於此的對抗措施則是使用不同的IP來進行嘗試,或者等待足夠的時間再次嘗試,這樣讓目標網站程式認為這些嘗試都是正常的訪問請求,從而在自動化程式端連續作業時不會出現驗證碼而達到繞過的目的。

2)驗證碼固定

從前面的驗證碼固定問題描述可看出,攻擊者可以在同一個會話下,在獲得第一個驗證碼後,後面不再主動觸發驗證碼生成頁面,並且一直使用第一個驗證碼就可迴圈進行後面的表單操作,從而繞過了驗證碼的屏障作用。

3)驗證碼機器自動識別

電腦自動識別驗證碼,主要原理是通過一定的演算法預先建立驗證碼範圍內的字體特徵庫,再將要識別的驗證碼通過同樣的演算法生成特徵,與之前保存的特徵庫進行比較,進而得到圖片驗證碼的值。

一般,其識別過程有如下圖所示的處理流程:

4)人工分散式識別

機器自動識別圖片驗證碼,對簡單的情況能有較高的準確率,但對干擾多,變形複雜的圖片驗證碼,其準確率會很差。由於圖片驗證碼重要度增加,複雜的圖片驗證碼被大量使用,導致近年來出現了利用眾包力量實現的人工驗證碼識別平臺。

其工作原理圖下所示:

自動化程式將要識別的驗證碼發送到打碼平臺,打碼平臺再將驗證碼發放給從事驗證碼識別工作的人員(俗稱打碼工作),在人工識別後再將值依次返回到自動化程式。由於是人直接參與了驗證碼的識別,此方法就讓驗證碼完全失去了屏障功能。

驗證碼的主要形式

隨著驗證碼攻防技術的對抗升級,驗證碼技術也出現了一些新的發展動向。從圖片驗證碼自身的發展來看,主要是圍繞增強人腦交互性來展開的,具體來說有如下幾個方向:

1)增強干擾和字元變形

從驗證碼的機器識別可以看出來,增強干擾和字元變形能極大地提高識別難度。像以下生成的圖片驗證碼,對人眼識別來說都存在著一些難度。

2)拓展字元空間

常見的圖片驗證碼都是數位或者字母,近年來出現了中文字元作為驗證碼,這樣字元空間就增大了很多。

如果字元空間足夠大,試圖通過製作字元範本庫方式來實現識別的難度就變得很大了。

3)增強與用戶的互動性

通過增加與用戶的互動也可增加難度,但因為這類互動都是通過問答題方式來實現,其題庫數量是否足夠以及是否具有足夠的隨機性則成為了關鍵所在。

如下圖所示的問答型驗證碼:

驗證碼的資訊傳遞途徑和方式

1)增加資訊傳遞途徑

在原來只通過網頁來傳遞資訊的基礎上增加了其他傳遞方式,比如手機短信等。對於使用手機短信驗證碼,需要確保其關聯的手機號不為攻擊者所控制,否則也將失去保護意義。

2)利用動態權杖進行一次一密

通過動態權杖實現的一次一密方式,就必須通過人工交互才能實現,但此方式也增加了使用成本,只適用於密級要求很高的場合。

3)語音方式

語音方式在當前網路也有出現,但主要只是作為方便盲人使用的一個備用方案,但由於智慧手機終端的廣泛普及,以後也有可能成為一個主要的驗證碼發展場景。

隨著技術的不斷發展,以後還會出現其他方式的驗證碼,但可以肯定的是基於人腦的思維特性來區別於程式的預設特性,至於以後會如何發展,還是讓我們拭目以待吧。

總結

可以肯定的是,不管使用何種方式的驗證碼,都會影響使用者體驗,機器難以識別的驗證碼最後也會影響人眼的識別,驗證碼的設計者們需要在使用者體驗和安全性方面做一個折衷選擇。寄希望於通過驗證碼來作為對抗機器自動化行為的唯一途徑是不可取的。

在識別自動化程式發起的遠端Web掃描,登陸猜測等方面,推薦架設WAF類的專業防護產品。目前,綠盟科技的WAF產品能對此類問題提供完整的解決方案,有效阻擋即將發生的安全事件。

請點擊螢幕右上方“…”

關注綠盟科技公眾號

NSFOCUS-weixin

↑↑↑長按二維碼,下載綠盟雲APP

這是屬於程式編碼考慮不當導致,比如忘記注釋掉調試資訊導致。驗證碼可能出現在回應包中的Cookie, URL, 頁面注釋,甚至驗證碼在展示的時候直接就是文本方式,這樣就完全失去了使用驗證碼的價值了。

3) 驗證碼長度可指定

在頁面上存在參數可指定驗證碼的位數,這可簡化識別工作。此問題的出現也可能是調試的需要,並發佈時忘記注釋掉相關代碼而導致。

關於驗證碼的攻防對抗現狀

自驗證碼技術問世以來,其成為自動化程式運行的第一大敵人。在利益的驅動下,突破封鎖技術自然也會產生。

一般來說,驗證碼的對抗技術有如下幾個方面:

1)避免觸發驗證碼

驗證碼的引入會帶來用戶友好度的下降,增加驗證碼輸入以及人眼對驗證碼識別的可能錯誤等,都會帶來不好的使用體驗。這對追求用戶體驗的網站來說,在沒遇到可疑行為時,其採取的策略是默認不開啟驗證碼功能,當觸發可疑行為識別規則時,才會出現驗證碼。基於此原理,對攻擊方來說,就是儘量避免觸發可能出現驗證碼的規則。一般可疑行為識別是通過檢查頻繁嘗試並且出錯這個行為來進行,基於此的對抗措施則是使用不同的IP來進行嘗試,或者等待足夠的時間再次嘗試,這樣讓目標網站程式認為這些嘗試都是正常的訪問請求,從而在自動化程式端連續作業時不會出現驗證碼而達到繞過的目的。

2)驗證碼固定

從前面的驗證碼固定問題描述可看出,攻擊者可以在同一個會話下,在獲得第一個驗證碼後,後面不再主動觸發驗證碼生成頁面,並且一直使用第一個驗證碼就可迴圈進行後面的表單操作,從而繞過了驗證碼的屏障作用。

3)驗證碼機器自動識別

電腦自動識別驗證碼,主要原理是通過一定的演算法預先建立驗證碼範圍內的字體特徵庫,再將要識別的驗證碼通過同樣的演算法生成特徵,與之前保存的特徵庫進行比較,進而得到圖片驗證碼的值。

一般,其識別過程有如下圖所示的處理流程:

4)人工分散式識別

機器自動識別圖片驗證碼,對簡單的情況能有較高的準確率,但對干擾多,變形複雜的圖片驗證碼,其準確率會很差。由於圖片驗證碼重要度增加,複雜的圖片驗證碼被大量使用,導致近年來出現了利用眾包力量實現的人工驗證碼識別平臺。

其工作原理圖下所示:

自動化程式將要識別的驗證碼發送到打碼平臺,打碼平臺再將驗證碼發放給從事驗證碼識別工作的人員(俗稱打碼工作),在人工識別後再將值依次返回到自動化程式。由於是人直接參與了驗證碼的識別,此方法就讓驗證碼完全失去了屏障功能。

驗證碼的主要形式

隨著驗證碼攻防技術的對抗升級,驗證碼技術也出現了一些新的發展動向。從圖片驗證碼自身的發展來看,主要是圍繞增強人腦交互性來展開的,具體來說有如下幾個方向:

1)增強干擾和字元變形

從驗證碼的機器識別可以看出來,增強干擾和字元變形能極大地提高識別難度。像以下生成的圖片驗證碼,對人眼識別來說都存在著一些難度。

2)拓展字元空間

常見的圖片驗證碼都是數位或者字母,近年來出現了中文字元作為驗證碼,這樣字元空間就增大了很多。

如果字元空間足夠大,試圖通過製作字元範本庫方式來實現識別的難度就變得很大了。

3)增強與用戶的互動性

通過增加與用戶的互動也可增加難度,但因為這類互動都是通過問答題方式來實現,其題庫數量是否足夠以及是否具有足夠的隨機性則成為了關鍵所在。

如下圖所示的問答型驗證碼:

驗證碼的資訊傳遞途徑和方式

1)增加資訊傳遞途徑

在原來只通過網頁來傳遞資訊的基礎上增加了其他傳遞方式,比如手機短信等。對於使用手機短信驗證碼,需要確保其關聯的手機號不為攻擊者所控制,否則也將失去保護意義。

2)利用動態權杖進行一次一密

通過動態權杖實現的一次一密方式,就必須通過人工交互才能實現,但此方式也增加了使用成本,只適用於密級要求很高的場合。

3)語音方式

語音方式在當前網路也有出現,但主要只是作為方便盲人使用的一個備用方案,但由於智慧手機終端的廣泛普及,以後也有可能成為一個主要的驗證碼發展場景。

隨著技術的不斷發展,以後還會出現其他方式的驗證碼,但可以肯定的是基於人腦的思維特性來區別於程式的預設特性,至於以後會如何發展,還是讓我們拭目以待吧。

總結

可以肯定的是,不管使用何種方式的驗證碼,都會影響使用者體驗,機器難以識別的驗證碼最後也會影響人眼的識別,驗證碼的設計者們需要在使用者體驗和安全性方面做一個折衷選擇。寄希望於通過驗證碼來作為對抗機器自動化行為的唯一途徑是不可取的。

在識別自動化程式發起的遠端Web掃描,登陸猜測等方面,推薦架設WAF類的專業防護產品。目前,綠盟科技的WAF產品能對此類問題提供完整的解決方案,有效阻擋即將發生的安全事件。

請點擊螢幕右上方“…”

關注綠盟科技公眾號

NSFOCUS-weixin

↑↑↑長按二維碼,下載綠盟雲APP