前言
互聯(lián)網(wǎng)安全公司 Imperva Incapsula 公布的《2016年機(jī)器流量報(bào)告》(Bot Traffic Report 2016)顯示惡意 bot 流量( bot :即“機(jī)器人”流量,即自動(dòng)化程序流量)占整體網(wǎng)絡(luò)流量的比例高達(dá) 28.9% 。
惡意 bot 流量造成的業(yè)務(wù)網(wǎng)站平臺(tái)服務(wù)不可用、用戶體驗(yàn)降低、網(wǎng)站漏洞安全問(wèn)題、業(yè)務(wù)故障等問(wèn)題,導(dǎo)致企業(yè)數(shù)據(jù)被爬、接口被刷、CC攻擊導(dǎo)致服務(wù)不可用等,給企業(yè)帶來(lái)極高的風(fēng)險(xiǎn)及難以估計(jì)的損失。
那么為了保障網(wǎng)站平臺(tái)的正常運(yùn)行,企業(yè)要如何防御惡意 bot 流量?
一.運(yùn)營(yíng)人員采用的方案
作為一個(gè)網(wǎng)站的運(yùn)營(yíng)技術(shù)人員,當(dāng)網(wǎng)站受到惡意 bot 的攻擊時(shí),例如爬蟲(chóng)或者掃描類(lèi)行為,一般有以下 2 種解決方法:
查看請(qǐng)求日志,如 apache 的 access 日志,人工掃描分析日志內(nèi)容并發(fā)現(xiàn)異常,可識(shí)別出惡意 bot 。
限制源 IP 的請(qǐng)求速度。方案簡(jiǎn)單,但對(duì)閾值的設(shè)置要求很高,不適用于以下 4 種場(chǎng)景:
1)秒殺、搶購(gòu)等業(yè)務(wù)導(dǎo)致的瞬間請(qǐng)求激增;
2)代理模式,如大多數(shù)高校機(jī)構(gòu)以及手機(jī)運(yùn)營(yíng)商的網(wǎng)關(guān);
3)存在大量的資源文件的頁(yè)面,會(huì)導(dǎo)致請(qǐng)求該頁(yè)面時(shí)的關(guān)聯(lián)請(qǐng)求激增;
4)復(fù)雜業(yè)務(wù)本身會(huì)提供一些接口給其他服務(wù),速率方面的浮動(dòng)范圍很大;
因此在沒(méi)有理想閾值的條件下,限制源 IP 請(qǐng)求速度會(huì)導(dǎo)致較高的誤報(bào)率,相比惡意 bot 帶來(lái)的危害,高誤報(bào)引起的后果對(duì)企業(yè)而言或許更加嚴(yán)重。
釣魚(yú)。正常的 bot 會(huì)請(qǐng)求 robots.txt 文件,然后遵循 robots.txt 描述進(jìn)行后續(xù)的 bot 行為(robots.txt是一種君子協(xié)議,對(duì)允許和不允許 bot 訪問(wèn)的內(nèi)容進(jìn)行標(biāo)記)。借用此機(jī)制,如果在robots.txt中將一個(gè)不存在的url標(biāo)注為拒絕,然后在網(wǎng)頁(yè)中,內(nèi)嵌這個(gè)隱藏的url連接,隱藏意味著human不會(huì)點(diǎn)擊到這個(gè)連接,但是惡意的bot有很大概率會(huì)訪問(wèn)。事情變得簡(jiǎn)單很多,只需要在日志里過(guò)濾訪問(wèn)這個(gè)url的ip即可。但是這種防御方法僅能對(duì)抗低級(jí)的惡意bot,攻擊者繞過(guò)此檢測(cè)機(jī)制,僅需一行代碼控制bot不請(qǐng)求上面提到的那個(gè)url即可。
IP 白名單。攻擊者一般會(huì)將 ua 偽造成正常的搜索引擎的 ua 或者普通的瀏覽器的 ua 。白名單機(jī)制對(duì)前面一種偽造方式有效果。建立起一套 ua 和 ip 的白名單庫(kù),即可識(shí)別出偽造的ua。但是成本會(huì)提高很多,需要維護(hù)ua和ip的白名單庫(kù)。而且對(duì)第二種偽造的普通的ua無(wú)效。
優(yōu)點(diǎn):成本低廉,操作簡(jiǎn)單,能抵御絕大多數(shù)低級(jí)的惡意 bot 。
缺點(diǎn):適用性較差。
二.技術(shù)人員采用的方案:
作為技術(shù)人員,采用的方法則多依賴技術(shù)特征的局限性生效,一般有以下 5 種技術(shù)解決方案:
1. cookie支持
bot 是一個(gè)網(wǎng)絡(luò)程序,如果這個(gè)程序?qū)懙暮?jiǎn)單,它往往不支持cookie,但 cookie 是瀏覽器支持的特性。利用這個(gè)特性可以通過(guò)在服務(wù)端寫(xiě)入 cookie ,然后檢查請(qǐng)求所帶來(lái)的 cookie 的方式來(lái)查證是否是 bot,但由于讓 bot 支持 cookie 的時(shí)間成本很低,所以這個(gè)方法的效果比較有限。
2. JavaScript支持
由于 cookie 門(mén)檻低,所以大家想到的就是瀏覽器支持的 js 技術(shù)。如果一個(gè)普通的 bot 程序支持 js ,問(wèn)題則會(huì)復(fù)雜很多,但也可以實(shí)現(xiàn)。
3. 設(shè)備指紋技術(shù)(瀏覽器指紋)
設(shè)備指紋技術(shù)會(huì)計(jì)算關(guān)于瀏覽器的 50+ 以上屬性參數(shù)的 hash 值,甚至更高級(jí)的收集客戶端的動(dòng)作,比如鼠標(biāo)點(diǎn)擊信息、返回等。近期流行的畫(huà)布 (canvas) 指紋技術(shù),基本含義就是調(diào)用設(shè)備接口生成一個(gè)復(fù)雜定義的圖像,由于硬件配置、軟件版本等因素的影響,生成的圖像在像素級(jí)別存在一定區(qū)別,以此可作為一種指紋。
bot 支持 js ,但不是瀏覽器,或者 bot 的 ua 和指紋不匹配,這種都很容易識(shí)別。但對(duì)于一些高級(jí)的 bot ,這個(gè)方案也有局限性:
很多 bot 作為瀏覽器插件方式工作,或者通過(guò)修改瀏覽器而實(shí)現(xiàn),因此同樣會(huì)返回正確的設(shè)備指紋來(lái)偽造成一個(gè)真實(shí)的瀏覽器或者移動(dòng)終端;
bot 篡改指紋信息返回,服務(wù)器端無(wú)法校驗(yàn)指紋信息的偽造性。這種機(jī)制很容易被開(kāi)發(fā) bot 的團(tuán)隊(duì)繞過(guò),因?yàn)槟壳?ssl 體系主要用的是服務(wù)器的身份校驗(yàn),絕大多數(shù)網(wǎng)站還沒(méi)使用 https ,如果引入非對(duì)稱體系的加密通信,或客戶端的身份校驗(yàn),在現(xiàn)階段還無(wú)法實(shí)現(xiàn)。當(dāng)然,如果有一天客戶端身份都能被驗(yàn)證,安全問(wèn)題就簡(jiǎn)單多了;很多公司擁有專門(mén)的爬蟲(chóng)團(tuán)隊(duì)和反爬蟲(chóng)團(tuán)隊(duì),用于爬取競(jìng)爭(zhēng)對(duì)手?jǐn)?shù)據(jù)和反競(jìng)爭(zhēng)對(duì)手爬自己的數(shù)據(jù);
設(shè)備指紋沖突概率較高,代理機(jī)器很多是云主機(jī)或者其他方式統(tǒng)一裝機(jī)的機(jī)器。完全相同的硬件,操作系統(tǒng)版本,軟件版本導(dǎo)致算出來(lái)的指紋是一樣的,因此會(huì)使得誤報(bào)率增高。
4. 行為分析技術(shù)
上面提到,bot 會(huì)使用瀏覽器插件模擬人的請(qǐng)求行為,例如鼠標(biāo)的點(diǎn)擊等,單純的判斷鼠標(biāo)是否點(diǎn)擊不足以判斷惡意 bot 。惡意 bot 最終都會(huì)請(qǐng)求 web 服務(wù)。惡意表現(xiàn)的是在“行為”上,行為是一個(gè)抽象概念,因此難度也很高。
惡意 bot 訪問(wèn)目標(biāo)的 url 資源,以及它提交的這些參數(shù)構(gòu)成本質(zhì)上的“惡意行為”,上面提到的很多惡意 bot 的技術(shù)都是為此目標(biāo)服務(wù)的。越來(lái)越多的移動(dòng)終端,對(duì)服務(wù)請(qǐng)求的表現(xiàn)本身就已經(jīng)不是瀏覽器行為,如果不使用行為分析技術(shù),這些都會(huì)觸發(fā)誤報(bào)。
行為分析技術(shù)一般都是安全類(lèi)公司的實(shí)現(xiàn)方案,具體方案上存在一定區(qū)別。有簡(jiǎn)單分析客戶點(diǎn)擊節(jié)奏、時(shí)間等屬性的,也有比較復(fù)雜的學(xué)習(xí)模型。作為乙方公司,一般難以實(shí)現(xiàn)到行為分析模型這個(gè)級(jí)別,主要是成本和技術(shù)上的考量。
5. IP 情報(bào)技術(shù)
IP 情報(bào)的價(jià)值在于一個(gè)簡(jiǎn)單的道理:正常的 IP(客戶端)在相近時(shí)間范圍內(nèi)表現(xiàn)出的活動(dòng)多為正常的,異常的 IP 則相反。例如被用來(lái)發(fā)起 ddos 攻擊或者 cc 攻擊的代理或者肉雞,并不會(huì)只發(fā)起一次攻擊,而是會(huì)長(zhǎng)期的到處發(fā)起攻擊。
國(guó)內(nèi)方面,微步在線作為一個(gè)威脅情報(bào)提供商。 IP 威脅情報(bào)多作為輔助技術(shù)使用,而且很方便, 對(duì)于發(fā)現(xiàn)的潛在威脅,結(jié)合 IP 情報(bào)信息使判斷更準(zhǔn)確。對(duì)于網(wǎng)絡(luò)惡意 bot 而言,攻擊方幾乎都是使用代理或者肉雞來(lái)請(qǐng)求數(shù)據(jù),情報(bào)的價(jià)值是非常有用的。
攻擊方使用自己關(guān)聯(lián)的 IP ,容易被追蹤而導(dǎo)致法律起訴的問(wèn)題,目前依據(jù)國(guó)內(nèi)法律和此方面的起訴經(jīng)驗(yàn),爬數(shù)據(jù)這類(lèi)能夠勝訴需要被爬方保留足夠的證據(jù)外加一些運(yùn)氣成分。
三.UCloud的解決方案
UCloud 安全中心產(chǎn)品 UEWAF 的 bot 檢測(cè)引擎作為向外輸出的安全方案,使用基于機(jī)器學(xué)習(xí)技術(shù)的行為分析技術(shù) + 創(chuàng)新的信息熵檢測(cè)機(jī)制+IP 威脅情報(bào)技術(shù) 。 目前基于機(jī)器學(xué)習(xí)的分析模型是bot檢測(cè)最有前景的方向。 UCloud 假定客戶訪問(wèn)不僅僅是通過(guò)瀏覽器,移動(dòng)端的非瀏覽器的終端同樣兼容。bot 行為,不論正常或者惡意,相對(duì)于人為操作的行為而言,都是一種“異常”。從過(guò)去的經(jīng)驗(yàn)看,人不會(huì)觸發(fā)這些 bot 行為。
1.行為分析技術(shù)
“行為”是有時(shí)間維度上屬性的,發(fā)生的行為是一系列動(dòng)作在時(shí)間維度上的偏序關(guān)系,動(dòng)作是客戶端發(fā)起的請(qǐng)求的抽象。行為分析模型首先會(huì)動(dòng)態(tài)追蹤活動(dòng)的會(huì)話,模型會(huì)智能的選擇合適的檢測(cè)時(shí)機(jī)觸發(fā)評(píng)估邏輯。
例如一個(gè)爬蟲(chóng) bot ,不論它做深度優(yōu)先還是廣度優(yōu)先的遍歷,或者改進(jìn)的針對(duì)特定模式 url 的爬蟲(chóng)時(shí),不論它訪問(wèn)頻率是高是低,請(qǐng)求資源表現(xiàn)出的偏序關(guān)系是異常的。這種偏序關(guān)系里即包含了“異常”的來(lái)源。
將訪問(wèn)的 url 看成隨機(jī)變量,大家知道 http referer 表示當(dāng)前頁(yè)面是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的。因此直觀上,url 的轉(zhuǎn)換是一階馬爾科夫過(guò)程。也可以當(dāng)做多階馬爾科夫過(guò)程,本質(zhì)上是多階馬爾科夫過(guò)程,但是為了簡(jiǎn)單化,一階也足夠。
形象化描述就是比如一個(gè)購(gòu)物網(wǎng)站,用戶訪問(wèn)的路徑可能為先登錄,或者不登錄直接進(jìn)入主頁(yè)搜索商品,或者逛街一樣的瀏覽首頁(yè)上的商品,查看類(lèi)似商品選擇購(gòu)買(mǎi)或者不購(gòu)買(mǎi),最后退出。這就是一個(gè)合理的訪問(wèn)。假如一個(gè)訪問(wèn)一直在訪問(wèn)某類(lèi)商品的價(jià)格,它是一個(gè)不合理的訪問(wèn)。如何度量這種合理和不合理呢? 隱馬爾科夫的預(yù)測(cè)問(wèn)題即可描述。
隱馬爾科夫原理圖示:
url 通過(guò)抽象泛化為標(biāo)識(shí),如果不泛化會(huì)導(dǎo)致觀測(cè)狀態(tài)數(shù)量巨大,降低模型速度同時(shí)也會(huì)導(dǎo)致過(guò)擬合。隱馬爾科夫的學(xué)習(xí)過(guò)程是無(wú)監(jiān)督的,極大的方便了行為模型基線的建立,此學(xué)習(xí)過(guò)程是隨著時(shí)間持續(xù)進(jìn)行的。
在學(xué)習(xí)過(guò)程中,有異常數(shù)據(jù)混入怎么辦?其實(shí)這并不影響基線數(shù)據(jù)的建立,基線最終的閾值可以使用數(shù)學(xué)方法進(jìn)行去除異常點(diǎn)。正常的東西總是很相近,但是異常的東西之間存在很大差異,模型基線的建立是允許有噪音數(shù)據(jù)的。模型用于異常檢測(cè),并不是直接輸出 bot 的標(biāo)識(shí),后續(xù)還有異常的分類(lèi)識(shí)別。
行為分析采取的技術(shù)可不限于隱馬爾科夫模型,例如貝葉斯網(wǎng)絡(luò),馬爾科夫隨機(jī)場(chǎng)這種學(xué)習(xí)的概率模型都可以完成這個(gè)任務(wù)。概率模型的一個(gè)巨大優(yōu)勢(shì)是計(jì)算性能高,可以將識(shí)別過(guò)程實(shí)時(shí)化處理。
UCloud 結(jié)合HMM 檢測(cè)模型,資源泛化模型,會(huì)話追蹤技術(shù)和評(píng)估智能觸發(fā)算法成功的將行為模型在工程上實(shí)踐應(yīng)用,并且達(dá)到優(yōu)異效果。實(shí)測(cè)搜索引擎的 bot 檢測(cè)中,準(zhǔn)確率達(dá)到98.6%。機(jī)器學(xué)習(xí)的誤報(bào)和漏報(bào)是不可避免的,下面講解到的熵檢測(cè)機(jī)制和 IP 情報(bào)技術(shù)正用于此目的。
2.創(chuàng)新的信息熵檢測(cè)機(jī)制
信息熵可以用來(lái)衡量離散隨機(jī)事件的出現(xiàn)概率。對(duì)于網(wǎng)絡(luò)資源的訪問(wèn),這里被當(dāng)成一個(gè)離散事件。網(wǎng)絡(luò) bot 請(qǐng)求資源時(shí),時(shí)間間隔上存在不同:人是依據(jù)主觀需求對(duì)目標(biāo)資源進(jìn)行點(diǎn)擊觸發(fā),而 bot 是程序設(shè)定好的,例如間隔多久,或者偽造隨機(jī)時(shí)間觸發(fā)等。
人在請(qǐng)求資源的時(shí)候,下一個(gè)請(qǐng)求和上一個(gè)請(qǐng)求是否存在關(guān)聯(lián)?答案是肯定的,因?yàn)檎5娜瞬粫?huì)隨機(jī)亂請(qǐng)求 url 資源。因此這也會(huì)導(dǎo)致時(shí)間間隔隨機(jī)變量和上一個(gè)值也是存在關(guān)聯(lián)性。本質(zhì)上,至少是一階馬爾科夫過(guò)程。如果認(rèn)為當(dāng)前的請(qǐng)求和前面的多個(gè)請(qǐng)求都有關(guān)系,那就是多階馬爾科夫過(guò)程。
UCloud 使用創(chuàng)新的信息熵算法來(lái)檢測(cè)會(huì)話的異常值度量。如果攻擊者 bot 使用偽隨機(jī)的時(shí)間間隔發(fā)起請(qǐng)求,該算法還能檢測(cè)出來(lái)么?答案是的。大家可能疑惑,隨機(jī)請(qǐng)求肯定會(huì)導(dǎo)致熵的增加,代表著系統(tǒng)的規(guī)律信息的減少。但是我們的熵算法也是會(huì)學(xué)習(xí)進(jìn)化的,同樣能檢測(cè)出這種 bot 的請(qǐng)求。請(qǐng)看下面測(cè)試數(shù)據(jù):
左圖是檢測(cè)出的惡意 bot 的會(huì)話的熵值,右圖是正常人訪問(wèn)的熵值,縱坐標(biāo)表示熵值,橫坐標(biāo)是迭代次數(shù)。很容易區(qū)分這兩者的區(qū)別。不僅在值上區(qū)別明顯,而且模式上也有很顯著的區(qū)分度。重點(diǎn)說(shuō)明,左圖下面的 3 條線分別對(duì)應(yīng)著完全隨機(jī) bot 30s/20s/10s 隨機(jī)的時(shí)間間隔發(fā)起請(qǐng)求的熵值,算法取得了很好的效果。(涉及技術(shù)算法保密性問(wèn)題,這里不透露具體實(shí)現(xiàn)細(xì)節(jié))
攻擊者需要繞過(guò)這兩種檢測(cè)方法比較困難。極大的提高 bot 的成本,也是 bot 檢測(cè)的目標(biāo)之一。
X 軸是時(shí)間,Y 軸是訪問(wèn)的 url 的抽象標(biāo)識(shí)。
UCloud 使用雙重異常檢測(cè)機(jī)制,提高異常識(shí)別的準(zhǔn)確性。接下來(lái)就是識(shí)別 bot 是正常的還是惡意的。對(duì)于bot行為的細(xì)分,涉及到一些領(lǐng)域知識(shí)的結(jié)合。例如爬蟲(chóng)的行為和 cc 的行為有明顯的區(qū)別,這屬于分類(lèi)器的問(wèn)題,這里就不全部介紹了。 對(duì)于爬蟲(chóng)行為,UCloud 使用的 IP 情報(bào)中心識(shí)別出正常的 bot 。 客戶可以對(duì)識(shí)別結(jié)果進(jìn)行標(biāo)記,bot 的檢測(cè)不存在絕對(duì)的正確,例如很多客戶使用的網(wǎng)站的監(jiān)控工具,識(shí)別出來(lái),可能會(huì)被分類(lèi)為監(jiān)控,但是如果客戶自己的配置不正確,監(jiān)控請(qǐng)求量非常高,可能會(huì)被標(biāo)記為異常結(jié)果。
隨著機(jī)器技術(shù)在圖像識(shí)別方面的成功應(yīng)用,這類(lèi)接口的bot自動(dòng)完成也成為可能。分類(lèi)器還可以智能的識(shí)別出注冊(cè),登錄,驗(yàn)證碼,手機(jī)短信等等這類(lèi)敏感接口的異常訪問(wèn),及時(shí)告知客戶此類(lèi)安全風(fēng)險(xiǎn)。
3. ip威脅情報(bào)技術(shù)
基于多年的運(yùn)營(yíng)積累,UCloud 擁有大量的 IP 情報(bào)信息,例如上面提到的 bot 白名單,同時(shí)也有惡意 IP 情報(bào)。擁有業(yè)界活躍的搜索引擎的 IP 名單,客戶不用擔(dān)心會(huì)將搜索引擎 IP 標(biāo)記為惡意 bot 。 同時(shí)也和業(yè)界共享有 IP 情報(bào)信息,以提供更加準(zhǔn)確有效的結(jié)果。
四.結(jié)束語(yǔ)
本文綜合介紹了在保障網(wǎng)站平臺(tái)正常運(yùn)行時(shí),企業(yè)的運(yùn)營(yíng)和技術(shù)人員通常會(huì)采用的一些惡意 bot 流量防御方案,以及 UCloud 安全中心產(chǎn)品 UEWAF 在網(wǎng)絡(luò) bot 檢測(cè)上的研究與探索。該模型的實(shí)際檢測(cè)效果突出,使用多種檢測(cè)技術(shù)相結(jié)合的方式,前期需依據(jù)網(wǎng)站的訪問(wèn)量情況進(jìn)行一段時(shí)間的學(xué)習(xí),之后自動(dòng)更新學(xué)習(xí),能幫助客戶用更加高效的方式解決bot攻擊問(wèn)題,提高客戶網(wǎng)站的商業(yè)價(jià)值。