行業新聞
行業新聞NEWS
動態短信驗證碼安全防護方案
  作者:神州軟科    更新時間:2016-12-13    來源:

 

1.      概述

近期,根據集團客戶及代理商反饋部分用戶連續收到莫名驗證碼短信,對用戶正常的業務使用造成了嚴重的影響;同時還引起了大量的用戶投訴,部分省份反饋行業端口的驗證碼業務投訴量居高不下,占總投訴量比重超過50%。

經分析該問題是由一種互聯網惡意攻擊方法——“短信炸彈形成,該攻擊方法循環利用不同業務中的無需注冊即可向任意手機號發生短信動態驗證碼的正常業務需求(如用戶注冊、好友邀請、密碼取回等),可以向多個用戶同時連續發送大量的驗證短信,嚴重影響用戶的正常使用,造成不良影響與大量投訴。雖然部分業務設定用戶首次輸入錯誤后,提供手機號+動態驗證碼的登錄方式;但由于攻擊工具循環調用不同的動態短信發送URL進行攻擊,可繞開該限制進行攻擊?!抖絳叛櫓ぢ氚踩闌し槳浮肥欽攵遠絲誒嘍絳叛櫓ぢ牘δ艿陌踩凳┓椒ㄓ胍?,適用于具備動態短信驗證碼功能的業務與系統。

 

2.      適用范圍

本方案適用于無需用戶登錄認證的情況下(如用戶注冊、好友邀請、密碼取回等環節),需要向用戶發送動態短信驗證碼或其他業務所需的短信(如認證信息、業務提示信息等)的業務場景。

原則上要求所有具備公網可訪問的、具備非認證場景下可向用戶發送短信信息的業務都必須符合本方案的要求。

本方案由總部市場經營部委托研究院制定。各省公司可根據本方案,結合自身實際情況,制定相應的實施細則。

本方案自下發之日起執行。

 

3.      短信炸彈實例分析

3.1  短信炸彈原理

短信炸彈一般基于WEB方式(基于客戶端方式的短信炸彈工具原理類似),其由兩個??樽槌?,包括:一個前端Web網頁,提供輸入被攻擊者手機號碼的輸入窗口;一個后臺攻擊頁面(PHP),利用從各個網站上找到的動態短信URL和前端輸入的被攻擊者手機號碼,發送 HTTP請求,每次請求給用戶發送一個動態短信。

利用這兩個??槭凳?/span>短信轟炸攻擊,原理具體分析如下:

1)惡意攻擊者在前端頁面(如下圖所示迷你轟炸臺)中輸入被攻擊者的手機號;

2)短信炸彈后臺服務器,將該手機號與互聯網收集的可不需要經過認證即可發送動態短信的URL進行組合,形成可發送動態短信的URL請求;

3)通過后臺請求頁面,偽造用戶的請求發給不同的業務服務器;

4)業務服務器收到該請求后,發送動態短信到被攻擊用戶的手機上。

這個過程如下圖1所示。

 

 

3.2  短信炸彈實例分析

用戶在某短信炸彈上輸入被攻擊手機號、攻擊的次數后,對被攻擊的手機號進行攻擊的源碼如圖2所示。

該攻擊頁面中主要采用 <imgsrc=’//…..’ />來調用業務服務器動

態短信發送的接口。如紅框中內容所示:

l         短信轟炸源代碼中,利用<img/>標簽的src屬性定義了可以請求發送動態短信的URL(如gd.12530.com/….;

l         在其中的phonenumber字段中嵌入被攻擊的手機號(如 13811111111)后,即可形成攻擊URL;

l         頁面運行后,將其以HTTP   GET/POST的方法提交給業務服務器;

l         業務服務器發送動態短信到被攻擊者的手機上,從而完成了短信炸彈攻擊。

4.      動態短信驗證碼安全防護方案

短信炸彈形成的原因是因為非授權的動態短信獲取,而由于業務的需要(如注冊、好友邀請等),在使用動態短信業務前系統并不能建立業務關聯。因此,在未建立業務關聯的情況下,需要進一步嚴格限制保證業務使用的安全性。

針對短信炸彈問題,建議綜合采用:增加圖片驗證碼、單IP請求次數限制、限制發送時長限制3個措施,防護動態短信獲取功能與業務接口。

 措施一:使用安全的圖片驗證碼

惡意攻擊者采用自動化工具,調用動態短信獲取接口進行動態短信發送,究其原因是攻擊者可以自動對接口進行大量調用。

采用圖片驗證碼可有效防止工具自動化調用,即當用戶進行獲取動態短信操作前,彈出圖片驗證碼,要求用戶輸入驗證碼后,服務器端再發送動態短信到用戶手機上,該方法可有效解決被利用實施炸彈攻擊的問題。

安全的圖片驗證碼必須滿足:

生成過程安全:圖片驗證碼必須在服務器端進行產生與校驗;

使用過程安全:單次有效,且以用戶的驗證請求為準;

驗證碼自身安全:不易被識別工具識別,能有效防止暴力破解。

安全圖片驗證碼的設計方案詳見第 5章。

 

措施二:單IP的請求次數限定

使用了圖片驗證碼后,能防止攻擊者有效進行動態短信功能的自動化調用;但若攻擊者忽略圖片驗證碼驗證錯誤的情況,大量執行請求會給服務器帶來額外負擔,影響業務使用。建議在服務器端限制單個 IP在單位時間內的請求次數,一旦用戶請求次數(包括失敗請求次數)超出設定的閾值,則暫停對該IP一段時間的請求;若情節特別嚴重,可以將IP加入黑名單,禁止該IP的訪問請求。該措施能限制一個IP地址的大量請求,避免攻擊者通過同一個IP對大量用戶進行攻擊,增加了攻擊難度,保障了業務的正???。

該閾值設定可依據業務的不同執行設定,一般情況下建議不超過 200/分鐘。

 

措施三:單用戶動態短信請求間隔時長限制

為進一步優化業務正常使用,建議采用限制重復發送動態短信的間隔時長,即當單個用戶請求發送一次動態短信之后,服務器端鎖定如:30秒后,才能進行第二次動態短信請求。該功能可進一步保障用戶體驗,并避免包含手工攻擊惡意發送垃圾驗證短信。

 

5.      圖片驗證碼安全要求

5.1圖形驗證碼實現機制

1 )典型驗證系統架構圖

典型的系統主要由前端WEB服務器、后端驗證服務器群組成。WEB前端服務器負責通過Internet與用戶進行交互,提供認證業務(包含用戶手機號輸入、動態驗證短信輸入);后端驗證服務器群由驗證碼服務器和動態短信驗證服務器組成,驗證碼服務器負責產生、校驗驗證碼,短信驗證服務器負責向用戶手機發送動態短信驗證碼信息,并對用戶輸入進行校驗。

QQ圖片20161212154833.png

典型業務流程如圖3所示。

 

當業務服務為客戶端模式時,與圖3所示的web方式基本相同,其中客戶端

相當于web前端服務器的功能。

2)驗證碼安全使用流程

對圖3中圖片驗證碼的使用流程(步驟2~步驟6)進行描述如下。

步驟2:用戶訪問驗證碼請求頁面,輸入手機號后,前端應用服務器向圖片驗證碼服務器發送請求,請求獲得圖片驗證碼的URL格式示例如下:

//192.168.1.1/getImage?sessionId=xxxx&busid=xxx

-  192.168.1.1代表前端應用服務器的域名或者IP地址;

-  sessionId代表前端應用服務器與驗證碼服務器建立的會話ID號,由雙方協商獲得;

-  busid代表前端應用服務器的業務  ID號,由雙方協商獲得;該 ID的設置使一臺驗證碼服務器支持為多個業務提供圖片驗證碼。

步驟3:驗證碼服務器產生驗證碼,并將引用圖片驗證碼的 URL傳送回前端應用服務器;前端應用服務器通過URL獲取圖片驗證碼,并通過瀏覽器向用戶展示。

步驟4:用戶輸入手機號與圖片驗證碼,并單擊發送按鈕,請求驗證碼服務器對圖片驗證碼的有效性認證。

步驟5:請求對圖片驗證碼進行有效性驗證的URL格式示例如下:

// 192.168.1.1/checkCode?sessionId=xxxx&busid=xxx&code=xxxx

-  sessionId,busid同上,code為用戶輸入的圖片驗證碼的值。

步驟6:服務器端收到請求后與原始數據進行核對,并立即將原驗證碼進行失效處理。若用戶提交數據與服務器數據一致,則服務器返回認證成功,并產生、發送短信驗證碼至手機;若用戶提交數據與服務器數據不匹配,則web服務器返回認證失敗,需告知向圖片驗證碼服務器認證失敗并向圖片驗證碼服務器請求新的驗證碼(步驟6)。

5.2圖片驗證碼的安全設計要求

對于圖片驗證碼的設計既要考慮到安全性、易用性也要考慮用戶的操作體驗。對于驗證碼的設計不能簡單的單純使用字母、數字或4位以內的短驗證碼等,這樣易被驗證碼識別器破解;同樣驗證碼的設計也不易使用過多的干擾線條、過大的字符變形或復雜的邏輯判斷等,會嚴重影響用戶的使用體驗,尤其是對年長者更加難以識別。

對于驗證碼的安全設計主要有以下4種方式:

1)字母數字類

字母數字類驗證碼主要由阿拉伯數字0~9以及26個英文字母(包括大小寫)

組成。其基本樣式如圖2所示:

英文字符+數字類的圖片驗證碼,提出設計與實現要求如表 1所示,其中可選項一欄中“M”表示必選,“O”表示可選。

 

1英文字符+數字類圖片驗證碼設計要求

 

2)中文類

中文類驗證碼主要由多個簡體漢字組成,其基本樣式如圖3所示:

對中文字符類的圖片驗證碼,提出設計與實現要求如表2所示,其中可選項一欄中“M”表示必選,“O”表示可選。

 

2中文字符片驗證碼設計要求

編號

設計要求說明

可選項

1

中文驗證碼字符數量不低于3個,不超過5個字符;

M

2

字符應在圖片中完全顯示;

M

3

驗證碼字符庫庫中包含1000以上常用漢字;

M

4

驗證碼中的每個字符必須從字符庫中隨機挑選,且同一張驗證碼中不能有相同漢字;

M

5

字符的筆畫可進行簡單扭曲,但不能影響識別;

M

6

貫通線、噪點應隨機產生,且貫通線粗細與字體筆畫粗細一致。

M

7

字符的位置需要滿足以下3條中的一條或多條:

7-1:字符間距隨機調整,在圖片中非均勻分布;

7-2:字符可進行逆時針和順時針45度的旋轉,且不影響識別;

7-3:每個字符在圖片中的坐標應隨機動態變化。

M

8

字符與背景色必須具備區分度,容易識別。

M

9

字數數量在35個間隨機變化。

O

10

避免使用由于背景噪點影響,而降低識別率的字符,如:戊和戌、大和太等。

O

11

字符與背景色灰度相近,不易進行二值處理。

O

12

驗證碼字符庫中可采用多種不同字體,如:宋體、楷體等。

O

13

不得在頁面腳本中出現圖片驗證碼中的字符;

M

14

每個圖片驗證碼僅能使用1次。

M

 

3)智力題類

對于智力題類的驗證碼一般使用的是100以內的算數運算為主,主要有加法、減法、乘法等,其基本樣式如圖4所示:

 

智力題類的圖片驗證碼,提出設計與實現要求如表3所示,其中可選項一欄中“M”表示必選,“O”表示可選。

 

3智力題驗證碼設計要求

編號

設計要求說明

可選項

1

100以內的加、減、乘為主;

M

2

貫通線、噪點應隨機產生;

M

3

運算符隨機產生,每次不同;

M

4

數字應具備不少于 5種形態,包括通過旋轉、字體變化、扭曲

等方式實現,但不應影響字符識別;

M

5

數字的位置需要滿足以下3條中的一條或多條:

5-1:數字間距隨機調整,在圖片中非均勻分布;

5-2:數字間存在粘連且較緊湊;

5-3:每個數字在圖片中的坐標應隨機動態變化。

M

6

數字與背景色必須具備區分度,容易識別;

M

7

數字間存在貫通、粘連或交疊,且要求如下:

7-1:數字間應存在貫通,貫通線應與數字比劃的粗細接近;

7-2:如采用數字交疊的方式,交疊部分不應超過數字寬度的1/10;

7-3:如采用粘連方式,粘連部分不應產生交疊。

M

8

不得在頁面腳本中出現圖片驗證碼中的字符;

M

9

每個圖片驗證碼僅能使用1次。

M

 

4)選擇題類

對于選擇題類的驗證碼,一般使用一幅圖片并配有四個選項,讓用戶輸入選項代號選擇圖片的意義,其基本樣式如圖5所示:

 

選擇題類的圖片驗證碼,提出設計與實現要求如表4所示,其中可選項一欄中“M”表示必選,“O”表示可選。

 

4選擇題驗證碼設計要求

編號

設計要求說明

可選項

1

圖片所畫含義簡單,易于識別;

M

2

使用四個備選項;

M

3

加載的圖片隨機產生,每次不同;

M

4

選項代號至少由1位字符組成(字符包括26個英文字母以及數字),建議可采用2位字符形如:1A、FR等;

M

5

不得在頁面腳本中出現圖片驗證碼中的字符;

M

6

每個圖片驗證碼僅能使用1

M

 

 

 

 

 

 

 

1英文字符+數字”類圖片驗證碼設計要求

編號
設計要求說明
可選項
1
驗證碼的長度不少于4位,不多于8位;
M
2
字符應在圖片中完全顯示;
M
3
驗證碼字符庫庫中必須包含字母(A~Z或a~z)與數字(0~9);
M
4
每個驗證碼中的每個字符必須隨機從字符庫中隨機挑??;
M
5
字符的位置需要滿足以下3條中的一條或多條:
5-1:字符間距隨機調整,在圖片中非均勻分布;
5-2:字符間存在粘連且較緊湊;
5-3:每個字符在圖片中的坐標應隨機動態變化。
M
6
同一個字符應具備不少于5種形態,包括通過旋轉、字體變化、扭曲等方式實現,但不應影響字符識別。
M
7
字符間存在貫通、粘連或交疊,且要求如下:
7-1:字符間應存在貫通,貫通線應與字符比劃的粗細接近;
7-2:如采用字符交疊的方式,交疊部分不應超過字符寬度的1/10;
7-3:如采用粘連方式,粘連部分不應產生交疊。
M
8
貫通線、噪點應隨機產生;
O
9
字符與背景色必須具備區分度,容易識別;
M
10
同一張圖片驗證碼中,字符的大小、位置差異不超過20%(字符
按大寫字母計算)。
M
11
字數數量在4~6個間隨機變化;
O
12
驗證碼字庫中的字母需包含大寫與小寫;
O
13
避免使用一些容易混淆的字符如0和O、1和l、2和z、5和S。
O
14
為保證用戶體驗,用戶輸入時,不區分大小寫。
O
15
不得在頁面腳本中出現圖片驗證碼中的字符;
M
16
每個圖片驗證碼僅能使用1次。
M

        

 

上一篇:關于辦理電信網絡詐騙等刑事案件適用法律若干問題的意見全文   下一篇:移動商務--金鳳成祥合作案例
北京神州軟科信息技術有限責任公司 @ 2017 All Rights Reserved
京ICP備11045086號-1
京公網安備 11010102000133號
在線客服