前一陣子看到電視上的一則新聞,說的是公館商圈的店家被不知名人士塗鴉,造成景觀的破壞。老實說,我看了新聞畫面覺得那些塗鴉還蠻漂亮的,也讓商圈顯得更有活力。但是因為這是違法的行為,所以不管好不好看,錯了就是錯了。這種破壞公物的行為,英文有一個詞叫做 Vandalism,或也可以稱之為 Deface 。
網路上有一種攻擊行為,也稱之為 Deface 或是 Vandalism。這樣說也許大家感到很陌生,但是如果我換的說法,我想你一定會發出「喔」的一聲。Deface 就是我們常聽到的網頁置換攻擊,置換的目標通常是網站的進入點(尤其是首頁)。嚴格來說,就像非法的塗鴉一樣,網頁置換攻擊本身其實通常並沒有造成甚麼實際的危害。但是會這麼受到多注視的眼光,正也是它的攻擊結果最容易被看到。所以網頁置換攻擊所帶來的往往不是實際的資料外洩或金錢損失,而是大幅地降低單位的形象。
台灣由於處於特殊的政治環境下,所以常常受到很多各式各樣的攻擊,其中當然也包括網頁置換在內。在各個特殊的時間點(如大選),網頁置換攻擊更是受到歡迎。因為除了效果明顯外,還很容易自動化,也不像其它攻擊行為需要那麼多的手段或技術。當然,兵來將檔、水來土掩是不變的道理。以網頁置換攻擊來說,最簡單的治標之道就是檢查網頁是否發生了置換的行為。如果有,馬上換回來就是。基本上這是一個好解法,甚至我認為這是所有網站都必需具備的防護機制之一。但是一個最基本的問題在於如何檢查?可以從本機著手,也可以從別的機器進行、甚至是藉由第三方之手加以檢查。 聽起來很簡單,只是現在一個網頁最後呈現的內容可能來自很多地方,包含 HTML檔、Server端的程式 (如ASP.NET、Java、PHP Script等)、Client 端的程式 (如JavaScriot 與 VBScript)、圖片、影片等等…雖然通常置換攻擊是將整個 HTML檔 或 Server 端的程式換掉或插入一段文字,但是難保沒有惡意分子會針對特定的網頁元素加以置換。所以如果要從本機確保所有內容來源的正確性,有時候是一個不小的工程。那個換個做法,因為惡意份子最後是要讓置換後的結果顯現在使用者的眼前,所以就用外部的電腦將網頁抓回來,看看是不是有問題不就好了。是的,但是甚麼叫做有問題?如果一個網頁的內容都固定不變,那麼只要有任何變動就是有問題。但是現在已經很少有網頁的內容都是固定不變的,所以要如何找出有問題的部分就是一個挑戰。
這些技術性的問題,其實都不是無法解決的難題。我認為檢查機制的問題在於它往往掩蓋了攻擊能夠成功的主要原因,讓管理者誤以為沒有任何安全問題存在,或者是當作不需積極處理的安慰劑。甚至除了檢查機制之外,就忽略了其他防護機制的必要性,因而導致在未來的某個時間點發生更大的災難。這樣的說法可能有失公道,畢竟這不能說是檢查機制的問題,而是管理者的觀念與心態問題。
有一個很有趣的網站 zone-h ,它提供了一個置換攻擊受害者的資料庫。這個資料庫除了有受害者的網址與被發現的時間,甚至還有事發當時的網頁快照。這種在被害者傷口上灑鹽的行為雖不厚道,但是卻也提供了我們一些可供參考的數據。這個資料庫也支援簡單的查詢功能 (ENABLE FILTERS),可以找出特定的時間或特定的網址。如果你剛好需要研究有關網頁置換攻擊,這將會是一個相當方便的工具。