從監控異常發現網絡安全

前言

  最近在前端異常監控系統中,發現一些異常信息,從中做了一些分析,得到一些體會,因此作文。

發現異常

  某天早上打開監控系統發現,當天凌晨1點過測試環境有2個前端上報的異常,報錯的原因都是由於沒有獲取到 url 中的參數,比如正常的地址應該是 www.xx.com?a=1&b=2, 但是實際訪問的是 www.xx.com%3Fa%3D1%26b%3D2。 很明顯路徑被 encode 了,導致程序沒有拿到參數。

  2個異常的訪問路徑是不一樣的,並且以上2個地址  decode 之後再訪問,能夠正常打開頁面,參數全部都是正確的。 這些訪問的 url 是我們在做跳轉的時候,入口配置的,我們的邏輯中不會 encode,這個地方非常讓人疑惑,為什麼會出現這樣的請求,猜測很可能是人為修改了再訪問的。 後來把參數獲取出來,去查詢一些信息,發現這條請求是都來自於我們的測試同學的賬戶,但是私下詢問過,1點過同事根本什麼都沒有做。 也排除了有其他人用他手機訪問的情況。 再對參數里的信息做查詢,發現這2個參數對應的數據是在2個多月前,我們項目測試階段的數據,這就更奇怪了,2個月前的版本我們已經沒有再測試了,同事也很久沒有訪問過這幾個入口。 是不是有人在刷我們的頁面,但為什麼幾個參數都是如此精確,都是正確的。 

  一定有其他人在訪問。因為各方面情況看起來都很不正常:

    1. 凌晨1點過訪問的

    2. 訪問路徑被 encode

    3. 數據是測試同事的,他自己卻沒有訪問過。

    4. 訪問的地址的數據都是2個月前生成的,如果有三方黑客獲取到了訪問記錄之後,延遲到最近批量訪問也符合行為邏輯

 

  再看看上報的其他異常信息,更奇怪了,瀏覽器的版本無從得知,User-Agent 只有 Go-http-client/1.1 , 怎麼看都像是爬蟲腳本在做請求。 說到爬蟲,爬蟲一般會針對已知的接口進行數據拉取,以獲取他人的信息; 又或者不停的遍歷不同的路徑,查找可訪問的路由(隱藏的後門),路徑遍歷很容易發現,如果有日誌的話,就能看到很多 404, 大量的訪問一些奇怪的路徑。 那我們遇到的,是前期通過某種方式攔截到我們的網頁請求,收集起來,到一定時間再去訪問,這種方式叫做:重放攻擊

  我們在服務器又查詢了 IP 等一些相關的信息,發現有幾個 IP 時不時的在做這樣的訪問攻擊,而且也看得出對方很謹慎,沒有同時做大批量的請求。 又發現了更多的異常行為,首先比如一個 www.x.com/page 的頁面路徑,它使用 post 方法去請求了一次。 

  所有的異常數據,被訪問的路徑都是測試環境的地址,使用的 http,而我們的正式環境使用的 https,對方似乎並沒有能力獲取到 https 的請求。 通過查詢這幾個 IP 在正式環境訪問,又發現了一條記錄,而剛好這條記錄的訪問地址沒有 https(因為有時候,我們的開發自己可能會手動把 https 改成 http 去訪問。  到目前的結論是黑客方的監聽是和我們的項目環境沒有關係的,只是因為我們正式環境使用了 https 他才沒有獲取到。

  最初以為只是一個同事的手機被監聽了,但是因為又出現了另一個同事的請求,所以覺得爬蟲在路由器層攔截的概率更大,而且剛好這兩個同事有一個用的是安卓,有一個用的是蘋果,所以看起來所有的設備都有命中的可能。 但是如果是公司路由器的問題,那為什麼目前為止就只發現了兩個同事的訪問被爬取了,這些網頁其他同事也都訪問過,而且頻率也不低。 對方的策略具體是什麼,到底在哪裡攔截的,我有點束手無策了。 而後詢問過另一個同事後,得知對方大概是在20多天前訪問的,爬蟲訪問的記錄全部集中在這幾天。 種種跡象表明確實是前期收集了一段時間,這两天才開始出來集中訪問的。

  前面通過查詢 IP,發現爬蟲的服務器都在國內,但是對方也可能隱藏掉了真實 IP 。 如果對方的行為對公司造成了傷害,也許可以進一步去查對方服務器歸屬人。 但是因為從對方訪問量和攻擊程序來說,對我們幾乎沒有傷害。 甚至能感覺到對方不是定向要攻擊我們。 看起來更像是對方的程序遊離在互聯網上,收集到了什麼,就干點什麼的意思。

 

安全問題

  再來說說安全性問題,我們常常在訪問 url 的時候,帶上一些參數,比如在 app 中,內嵌一些 h5h5 的參數中需要帶上一些識別身份的 token。 如果說、我們沒有使用 https,黑客在中間層監聽了我們的請求,就能獲取到我們的數據,甚至對方萬一得到了 token,還能獲取更多我們的隱私信息。 這就給重放攻擊提供了安全漏洞。

  那麼防禦重放攻擊,有什麼辦法呢? 常用的辦法有兩種

  (1)加隨機數保障只被使用一次,但是需要額外空間存儲歷史使用過的值;

  (2)加時間戳,不用額外保存信息,但是需要同步時間,但同步時間並不能達到各種情況下的準確。 總之大概方向就是需要一個參數,來判斷是否失效。

 

為什麼 https 保障安全

  網上文章很多,這裏就不做一一解釋了,簡單說兩點,https 利用非對稱加密和對稱加密、保障數據安全;利用数字證書做雙向身份校驗、保障不被釣魚。

 

抓包工具為什麼能抓取 https

  以前知道抓包工具通過一定配置就能抓取到 https 請求,這樣一想,那 https 是不是就不安全啊,抓包工具都能攔截到。 首先我們需要先了解它的原理,才能做下一步分析。 

 

  抓包工具抓取 https 的原理是利用抓包工具做中間代理人,和客戶端建立信任連接以後,再代客戶端去向服務端發送和接受請求,達到中間商的效果,這樣抓包工具既能看到數據,客戶端也能正常使用。

以下是抓包工具抓取 https 的流程(拷貝的他人的總結,也不知道最初是誰寫的,因為網上太多同樣的了,作者勿怪,無法署名

  1. 客戶端向服務器發起HTTPS請求

  2. Charles攔截客戶端的請求,偽裝成客戶端向服務器進行請求

  3. 服務器向“客戶端”(實際上是Charles)返回服務器的CA證書

  4. Charles攔截服務器的響應,獲取服務器證書公鑰,然後自己製作一張證書,將服務器證書替換后發送給客戶端。(這一步,Charles拿到了服務器證書的公鑰)

  5. 客戶端接收到“服務器”(實際上是Charles)的證書後,生成一個對稱密鑰,用Charles的公鑰加密,發送給“服務器”(Charles)

  6. Charles攔截客戶端的響應,用自己的私鑰解密對稱密鑰,然後用服務器證書公鑰加密,發送給服務器。(這一步,Charles拿到了對稱密鑰)

  7. 服務器用自己的私鑰解密對稱密鑰,向“客戶端”(Charles)發送響應

  8. Charles攔截服務器的響應,替換成自己的證書後發送給客戶端

  9. 至此,連接建立,Charles拿到了 服務器證書的公鑰 和 客戶端與服務器協商的對稱密鑰,之後就可以解密或者修改加密的報文了

 

  所以前提是客戶端需要選擇信任並安裝 Charles 的證書,否則抓包工具也無法攔截 https,在互聯網上大部分惡意腳本程序,想要抓取用戶數據,也大都是和抓包工具一樣的工作原理,所以 https 還是比較安全的。

 

未使用 https ?

  記得以前公司還沒使用 https 的時候,可能大家都經歷過噁心的流量劫持,我們自己在線上環境使用都挺正常的,時不時其他地區的同事會告訴我們說,頁面上漂浮了一個按鈕,點開就跑到其他地方去了。 甚至說有些注入的代碼有問題,導致我們的界面也出現了問題,當時各種研究后,最後的辦法就是上 https, 到現在就再也不用擔心這個問題了現在一些瀏覽器訪問非 https 的頁面,都會提示不安全,平時也看得到一些他人的網站都還是沒用 https,進去就會報警告。 也如我們發現的重放攻擊,這些安全問題確實存在於網絡中,甚至無人能避免,所以沒用 https 的站點,還是快點升級吧!

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

您可能也會喜歡…