阿碼外傳-阿碼科技非官方中文 Blog: 2008年8月17日

2008年8月17日

The Register:神秘Web攻擊綁架剪貼簿!

本來要睡午覺了,看到 The Register 八月十五號這篇,突然好奇起來:

The Register: Mystery web attack hijacks your clipboard(神秘 Web 攻擊綁架剪貼簿)

要讓我一腳已經踏到床上又起來,當然要有很好的原因。這篇引起我興趣的原因有:

一、歐洲最大 IT 媒體之一的 The Register 報的
二、「神秘」這兩個字--最近資安界已經很久沒有「神秘」的攻擊了...
三、「Web 攻擊」--我對 Web 安全的議題特別有興趣,而 The Register 也還蠻專業的,沒有寫成「Web 病毒」。沒錯,Web 上的威脅大部分不是病毒,所以用攻擊(attack)來形容通常比較貼切,所以似乎記者還算專業。

好,爬起來看看寫些什麼。小標題:「No, MACs are not immune(抱歉,MAC 並不免疫)」。

OK,文章基本上在講,最近有一種 Web 上的攻擊,綁架使用者的剪貼簿,不論你貼上什麼東西,等到貼出來,都會變成一個惡意的連結。報導中:

一、列舉了一堆受害者上網的留言(這裡 這裡 這裡 這裡

二、報導說這些受害的使用者有用 Windows 系統的也有用 MAC OS X 系統的,雖然以上四篇都是用 Firefox,但是不排除其他瀏覽器也可能受攻擊。

三、報導建議使用 Firefox 的 noscript 外掛

OK,福爾韋恩小偵探出現了...根據上述證據,福爾韋恩的推論:

一、記者厲害,沒寫成病毒,而寫成 Web 攻擊。可能因為他引述的那四篇求救文,有人是跑 MAC OS 2 而有人跑 Windows,所以他從中知道,大概不是病毒,而是一種對瀏覽器的攻擊。

二、報導說惡意的網址是 xp-vista-update.net(點下去自行負責,我剛才用 HackAlert 掃過沒有問題,但是現在沒有問題不代表你點的時候沒有問題,這種惡意網頁隨時在改內容)。做一下 whois,這個網域電話是南斯拉夫的、DNS 是惡名昭彰的 estboxes.com、IP 為 83.229.251.28 是俄羅斯的 IP。福爾韋恩:有目的、組織性攻擊之可能提升!

三、福爾韋恩依稀記得,IE 才是笨到會讓 javascript 存取剪貼簿的瀏覽器(CVE-2002-1671),而且 2002 年被報有問題,到 2006 年底出IE 7 才把問題修掉。可是記者說受害者都是用 Firefox... 聰明的 Firefox 預設是不讓 javascript 存取剪貼簿的... 所以兇手...一定是最近 PDP RSnake 都一直在講的--Adobe Flash!其實福爾韋恩也依稀記得,Flash 可以存取剪貼簿...

四、報導說受害者是在瀏覽 MSNBC.COM 時被攻擊綁架剪貼簿的。福爾韋恩:很有可能是駭客組織向 MSNBC.COM 買了廣告 banner,並在廣告中利用 Flash 來達成攻擊。以 MSNBC.COM 的流量,影響人數應該不少。

是否真的是這樣呢?

再確定技術細節以前,我們先來看看,這種攻擊的效果是什麼?如果只是單純能寫入剪貼簿,這樣的一個網頁(或廣告頁)能造成什麼威脅?因為其時還有第五點:

五、即使這種攻擊可以做到,還真的有人受害出來求救,表示技術面如何達到先不管,但這種攻擊確實有其威脅性。但是如果只是寫入剪貼簿,那威脅性在哪?

Google 了一下,發現威脅自七月中開始,並蠻多人抱怨的:

七月12日,有人被攻擊,無法解除狀況,貼文出來,並用趨勢掃瞄未發現病毒。

八月08日,有人貼文對美國大選發表意見,卻遭攻擊,直接把惡意連結貼出來。該使用者「Old Owl333」在貼文的時候一定是先 CTRL-C 複製然後再 CTRL-V 貼出,沒想到剪貼簿遭綁架,貼出了惡意的連結:




八月07日,有人快瘋了,剪貼簿一直被植入惡意連結

惡意連結到底連到哪裡?做什麼?

八月10日,Kayrac 做了分析:



惡意連結「http://xp-vista-update.net/?id=xx」根據後面參數「id=xx」之不同,轉址到不同的網站,但是大部分都是到某網站騙使用者下載一個偽掃毒軟體「Internet Scanner 2009」或「AV 2009」。根據 八月10日,Kayrac 貼的文,把此程式放到 virustotal 測試,沒有幾家會偵測出它是偽的。

其實如果 Google 「xp-vista-update」,可以發覺中獎而跑出來貼文的還真不少。但是這邊就顯示了 The Register 記者的功力:大部分受害者貼文,都用了「病毒(virus)」一辭來形容此攻擊,但是記者卻正確的用了 「Web 攻擊」來形容。

調查到此,福爾韋恩已經確定,此為有組織性,有目的性之 Web 攻擊行為,其攻擊手法的確會造成威脅,並確實可以達到攻擊者的目的。

好了,現在來調查技術上到底如何達成的。我先寫一段可以寫剪貼簿,但是只在 IE 中有效的 javascript。為了此 javascript 顯示出來好看,我用 syntaxhighligher 來顯示。syntaxhighlighter 是很流行的一套 javascript,可以顯示很漂亮的程式碼。以下是一段在 IE 執行時可以寫入剪貼簿的 javascript:


<textarea name="prettyprint" class="javascript">
<button onClick="IE_ClipBoard();">Copy to Clipboard</button>
<script>
function IE_ClipBoard()
{
if (window.clipboardData) {
window.clipboardData.setData("Text","Hello from Wayne!");
}
}
</script>

(Code 1)


執行起來如以下,如果您正在用 IE 可以按下按鈕看看,然後再找地方 CTRL-V 貼上,就會發現剪貼簿被改了。但是如果是 IE 7 以上,會發現 IE 會問你是否允許存取剪貼簿。

(Test 1)


既然 IE 7 已經修正此安全性漏洞,firefox 上則預設不允許,除非你修改設定,不然連問都不會問,反正就是不行... 那麼,唯一的兇手就是... flash 了。

其實上方用來顯示漂亮程式碼的 syntaxhighligher,早就透露了破案線索了。仔細觀察,程式碼視窗上面有一個灰色的小字:「copy to clipboard」。試試看按下去,你會發現程式碼已經貼到您的剪貼簿了,但是 IE 沒有問你是否允許,firefox 也直接 work... :)

為何?都是 Adobe flash 的漏洞... 但是這種東西比漏洞嚴重,漏洞會被修改,這種算是「功能」,短期內不太可能改。為何?因為一旦功能公開,就會有很多人使用,一旦大家用了一個功能,要將此功能取消,就很不容易了。如果您 Google 「_clipboard.swf」或「clipboard.swf」或「flash copier」就會發現有多少程式都用了這個偉大的功能了。

這個手法主要是利用Flash ActionScript:System.setClipboard 這個含式來寫入剪貼簿。

程式碼分兩部分,一部分是一小段 Flash ActionScript,編譯成一個 flash SWF 檔(這裡可以下載),另一部分則是一小段 javascript。

Flash action script 的程式碼如下(這裡可以下載編譯好的 SWF 檔):


if (clipboard.length) System.setClipboard(clipboard);

(Code 2)


Javascript 程式碼則如下:


var flashcopier = 'flashcopier';
if(!document.getElementById(flashcopier)) {
var divholder = document.createElement('div');
divholder.id = flashcopier;
document.body.appendChild(divholder);
}
document.getElementById(flashcopier).innerHTML = '';
var divinfo = '&lt;embed src="http://www.openwaves.net/armorize_blog/dp.SyntaxHighlighter/'+
'Scripts/clipboard.swf" FlashVars="clipboard='+
encodeURIComponent("Hello from Wayne!") +
'" width="0" height="0" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;';
document.getElementById(flashcopier).innerHTML = divinfo;

(Code 3)


好了,現在您是否想被「駭」一下呢?以下是我猜測這次攻擊的程式碼:


<button onClick="Trigger_Attack();">Hijack my clipboard!</button>

<script>
var flashcopier = 'flashcopier';
if(!document.getElementById(flashcopier)) {
var divholder = document.createElement('div');
divholder.id = flashcopier;
document.body.appendChild(divholder);
}

function Trigger_Attack()
{
setInterval("ClipBoard_Attack();",500);

}

function ClipBoard_Attack() {
document.getElementById(flashcopier).innerHTML = '';
var divinfo = '<embed src="http://www.openwaves.net/armorize_blog/dp.SyntaxHighlighter/'+
'Scripts/clipboard.swf" FlashVars="clipboard='+
encodeURIComponent("Hello from Wayne!") +
'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
document.getElementById(flashcopier).innerHTML = divinfo;
}
</script>

(Code 4)


跑起來就像下面這樣,按下按鈕就綁架你的剪貼簿:

(Test 2)


原來元兇就是 Adobe Flash 啊!您猜到了嗎?

於是福爾韋恩調查成功,回去寫報告曰:
一、此次 The Register 報導之「神秘 Web 攻擊綁架剪貼簿」事件,元兇再次為 Adobe Flash。

二、此為 Flash 存在已久之功能,許多網站皆運用此功能,故短期內 Adobe 不容易取消此功能,威脅將持續一段時間。

三、了解此類攻擊甚為重要,此類即今年與去年各大資安會議,Jeremiah、PDP RSnake 三位研究員一直在提的 client-side 攻擊。由於這些攻擊大部分利用第三方外掛之漏洞甚至「功能」,問題短時間不易改善。試想如果攻擊 IE 漏洞,則攻擊對 firefox 就無效;然針對各瀏覽器皆有普遍安裝之第三方外掛,如 Adobe Flash、PDF 等攻擊,則可以跨瀏覽器。本事件便是一例。

四、此類為 Web 攻擊,其中 Javascript 又可以經過各種方式加殼與變形,防毒軟體幾乎沒有可能偵測到。

五、從兩方面觀察:A) 散播 Web 攻擊之伺服器所屬地區 以及 B) 諸多使用者確實被攻擊之案例,此為有組織性,有目的性之 Web 攻擊行為,其攻擊手法的確會造成威脅,並確實可以達到攻擊者的目的。

六、防禦的方法:可以選擇使用 firefox 外掛 noscriptFlashBlock

看了上述事實陳列,您認為福爾韋恩這次的調查分析正確嗎?

;-)

作者 Wayne 為阿碼科技 CEO

後續:BBC 過了幾天也報導了這個剪貼簿綁架事件

繼續閱讀全文...