黑帽SEO剖析之總結篇
此係統文章總共分為四篇,分別是手法篇、工具篇、隱藏篇、總結篇;本篇為總結篇,主要介紹黑帽seo行為的檢測以及預防。可以說此係列前面三篇文章,是為最後一篇做的鋪墊,畢竟作為安全工程師我們真正需要做的,是幫助客戶去防禦攻擊,抵禦黑產。
如何檢測自身網站是否被劫持?
前面介紹了很多關於黑帽seo的手法,那作為站長或者運維該怎麼去監控自身網站是否被入侵,且被黑帽seo利用了呢?這裡不說如何檢測入侵,因為這不是本文的範疇,我們只談如何檢測被黑帽seo利用,這裡提供幾個思路。
內部監控
可以監控伺服器web目錄下的檔案改動情況,一般黑帽seo都需要改動web目錄下的檔案(新增檔案,或更改檔案內容)。當然有些只改變nginx配置就可以達到目的,因此nginx等伺服器的配置檔案也需要進行監控。
小結:內部監控比較類似防篡改的檢測,只是面對網頁劫持,除了響應檔案內容改動以外,還需要響應新增檔案等行為,包括伺服器配置檔案的改動。
外部檢測
黑帽seo手法從根本上是欺騙搜尋引擎,因此檢測本質上也可以從搜尋引擎出發。檢測網站在搜尋引擎搜尋顯示下是否出現了敏感的內容,比如:博彩、色情等。由於網頁劫持手法可以動態調控顯示內容,比如不同地區點選返回不同的內容等,因此這需要我們的檢測程式能夠多維度得進行檢測。
多維度包括但不侷限於以下幾種:
採用不同地區的IP檢測目標網站
採用不同時間段內檢測目標網站
採用不同的UA訪問目標網站
採用不同的訪問方式目標網站(百度搜索跳轉、直接訪問域名)
檢測步驟分為:
獲取搜尋引擎搜尋結果
模擬瀏覽器訪問搜尋結果網頁
解析網頁原始碼等元素
匹配規則判斷網站是否被劫持
獲取搜尋引擎搜尋結果
這一步驟需要爬取搜尋引擎,比如我們要判斷thief.one網站是否被劫持,可以搜尋百度:site:thief.one 色情。關鍵詞需要自己蒐集,然後利用爬蟲爬取百度的搜尋結果。
顯然這一步需要對抗百度搜索引擎,防止被其遮蔽問題,還要能夠正確的獲取百度的搜尋結果。關於爬起搜尋引擎可參考:
爬取搜尋引擎之尋你千百度
爬取搜尋引擎之搜狗
模擬瀏覽器訪問搜尋結果網頁
當爬到所需要的網頁連結後,我們需要重放url獲取資訊。這一步需要能夠動態執行網頁中嵌入的js程式碼,動態跟蹤網頁的走向(跳轉)。這裡推薦使用phantomjs當然也可以使用其他webkit。
解析網頁原始碼等元素
可以利用python解析網頁原始碼、網頁標題、URL、js等內容,最方便的做法是獲取各個引數的內容,處理資料打標後扔到機器學習的演算法中進行模型計算。
匹配規則判斷網站是否被劫持
可以使用正則等方式,根據黑帽seo等特徵建立規則庫去匹配。當然也可以利用機器學習的方式去對相關網頁進行分類,我們曾經使用過某種演算法,將準確率提高到了90%左右。
小結:外部檢測難度比較大,目前黑帽seo主要針對百度,因此這相當於去檢測百度的搜尋結果;而如何模擬瀏覽器訪問也是一大難題,當然最重要的是最後的機器學習,如何訓練模型。
誰來為此買單?
基於黑帽SEO大多數都為博彩賭博行業做推廣,將會增加網民沉迷網路賭博的風險,縱觀身邊因為網路賭博而家破人亡的事情不在少數;而也有一部分黑帽SEO在為槍支彈藥、毒品違禁藥物做推廣,更是為犯罪分子提供了便利。在此之前,我一直認為黑產只是暴利並無太大危害,然而通過對黑帽SEO的研究發現,其危害的絕不僅僅只是經濟而已。那麼這一切,應該由誰來買單?
首先網站管理者難辭其咎,正因為管理員安全意識的淡薄,網站安全性不高,導致被入侵最終成為黑產的一部分。在我自身處理的幾起類似事件中,網站管理員往往是一副無關緊要的態度,即使網站已經被黑帽SEO利用,也覺得沒有對網站本身造成什麼危害,覺悟性不高。
其次搜尋引擎應該擔負一定的責任,因為黑帽SEO行為主要針對搜尋引擎,說白了就是利用搜索引擎演算法漏洞,提升非法網站權重。國內大多數網民上網都使用搜索引擎。搜尋引擎既然有權利決定顯示哪些資源給使用者,那麼也必須有義務確保這些資源的安全性、正規性。
如何制止與防禦?
如果您是網民,制止黑帽seo最好的方式就是科學上網,發現非法網站及時提交到安全聯盟或向搜尋引擎舉報。
如果您是網站管理員,請做好自身網站的安全建設,及時補漏;若已發現被入侵,及時聯絡技術人員處理。
談談心
當在寫這篇文章前,我思索著儘量能夠全面地介紹黑帽SEO知識以及手法。當開始寫這篇文章的時候,我便有點無從下手,因為涉及知識面太廣,手法又非常豐富,我研究黑帽SEO不久瞭解也不算深入。而當我寫完這篇文章的時候,我覺得這一切才剛剛開始,也許我此刻抒寫的正是黑客幾年前或十幾年前所用或者所流行的技術。