1. 程式人生 > >黑帽SEO剖析之手法篇

黑帽SEO剖析之手法篇

視而不見,謂合道於希夷;挹之則盈,方同功於造化

此係統文章總共分為四篇,分別是手法篇、工具篇、隱藏篇、總結篇;本篇為黑帽SEO之手法篇,主要介紹黑帽seo的概念以及一些常用的手法。
  首先得說黑帽SEO是個老話題,我不難想象評論區必定有人吐槽此手法已經由來已久,作者有炒冷飯的嫌疑。我對此觀點表示認可,然而細細回味之後,卻又感到無奈不解。一個早已被用爛的黑產手法,一個每年給網際網路產業造成巨大損失的黑色手段,為何能一直延續至今?是技術上難以攻破,還是利益驅使下選擇視而不見?

當我發現公開資源中對此黑產手法的介紹寥寥無幾且並不詳細時,原因便可想而知了。為了營造了一個良好的網際網路環境,我在此結合實際案列對黑帽SEO這種黑產手段進行剖析介紹,希望能夠使安全界同道引起共鳴,共同抵制。
  由於距本文撰寫已過去一年之久,而此期間我已不在研究相關技術,因此若文章內容有任何偏差及謬誤請諒解。

插曲:有趣的是,就在前幾天有位朋友詢問了我關於黑帽SEO方面的問題,原因是他一位朋友運營的一個網站,頁面莫名其妙出現了賭博博彩的內容,刪除後又會自動生成,其十分苦難便尋求他幫忙。

黑帽seo概念
  SEO全稱為搜尋引擎優化,是指通過站內優化、站外優化等方式,提升搜尋引擎收錄排名。既然有SEO技術,便會有相應的從業人員,他們被稱為白帽SEO,專指通過公正SEO手法,幫助提升站點排名的專業人員。
  當然有白便會有黑,由於白帽SEO優化的過程將會十分漫長,一個新站想要獲取好的排名,往往需要花上幾年時間做優化推廣。因此一些想要快速提升自身網站排名的小夥伴,便開始在SEO上研究作弊手法,從而誕生了黑帽SEO。黑帽SEO是指通過作弊手段,讓站點快速提升排名的一類SEO技術,或者說是黑客技術,比如說:黑鏈(暗鏈)、站群、網站劫持(搜尋引擎劫持)、橋頁等,黑帽SEO能夠快速提升排名,但畢竟是違規作弊行為,容易被K。

SEO的一些黑色手法
  黑帽SEO的手法很多,並且在不斷地更新換代,其中最常見的包括利用泛解析做站群,入侵高權重網站掛暗鏈,入侵高權重網站做網頁劫持,篡改高權重網站網頁內容,利用高權重網站二級目錄做推廣頁面,修改nginx配置做目錄反向代理等等。接下來我結合實際案例,介紹一些常用的手段。

利用泛解析建立泛二級域名站群
  利用DNS泛解析可以快速建立站群,因為一個一級域名便可以衍生出無數個二級域名,當然一般需要藉助站群工具,因為建立站群需要有很多內容不同的頁面,手工建立顯然不可能。而seo人員大費周章地建立站群的目的,便是能夠快速吸引大量的搜尋引擎爬蟲,增加網站在搜尋引擎中的收錄量。以下是某個泛二級域名站群案例截圖:

需要說明的是,以上截圖中的二級域名並不是通過一條條dns解析記錄去繫結的,解析裡面設定的是*,也就是泛解析。而伺服器端有程式或者程式碼去控制當構造不同的二級域名訪問時,會返回不同的網頁內容,也就讓搜尋引擎誤認為每個二級域名都是一個單獨的網站。
  泛解析有很多優點,比如對使用者友好(即使輸錯二級域名也能跳轉到目標網站),又能夠更快速地被搜尋引擎收錄等。基於這些優點,很多站長會選擇用此方式來增加網站收錄,然而如果沒有妥善的使用泛解析可能會帶來難以想象的危害。

利用泛解析做黑產
利用泛解析做黑帽seo的方式也有很多種,基於是否需要入侵網站以及dns伺服器,我分為入侵法與非入侵法來介紹。

入侵法
真實案例:幾個月前我們發現一個重要政府網站出現了大量博彩頁面,取證截圖如下:

經過分析我發現,此手法利用的便是泛解析,從截圖中可以看到出現了大量此政府網站的二級甚至三級域名,而這些域名都是隨機構造的,訪問後會跳轉到博彩色情等非法頁面,而訪問一級域名又是正常的內容。且先不分析跳轉的過程中用到了哪些技術,單從泛解析記錄就不難看出,此網站被人篡改了dns解析記錄。我們有理由相信,黑客獲取了此域名的dns解析控制權限,並將此域名泛解析到黑客準備好的伺服器上。那麼黑客這麼做的目的很明顯,為了讓搜尋引擎快速收錄二級或者三級域名,從而達到引流到非法頁面的目的。
  我們通過分析此政府網站被入侵特徵推匯出此事件過程應該是,黑客通過入侵手段獲取到了該政府網站dns解析許可權(如何獲取暫不可知),然後通過新增泛解析記錄,將此記錄指向黑客準備好的伺服器,而此伺服器上有動態語言去實現通過不同二級域名訪問,返回不同的頁面結果功能。由於政府網站本身權重很高,因此二級域名頁面被百度快速收錄,達到為非法頁面引流的目的。這種手法的好處在於不必入侵網站,而只要獲取到域名解析許可權即可(當然獲取域名解析許可權也並非易事)。

非入侵法
真實案例:幾天前我們發現有一個網站(sdddzg.cn)利用泛解析做惡意推廣,檢視網站特徵後,我們嘗試構造不同的二級域名訪問,取證截圖如下。
構造二級域名訪問:

最終返回結果:

可以看到返回結果對網頁內容以及url做了處理,當我們嘗試構造不同的二級域名訪問,發現返回結果內容都不一樣,然而通過獲取ip發現來自同一臺伺服器。首先我們不難想到,此域名一定是做了泛解析的,那麼它是如何控制網頁內容變化的呢?
檢視網頁原始碼可以看到jiang.gov.cn網頁原始碼被嵌入到了目標網頁中。

那麼其實想要實現此技術也並不難,可以在服務端上用程式碼實現。首先通過獲取請求的二級域名地址,然後去訪問該二級域名內容獲取原始碼鑲嵌到自己的網頁內。如果構造的二級域名內容不是一個完整的域名地址(如:1.sdddzg.cn),則隨機返回一段原始碼。這種手法的好處在於不必入侵網站,只需要自己搭建一臺伺服器即可,但推廣效果沒有那麼好。

利用網站暗鏈
  在網頁中植入暗鏈這種手法已經相對落伍了,目前用的也比較少,因為搜尋引擎已經能夠對此作弊手法進行檢測。為了介紹知識的完整性,此處我簡單介紹一下。暗鏈也稱為黑鏈,即隱蔽連結 hidden links,是黑帽SEO的作弊手法之一。掛暗鏈的目的很簡單,增加網站外鏈,提高網站排名;實現方式主要分為幾種:利用CSS實現、利用JS實現、利用DIV+JS實現等。
具體介紹請參考:黑帽SEO之暗鏈

利用高權重網站,構造關鍵詞URL做推廣
真實案例:一年前當我剛研究黑帽SEO的時候發現了一個有趣的黑帽SEO方式,雖然手法比較拙劣老套,但卻也有成效。於是在寫這篇文章的時候,我特意找了一個典型案例,與大家分享,取證截圖如下。

將URL中的引數內容顯示到網頁內,這原本是某些網頁的一種特殊功能。以往的經驗告訴我這種特性如果沒有處理好,可能會引發XSS漏洞,而今我不得不認識到,這種特性也一直被用於黑帽seo。通過在url或者post資料包(常見於搜尋框功能)中構造推廣關鍵詞,再將有推廣關鍵詞頁面新增到蜘蛛池中,使搜尋引擎收錄就能達到推廣的目的。一般此種手法常被用來推廣qq號,盈利網站等(類似打廣告),而當我們通過搜尋引擎搜尋某些關鍵詞時(如色情資源),就會顯示出此頁面,從而達到推廣自身賬號或者網站的目的,當然這只是一種推廣手段,並不太涉及引流。

利用網頁劫持引流
  網頁劫持,又叫網站劫持或者搜尋引擎劫持,是目前黑帽SEO中最流行的一種做法。其原因可以簡單概括為:易收錄、難發現,易收錄表現為搜尋引擎尚沒有很好的機制能夠檢測出此作弊手段,網頁劫持手法仍然能夠大量引流。難發現是指網頁劫持手法比較隱蔽,一般非技術人員很難發現它的存在。
  網頁劫持從手法上可以分為服務端劫持、客戶端劫持、百度快照劫持、百度搜索劫持等等;
  網頁劫持的表現形式可以是劫持跳轉,也可以是劫持呈現的網頁內容(與直接篡改網頁內容不同),目前被廣泛應用於私服、博彩等暴利行業。

網頁劫持真實案例

幾個月前我處理了一起網頁劫持案列,起因是某政府網站上出現了博彩相關內容(排除新聞頁面),這顯然是不合規的。排除管理員失誤新增導致,恐怕此網站多半是被黑客入侵了。首先我訪問了該記錄上的連結,緊接著瀏覽器中出現了一個正常的政府頁面,而也就須臾之間,網頁瞬間又跳轉到了博彩網頁。
圖一為正常政府頁面:

圖二為博彩頁面:

可以看到博彩頁面的域名為www.0980828.com顯然不是先前的政府網站域名xxxx.gov.cn。看到此現象,再結合多年安全經驗,我大致能夠猜測此網站應該是被網頁劫持了。通過分析以上過程的資料包,不難發現在該網站前端頁面被嵌入了一段非法程式碼。

此程式碼存放在43.250.75.61伺服器上,檢視該伺服器資訊,發現其在日本。

而通過訪問此段程式碼,返回內容則是跳轉到www.0980828.com網站上。

分析至此,我們不難發現,導致頁面跳轉的原因便是xxxx.gov.cn網頁被非法嵌入了一竄程式碼,而此程式碼能夠控制訪問該網頁時跳轉到博彩頁面。這是搜尋引擎劫持最為基礎且常見的一種方式,其變種甚多,型別方式也各異。最後我通過登入web伺服器檢視,發現了存在大量html檔案被篡改,且都在檔案開頭被寫入外部js引用。那麼此入侵事件過程應該是,黑客通過web應用程式某些漏洞入侵伺服器(實際是管理後臺弱口令+任意檔案上傳),通過批量篡改伺服器靜態檔案實現網頁劫持的目的。網頁劫持的手法非常多,並不是這一個案例就能概括的,更多詳細情況請繼續看下文介紹。

服務端劫持
  服務端劫持也稱為全域性劫持,此手法為修改網站動態語言檔案,判斷訪問來源控制返回內容,從而達到網頁劫持的目的。其特點往往是通過修改asp/aspx/php等字尾名檔案,達到動態呈現網頁內容的效果。
  Global.asa、Global.asax、conn.asp、conn.php等檔案比較特殊,作用是在每次執行一個動態指令碼的時候,都會先載入該指令碼,然後再執行目標指令碼。所以只要在 Global.asa 中寫判斷使用者系統資訊的程式碼(訪問來源等),如果是蜘蛛訪問則返回關鍵詞網頁(想要推廣的網站),如果是使用者訪問則返回正常頁面。

客戶端劫持
客戶端劫持的手法也很多,但最常用的就兩種:js劫持與Header劫持。

js劫持目的是通過向目標網頁植入惡意js程式碼,控制網站跳轉、隱藏頁面內容、視窗劫持等。js植入手法是可以通過入侵伺服器,直接寫入原始碼中;也可以寫在資料庫中,因為有些頁面會呈現資料庫內容。

js劫持程式碼案例:
以下程式碼可以使通過搜尋引擎搜尋的並點選頁面時,執行一段js並跳轉到博彩頁面;而直接輸入網址訪問網頁時,跳轉到一個404頁面。

1
2
3
4
5
6
7
8
9
10
11
today=new Date();
today=today.getYear()+"-"+(today.getMonth()+1)+"-"+today.getDate();
var regexp=/.(sogou|so|haosou|baidu|google|youdao|yahoo|bing|gougou|118114|vnet|360|ioage|sm|sp)(.[a-z0-9-]+){1,2}//ig;
var where =document.referer;
if(regexp.test(where)){
document.write (’’);
}
else
{
window.location.href="…/…/404.htm";
}
  程式碼分析:通過referer判斷來路,如果referer來路為空就是跳轉到404頁面,如果是搜尋引擎來的referer裡面也會有顯示,然後在寫程式碼控制跳轉。如果只是控制實現顯示不同的內容,可以修改php、asp程式碼;如果需要劫持搜尋引擎搜尋框,可以寫JS程式碼來做瀏覽器本地跳轉。當然js功能可以無限擴充套件,比如可以控制一個ip一天內第一次訪問正常,其餘訪問跳轉等等。

header劫持,就是在html程式碼的head中新增特殊標籤,程式碼如下:

1

header劫持利用的就是Meta Refresh Tag(自動轉向)功能將流量引走。

直接篡改網頁內容(比較低階)
  有些黑客在入侵網站後,喜歡直接篡改網頁內容,比如放上自己的qq號,或者作為推廣將網頁篡改成非法頁面。在此我對此做法的黑客表示鄙視,因為這是一種最惡劣最低階的手法。惡劣在於直接篡改網頁內容,可能會導致網站無法挽回的損失;低階在於此手法極易被發現,起不到真正的引流推廣作用。

利用高權重網站二級目錄
  即黑客入侵網站後,在網站二級目錄下建立很多自己做推廣的頁面。為了達到引流的目的黑客往往需要建立大量的二級目錄頁面,因此需要用到寄生蟲程式來自動化的建立頁面。此手法也需要入侵高權重網站,獲取網站伺服器許可權。與網頁劫持手法不同的是,此手法側重點在於利用高權重網站自身的優勢,在其目錄下建立多個推廣頁面;而網頁劫持側重隱藏自身,其可以做到動態呈現網頁內容給客戶。因此在實際使用中,黑客經常結合兩者使用。此手法與利用泛解析做黑帽seo的手法還是有明顯差異的,雖然同樣是利用高權重網站本身的優勢,但泛解析利用的是二級域名,而此手法利用的是二級目錄,當然兩者有異曲同工之妙。
  利用高權重網站二級目錄手法的案例與泛解析案例類似,這裡不再詳述。既然我前面提到此手法往往需要寄生蟲程式的配合使用,那麼我們來看看,何為寄生蟲程式?它又有何玄機?