黑客攻擊(撞庫(kù))事件復(fù)盤:黑客都比你努力

3 評(píng)論 6760 瀏覽 30 收藏 9 分鐘

在電商、互聯(lián)網(wǎng)金融、OTA等平臺(tái),黑客攻擊很常見(jiàn)。針對(duì)黑客攻擊,我們能做什么?一起來(lái)看看作者的親身經(jīng)歷。

一直知道有黑客的存在,一直知道有“黑產(chǎn)”的存在,但沒(méi)想到過(guò)有一天我如此近距離的接觸黑客以及所謂的黑產(chǎn)。

事情的經(jīng)過(guò)大概是這樣的:

昨天晚上10點(diǎn)登錄系統(tǒng)突然收到告警短信,告警信息表明,目前有異常大流量請(qǐng)求;由于時(shí)間比較晚,花了點(diǎn)時(shí)間才聯(lián)系到核心的研發(fā)人員;登錄系統(tǒng)查看了下,發(fā)現(xiàn)確實(shí)有接近平時(shí)200倍的異常登錄請(qǐng)求。初步看了下請(qǐng)求的IP來(lái)源都是比較分散的,特征是在不斷的嘗試用戶名、密碼登錄,并且已經(jīng)破解了我們的圖形驗(yàn)證碼。

綜合上面的信息,我們初步判斷這應(yīng)該是一次典型的黑客撞庫(kù)行為。

何為撞庫(kù)?

所謂撞庫(kù)行為,就是黑客在別的地方,一般是安全程度不高的網(wǎng)站被入侵,拿到了這個(gè)網(wǎng)站所有用戶的用戶名,密碼信息。然后拿這些用戶名、密碼在其他網(wǎng)站進(jìn)行登錄嘗試,因?yàn)橛胁簧偃耸谴嬖谝粋€(gè)普遍行為,即在不同的網(wǎng)站用的是同一個(gè)用戶名,密碼。

這樣A網(wǎng)站如果被入侵,泄露了用戶的個(gè)人信息,黑客可以拿這些用戶名、密碼到B網(wǎng)站去登錄,如果同一個(gè)用戶既注冊(cè)了A網(wǎng)站又注冊(cè)了B網(wǎng)站,這樣黑客就可以用A網(wǎng)站得到的信息登錄B網(wǎng)站,從而進(jìn)入用戶在B網(wǎng)站的賬號(hào)。

以為解決掉了

發(fā)現(xiàn)了這個(gè)行為后,我們先想的是如何禁止黑客的暴力登錄;這樣不僅存在撞庫(kù)風(fēng)險(xiǎn),由于請(qǐng)求量比較大還會(huì)影響普通正常用的體驗(yàn)。

研發(fā)抓了日志,經(jīng)過(guò)分析,基本可以確定黑客是通過(guò)工具進(jìn)行批量進(jìn)行登錄。

黑客的請(qǐng)求,來(lái)源IP比較分散,每次都嘗試不同的用戶名和密碼,想簡(jiǎn)單的采用封IP的方案是不行了,最后發(fā)現(xiàn)所有的異常請(qǐng)求里面,有一個(gè)http header是有相同的特征,拉上運(yùn)維人員一起商量,最后決定在nginx這里對(duì)這類的請(qǐng)求進(jìn)行攔截。

整個(gè)流程花費(fèi)了大概1個(gè)半小時(shí),最后nginx策略生效后確實(shí)有效的把異常流量給封住了,那會(huì)也快晚上12點(diǎn)了,又觀察了一會(huì),發(fā)現(xiàn)對(duì)方?jīng)]有新的動(dòng)作,以為這件事就這樣結(jié)束了。

噩夢(mèng)才真正開(kāi)始

第二天上午接到用戶投訴,說(shuō)我們的網(wǎng)站泄露了用戶的隱私,有人打電話給用戶,冒充網(wǎng)站的客服人員,對(duì)用戶進(jìn)行欺詐。

經(jīng)過(guò)跟幾個(gè)被詐騙的客戶了解,基本搞清楚了黑客的詐騙手段。

首選黑客登錄用戶的賬號(hào),看了下用戶最新的訂單信息,然后打電話給用戶,冒充網(wǎng)站的客服人員,說(shuō)這個(gè)客戶買的某個(gè)商品質(zhì)量有問(wèn)題,網(wǎng)站要進(jìn)行召回,請(qǐng)進(jìn)行退貨處理。退貨地址的詳細(xì)地址在用戶的個(gè)人地址里面。黑客特意修改了用戶的個(gè)人收貨地址,并在里面藏了一個(gè)釣魚(yú)網(wǎng)站的連接,誘導(dǎo)用戶點(diǎn)擊這個(gè)釣魚(yú)網(wǎng)站。這個(gè)釣魚(yú)網(wǎng)站完全模仿支付寶登錄界面,除了域名不一樣,其他一模一樣,有些用戶沒(méi)注意,就在這個(gè)界面輸入了自己的支付寶賬號(hào)信息,黑客通過(guò)這個(gè)辦法拿到了用戶的支付寶賬號(hào),然后自己登錄用戶的支付寶賬號(hào)——下面就不說(shuō)了,大家懂的。。。

對(duì)于這種欺詐行為,有一定的迷惑性,因?yàn)閷?duì)方可以清晰的報(bào)出用戶買的東西以及訂單號(hào)、下單時(shí)間、收貨地址,有些警覺(jué)性比較低的用戶就真的會(huì)相信這是網(wǎng)站“官方”的行為,然后按照引導(dǎo)去操作,最后支付寶賬號(hào)信息被盜取。

一上午的時(shí)間,客服陸續(xù)接到近10起類似投訴,其中有一個(gè)用戶支付寶被盜了2萬(wàn)塊,要求我們進(jìn)行補(bǔ)償——這個(gè)時(shí)候,我們才意識(shí)到問(wèn)題的嚴(yán)重性:首先我們不知道黑客具體拿到了多少我們網(wǎng)站的用戶信息,然后還不知道即將有多少用戶因此受騙。。。

魔高一尺道高一丈

我們緊急先找了下昨晚攻擊時(shí)間段的請(qǐng)求日志,嘗試發(fā)現(xiàn)哪些用戶被黑客撞庫(kù)成功了。

由于我們沒(méi)有記錄詳細(xì)的登錄日志,所以單從日志上看不出來(lái)這個(gè)信息,最后只能把攻擊的那個(gè)時(shí)間段內(nèi),所有成功登錄過(guò)的用戶信息全部拉出來(lái),悲觀的認(rèn)為這些都是被黑客攻擊的賬號(hào);然后批量給這些用戶發(fā)短信進(jìn)行提醒,為了防止黑客還能登錄這些賬號(hào)進(jìn)行欺詐,我們立刻把這些賬號(hào)的密碼置空,要求用戶立即修改密碼。

我們以為這樣黑客就沒(méi)辦法再登錄這些賬號(hào)進(jìn)行欺詐了,結(jié)果又被現(xiàn)實(shí)狠狠的打臉,因?yàn)檫€陸續(xù)有客服反饋有用戶來(lái)投訴,這就讓我們很不理解:為什么黑客都不能登錄了,還能看到用戶的信息進(jìn)行詐騙呢?難道黑客把這些信息存下來(lái)拉?

我們立刻又去翻日志,最后發(fā)現(xiàn):黑客在撞庫(kù)成功后,立刻就把用戶的訂單信息,個(gè)人信息全部用腳本查詢了一遍,并且把這些信息存了下來(lái)。

這時(shí)候才發(fā)現(xiàn),黑客在攻擊我們之前,已經(jīng)對(duì)我們網(wǎng)站的接口進(jìn)行了細(xì)致的分析,制定了一套相對(duì)完整的攻擊方案。

黑客都比你努力

經(jīng)過(guò)這次攻擊,發(fā)現(xiàn)黑客還是很用心的做了很多準(zhǔn)備工作。

  1. 首先分析我們的接口信息。
  2. 寫撞庫(kù)的工具,成功登錄后,立刻將用戶的關(guān)鍵信息落地。
  3. 選擇在深夜進(jìn)行攻擊,我們發(fā)現(xiàn)異常到找到相關(guān)的人,到制定響應(yīng)方案時(shí)間比較長(zhǎng),可以盡量爭(zhēng)取攻擊的時(shí)間。
  4. 針對(duì)我們的網(wǎng)站,執(zhí)行針對(duì)我們網(wǎng)站用戶的詐騙方案。

現(xiàn)在看下來(lái),整個(gè)流程事先都是準(zhǔn)備好的,而我們的響應(yīng)方案確實(shí)漏洞百出。

吃一塹長(zhǎng)一智

這次攻擊也暴漏了系統(tǒng)很多的問(wèn)題,總結(jié)幾點(diǎn)。

  1. 沒(méi)有任何安全防護(hù)措施,對(duì)于這種典型的異常流量響應(yīng)很被動(dòng)。現(xiàn)在市面上有很多成熟的waf,可以自動(dòng)識(shí)別這種惡意工具,從而將惡意流量進(jìn)行有效清洗。
  2. 協(xié)議沒(méi)有加密,讓別人很容易拿到協(xié)議的內(nèi)容,進(jìn)行模擬。
  3. 圖形驗(yàn)證碼沒(méi)有難度,很容易被破解,需要增加級(jí)別更好的驗(yàn)證方式。語(yǔ)音驗(yàn)證或者滑動(dòng)驗(yàn)證。
  4. 沒(méi)有基本的風(fēng)控模型,比如用戶正常是在上海登錄,突然在新疆登錄了一次,這個(gè)時(shí)候應(yīng)該有異常的標(biāo)記或者告警。

#專欄作家#

DearNicole,人人都是產(chǎn)品經(jīng)理專欄作家,前京東產(chǎn)品經(jīng)理、研發(fā)經(jīng)理,主攻電商的方方面面。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自 Unsplash ,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 我平時(shí)也自?shī)首詷?lè)kali linux,都是自己玩自己的。

    來(lái)自河北 回復(fù)
  2. 好奇是什么網(wǎng)站

    回復(fù)