您的網站如何導致訪問者感染惡意軟體

IBM developerworks發表於2013-02-28

  多年來,惡意軟體 這個術語一直用來描述任何型別的惡意程式,包括病毒、木馬、蠕蟲、間諜軟體、流氓軟體和廣告軟體。在計算機發展初期,人們常常將惡意軟體看作是通過惡意行為騷擾使用者或者炫耀程式設計技術的惡作劇。基本上,惡意程式感染的人越多,您在某些圈子裡的名氣就越大。惡意程式往往以電子郵件附件、移動儲存介質共享或檔案共享服務等手段傳遞給目標受害者。

  儘管這種型別的惡意軟體確實給受害者造成了許多問題,但對大部分攻擊者來說無利可圖,因此也並未吸引過多的人蔘與。如今,惡意軟體背後的動力已經悄然轉變為金錢利益。這些攻擊由物質利益驅使,因此惡意軟體比以往更加猖獗。不但有更多的人蔘與建立和分發惡意軟體,而且攻擊也變得越來越複雜。電子犯罪者已經學會了如何通過以下手段利用惡意軟體謀取鉅額利潤:

  • 顯示和點選廣告
  • 竊取機密資料
  • 劫持使用者會話
  • 入侵使用者登入憑據
  • 竊取財務資訊
  • 進行欺詐性購買
  • 製作垃圾郵件
  • 發起服務拒絕攻擊

  為了將其惡意軟體遞送給儘可能多的受害者,電子犯罪者已經將網站轉變為主要分發源之一。

  他們為何會選擇網站?

  人們已經學會了不去下載電子郵件中的附件,也對流行的檔案共享服務敬而遠之,因為許多此類檔案都已經被惡意軟體感染。但人們並未停止網上衝浪。據網際網路世界統計,在 2011 年,活躍的網際網路使用者達到了 2,279,709,629 名,而且這個數字仍然在不斷增加。

  由於存在如此之大的攻擊範圍、如此之多的毫無疑心的使用者,網站成為致使使用者感染惡意軟體的最流行介質也毫不意外。事實上,惡意網站已經極為普及,Google 每天要將大約 6,000 個攜帶某種對訪問者存在危險的惡意軟體的網站列入黑名單。

  惡意軟體如何通過網站傳播

  負責使用惡意軟體感染網站的攻擊者是通過三種方式實現傳播的:

  • 自行建立惡意網站。
  • 利用 Web 伺服器或其配置中的漏洞。
  • 利用網站依賴的應用程式中的漏洞。

  本文關注的是如何避免您的網站成為此類攻擊的犧牲品,因此這裡僅討論後兩種方法。

  攻擊者發現可以成功利用的漏洞之後,就需要確定如何將惡意軟體傳遞給網站的訪問者。表 1 列出了一些常用方法。

  表 1. 網站分發惡意軟體的常用方法

方法 描述
下載 欺騙使用者下載惡意程式碼。常用的一種策略就是告訴訪問者需要更新多媒體軟體才能觀看視訊,或者哄騙受害者下載實際上包含惡意軟體的 PDF 或其他型別的檔案。
橫幅廣告 欺騙使用者點選網站中出現的受感染廣告,從而下載惡意檔案。
隱蔽式強迫下載(Drive-by downloads) 使用這種方法時,訪問者只要訪問網站即可下載惡意軟體,無需在網站中執行任何操作。 惡意軟體可以隱藏在網站的不可見元素中,例如 iframe 或清晰的 JavaScript 程式碼中;甚至可能會嵌入多媒體檔案,例如圖片、視訊或 Adobe Flash 動畫之中。載入頁面時,惡意軟體將利用瀏覽器或外掛的漏洞,感染訪問者的計算機。

  通過伺服器漏洞感染網站

  為了解決基於伺服器的漏洞問題,我觀察了市面上兩種最流行的 Web 伺服器應用程式:Apache 和 Microsoft® Internet Information Services (IIS)。這兩種伺服器支撐著所有網站中 78.65% 的比例。

  Apache 和 IIS(或其他任何 Web 伺服器)都存在著惡意攻擊者可以利用的漏洞。如果攻擊者能夠入侵伺服器軟體或伺服器本身,那麼就可以上傳惡意程式碼,甚至上傳整個網頁,以便將惡意軟體傳送給網站訪問者。舉例來說,允許發生此類攻擊的漏洞主要來自兩種來源。

  預設安裝中的漏洞

  在安裝 Web 伺服器軟體時,人們通常會採用預設配置,但預設配置僅僅會簡化網站的釋出,而不能保證安全性。此外,Web 伺服器的預設安裝往往也會包含一些不必要的模組和服務。這些不必要的內容使攻擊者有機會無限制地訪問您的網站檔案。

每一種作業系統、Web 伺服器軟體和版本都有著自己的漏洞,只需通過簡單的 Web 搜尋即可發現這些漏洞。在網站上線之前,應該解決所有已知漏洞。

  存在問題的身份驗證和會話管理

  這種來源包含使用者身份驗證和活動會話管理的所有方面。據 Open Web Application Security Project (OWASP) 表示:“大量的賬戶和會話管理缺陷會導致使用者或系統管理賬戶遭到入侵。開發團隊往往會低估設計身份驗證和會話管理架構的複雜程度,無法在網站的所有方面為提供妥善的保護。”

  為了緩解此類漏洞造成的風險,負責管理 Web 伺服器和站點的人員需要遵循對於所有密碼的強度、儲存和更改控制有所要求的密碼策略。除此之外,Web 伺服器的遠端管理功能也應該加密,甚至應該考慮完全關閉,確保使用者憑據不會通過傳輸的方式被竊。

  通過網站中的漏洞上傳惡意軟體

  如果網站仍然採用靜態文字和影象,那麼犯罪者就很難利用合法網站傳播惡意軟體。然而,如今的網站大多由資料庫、複雜的程式碼和第三方應用程式構成,在進一步豐富使用者體驗的同時也給網站帶來了無數種漏洞。

  讓我們以 WordPress 為例。這種部落格編輯應用程式改變了網站的建立方式,它使任何略有技術知識的使用者都能輕鬆建立具有豐富的多媒體內容的互動式網站。WordPress 極為流行,有超過 5000 萬個網站採用了它。然而,WordPress 的易用性也是近來爆發的大規模攻擊事件的誘因,在這次實踐中,大約有 30,000 至 100,000 個執行該應用程式的網站將受害者重定向到惡意網站。

  安裝了流行外掛的網站發現其網頁被程式碼感染,導致訪問者重定向到其他網站。隨後,該網站會根據受害者計算機執行的作業系統和應用程式,以惡意軟體感染受害者的計算機。感染了超過 500,000 臺 Mac 計算機的閃回式木馬(Flashback Trojan)正是通過這種方法傳播的惡意程式之一。

  然而,這樣的例子並非僅限於 WordPress。Joomla!、Drupal、MediaWiki、Magento、Zen Cart 和其他許多應用程式都有著自身的漏洞,導致惡意黑客能夠將惡意軟體上傳到這些站點並分發給訪問者。

  防止 Web 應用程式遭受攻擊

  對於利用 Web 應用程式的攻擊者來說,必須要做到的就是找到某種型別的漏洞。遺憾的是,對於網站所有者而言,存在大量各種型別的已知漏洞,甚至無法一一列明。但有些漏洞可能是廣為人知的:

  • 跨站點指令碼攻擊 (XSS)
  • 結構化查詢語言注入
  • 跨站點請求偽造注入
  • URL 重定向
  • 程式碼執行
  • Cookie 操縱

  還有其他許多漏洞。

  減少 Web 應用程式威脅

  幸運的是,如果您的站點存在某些可能被利用的已知漏洞,可以利用 Web 應用程式滲透技術,通過某種方法加以解決。通過全面測試網站的已知漏洞,即可預先解決這些威脅,避免發生利用這些漏洞向網站訪問者分發惡意軟體的攻擊。為此,您可以利用多種開放原始碼或商業工具,也可以將服務外包給相關領域的專業企業。

  儘管滲透測試有助於識別網站程式碼中需要修復的問題,但 Web 應用程式防火牆也能幫助您在威脅危及您的網站之前阻止威脅。通過識別已知攻擊模式,即可在惡意黑客損害您的網站之前阻止他們。更為先進的 Web 應用程式防火牆甚至能識別非法流量,針對未知的零日攻擊提供保護。

  限制 Apache 中的漏洞

  只要配置伺服器,那麼最佳實踐就是僅安裝必要的模組和應用程式。迄今為止,這種做法不但屬於最佳實踐,也是最常用的實踐。

  為了限制 Apache Web 伺服器內的漏洞,還應採取其他一些基本措施。本文中將使用與 Linux® 的 Ubuntu 釋出版相關的命令。對於在其他作業系統或釋出版上執行的 Apache,很容易就能搜尋到執行各任務所需的步驟。

  禁用橫幅

  預設情況下,Apache 會在發出 Web 請求時顯示其名稱和版本號,告訴潛在攻擊者網站實際執行的內容。禁用該橫幅使潛在攻擊者更難查明是否存在其他漏洞。為此,可以導航到 /etc/apache2/apache2.conf 並禁用 ServerSignatureServerTokens 條目。

  禁用目錄索引

  另外一項預設功能就是列印 Web 站點目錄中的檔案列表。這項特性使攻擊者能夠對映您的伺服器,並識別可能存在漏洞的檔案。為了避免這樣的問題發生,您需要禁用自動索引模組。只需開啟終端並執行以下命令即可:

  • rm -f /etc/apache2/mods-enabled/autoindex.load
  • rm -f /etc/apache2/mods-enabled/autoindex.conf

  禁用 WebDAV

  基於 Web 的分散式創作和版本控制 (WebDAV) 是 HTTP 的檔案訪問協議,允許在網站中上傳、下載和更改檔案內容。任何生產網站都應禁用 WebDAV,確保攻擊者無法更改檔案以上傳惡意程式碼。

  使用終端執行以下命令,通過刪除 dav、dav_fs 和 dav_lock 檔案來禁用這些檔案:

  • rm -f /etc/apache2/mods-enabled/dav.load
  • rm -f /etc/apache2/mods-enabled/dav_fs.conf
  • rm -f /etc/apache2/mods-enabled/dav_fs.load
  • rm -f /etc/apache2/mods-enabled/dav_lock.load

  關閉 TRACE HTTP 請求

  HTTP TRACE 請求可用於列印會話 cookie,此後利用這些資訊劫持使用者會話,發起 XSS 攻擊。您可以導航到 /etc/apache2/apache2.conf 檔案,確保 TraceEnable 設定為 TraceEnable off,以禁用此類跟蹤。

  限制 IIS 中的漏洞

  對於消費者市場來說,Windows Server® 產品最吸引人的一項特徵就是易於安裝。利用 IIS,企業只需輕點幾下滑鼠即可設定好一個 Web 伺服器並將其投入執行。以開箱即用的方式安裝伺服器軟體時,需要執行一些配置任務:但 IIS 會代替您完成這些任務。

  為了解決 Web 伺服器產品的安全性問題,Microsoft 對 IIS 的配置方式以及預設安裝的內容作出了一些重大變更。然而,您仍然可以採取一些措施來提供更好的保護,避免威脅。

  安裝防惡意軟體程式

  Code Red 和 Nimda 均屬於攻擊 Windows Server 作業系統的蠕蟲,兩者均造成了極大的損害。如果主機作業系統本身不具備重組的防惡意軟體保護,那麼網站就極易受到攻擊。利用按鍵記錄器、木馬和其他惡意軟體,攻擊者不僅能夠輕鬆入侵 Web 管理員的登入憑據,還能在提供給網站訪問者的檔案中插入惡意程式碼。

  安裝防惡意軟體程式之後,應該及時更新程式,隨後在上傳任何網站檔案之前執行。如果發現任何異常之處,則應立即更改所有密碼。

  更新其他所有內容

  在執行 IIS 的 Web 伺服器上限之前,請務必更新作業系統軟體和 Web 伺服器軟體,安裝 Microsoft 釋出的最新更新。這些更新通常包括解決 Microsoft 產品特有漏洞的補丁程式。

  在發生攻擊後進行清理

  在網站導致訪問者蒙受損失之後,必須立即採取糾正措施。首先應將站點離線,並將之隔離。如果需要將站點投入執行,以避免業務中斷,那麼應該使用經過驗證、確無惡意軟體的備份。

  處理線上狀態之後,接下來就應該清理受感染的檔案。某些感染僅需移除幾行程式碼,而較為複雜的攻擊則可能要求您重新編寫整個檔案。此時,應採取一切必要措施,從站點中移除惡意軟體。

  挽救您的名譽

  Google 和其他搜尋引擎發現一個網站傳播惡意軟體之後,就會將該網站從搜尋結果中剔除。這會給業務造成災難性的影響。

  移除所有惡意軟體、修補所有漏洞之後,應將網站提交給搜尋引擎,供其審查。如果搜尋引擎確定其中不再存在對任何訪問者有害的威脅,該網站即可重新列入搜尋結果,搜尋引擎帶來的訪問流量即可恢復如常。

  如果惡意軟體感染侵害了使用者帳戶資訊,那麼應該立即通知所有使用者,使之能夠處理因之產生的任何後果。除此之外,組織還需要檢視此類入侵是否違反了任何法律或法規,並採取必要的措施來應對負面影響,保證符合法律法規。

  結束語

  Dasient 的一份報告指出,2010 年第四季度發現約 110 萬個網站中包含某種型別的惡意軟體。其他研究表明,大約有 85% 的惡意軟體來自 Web。如果導致所有這些問題的網站都是從最初起便心懷惡意的網站,那麼問題或許就簡單多了。但遺憾的是,許多計算機的感染源頭是小型企業的網站、教會網站,甚至是名聲良好的新聞網站。

  Web 開發人員需要承擔起保護網站免受攻擊的重責。單純地編寫一些出色的程式碼就可以完成任務的日子已經一去不復返。現在,開發人員必須確保其程式碼功能正常並且安全可靠。

  本文所列舉的技術無疑能幫助尚不瞭解網站安全性的開發人員打下知識基礎,但還有更多的知識需要探索。威脅形勢日新月異。隨著零日攻擊的興起和電子犯罪者對抗措施的發展,Web 開發人員也需要適應形勢,設法更好地保護自己的網站。

相關文章