網站被黑客掃描撞庫該怎麼應對防範?
最近發現有大量的 IP 在刷我們網站的登錄頁面,是通過代理 + 模擬正常用戶登錄(包含 UA、session 等)的方式來驗證用戶名密碼的有效性。(我猜他應該是有一個很大的庫,我抓了其中一台機器一晚上的數據就要 500w+)
剛開始以為封了 IP 就可以了,但是發現封了 IP 也沒用。他的代理 IP 地址一直在變。因為他模擬的是正常的用戶請求,研發也沒有辦法。
請教大家,碰到這樣的情況應該怎麼應對和防範。
這個在安全圈子裡叫撞庫,即通過已有的賬號密碼到其它網站去嘗試。
而針對撞庫的防範是一個人機對抗的過程,需要通過一些手段來防止通過程序來掃描,但是這些手段也不能影響正常的用戶體驗,說說經常用到的一些方法:
如@tombkeeper 所說,最簡單的方式就是增加一個圖片驗證碼,當然對於現在圖片驗證碼的破解程序也是越來越厲害,網上商業的開源的驗證碼破解工具一大堆,如果做圖片驗證碼來防範的話,就要考慮一個問題,如何防止圖片驗證碼被破解。對於防止驗證碼破解的話,可以適當增加驗證碼生成的強度,業內做的比較好的驗證碼,可以參考下淘寶的、百度貼吧的中文驗證碼也不錯。
另外一種方式就是自動識別異常IP,如果機器掃描的話,肯定會有一些特徵能被你抓取到,比如:單位時間內操作次數,比如1分鐘嘗試登錄超過100次、正常用戶不可能有這麼大的頻度的;1分鐘內嘗試登錄錯誤賬號超過一定次數;其它的自己擴展。對於異常的IP,整理一個非常嚴格的庫,甚至直接禁止這些IP訪問網站,一個一個手工添加肯定很累,程序對程序,應該沒問題。黑客使用的代理再多,總歸是有限的。
剛在微博有同學說遇到專業的撞庫,黑客黑掉了整個市的dhcp,分配了幾十個1-254的c段來掃,每個IP僅僅嘗試1-3次,這種低頻度的撞庫確實不好防護。在這裡提出一個簡單的思路,比如真的是這種的話,那麼針對這個市的IP設計一個黑名單,單獨的策略。
另外一種思路是用戶賬號被撞後的保護,比如判斷下用戶的登錄IP,是否在常用的地區,如果不是,直接鎖定賬號,讓用戶通過手機、郵箱等手段來解鎖,這方面做的比較好的可以參考騰訊和淘寶。
當然,這些策略結合起來的話,效果更好。最簡單的方法是加個圖片驗證碼
其實有幾種方法:
1. 驗證碼,如tk所說,驗證碼是最好的保護方式。但問題是api介面怎麼辦?互聯網公司經常出現老的api介面無法下線。或者出現介面是別人寫的,很多人使用沒人敢碰的情況,那就到了第二種方法
2. 惡意IP庫,你會發現其實大部分撞庫的出現,其源頭還是肉雞、代理、botnet,如果你有這些惡意源頭的IP,就可以在對方訪問的時候直接前端。而惡意IP庫目前擁有最全數據的應該是這家公司: ThreatBook - 安全威脅情報專業提供商 。 不信你問tk!
3. 還有一種方法實現,其實是以退為進,就是讓他撞,但是觀測他的訪問路徑鏈提取演算法,以此來作為行為分析判斷是否為惡意 如果是則斷掉。這個類似風控的手段。
撞庫是一個提起來就讓人有點小激動的話題。
撞庫和暴破有啥區別?
有區別,但也不是特別大,個人覺得基本思路和原理差不多,都是掛上字典去對網站的登錄界面不停地嘗試登錄。區別主要在字典這塊,暴破的字典質量不高,很多是YY出來的,而撞庫的字典都是從別的網站搞到的真實用戶賬號密碼對。如果你能搞到一手的原信,那就更NB了,之後越洗價值越低。
如何繞過網站風控
很多網站被暴破搞半死了,因此大多商業網站都有風控。撞庫首先就是要繞過這些風控。風控的普遍原理其實就是訪問控制,不管是基於IP的還是更高業務層面的。繞過風控首先需要繞過這些訪問控制。
(1)代理
對於最常見的IP風控,代理伺服器是一個比較好的方式,代理伺服器可以幫你一定程度上避開基於IP地址的風控。當然,你要是碰上某寶、某貓,某東這樣的養了一大幫風控技術的網站,會有更為嚴格的風控體系。這個不是重點,這裡不討論。
(2)打碼平台
打碼是撞庫過程中非常重要的一個補充手段。打碼主要是幫助撞庫的一方繞過應用層的風控,比如驗證碼,包括圖形驗證碼、文字驗證碼還有需要計算的驗證碼(代碼運行,加減乘除等)。這個是比繞過IP風控更為高階的手段。現在有很多打碼平台,背後有機器打,有要人工打的。很多打碼平台承諾SLA,這不禁讓讓鄙人感嘆——真尼瑪與時俱進,這分明就是反向MSP的業務模式嘛。下圖是某打碼平台的收費,可見其業務的細緻程度:
最後說說防禦,上面 @Neeao 說了不少,大家千萬不要信他,因為他自己就是搞風控的,LOL!開個玩笑了,大牛還是蠻靠譜的。撞庫雖然看上去挺簡單,但是防禦起來還是蠻看功力的。過多的不說了,防禦撞庫實際考驗的是防護一方的數據能力和計算能力——你是否能夠收集到足夠多的攻擊數據以及IOC,計算能力就是匹配能力,還有風險值的計算。特別是繞開很多坑,比如笛卡爾積。
更多可以參見Freebuf上文章:阿里雲安全發布2015年度態勢感知報告:預警撞庫攻擊
實行兩步驗證,強制用戶設置手機簡訊驗證。
雖然用戶體驗會降低,但是相比較用戶的賬戶安全來說這並不算什麼。如果帳號都沒有了何來體驗?
^_^
面對撞庫攻擊,不同的主體需要不同的方法,以下分為個人用戶和企業用戶來講講
個人用戶能做什麼
已經有無數的安全人員建議你不要再多個網站設置同一個登錄密碼,並形成設置高強度密碼的習慣。這無疑是「政治正確」的,但也是反人性的。
在這裡,豈安實驗室的安全專家們推薦幾個比較可行的方式:
- 收到威脅提示時,儘快修改密碼;
- 和財產相關的賬號一定要用單獨的賬號,避免和其他賬號密碼重疊;
- 使用更安全的認證方式,如果覺得密碼太複雜記不住,可以採用掃描二維碼登錄、刷臉登錄、指紋識別登錄。
另外,如果想知道自己的賬號是否被盜,可以搜索「社工庫」,輸入自己的ID,看看自己是否曾經有賬號被盜,筆者就是這樣找回了已經被遺忘的賬號和密碼。
面對撞庫,企業能做什麼
要解決撞庫問題,關鍵還在企業。
首先,如果不是某些企業被「脫褲」,就不會存在「撞庫」行為。
問題就在於,一些企業可以做到自己不被脫褲,但是也架不住別的網站被脫褲,然後黑產拿著賬號密碼到自己這裡來撞庫。
所以只能換個思路來解決問題:
- 黑產撞庫行為一般是通過軟體嘗試批量登錄,可以通過自動識別異常IP方式,掃描到單位時間內頻繁登錄的異常IP。對於異常的IP,整理一個非常嚴格的庫,甚至直接禁止這些IP訪問網站。
但是,有些黑產會頻繁換IP繞開風控來撞庫,甚至藉助家庭路由後門來撞庫,這樣的話簡單的封IP就無法阻止撞庫了。
- 可以通過增強登錄入口識別能力的方法來提高登錄入口的安全性,如增加圖片驗證碼,與驗證碼生成的強度等。這樣可以有效避免黑客通過代理登錄獲取用戶個人信息,從而效規避撞庫攻擊;
還有一點需要注意的是,企業應該有意識地避免與「安全級別低」的網站建立聯繫,針對「安全級別中等」的網站,則可以採用OAUTH協議授權登錄的方式,與以往的授權方式不同, OAUTH的授權不會讓第三方觸及到用戶的帳號信息(如用戶名與密碼),我們常見的微信授權登錄、微博授權登錄就是這種形式的典型代表。
更多反攻擊知識請關注豈安科技公眾號:bigsec
參見微信公眾號文章:
保護用戶口令的最高境界?
用戶登錄,增加回答自定義問題!
當然是把他們撞褲的log整理出來收集他們的庫。時間長了你就能開個社工褲網站了
驗證碼啊,讓驗證碼變的喪心病狂的難辨認
http://geetest.com 我真的不是做廣告==
複雜的驗證碼 加 登錄延時
谷歌身份驗證器是不是可以比較好的解決這個問題呢?
現在的驗證碼的確越來越難辨認了,在提高網站安全的同時也一定程度降低了用戶體驗,真糾結啊
驗證碼
對用戶行為分析唄,不在常用地或常用設備登陸,就開二次認證,圖片驗證碼,手機郵件驗證碼一類。。。
兩步驗證啦,驗證碼啦(極致驗證碼的確不錯,用戶體驗也很好)
推薦閱讀:
※白帽子掌握了漏洞,不通知廠商也不公布,一般會留作何用?
※在北京通往莫斯科長達一周的「東方特快列車」上舉辦黑客馬拉松是否可行?
※現在大部分網站容易被入侵嗎?