和黑客鬥爭的 6 天!

微笑很純潔發表於2020-03-04

和黑客鬥爭的 6 天!

網際網路公司工作,很難避免不和黑客們打交道,我呆過的兩家網際網路公司,幾乎每月每天每分鐘都有黑客在公司網站上掃描。

有的是尋找 Sql 注入的缺口,有的是尋找線上伺服器可能存在的漏洞,大部分都是各個黑客檢測工具來掃描,當然更高階一點的入侵需要很多人工協助。

一般情況下,網站被黑客入侵都是因為開發人員平時沒有安全意識導致的,厲害的黑客往往會對平臺的業務和內部流程非常熟悉,很多漏洞是從邏輯上分析出來的

當然了,所有的黑客攻擊行為都是有目的,99% 都是因為其中隱藏著暴利

比如2015-2017年,很多網際網路金融公司遭遇黑客敲詐,最後都是打錢了事。

和黑客線上上鬥爭過很多年,積累了一些案例,網際網路金融公司工作期間,分享過一系列黑客攻擊的案例,檢視案例文章可以在公號內回覆:003

今天給大家分享的是,去年一家公司發生的事情。

1

一個客戶反饋操作很慢引發的事件

第 1 天

2018年的某一天,客服接到個別使用者反饋,公司某款 App 操作時某個介面響應很慢,客服將此問題反饋給了公司的相關技術人員。

技術人員接到這個反饋之後,在生產環境多次測試並沒有復現這個問題,於是給客戶反饋有可能是網路的問題,可以換個網路再試試。

第 2 天

客服接到更多使用者反饋,手機操作某個功能時很慢,最長時間要等待超過 1 分鐘。客服又將相關資訊反饋到技術,並且將問題級別提高了一級

技術這邊將問題上升到技術經理,開始排查問題原因,技術經理通過大量測試發現,這個緩慢現象在測試 10 次會復現 1 次

看來又是一個偶現的問題,偶現的 Bug 是最難處理的,技術經理帶著研發人員在伺服器調了一下前端業務日誌,分析之後也沒有找到具體的原因。

第 3 天

公司有一個核心代理商將此問題反饋到技術老總,老總安排技術總監來關注此問題。技術總監要求把訪問路徑的關鍵節點都打上日誌,看看具體是哪部分操作慢了。

經過技術經理的排查,是在 App 操作某一個功能的時候出現偶發性的慢,但是這塊的操作也有快取作為支撐,快取的使用率並不是很高。

既然問題是偶發並且後面的快取使用率並不高,那麼應該不是程式哪塊出現 Bug 了,應該是其它方面的問題,遂要求排查是否是伺服器問題。

先給大家畫一下一張圖,方便大家瞭解一下技術背景。

和黑客鬥爭的 6 天!

前端使用者使用手機操作某一個功能時,請求經過防火牆路由器分發到最前端的 Nginx,Nginx 又通過均衡負載分發到後面的五臺業務伺服器

業務操作的時候需要呼叫一組資料,這些資料會根據業務規則快取到背後的快取伺服器叢集中,用來緩解後端資料庫的壓力。

第 4 天

經過和運維人員配合調查發現,在分發的這 5 臺業務伺服器中,其中有 1  臺伺服器的壓力比較大,凡是請求分發到這臺伺服器的時候就會出現慢的情況。

因為線上的伺服器已經用了很多年,懷疑是不是伺服器配置老化導致的問題,隨後將壓力比較大的伺服器進行下線,無縫切換到新的伺服器上。

過了半個小時後繼續觀察,又發現另外的一臺伺服器也出現負載壓力大的問題。後面變了很多方案,比如減少到 3 臺伺服器來支撐,或者增加到 9 臺伺服器來支撐。

總是切換半個小時到兩個小時的時候,其中的 1-2 臺伺服器的壓力會突然上來,一直保持比較高的訪問量,經過這些測試排除是伺服器的問題

緊接著排除 Nginx 是不是分發的策略有問題,導致某個伺服器分發的請求過多,試著變了幾次 Nginx 的分發策略後,還是會復現出問題,排除 Ngingx 分發異常

第 5 天

技術人員繼續跟蹤,負載壓力比較高的伺服器執行緒 Down 出來和正常的伺服器對比,發現在負載壓力比較大的伺服器上某個執行緒的呼叫數量異常的高

再繼續跟蹤這個執行緒,原來是某一個忘記密碼的功能被頻繁的呼叫,忘記密碼應該是一個普通的介面,為什麼會被這樣高頻率的呼叫呢?

然後再繼續跟蹤是哪些 IP 在頻繁的呼叫這些介面,不跟蹤不知道,一跟蹤嚇一跳,把呼叫最頻繁的 Top 100 IP 列出來查了一下,發現都是國外的 IP。

什麼 巴黎、孟買、菲律賓、泰國,幾乎所有的外國的IP都有,但是作為一家國內的第三方支付公司,怎麼可能會出現國外的 IP 呢?

大家都知道在手機上填忘記密碼的時候,絕大部分平臺都是使用手機號作為其中的一個條件,如果你沒有在這家平臺註冊,那麼就會反饋手機號不存在。

這是一個非常常見的功能,但是對於黑客來講,這個功能夠暴利了

很多同行業的競爭者需要挖角其它公司客戶,但是怎麼知道這些平臺的客戶有哪些?

直接通過這個介面,暴力破解就可以了

是不是很黃很暴力!

因為公司處理的業務都是國內業務,所以只要直接在 Nginx 寫指令碼,把所有來自國外的 IP 都給遮蔽,可以暫時解決被國外 IP 攻擊的問題。

上線後果然消停了,伺服器也不過載了,App 訪問也正常了。

第 6 天

可能黑客過了一晚上也反應過來了,又開始使用國內的伺服器代理 IP 高頻呼叫此介面,既然黑客使用了國內的 IP 地址,肯定不能把國內 IP 都封了吧。

不過在 Nginx 之後還有一個前置伺服器,在前置伺服器中加一個非常簡單的過濾器:設定一個 IP 地址在某個時間段內(可配置)只能訪問此介面 5 次,即可解決此問題。

然後再以使用者為維度加限制,一個使用者在某個時間段內(可配置)只能訪問此介面 5 次。

上面這些手段都上完之後,一切都安靜了,再也沒有出現過服務過載或者使用者反饋操作反應慢的問題了。

但是如果黑客有足夠多的國內 IP 呢,為了防止出現這樣的問題,我們再接著對產品進行升級,來防止黑客的這種可能性。

我們都知道現在很多 APP 頁面,為了方便使用者操作在忘記密碼的時候沒有圖形驗證碼,或者有圖形驗證碼卻比較簡單可以機器破解。

所以需要升級新一代的智慧驗證措施,現在很多創業公司都可以提供這種服務,這樣就從各個維度防止了黑客通過暴力手段獲取客戶資訊。

2

總結

其實據我所知,很多網際網路公司到現在仍然存在這種漏洞,很容易讓黑客通過暴力破解拿到使用者註冊的手機號,只要拿到了使用者的手機號後面就可以採用各種營銷策略。

這是目前很多公司,採用的一種競爭手段。

有的時候,產品的易用性和安全性其實是有衝突的,產品在設計的時候,其實就應該和技術多考慮風控的相關設計,不然在產品運營的後期容易出現問題。

一個大型網際網路公司中風險點非常多伺服器風險點、業務風險點都需要做提前考慮,同時公司必須配備相應的安全人員,對公司網站做常規安全巡檢。

監控公司所有的訪問介面頻次,定期把公司裡面所有的 IP 訪問情況做成圖表進行分析,看哪些是正常的請求,哪些是異常的訪問。

定期排查統計分析訪問的所有請求,可以提前發現很多問題。

開發人員和黑客鬥爭其實是一個長期的工作,任何一個訪問量比較大的公司都會遇到類似的問題,遇到問題不要驚慌,仔細排查每一個細節,最終肯定會找到問題的答案。

在我的職場經歷中,和黑客有過非常多交手的經歷,現在回過頭來看,這些經歷才是我提升最快的最好養分

解決問題是程式設計師成長的第一動力,解決大問題是成為大牛的關鍵。程式設計師的一生,也就是不斷解決問題的一生。

這樣看來,我們要感謝職場上遇到的那些困難!

所有能爬過去的問題都成為了經歷和談資,只有那些越不過的 BUG 才能稱之為問題。

宣告:轉載本公號原創文章,請於原文釋出48小時後經授權轉載,謝謝!

作者簡介純潔的微笑,一個有故事的程式設計師????詳細瞭解曾在網際網路金融,第三方支付公司工作,現為一名自由職業者,和你一起用技術的角度去看這個世界。我的微訊號puresmilea,歡迎大家找我聊天,記錄你我的故事。

< END >

純潔的微笑

一個有故事的程式設計師

和黑客鬥爭的 6 天!

微信掃描二維碼,關注我的公眾號

相關文章