?原創(chuàng)文章,轉(zhuǎn)載請(qǐng)標(biāo)明出處!https://www.cnblogs.com/boycelee/p/11363611.html
<https://www.cnblogs.com/boycelee/p/11363611.html>
?
隨著機(jī)器學(xué)習(xí)與圖像識(shí)別技術(shù)的發(fā)展,第一代、第二代驗(yàn)證碼已經(jīng)失去了安全驗(yàn)證的作用。為了增加識(shí)別難度,網(wǎng)站暴力升級(jí)圖片驗(yàn)證碼,嚴(yán)重破壞了用戶體驗(yàn)。第三代驗(yàn)證碼的誕生解決了這一痛點(diǎn),第三代驗(yàn)證碼已經(jīng)不再是狹義上的驗(yàn)證碼,它通過多場(chǎng)景多維度進(jìn)行數(shù)據(jù)收集,為網(wǎng)站提供立體式安全保障。
?
聲明
??本文內(nèi)容僅限于研究,不涉及各安全廠商具體源碼與風(fēng)控策略。維護(hù)網(wǎng)絡(luò)安全,人人有責(zé)。 ? ? ? ?
背景
前段時(shí)間分析了市面上一些安全廠商的第三代驗(yàn)證碼協(xié)議,以下內(nèi)容不針對(duì)任何廠商,僅聊聊自己對(duì)第三代驗(yàn)證碼的理解。 ?
驗(yàn)證碼劃代
(一)第一代驗(yàn)證碼 定義:主要利用簡(jiǎn)單知識(shí)構(gòu)建驗(yàn)證碼。如中文、英文、數(shù)字等。 ??? (二)第二代驗(yàn)證碼
定義:以第一代驗(yàn)證碼為基礎(chǔ),以創(chuàng)新交互方式的思想構(gòu)建驗(yàn)證碼。如看題選字、看圖選物等。 ? ??? (三)第三代驗(yàn)證碼
定義:多場(chǎng)景多維度收集數(shù)據(jù)信息,為網(wǎng)站提供立體式安全防護(hù)。 ???
第一第二代驗(yàn)證碼退出歷史舞臺(tái)的原因
以下是我總結(jié)的兩點(diǎn)原因 (1)隨著機(jī)器學(xué)習(xí)與圖像是被技術(shù)的發(fā)展,第一代、第二代驗(yàn)證碼已經(jīng)失去了安全驗(yàn)證的作用;
(2)為了增加識(shí)別難度,網(wǎng)站暴力升級(jí)圖片驗(yàn)證碼,嚴(yán)重破壞用戶體驗(yàn)。 舉個(gè)例子 ????
以上類型驗(yàn)證碼我們通過肉眼識(shí)別準(zhǔn)確率大約為30%,但我們拿到圖片打碼平臺(tái)(魔鏡)上用訓(xùn)練后發(fā)現(xiàn)準(zhǔn)確率能超過90%。機(jī)器能做得比人好,其實(shí)這已經(jīng)失去的驗(yàn)證碼的意義。
第三代驗(yàn)證碼“很簡(jiǎn)單”
????最近常常會(huì)有人問我,研究的第三代驗(yàn)證碼是不是就是滑塊驗(yàn)證碼?不就是把滑塊滑動(dòng)到指定位置嗎?這有什么難的??這讓我想起,在還沒加入Qunar前,小王子在InfoQ上的分享。有人問他,機(jī)票價(jià)格為什么不能做成一張巨大的哈希表?有必要設(shè)計(jì)得這么復(fù)雜嗎?從產(chǎn)品的角度來(lái)說,無(wú)論是Qunar機(jī)票報(bào)價(jià)還是第三代驗(yàn)證碼都是非常成功的,因?yàn)閮?yōu)秀的產(chǎn)品就是讓普通用戶覺得“很簡(jiǎn)單”。
?
第三代驗(yàn)證碼網(wǎng)上方案可行嗎
在google或百度上搜索,就會(huì)發(fā)現(xiàn)很多文章分享如何通過機(jī)器模擬人的行為進(jìn)行滑動(dòng)驗(yàn)證碼、點(diǎn)選驗(yàn)證碼校驗(yàn)。解決方案無(wú)非就是一下兩種形式:
(1)Selenium + Headless (2)chrome插件模擬點(diǎn)擊 注:
????Selenium是一種用于Web應(yīng)用程序測(cè)試工具。使用Selenium能夠模擬真正用戶操作瀏覽器的行為,例如模擬鼠標(biāo)操作、模擬鍵盤操作等。
????PhantomJS是一個(gè)”無(wú)界面"(headless)瀏覽器,它會(huì)把網(wǎng)站加載到內(nèi)存并執(zhí)行頁(yè)面上的JavaScript,因?yàn)椴粫?huì)展示圖形界面,所以運(yùn)行起來(lái)比完整的瀏覽器更高效。
?
????可行嗎?我覺得在用戶層面上是可行的,無(wú)非就是用戶怎么操作,機(jī)器就怎么操作。但是一旦請(qǐng)求數(shù)達(dá)到某個(gè)閾值后,滑塊就再也無(wú)法成功。這是什么原因?qū)е碌哪??下面我們?lái)分析分析。
?
第三代驗(yàn)證碼是什么?
以下是我對(duì)第三代驗(yàn)證碼的概括 (一)立體防護(hù) 第三代驗(yàn)證碼,已經(jīng)不再是狹義上的驗(yàn)證碼。多場(chǎng)景多維度進(jìn)行數(shù)據(jù)收集,給網(wǎng)站提供立體的安全保障。 (二)無(wú)感驗(yàn)證
以無(wú)感、無(wú)知識(shí)的形式存在,極大提升用戶體驗(yàn)。 (三)數(shù)據(jù)分析 利用機(jī)器學(xué)習(xí)對(duì)機(jī)器信息、行為數(shù)據(jù)等進(jìn)行高維度地分析。 ? 第三代驗(yàn)證碼構(gòu)成
以下是我總結(jié)的第三代驗(yàn)證碼構(gòu)成 (一)驗(yàn)證碼圖片 ?? ??1)圖片還原 ?? ??2)圖片識(shí)別 (二)人機(jī)識(shí)別 ?? ??3)生物行為特征 ??
??4)設(shè)備環(huán)境信息監(jiān)測(cè)(設(shè)備指紋) (三)平臺(tái)安全 ?? ??5)代碼混淆?(定時(shí)混淆) ?? ??6)加密算法?(高頻率定時(shí)更新) ??
??7)??瀏覽器多點(diǎn)存儲(chǔ)技術(shù)(惡意行為標(biāo)識(shí)) (四)風(fēng)控模型 ?? ??8)風(fēng)險(xiǎn)決策?(基本行為校驗(yàn)、參數(shù)校驗(yàn)) (五)行為驗(yàn)證 ??
??9)驗(yàn)證碼(無(wú)感、滑塊、點(diǎn)選等) (六)反爬策略 (七)大數(shù)據(jù)風(fēng)險(xiǎn)庫(kù) ?
第三代驗(yàn)證碼分析流程
(一)圖片還原
??????分析的第一步,圖片被打亂,如何還原? ??圖片還原思路: ????(1)切割圖片,記錄位置,最后找出規(guī)律 ????(2)通過前序請(qǐng)求返回值
????(3)其他特殊方式,如圖片名稱、圖片lbs、固定數(shù)組等 ? ? ? ? ? ?? ?
(二)滑塊識(shí)別
???????分析第二步,缺口識(shí)別。(是否下發(fā)原圖,視具體廠商而定) ? ?滑塊識(shí)別思路:
????(1)暴力遍歷(原背景圖與缺口背景圖相“與”,單片區(qū)域中存在大面積不同,返回坐標(biāo))
????(2)邊緣檢測(cè)?(①提取單片邊緣并構(gòu)造二維矩陣②對(duì)圖像進(jìn)行處理凸顯拼圖在背景圖中邊緣③沿軌跡相與) ????(3)機(jī)器學(xué)習(xí)(給圖片打標(biāo),訓(xùn)練模型) ?
? ? ? ? ? ? ? ? ??? ???? ? ? ? ? ? ? ? ?
(三)行為模擬
????????分析第三步,行為模擬(滑塊、點(diǎn)選、刮圖等)。 ? ??行為模擬思路: ????(1)低級(jí)數(shù)據(jù)偽造-自定義算法:
????????????Ⅰ、?先快后慢 ????????Ⅱ、臨近卡槽動(dòng)作模擬 ????(2)高級(jí)數(shù)據(jù)偽造-自定義算法:
????????????Ⅰ、?收集人工滑動(dòng)軌跡?? ???????? ??Ⅱ、根據(jù)數(shù)據(jù)擬合模型,用模型構(gòu)造軌跡 ? ? ??
(四)JS混淆
????分析第四步,生物行為模擬之后,坐標(biāo)如何發(fā)送?以什么格式發(fā)送?要想知道答案就需要去了解其協(xié)議。分享淘寶的平展控制流混淆JS(3萬(wàn)行),讓大家感受下被JS支配的恐懼。
https://g.alicdn.com/AWSC/uab/118.js?d=22
<https://g.alicdn.com/AWSC/uab/118.js?d=22> ? ? ?? ? ? ? ? ?? ????(1)為什么混淆? ? ?
? ?JS代碼是透明且公開的,如果被輕易了解其中信息即可模擬請(qǐng)求,并與服務(wù)器通信。要想解決這一問題,就必須要使用混淆和加密來(lái)解決代碼安全隱患。
????(2)保護(hù)機(jī)制與原理? ????? Ⅰ、使JS代碼不可分析,防止動(dòng)態(tài)跟蹤調(diào)試 ????? Ⅱ、定期高頻率混淆JS代碼
??????Ⅲ、定期高頻率修改加密算法 ????(3)如何進(jìn)行JS混淆? ?????Ⅰ、正則替換。成本低、效果差
?????Ⅱ、語(yǔ)法樹混淆。成本高、更靈活、更安全 ? ????(4)常見混淆哪幾種形式? ? ? ?Ⅰ、明文字符加密。對(duì)常量、變量以及函數(shù)名進(jìn)行替換 ? ?
?Ⅱ、控制流混淆。將代碼塊進(jìn)行拆分,打亂函數(shù)執(zhí)行流程,隨機(jī)插入垃圾代碼。
(五)瀏覽器多點(diǎn)存儲(chǔ)技術(shù)
????分析第五步,在調(diào)試過程中,可能會(huì)出現(xiàn)異常狀況(驗(yàn)證碼驗(yàn)證失敗、驗(yàn)證碼類型變更、網(wǎng)站拒絕訪問等等)。不要懷疑,你的異常行為已經(jīng)導(dǎo)致該機(jī)器被定位。這時(shí)候想到的第一件事,應(yīng)該是刪除cookie,但是刪除cookie之后,問題還是沒得到解決,這是什么原因呢?定位數(shù)據(jù)具備以下特征。
????(1)多點(diǎn)存儲(chǔ) ????????Cookie、SessionStorage、LocalStorage多點(diǎn)存儲(chǔ)同一數(shù)據(jù) ????(2)難刪除
????????多點(diǎn)存儲(chǔ),分別存儲(chǔ)于瀏覽器、用戶本地。難以一次刪除所有數(shù)據(jù) ????(3)防篡改
????????防篡改機(jī)制,通過防篡改簽名,內(nèi)容和簽名對(duì)應(yīng)。服務(wù)端校驗(yàn)數(shù)據(jù)是否被篡改 ????(4)可重生
????????多點(diǎn)存儲(chǔ),任一存儲(chǔ)點(diǎn)存在數(shù)據(jù),每次訪問數(shù)據(jù)重新植入所有存儲(chǔ)點(diǎn)
(六)設(shè)備指紋
????分析第六步,在分析JS的過程中會(huì)發(fā)現(xiàn),瀏覽器還收集了其他的信息。那么這些信息是什么呢?其實(shí)收集的是設(shè)備信息,用戶生成設(shè)備指紋。 ?
????(1)設(shè)備指紋是什么? ????????基于設(shè)備與運(yùn)行環(huán)境等多維度收集信息,為設(shè)備單獨(dú)生成的唯一識(shí)別碼 ? ????(2)為什么收集設(shè)備指紋?
????????需要對(duì)用戶上網(wǎng)的設(shè)備的軟硬件信息進(jìn)行收集,為用戶生成網(wǎng)絡(luò)唯一身份標(biāo)識(shí)。若用戶存在惡意行為,能夠精準(zhǔn)鑒別用戶身份,進(jìn)行精確打擊。 ?
?????(3)指紋收集角度? ????????Ⅰ、硬件信息 ????? ? Ⅱ、軟件信息 ????????Ⅲ、軟件環(huán)境信息 ????????Ⅳ、服務(wù)器下發(fā)信息
? ????(4)收集什么信息?
????????Ⅰ、設(shè)備與瀏覽器基本信息?(系統(tǒng)、內(nèi)存、顯卡、瀏覽器版本、瀏覽器當(dāng)前語(yǔ)言、屏幕顏色深度、屏幕分辨率、瀏覽器插件等)
????????Ⅱ、服務(wù)器存儲(chǔ)本地的特性數(shù)據(jù)(前序請(qǐng)求數(shù)據(jù)、最新混淆HTML元素信息等)
????????Ⅲ、瀏覽器或硬件設(shè)備在特性環(huán)境下的信息?(canvas圖片渲染)
????????Ⅳ、瀏覽器個(gè)人設(shè)置與信息?(瀏覽器屏幕占比、顯示設(shè)置、是否開啟控制臺(tái)等)
(七)無(wú)感驗(yàn)證
????分析第七步,無(wú)感驗(yàn)證。多場(chǎng)景多維度收集用戶信息,由風(fēng)控系統(tǒng)判定用戶等級(jí)以及是否啟用進(jìn)一步的行為校驗(yàn)。 ? ? ????? ? ?? ?
(八)風(fēng)險(xiǎn)決策
????分析第八步,第三代驗(yàn)證碼風(fēng)控系統(tǒng)通過風(fēng)險(xiǎn)決策。結(jié)合參數(shù)校驗(yàn)、行為校驗(yàn)、網(wǎng)絡(luò)探測(cè)、風(fēng)險(xiǎn)庫(kù)、風(fēng)險(xiǎn)識(shí)別等步驟,最終對(duì)當(dāng)前用戶做出等級(jí)判定。 ? ? ? ?
? ? ? ? ?? ? 總結(jié)
????第三代驗(yàn)證碼是無(wú)感知、立體式驗(yàn)證碼。而我們普通用戶所看到的滑動(dòng)或點(diǎn)選等形式的行為校驗(yàn),只不過是風(fēng)控系統(tǒng)無(wú)法準(zhǔn)確判別時(shí),進(jìn)一步收集用戶信息的一種方式。第三代驗(yàn)證碼看似簡(jiǎn)單,實(shí)則暗藏玄機(jī)。
? ?? 最后 ????關(guān)于驗(yàn)證碼,懂得不多,做得很少。歡迎批評(píng)與指教。 ? ? ?原創(chuàng)文章,轉(zhuǎn)載請(qǐng)標(biāo)明出處!
https://www.cnblogs.com/boycelee/p/11363611.html
<https://www.cnblogs.com/boycelee/p/11363611.html> ? ? ? ? ? ?
熱門工具 換一換