阿碼外傳-阿碼科技非官方中文 Blog

2008年8月18日

美國駭客年會 Black Hat 2008 觀察--第二天

此文續「美國駭客年會 Black Hat 2008 觀察--第一天」...

1. Rod Beckström: 國家安全
2. Arian Evans: Encoded, Layered, and Trancoded Syntax Attacks: Threading the Needle past Web Application Security Controls
3. Billy Hoffman: 擊敗 javascript 分析工具(Circumventing Automated JavaScript Analysis Tools)
4. Justin Clarke: SQL Injection 蠕蟲:為了興趣也為了利益(SQL Injection Worms for Fun and Profit)
5. Jeremiah Grossman: Get Rich or Die Trying - "Making Money on The Web, The Black Hat Way"
6. Matthieu Suiche: Windows Hibernation File for Fun and Profit

說真的如果不是要來 Black Hat / DEFCON,我是絕對不會想到這邊來的。我去過不少城市,但是了解我的人應該都知道,這邊除了駭客年會,還真沒有東西可以吸引我。

1. Rod Beckström: 國家安全(National Security)()

今天的 keynote 是美國政府資安界的當紅新人炸子雞 Rod Beckstrom,大家都來看他的風采。Rod 是我們營運長 Matt 的 Stanford MBA 學長,也是一位有名的創業家,他之前以 twiki 作者的身份,創辦了 TWIKI.NET。今年三月20日,他正式接受美國國土安全部(DHS、Department of Homeland Security)的邀請,擔任底下一個新成立的單位:「國家資安中心(National Cyber Security Center、NCSC)」的首席。NCSC 是一個新的跨部門單位,負責協調各資安部門之間情報的交換。

NCSC 的成立以及這項任命,是源自於布希於今年一月簽同的一項機密的指引,主要用以擴大情報界對於目前日益嚴重的針對美國的網路攻擊之掌握度,因為之前美國情報單位對於資安攻擊的掌握過渡零散,缺乏一個中央協調的組織。Rod Beckstrom 其實並沒有資安背景,但是他有創業家的經驗,對業界很熟,成功創辦 TWIKI.NET 幫助企業用 wiki 觀念協調資訊交換,以及著有很暢銷的「The Starfish and the Spider」一書,提出新的分散式企業管理概念,這些都是美國國土安全部(DHS)看中他的原因。



Rod 講了很多美國政府的歷史與政府在資安方面的歷史,基本上我覺得就是幫政府建立形象啦,表示美國政府從電報的年代就很懂資安與情報的重要。我對美國政府的歷史沒有興趣,我對駭客的歷史比較有興趣,但是我覺得 Rod 的加入對布希政府在形象上一定是一大加分,因為 Rod 感覺很有業界經驗,不會讓外界覺得政府都閉門造車。

Rod 講了他認為目前資安難做的原因,我非常的認同。他說,有些球類,進攻難,防守易,例如足球,所以分數都不高(幾比幾);有些球類,則是進攻容易,防守難,例如籃球,所以分數都很高(可以破百)。資安比較像籃球;事實上在資安裡面,防守比攻擊要難太多太多了,這也就是資安難做的原因。

這個我完全認同。是的,要有好的防守,必須很懂得敵人,很懂得敵人所用的攻擊方法。所以重要的駭客年會我們都會派人參加。但是這只是基本功而已。懂得攻擊之後,要設計防守,又更加困難。為什麼?因為攻擊成本低,防守成本高!就拿防毒軟體來說,其實測不到,不是防毒廠商沒有樣本,可是防毒軟體不能佔用系統太多資源,所以樣本不能無限制的長大,必須有所選擇,在盡量不影響到系統效能的前提下,達到最高的偵測率。

又像如果打生物戰,那麼一樣,設計病毒,只需能感染讓人致死就好,可是設計解藥,不但要殺死病毒,還要保存人體不被破壞。不論在網路空間或實際生活中,攻擊總比防守簡單太多,這是資安難做的原因。再加上攻擊處於主動,何時攻擊可以自行選擇,但是防守處於被動,何時被攻擊無法預期,所以無時無刻都需要檢查與防範,而這些無時無刻都需要做的檢查與防範,都是成本的增加,這也是資安難做的原因。

另外 Rod 探討了一些我們在業界常探討的資安的投資報酬率問題。感覺他有觀念,但是畢竟他之前不在資安產業,探討的東西都還太淺了些。以下是兩張投影片,基本上是說,如果 x 軸是資安的投資,y 軸是因為資安投資而減低的損失,那麼需要找到投資報酬率最高的點。但是 Rod 你說用一條 45 度的線跟曲線取交點,是這樣嗎?我高中畢業很久了,博班資格考也沒考微積分,但是我怎麼直覺覺得,要分析要看此曲線斜率,所以要做一下一次微分後分析...



這裡有他當天演講的一段錄影:



2. Arian Evans: Encoded, Layered, and Trancoded Syntax Attacks: Threading the Needle past Web Application Security Controls

聽完之後去幫 Jeremiah 捧場,聽他同事 Arian Evans(大會)講「Encoded, Layered, and Trancoded Syntax Attacks: Threading the Needle past Web Application Security Controls

這個題目就不翻譯了,基本上整個演講在說一件事:Web 上的攻擊,如果加上各種不同的編碼方式,那麼穿透率幾乎可以達 100%,沒有任何 Web 防火牆可以阻擋。這是指 Web 防火牆設定成利用黑名單的情況下,如果花時間設白名單的話,一樣可以阻擋,可是一般稍微有規模的站,我看到大部分都是用黑名單方式,因為設白名單是很繁瑣的事情,需要找到好的廠商才行。

講到這裡,其實我深深覺得資安業,找對公司比找對產品重要多了。不論是源碼檢測或 Web 防火牆,如果賣方只是想塞產品給您,那麼買了再好的,牌子在大的產品也沒有用,一樣會失敗,最後還是會發生資安事件。如果找對好的 partner,有心服務客戶,長期經營,技術能量也夠,那即使用免費的開放源碼 ModSecurity 做 Web 防火牆,一樣能設定到讓您高枕無憂。其實對方有沒有心做服務,還是只想塞產品,還有對方的技術團隊有沒有實力,通常很快就能看出來。


這張明天要去賣 Arian 了,拍得太好了 :)


投影片一拿出來就開始講今年初進行到現在的大規模 SQL Injection 加網頁掛馬攻擊(阿碼科技新聞稿PC World(IDG)ITHome)。Arian 拿當初 Neil Carpenter 蒐集到的攻擊字串做例子:


2008-03-08 13:37:13 /dir1/archive.asp id=z%27%20ANd%20char(124)%2Buser%2Bchar(124)=0%20and%20%27%25%27=%27

這是一行 web server 的 log。在這個例子裡,%XX(例如 %27、%20、%2B)是 URL encoding 的一部份,會被 web server decode,decode 完變成:


2008-03-08 13:37:13 /dir1/archive.asp id=z' ANd char(124)+user+char(124)=0 and '%'='


然後整個 SQL injection 字串,會被 SQL server 解碼成:

id=z ANd |user|=0 and '%'='

不要說多層編碼,即使只用一層的 URL 編碼,就可以因為 UTF-8,而使同一個字串幾乎有無限種編碼可能。譬如一個簡單的:


GET / indexA.html HTTP/1.1

就可以被編碼成:


GET /index%41.html HTTP/1.1
GET /index%2541.html HTTP/1.1 (double percent)
GET /index%%34%31.html HTTP/1.1 (double nibble)
GET /index%%341.html HTTP/1.1 (first nibble)
GET /index%4%31.html HTTP/1.1 (second nibble)

然後如果再利用 2-byte or 3-byte UTF-8 編碼的話,變化又更多了。

但是這整個演講的內容其實對我來說一點都不新,這些編碼來穿透 Web 防火牆的方式大概四五年前很多書還有 paper 都已經介紹得很完整了。整理起來,整個演講的重點就兩個:
一、由於 UTF-8,攻擊字串幾乎有無限種編碼方式。
二、攻擊可以分層的編碼,像上述例子,一層給 web server 解,一層給 SQL server 解。或穿插 URI % encoding 或 UTF-8 encoding、HTML decimal entity encoding、SQL server encoding(char())等混合使用。

3. Billy Hoffman: 擊敗 javascript 分析工具(Circumventing Automated JavaScript Analysis Tools)
聽完後去聽好友 Billy Hoffman(大會wikipedia)的演講:「擊敗 javascript 分析工具(Circumventing Automated JavaScript Analysis Tools)」。Billy著有「Ajax Security」,上次在 RSA 2008 辦簽名會,我一口氣簽了很多本回來送朋友,讓他高興得不得了。既然是 Billy,當然要照帥一些囉!有沒有注意到左下方 Billy 的筆電?併購後筆電也該 HP 囉!



今年講網站掛馬的演講真是多,其實這個題目去年就很紅了,今年年初再加上兩點,使得這個議題紅到不行:

一、年初的大規模自動 SQL Injection 加 網頁掛馬(阿碼科技新聞稿PC World(IDG)ITHome

二、網路掛馬所使用的 javascript 語言,其編碼與變形太過容易(除了大家熟悉的 MPack 自動化犯罪工具包,現在線上的 javascript 編碼/變形服務也到處都是:看這裡這裡。)

Billy 在他的摘要裡就直接提到:「拜 MPack 所賜,大部分惡意 javascript 都編碼過
(Obfuscated JavaScript payloads are the norm thanks to malware frameworks like MPACK.)」

的確,根據「IBM X-Force 2008 年終趨勢報告(IBM X-Force 2008 Mid-Year Trend Statistics)」,2007年後半年,網頁掛馬中 javascript 編碼變形以達 100%:「A year later, in the second half of 2007, Web browser attack obfuscation approached 100
percent.」

在這個 talk 中,Billy 講了惡意程式變形技術與偵測技術間永無止境的鬥智遊戲。這是我很期待的一個 talk,因為跟我們 HackAlert 非常相關。

Billy 今年的研究延續去年 Ben Feinstein(網頁Blog)跟 Daniel Peck(blog-1blog-2) 講的 Caffeine Monkeypaper投影片程式碼)。

OKOK,繼續之前,我們先來看看這些人到底在講什麼。

現在的大規模自動網站掛馬(阿碼科技新聞稿PC World(IDG)ITHome)都是利用 SQL Injection 漏洞在網頁裡安插惡意的 javascript。這些 javascript 都經過變形(或稱編碼)。利用 MPack,甚至可以動態變形,也就是說,每一個訪客所下載到的網頁,裡頭的 javascript 都經過不同的變形。

變形的 javascript 到底長什麼樣子?我們就拿我之前寫的「神秘 Web 攻擊綁架剪貼簿」來看好了,其中用的一段範例 javascript:


function IE_ClipBoard()
{
if (window.clipboardData) {
window.clipboardData.setData("Text","Hello from Wayne!");
}
}

圖 1

好,現在我們用 malwareguru 上的線上編碼工具 Vanishing Point Packer(網頁malwareguru 上提供的線上 demo),把上面這一段 javascript 貼進去,按「pack」,原本的 javascript 就變成了以下這段了:


eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('4 3(){2(1.0){1.0.5("8","7 6 9!")}}',10,10,'clipboardData|window|if|IE_ClipBoard|function|setData|from|Hello|Text|Wayne'.split('|'),0,{}))

圖 2

網路上隨便 Google 「javascript obfuscator」或「javascript packer」,可以找到一堆線上的服務,每一個變形出來都不太一樣。舉幾個例子:

Yellopipe source code encrypter:


document.write(unescape("function%20IE_ClipBoard%28%29%20%20%0D%0A%7B%20%20%0D%0A%20%20if%20%28window.clipboardData%29%20%7B%20%20%0D%0A%20%20%20%20window.clipboardData.setData%28%22Text%22%2C%22Hello%20from%20Wayne%21%22%29%3B%20%20%0D%0A%20%20%7D%20%20%0D%0A%7D%20%20"));

圖 3

Audit My PC HTML Encoder:


document.write('\u0066\u0075\u006E\u0063\u0074\u0069\u006F\u006E\u0020\u0049\u0045\u005F\u0043\u006C\u0069\u0070\u0042\u006F\u0061\u0072\u0064\u0028\u0029\u0020\u0020\u000D\u007B\u0020\u0020\u000D\u0020\u0020\u0069\u0066\u0020\u0028\u0077\u0069\u006E\u0064\u006F\u0077\u002E\u0063\u006C\u0069\u0070\u0062\u006F\u0061\u0072\u0064\u0044\u0061\u0074\u0061\u0029\u0020\u007B\u0020\u0020\u000D\u0020\u0020\u0020\u0020\u0077\u0069\u006E\u0064\u006F\u0077\u002E\u0063\u006C\u0069\u0070\u0062\u006F\u0061\u0072\u0064\u0044\u0061\u0074\u0061\u002E\u0073\u0065\u0074\u0044\u0061\u0074\u0061\u0028\u0022\u0054\u0065\u0078\u0074\u0022\u002C\u0022\u0048\u0065\u006C\u006C\u006F\u0020\u0066\u0072\u006F\u006D\u0020\u0057\u0061\u0079\u006E\u0065\u0021\u0022\u0029\u003B\u0020\u0020\u000D\u0020\u0020\u007D\u0020\u0020\u000D\u007D\u0020\u0020');

圖 4

中國的「网?免? 孤程?雪」線上服務:


t="97,108,101,114,116,40,39,72,101,108,108,111,32,102,114,111,109,32,87,97,121,110,101,32,111,102,32,65,114,109,111,114,105,122,101,33,39,41,59"

t=eval("String.fromCharCode("+t+")");

圖 5


嗯嗯,圖五很熟悉吧?各位 IT 應該都不陌生...是的,這種編碼方式很受到前一波掛馬駭客的喜愛,很多網站掛馬都長得很像圖 5...所以我們把這個「网?免? 孤程?雪」站的話面貼出來一下好了:


圖 6

編碼還可以分很多層,可以用不同的編碼器編過幾層。看到這些,我們想一想,現在很多 gateway 產品,都號稱他們可以及時偵測與阻擋惡意網頁...現在網路頻寬都很大,在這麼大的頻寬下,一個 gateway 裝置要 buffer 住所有的 HTTP response,然後即時的執行 javascript 解碼,然後識別惡意程式...您相信嗎?

看著圖 1-5,您也許會想,編碼過的 javascript 都有一些特徵,例如都是一堆的數字,偵測這些特徵,不就可以偵測到惡意的 javascript 了嗎?問題是這會有很多的誤判。因為原本這些 javascript 編碼器,都不是拿來做網站掛馬的,而是用來保護 javascript 的智慧財產權的。Javascript 必須要在瀏覽器上執行,所以不論你花多少時間寫 javascript,最後誰都可以拿到你的程式,因為 javascript 不會編譯成執行檔,而是直接以程式碼的方式傳到瀏覽器上,再由瀏覽器執行。所以為了要保護 javascript 程式不要輕易的被有心人研究,許許多多的程式設計師,都會將自己的 javascript 利用上述這些編碼器編碼或變形。也就是說,編碼過的 javascript 不見得都是惡意的,很多大型網站上,擁有非常多編碼過的 javascript,大部分商售的 javascript,也都經過編碼變形。究竟有多少 javascript 編碼器?很多,連 Yahoo! 都提供 Yahoo! 的 javascript 編碼器,也介紹其他好用的編碼器。

好吧,那到底該如何偵測呢?HackAlert用的是實際的瀏覽器環境,所以沒有問題,不論什麼樣的 javascript 變形方式,或者此 javascript 攻擊什麼樣的未知的 0day 弱點,反正只要試圖攻擊,就一定測得到。可是這樣的技術要對 windows 環境以及各 browser 的構造很熟才行。

這次在 Black Hat / DEFCON,在會後的一些 meeting 中,我發現一個很有趣的現象,就是在偵測網站掛馬方面,「使用者」(大銀行,大企業,軍方,情報單位)的功力,有時反而比廠商甚至講師更強。探討下來,因為網站掛馬太嚴重了,可是廠商都沒有好的解決方案,號稱可以測到的,其實都是用靜態分析或黑名單方式,沒有辦法即時,辨識率也偏低,所以這一年下來,「使用者」只好 DIY,自己利用 Caffeine Monkeypaper投影片程式碼)或 spidermonkey 來偵測(SANS最近也玩了一下),但是就如同 SANS 的 Daniel Wesemann 說的:「But SpiderMonkey is only a JavaScript engine - it doesn't emulate the browser and doesn't even have a "document" or "location" object...」。Caffeine Monkey就是建構在Spidermonkey 之上。SpiderMonkey 是 Mozilla 的 javascript 執行器,但是不是一個瀏覽器,還缺很多環境,Caffeine Monkey 一方面設法補足,一方面增加了一些自動偵測的技巧。

Billy 今年的 talk,則是針對諸多以 SpiderMonkey 為基礎的偵測方式做破解,列了一打以上的破解方式,不過基本上可以粗分為兩類:

一、偵測抓網頁的是否是真的人還是要偵測的機器人(執行 SpiderMonkey 之類的)

二、直接用一些方法,讓以SpiderMonkey 為基礎的的自動偵測失效。

對於(一),Billy 列了很多的方法,包含了 HTTP/browser fingerprinting、DOM testing and encrypting、Doman and Network testing、Execution environment testing、cross plugin communication testing 等等。Billy 的演講是針對 SpiderMonkey Caffeine Monkey 設計的,所以這次講的方法對以這些為基礎的技術或產品真的很有效。以這些為基礎的產品很多嗎?非常多,因為這些是開放源碼的程式,現在很多公司都是看到客戶有需要了,不做研究,不花功夫,拿一些開放源碼的程式整合一下,就把產品推出了。有的時候從客戶那邊聽到這些業務的語言,我真的不敢相信,怎麼大家都這麼敢虎!客戶又不是笨蛋,你說你功能都有,其實是那一些開放源碼堆起來的,客戶難道就不會測試嗎?我接觸的客戶技術水準都越來越高,這些說話不打草稿的業務,應該會越來越吃虧。

Billy 講的方法,基本上對 HackAlert 都無效,因為 HackAlert 後端基本上就是一套跟使用者一模一樣的環境,是我們自己開發的,不是拿開放源碼的程式湊的。

對於(二),則分兩方面。一方面,因為 SpiderMonkey 畢竟不是整個瀏覽器環境,所以很容易可以用一些方法偵測出,執行的環境是「人」在用的瀏覽器,還是偵測用的環境。如果次偵測用的環境,那就不發動攻擊,環境也就測不出來了。另一方面則是利用 SpiderMonkey 環境跟真正瀏覽器環境的不同,把 javascript 設計成,在 SpiderMonkey 環境下無法成功執行,那麼 SpiderMonkey 就測不到了。

一樣,對 SpiderMonkey 很有效,對 HackAlert 則無效。

但是看這兩種攻擊,其實用一句 Billy 最後講的話就可以總結了:「現在我碰到的網站掛馬越來越多是用 vbscript 而非 javascript。SpiderMonkey Caffeine Monkey 都只支援 javascript,所以一旦惡意程式用 vbscript,所有這些偵測方法都完蛋了。」

寫到這邊,如果您回去看 圖 6,左上角的第二個和第三個按鈕:「VB 網頁加密」、「VBS 腳本加密」,也就說明了一切--在必要的情況下,駭客用 vbscript。

於是 Billy 在演講中強調又強調,目前沒有開放源碼的 vbscript parser,造成他研究的瓶頸。我會後跟他說,vbscript 雖然是很爛的語言,但是文法還是能表示出來,我們約花一個月時間就做出 vbscript 的 parser 了。所有語言裡面,vbscript 的語法最模擬兩可,最難用 lalr 表示出來,但是解譯不只需要 parser,還需要處理如 scoping 等等,幾乎等於需要一個 compiler,所以即使他弄出了 parser,後面的功夫還很大。他問我們為何這麼快可以完成 vbscript parser。問題是...我們本來就是源碼檢測的公司,parser 跟 grammar 對於源碼檢測或 compiler 的公司來說,是基本功。我們原本做 vbscript parser,是為了 CodeSecure 對 ASP 語言的支援,不是要偵測惡意程式。

至於我們的 vbscript parser,是否會用在 HackAlert 中,輔助偵測網站掛馬呢?目前看起來沒有必要。不論是 javascript 或 vbscript,這些都是 interpreted 語言,不是 compiled 語言。Interpreted 語言,動態可以產生新程式,語法也較不嚴謹,太多狀態需 runtime 時才能決定,非常不利於靜態分析技術。HackAlert 目前動態偵測方面,完全模擬使用者環境,偵測率很高,不需要再靠其他方式。

最後 Billy 你說我們的 vbscript grammar 可否開放源碼,這我們得思考看看了。

這裡可以看到 Daniel PeckCaffeine Monkey 作者之一)
blog 對於 Billy 這場演講的看法

Billy 的演講一向都很受歡迎,如果您想要聽,他有一場 2007 年底在 Google Toolkit Conference 上講的 Ajax Security:



4. Justin Clarke: SQL Injection 蠕蟲:為了興趣也為了利益(SQL Injection Worms for Fun and Profit)投影片下載

Ok,我必須承認,在 Billy 演講的中間,我落跑了 20 分鐘... 我去聽了 Justin Clarke (大會blog)的短演講:「SQL Injection 蠕蟲:為了興趣也為了利益(SQL Injection Worms for Fun and Profit)」。看這就知道今年網頁掛馬熱到什麼程度了,竟然同一時間有兩個演講,逼不得已只好跟 Billy 請個假了!

Justin Clarke (大會blog)是 Network Security Tools (O'Reilly)的作者,也是 SQL Brute 工具的作者。



Justin 主要就是講今年年初開始的大規模 SQL injection 加網站掛馬攻擊,但是我發現,我們對這些攻擊的掌握度似乎更快。基本上他所有講的,我們在之前都公開過了:阿碼科技新聞稿PC World(IDG)ITHome

整理重點:大規模攻擊,SQL Injection 指令設計得很好,針對微軟的平台,利用 Google (?q=)找尋攻擊點,SQL Injection 的目的是為了要掛馬...等等。這邊重點是,雖然 HackAlert 可以偵測掛馬,但是為何會被入侵掛馬?都是因為有 SQL Injection 漏洞,故需把程式改好,才是徹底解決之道。今天聽到現在已經第三場講大規模 SQL 加掛馬了,大家的 SQL 漏洞快修修吧!

5. Jeremiah Grossman: Get Rich or Die Trying - "Making Money on The Web, The Black Hat Way"投影片

聽完又回去捧場 Jeremiah 了,這回他帶同事一起講:「Get Rich or Die Trying - "Making Money on The Web, The Black Hat Way"」。



Jeremiah 這次講的,跟我上次安排他來台北(他blog的遊記1遊記2,值得看)講的「商業邏輯錯誤(Business Logic Flaws)(他的 blogpaper)」其實是一樣的,只是多花了一些時間整理出更有去的內容:怎樣可以利用這些邏輯錯誤來賺錢(其實也就是會造成什麼損失啦!)。但是所介紹的邏輯錯誤本身,跟在台北講的那場差不多。他帶著年輕的同事 Trey 一起講,感覺是要訓練後輩,而 Trey 以這麼輕的年紀,這麼滿的一間,台風算很好了,應該沒讓 Jeremiah 失望啦!

他們這次的投影片可以在這裡下載。講完後他們接受的訪問在這裡:



6. Matthieu Suiche: Windows Hibernation File for Fun and Profit投影片下載

最後去了 Matthieu Suiche (blog大會)的演講:「Windows Hibernation File for Fun and Profit」。Matthieu 是專門分析 Windows 休眠檔工具 Sandman 的作者。


他對於這次演講的 blog 在這裡,投影片在這裡:PDFPPTXdemo 環境在這裡。其實內容跟我們在台北辦的 SySCAN Taipei 2008 裡 PK 講的「犯罪現場: Windows 記憶體內容擷取與鑑識」差不多,基本上就是 demo 從分析記憶體或休眠檔,可以取出非常多的資訊。PK 那場講得非常好,我很感謝他。PK 的許多內容應該都是參考 Matthieu Suiche的,因為 Matthieu 是這方面的先驅,修眠檔的資安問題方面研究,他算是祖師,他的 Sandman也是現在這方面最領先的工具之一。

好啦!終於寫完啦!感謝各位花時間看完。這些資安會議多跑幾個,攻擊的趨勢,技術的進步,產業的趨勢就都很容易掌握了。沒有時間去的就看我的 blog 囉。另外我們在台灣辦的會議,品質也都很好,有空可以多來。

之後我會寫 DEFCON 以及綜合起來這次我的心得。此篇是詳細報導,已經太長了,沒法寫心得啦!

Thanks for reading!
(前文:美國駭客年會 Black Hat 2008 觀察--第一天
(繼續閱讀:駭客年會Black Hat / DEFCON 2008 心得一:地下犯罪經濟成熟,影響會議品質?
(繼續閱讀:美國駭客年會 DEFCON 2008 觀察--第一天

作者 Wayne 為 阿碼科技 CEO



繼續閱讀全文...

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 過了幾天也報導了這個剪貼簿綁架事件

繼續閱讀全文...

2008年8月16日

實戰模擬之釣魚網站(Challenge to Phishing Website)

最近釣魚郵件多到不行,可以參考這篇新聞,看來 Mass SQL Injection 之後,再結合釣魚郵件搭配釣魚網站的手法交互運用,可以參考之前 POST 的一篇文,只能說「有心人士」用盡心思,推出的嘔心瀝血之作啊。
所以,我們當然要用欣賞的角度來看囉!面對創意的人,我們當然要投以藝術眼光的啦...

下面有兩個實作釣魚網站經常利用的「概念」與「創意」:(此兩網站並無惡意程式)
1.實戰釣魚網站(A):主要運用騙術。
2.實戰釣魚網站(B):除了騙術,還有些玩弄小程式,你能脫身嗎?
解答在後面...

實戰釣魚網站(A):
劇本就是"你需要看影片的程式,要你下載安裝",就這簡單。
下載檔案後的樣子...
有發現異狀嗎?這可是絕妙的陷阱耶,偽裝成資料夾的圖示。點兩下開啟資料夾就變成執行程式喔。

注意它實際上還是執行檔的喔。所以檔案圖示是可以唬人的,有些會偽裝成壓縮檔或播放程式的圖示,像是 rar, zip, flash 的檔案,賊吧。

實戰釣魚網站(B):
這個劇本就比較狠的,會有訊息告訴你說你需要安裝元件,且訊息就跟真的一樣;另外,會不會發現畫面關不掉,讓你一直在循環中,就是要你下載程式。
下載檔案後的樣子...
也是一個美輪美奐的檔案,會不會忍不住執行、安裝它咧...

如果測試過程中,看到下面畫面就表示你失敗了,因為你執行了惡意程式囉!當然啦,這兩個網站是讓你測試的,它不是真的惡意程式。


這兩個測驗你通過了嗎?因為已經告訴你這是個測驗了,所以你已經有準備了,如果在夾在釣魚郵件中的網站連結,你能不被騙嗎?
基本上,對付釣魚郵件還是需要靠個人使用電子郵件的警覺性的,有時還是有可能不小心連線到釣魚網站,如果釣魚網站夾帶惡意攻擊碼,需要靠你的瀏覽環境去應付,可以到這來挑戰你的上網環境;如果使用的是單純騙術,哪就考驗你的智慧啦;但也可能結合兩者喔...

作者 Crane 為阿碼科技 資安顧問

本文同步張貼於「資安之我見(What I see)」:模擬實戰釣魚網站

繼續閱讀全文...

2008年8月15日

「msnbc.com - BREAKING NEWS」釣魚郵件

繼「CNN.com Daily Top 10」、「CNN Alerts: My Custom Alert」一系列釣魚郵件之後,詐騙份子又一精心策劃之作。

看看郵件長的樣吧!
主旨:msnbc.com - BREAKING NEWS: COP: FAMILY LIVING IN FEAR

主旨:msnbc.com - BREAKING NEWS: Star Trek star dies at age 79


發現有哪不同嗎?手法又進步了喔...有發現嗎?
主旨都不一樣喔!先前手法的主旨都是一個樣的。

看一下郵件標頭(Mail Header)好了...
主旨:msnbc.com - BREAKING NEWS: COP: FAMILY LIVING IN FEAR

主旨:msnbc.com - BREAKING NEWS: Star Trek star dies at age 79

如果不會看郵件標頭(Mail Header)的可以參考這網站,把郵件標頭複製貼上即可。哦...不知郵件標頭在哪呀...哪就參考這囉

預計這種手法將會變成常態,Anti-Spam將會面臨這類釣魚郵件手法的嚴重考驗,你的Anti-Spam擋得住嗎?哪你的使用者又會辨別嗎?

作者 Crane 為阿碼科技 資安顧問

本文同步張貼於「資安之我見(What I see)」:「msnbc.com - BREAKING NEWS」釣魚郵件

繼續閱讀全文...

2008年8月14日

談掛馬偵測: HackAlert 的架構與技術

看到我們技術長 Walter 貼了一篇自動爬行功能正式啟動的文,讓我想到許多往事,回家之前,貼一篇好了!

全網監控,說穿了就是爬行(Web crawling)的功能。其實整個 HackAlert 系統,我們早在 2001 年就實做過一遍,並在 2002 年大量掃瞄美國前五百大企業的網站掛馬情形,在 2002 年寫完論文投稿,被 WWW 2003 接受並提名年度最佳論文。雖然現在的系統是 Walter 帶領 X-Solve 團隊開發的,加上德籍 Web 2.0 介面設計團隊的火力,成品跟我們當年幾隻小貓的研究雛形當然不可同日而語,然而整個 HackAlert 系統,基本上還是分成兩個主要部分:A. 爬行器(crawler)的設計 與 B. Sandbox 的設計。(A) 是阿碼科技本來擅長的,而 (B) 則是生力軍 X-Solve 吃飯的本行。我先講 (A) 吧!

我們在 2001 年開始設計爬行器(crawler)時,就發現爬行器不容易設計:許多連結要填了表單(form)才能看到(還要填得對才算!),許多則要執行 javascript 或 flash 才會出現。除了這些,如何將各式各樣 encoding 的 URL 正規化(canonicalize),如何避免無窮回圈(recursive crawling),在網站不吐標準 error 404 的請況下如何判斷有效 URL... 都是爬行器設計時的挑戰。

如果現在回去看我們的 WWW 2003 論文,整篇有一半在講爬行器(crawler)的設計!爬行器的基本原理很簡單:給一個開始的連結(URL),然後利用這個 URL 找出其他的 URL,根據條件停止(例如其他 URL 都要在開始的 URL 之下等等)。

這篇論文是 2002 年寫完投稿的,那時我們把一個網頁中,會告訴我們新的連結(URL)的方法有(直接將論文畫面捕捉貼出):


最後自動填表單(form)指的不是亂填,而是要懂得意義的填,例如要名字填名字,要 email 填 email,要住址填住址,要郵遞區號填郵遞區號...

論文中我們說:「我們建立了一個測試網站,然後請用很多開放源碼或商用的爬行器(crawler)來爬行,也請 Google 來爬。我們測了:GoogleTeleport Pro(六年級的還記得吧?)、WebSphinxHarvestLarbinWebGlimpse,發現除了 Teleport,沒有其他爬行器可以處理第四種以上的 URL 產生方式,所以我們把我們的爬行器跟 Teleport 來做比較」。

比較的結果如下(直接將論文畫面捕捉貼出):


我自己看了一下,哇!當年原來我們有把趨勢科技的網站當測試資料ㄝ!根據我們這篇論文,當年趨勢的網站一共有70個表單,我們爬了5,781頁而 Teleport 只爬了 2,939 頁,差不多是我們的一半,嘿嘿,研究做得不錯喔!

嗯嗯,平均來說,我們的系統 WAVES 比 Teleport 多爬了 28% 的網頁。

這是怎麼達到的?簡單的來說,我們做了以下幾點是其他爬行器所沒有的:

1. 那時我們透過 COM 的 IWebBrowser2 直接使用 IE 的引擎,所以我們不但可以執行網頁裡所有的 javascript / flash / Java applet,還可以虛擬使用者的滑鼠擊點(click)。碰到 flash 的時候我們就每隔幾個畫素就按一次,碰到 javascript 的選單的時候也是一樣。

2. 因為我們直接掌握了 IE 的引擎,所以我們可以知道整個 DOM(document object model)最後被畫出來(render)的樣子,也就是說,我們知道每個字以及每個物件的位置。所以當我們看到一個要填字的空格(textbox)時,我們就水平地去找這個 textbox 左邊的字,然後我們有一整個智慧庫(knowledgebase),可以根據這個 textbox 周圍的文字描述,以及他本身的 HTML 名字與變數,綜合起來決定,這個欄位要的是什麼值(姓名、電話、email、住址?)。

為什麼我們花這麼多時間做爬行器(crawler)?因為對於黑箱的技術來說,不論是偵測網站掛馬,或是做自動的黑箱滲透測試,都需要好的爬行器。今天的網站,動不動上千頁,沒有好的自動爬行技術,連攻擊點(attack surface)都會蒐集不完全,更何況其他。自動滲透測試的話,如果一個表單十個欄位,你想自動 SQL inject 其中一個欄位,那你最好把其他九個欄位填對。只要有一個欄位你沒填對,例如要郵遞區號結果你填 email,那在伺服器端的程式(server-side script),會還沒做到資料庫指令(SQL command)就先停了,因為你有欄位沒填好。當然如果他每個欄位都有檢查,那就沒有漏洞,那沒話說,但是通常不是這樣,很多人都只檢查特定幾個欄位,那麼其他欄位就會有 SQL injection 漏洞了。阿...我說得太亂了嗎?簡單的說,填對越多,越有機會 pass 過前端的 validation procedure 啦!

所以說,爬行器很難做;喔,應該說,「好的」爬行器很難做,爛的滿街都是。事實上我覺得,爬行器會是一個黑箱技術好壞的關鍵。

當初這篇論文 WAVES ,為了要投上 WWW,我們把自動黑箱滲透測試與自動掛馬偵測兩個技術都寫入其內。很多人問我們為何將網頁掛馬自動偵測技術產品化,而自動黑箱滲透測試卻沒有?答案其實很簡單,當初的 WAVES 系統整個都沒有商品化。現在的 HackAlert,是 X-Solve 與我們結合後他們團隊做出來的,跟我們原本的 WAVES 系統沒有關係;HackAlert 在各種方面,也複雜,成熟許多(當然啦!經過了六年了!)。至於原本 WAVES 的自動黑箱滲透測試部分,則由於我們後來做了白箱源碼檢測 WebSSARI 技術,重新商品化成 CodeSecure 之後,就沒有必要再做黑箱的了。

好,講完(A)爬行器的技術,來談談(B)sandbox 的技術吧!

Web 測惡意程式都經過層層的加殼與變形,要偵測 Web 惡意程式,無法用靜態的分析來達成,必須用動態的 sandboxing 技術。事實上,Web 的惡意程式已經對防毒產業造成的相當的困擾。底下這個圖是擷取於賽門鐵克 2007 後半年威脅報告(Symantec Internet Threat Report 2007):



這個圖是每半年,新的惡意程式出現的數量。賽門鐵克的報告中將 2007 年惡意程式在數量上的驚人成長,歸咎於 Web 惡意程式的氾濫。事實上也是如此。

Web 惡意程式,大都經過加殼,不論是 javascript 掛馬,或後續再下載回來的惡意程式,都會經過加殼變形。這其中尤其又以 javascript 為最難,DEFCON 我聽到一場演講,講師(現在是我好朋友了)展示了一種新的 javascript 變形觀念,非常具有創意,也不容易偵測(我之後會寫)。

其實即使一般 javascript 編碼/變形,就不容易偵測了。除了大家熟悉的 MPack 商用加殼軟體外,現在線上的 javascript 編碼/變形服務也到處都是:看這裡這裡

要解出這些加殼或變形的惡意程式,靠防毒軟體沒有太大效果,必須要靠動態的 sandbox (沙盒)。

不止要有 sandbox,還需要有整個 DOM(Document Object Model);或乾脆說,要有整個瀏覽器的環境。很多人想偷懶,用 spidermonkey 來做(SANS最近也玩了一下),但是就如同 SANS 的 Daniel Wesemann 說的:「But SpiderMonkey is only a JavaScript engine - it doesn't emulate the browser and doesn't even have a "document" or "location" object...」。

Spidermonkey 是一個 javascript 執行器,但是不是一個瀏覽器,還缺很多環境,雖然可以用它貼貼補補來做惡意程式偵測,我們當初還是決定打正規戰--建立完整的沙盒(sandbox)環境。

當年我們的 WAVES 論文,是利用 detours 這個含式庫,來建立自己的 sandbox,一共攔截了以下的含式(直接將論文畫面捕捉貼出):



當時關於沙盒的建立,資訊還不太多,大部分靠社群朋友的分享。

現在好的 sandbox 很多了,我前幾天貼的文--Black Hat 2008 第一天觀察中就有提到,像是 Paul Royal,講的就是他利用 Intel VT 建立的一個 sandbox 環境,並且有跟其他 sandboxing 技術比較。

Sandboxing 大致上可以說有四個目的: 1) 限制惡意程式不能讓其逃離 sandbox,2) 要讓惡意程式正常執行,包含正常脫殼與攻擊等,3) 不可以讓惡意程式發現它正被放在 sandbox 中執行, 4) 需要讓惡意程式展現行為。很多 sandboxing 技術做到了 1-3,但是無法做到(4)。

例如,如果惡意程式就是硬等個三十分鐘,才觸發攻擊,那麼如果 sandbox 只有三分鐘觀察時間(HackAlert 總不能掃一個網頁要三十分鐘吧?),就無法觀測出惡意的行為,而會提早收工而誤判了。

這就是當初我們 WAVES 論文中所提的「Behavior Stimulation(行為觸發)」的概念。在這方面,X-Solve 的加入是超級的生力軍,他們帶來了 Archon 引擎,也催生了 HackAlert

HackAlert 是免費的服務,歡迎各位註冊使用;如果想很快看看它的介面,可以看一下 Walter 貼的「自動爬行功能正式啟動」那篇。

如果要比較 HackAlert 偵測惡意程式的功力到底如何,可以找一些厲害的惡意程式試看看,如果手上沒有,MalwareGuru裡有一些;MalwareGuru 是一個 wiki,歡迎您直接註冊帳號參與 :)

至於很多人問我,為何最近都談惡意程式沒有談我們的白箱工具 CodeSecure ?是的,CodeSecure 還是我們主力產品,原因很簡單,HackAlert 隨便一寫就花我兩三個小時去了,CodeSecure 的技術更難,大家更不熟(喔?你 advanced compiler / formal methods / model checking / programming language 都修過?okok...我是指正常人),我每次想寫就手軟(尤其 CodeSecure 的工程師都超忙,更不可能幫我)...不過既然大家這麼有興趣,我下次再寫好了,先讓我把 Black Hat 還有 DEFCON 寫完吧!

最後,看到今天的 HackAlert 做得這麼成熟,心裡真的很高興,把當初論文上登的 WAVES 畫面切下來貼一下好了。現在 Walter 帶著 X-Solve 團隊做,以前這東東幾乎我一個人寫的勒!雖然跟 HackAlert 沒太大關連,貼一下紀念紀念啦!



作者 Wayne 為阿碼科技 CEO

繼續閱讀全文...

網頁掛馬檢查服務--全網監控功能啟動!

去年,隨著掛馬手法在駭客集團中流行,客戶不但害怕被入侵,被掛馬,也害怕被 Google 點名。今年初我們釋出了 X-Solve 團隊加入後共同努力打造出的免費 HackAlert 服務。當時因為駭客掛馬大多只掛在首頁,HackAlert 的單一URL監控就足夠應付:



然而自今年年初,我們的團隊監控到了有種自動化的大規模 SQL Injection 加掛馬攻擊,在每週末準時報到 (阿碼新聞稿PC World(IDG)ITHome),讓不少人半夜接到關切電話,而 HackAlert 與 SmartWAF 也收了不少樣本下來...

但很多客戶的網站都很龐大,URL也常變動,單一 URL 監控要定期更改實在不方便,所以我們開始設計能夠定期自動監控全網並自動進行掃描的企業級監控功能,並在最近終於釋出正式的版本,我在這邊一步一步帶大家使用:


1. 首先,登入後的空白頁:


2. 點選「新增專案」,會出現設定精靈
我們指定要監控這個眾多阿宅常去的著名網站 (hxxp://waigua.tw)



3. 新增完畢,點「Scan Now」就會開始全站檢查:


下圖是爬完的結果:

全站檢查會開始 crawl 整個網站,目前的版本總共找到400頁,用Google查詢的話,會找到158筆左右:



4. 接著就可以到專案統計表去看全網掛馬偵測結果
(測試時間為2008年8月14號下午5點左右):


看來很多頁都很精彩,總共有98頁被掛,玩 game 練功順便開動物園。


5. 但是 HackAlert 不只告訴你哪個網頁已經被掛 (徵狀),還可告訴你木馬怎麼被下載的 (證據):

首先, 把滑鼠移過去就會看到點選提示:


反白後按下去,就會看到看到木馬下載被 HackAlert 記錄的過程:

再來一張:



6. 企業客戶可以啟動 syslog 通報以及查閱記錄功能:



有了全網監控功能之後,不論是掛在首頁或是藏在深處的馬,都能被更有效的發現,有興趣的話,,可以跟我們聯絡,透過 http://hackalert.armorize.com 首頁上的 Contact Us 就可以找到我們。

作者 Walter 為阿碼科技 CTO

繼續閱讀全文...

2008年8月12日

美國駭客年會 Black Hat 2008 觀察--第一天

(這篇是一個很詳細的觀察,針對我在美國駭客年會 Black Hat 有去到的場次。對於整個 Black Hat 今年的趨勢觀察,我會另外寫一篇。)

1. Ian Angell: Complexity in Computer Security--A Risky Business
2. Jared DeMott: AppSec A-Z
3. Billy Rios & Nitesh Dhanjani: Bad Sushi: Beating Phishers at Their Own Game
4. Fyodor Vaskovich: 大規模 NMAP 掃瞄(Nmap: Scanning the Internet)
5. Dan Kaminsky: DNS 有史以來最大漏洞
6. Petko D. Petkov(PDP): 瀏覽器安全(Client-side Security)
7. Rober (RSnake) Hansen: Xploiting Google Gadgets: Gmalware and Beyond
8.
9.
綿羊牆!

會場就在我住的旅館的對面,但是還是很早起床,因為每天都很忙,除了聽一些 talk 還有很多人要碰。今天天氣很好,有太陽時才發現我房間看出去的view還不錯:



到了會場,今年一樣布置得很漂亮:





註冊之後,我先去找負責媒體的 Dirk 跟 Nico。不是要拿免費的 pass,我已經付全額了,但是我要拍照,需要先跟他們 check 過,確定今年大會的規則。尤其是之後的 DEFCON,需要更加小心。結果很順利,規則都沒變,大會還給了我一個 press 的名牌,讓我可以大方的拍照... great!感謝你們,Dirk and Nico!

Black Hat 今年第12年,人非常的多,而且聽眾的技術都有一定的水準,年齡層與產業皆涵蓋得很廣,今年一共有8個track一起舉行,分別是:Root Kits、0-day、App Sec(應用程式安全)、Bots & Malware(惡意程式)、Deep Knowledge、The Network (網路安全)、Over the Air(無線網路安全)以及 Reverse Engineering (逆向工程)。



一去就忙著跟一大堆人打招呼,看來所有認識的廠商都到了,明年阿碼科技也應該要展,但是我們一年真的展太多了。還好我早到,跟所有人打完招呼就差點錯過了開場跟 keynote。

大會照往例,由大會主席 Jeff 開場。看起來還是這麼年輕,而且開場簡潔,很好!



1. Ian Angell: Complexity in Computer Security--A Risky Business投影片下載

第一天的 keynote 由 London School of Economics (LSE)的 Ian Angel(個人網站大會介紹)教授開場,題目是「Complexity in Computer Security--A Risky Business」(投影片在這裡),沒有特別講什麼新的,但是把當前資安的挑戰用很好笑的方式講得很清楚:



他的看法是,目前資安沒有解決方案,只有事件發生的可能與造成的影響(there are no solutions, only contingencies),所以我們就是,盡人事聽天命,然後保持愉快的心情(Start the day with a smile and get it over with)。您覺得呢?

這裡是他在會場接受的專訪:



2. Jared DemMott: AppSec A-Z

聽完 keynote 我們前往 Jared DeMott(個人網站大會介紹)的逆向工程 talk,題目是:「AppSec A-Z」。Jared 是 「Fuzzing for Software Security Testing and Quality Assurance」一書的作者之一,並創辦了 VDA Labs。Jared 寫了幾個免費的工具,包含 Win32 DLL injection 用的 pyfault,以及三個 fuzzing 用的工具 EFS/GPFcmdline、以及ikefuzz。Jared 也是2007年l@stplace二次拿下 DEFCON CTF 冠軍時的一員。

我是覺得,雖然題目是逆向工程,其實整個演講就是之前五月他講的「Onion, not parfait: Today's security check-up and malware for the rest of us」的衍伸,這些新的逆向技巧主要針對目前 Web 上的各種惡意程式之分析所用。看來 Web 成為散播 malware 主要管道後,由於這些 malware 加殼的方式都很特別,逼出了很多這樣的研究。

介紹的技巧先不說,因為我要寫這麼多天的觀察,沒辦法談細節,但是我覺得 Jared 一開始的介紹很有系統性,把惡意程式的分析分成動態與靜態兩種,然後循序漸進分門別類的介紹。我覺得這是講師該有的責任-如何講一場讓大家都聽得懂得演講,而不是自己講爽的就好,而別人只感覺「似乎很屌」但是實際上卻聽不懂。就技術而言,這次聽來聽去我都覺得這些講師用的技巧沒有Birdman 在 HackAlert 中用的技巧好,Birdman 的技巧都是快、準、狠,簡單又一針見血,可能是長期被對岸訓練出來的緣故吧!



3. Billy Rios & Nitesh Dhanjani: Bad Sushi: Beating Phishers at Their Own Game投影片下載

聽到一半自己看完投影片的 PDF 檔,覺得差不多了,閃人,看看還有誰可以聽的,同時間的還有 Billy Rios 跟 Nitesh Dhanjani(個人網站大會介紹,作者:Network Security Tools (O'Reilly)HackNotes :Linux and Unix Security (McGraw-Hill))的演講,但是他們的演講我最近在其他的會中都聽過了,所以跳過,來看看 NMAP 的 Fyodor Vaskovich (個人網站大會介紹)好了!

4. Fyodor Vaskovich: 大規模 NMAP 掃瞄(Nmap: Scanning the Internet)投影片下載

NMAP Fyodor Vaskovich (個人網站大會介紹)的講場擠到連站的位子都沒有。Fyodor 這次講的是 internet scanning,也就是大規模透過 internet 的網路層掃瞄。我記得 web 的威脅還沒有起來時,講到 internet security 或 web security,一定會提到 NMAP,NMAP 似乎也是每個駭客(還有網管)必學的第一套工具,也是電影裡的常客。我想很多人選這場也是為了親自見 Fyodor 一面吧?



Fyodor 開場時說的話讓我印象深刻:「Internet scanning 非常難,還有許多的挑戰,但我想這也許是好的,至少這讓我站在台上給演講,不然我看我得去學那個叫什麼 "XSS" 的鬼東東了!」

Fyodor 說這次 Internet scanning 的計畫,最困擾他的是,常常 ISP 會把他的家的網路停掉:

ISP:「先生,我們把你的網路停掉了,因為根據你的流量分析,你中了木馬,你的木馬正在做很多不法的事情,你已經成為僵屍網路(botnet)的一員了!」

Fyodor:「把我的我網路還給我,那些流量都是我刻意產生的,我有目的的...」

ISP:「可是這些流量是違法的!」

Fyodor:「我是 NMAP 的作者,我在研究並發展更強大的版本...」

ISP:「喔,你就是 "那個" Fyodor?請受小弟一拜...NMAP 會有新版?太帥了,您辛苦了!」

根據這次 Fyodor 大規模掃瞄計畫的結果,port 80 仍然是最常見的開放 port,其他依序是:80 (http), 25 (smtp), 22 (ssh), 443 (https), 21 (ftp), 113 (auth), 23 (telnet), 53 (domain), 554 (rtsp), 3389 (ms-term-server)。

Fyodor 講了很多加速 NMAP 的技巧以,例如 stateful firewalls 適合用 SYN 來 scan,而 stateless firewalls 適合用 ACK 來 scan等等,也介紹了 NMAP 的新功能,例如可以設定最大與最小流量,scripting engine,還有會畫 network map 的新圖形介面 Zenmap,以及可以比對兩次掃瞄差別的 Ndiff 等。

Fyodor 的投影片可以到這裡下載。

5. Dan Kaminsky: DNS 有史以來最大漏洞(Black Ops 2008 -- Its The End Of The Cache As We Know It)整個演講的錄影)(整個演講的 mp3

接下來決定去 Dan kaminsky(個人網站大會介紹)的演講「Black Ops 2008 -- Its The End Of The Cache As We Know It」,因為這次他公開的 DNS 弱點太紅了,預計會大爆滿。

這個 DNS cache poisoning 的弱點 Dan 在七月初就已經公開:

資安之眼, US CERT TA08-190B / VU#800113, CVE-2008-1447

其實自從 Dan 七月初公開此 DNS 弱點到現在,一方面由於資訊不足(一方面要留到 Black Hat 才公布,一方面也讓廠商有足夠時間初修補程式),造成很多聲音說此漏洞早就有很多研究員發現了,但是另一方面,卻也很快被其他人猜出整個漏洞的細節,而後很快地就有人寫出了攻擊程式(例如:MILW0RM:6122MILW0RM:6123MILW0RM:6130)。Dan 則在七月24日 Black Hat 的會前會上公布了漏洞的細節。在這裡註冊後可以看到當時的錄影。

來到 Dan 的演講,果然感受到美國這些大型會議的特色:好的講師,大家擠到連站的位子都沒有;壞的講師,一開講五分鐘之後,你會發現大家一窩峰往外衝,底下右邊是某講師的演講,左邊是 Dan 的:



先不論這個演講能聽到些什麼(細節之前都公布了),但是 Dan 的確是一個很好的演講者,他的演講生動有趣,我是從頭笑到尾。很多人說都沒聽到新的東西,也很多人說,Dan 不需要解釋這麼多 DNS 漏洞的影響,因為 man-in-the-middle 後什麼安全當然都別談了,但是我是覺得,講這些就忘了:好笑,有趣,一直是這個會議的精神之一。不論 Dan 發現的漏洞是否其實簡單,其實很多人有提到過了,他的演講非常生動,絕對讓大家對此漏洞以及整個 DNS 架構的不安全性印象深刻,以及他一個人真的推動了所有廠商對此漏洞的重視並出修補程式,這些我覺得都是我很欣賞他的原因。



看看右圖,Dan 講得手足舞蹈的,左圖,Dan 的演講真是老少咸宜,大家都來看他的風采 :)

這個漏洞的特色之一,是影響了大多數的廠商。Dan 公布後,主要的 DNS 上修補程式的速度多快呢?下面有 video,也可以按這裡下載 avi 檔



這裡有對於此 DNS 漏洞的詳細圖解。

以下是 Dan 在會議中接受的訪問:



6. Petko D. Petkov(PDP):瀏覽器安全(Client-side Security)投影片下載)(whitepaper 下載)(程式下載

聽完了 Dan 的,接下來去找 PDP(Petko D. Petkov)(個人網站大會介紹),題目是:「Client-side Security」。PDP 講的就跟我們做得有關了,所以雖然今年他在很多地方講的我都聽過了,但是還是來捧場啦!PDP 本來就很多 fans,去年公開 Gmail 的 CSRF 漏洞示範給 ZDNet 確認後(資安之眼),其研究更受到大家的注意。



PDP 的這個演講跟他之前的演講差不多,講了很多瀏覽器的外掛(plugins)產生的漏洞,其中包含了Adobe PDF(PDP資安之眼),Apple Quicktime(PDP資安之眼),SecondLife(PDP),Flash UPnP(PDP-1PDP-2資安之眼),Skype(PDP資安之眼-1資安之眼-2)等。

最後 PDP 提到了第四代 rootkit 的觀念,認為以後 rootkit 會存在於瀏覽器上。我自己則是認為,瀏覽器的外掛安全問題,還會存在好一陣子,加上在瀏覽器上執行的惡意程式,基本上都是以 script 的形式存在,而非執行檔,而 script 的變形非常方便以及容易(我之後會介紹一場 DEFCON 有趣的演講),這樣的情況會徹底擊敗以樣本(signatures / patterns)為基礎的防禦技術,如多數的防毒軟體。

PDP 這次演講的投影片可以在這裡下載

7. Rober "RSnake" Hansen: Xploiting Google Gadgets: Gmalware and Beyond程式下載

聽完 PDP,去看好朋友 RSnake (ha.ckerssla.ckersSecTheory大會介紹)的演講。



看到 RSnake 讓我想到這次 Kuon 沒有來有點可惜。他只要有碰到這些講師都會有問不完的問題...

(上:Kuon 於 OWASP-WASC US 2007)

RSnake 這次花了很多時間講他跟 Google 之間不是那麼順利的互動。我想,弱點揭露(vulnerability disclosure 一直是資安研究人員最困擾的議題之一,聽 RSnake 在台上講,我想到我自己很多不是很愉快的經驗。我們做源碼檢測,手上有很多美國大廠的 0-day。如果已經是我們的客戶,那溝通方式很簡單,但是如果還不是我們的客戶,有時候就複雜了。通常對方第一個動作就是傳一份保密合約(NDA)過來讓我們簽,而這些保密合約,我給我們公司律師檢閱後,從來沒有一次是律師跟我說可以簽的。基本上簽了之後,我們喪失任何在公開場合討論此漏洞的權力(即使在修改了之後),對方也不會有任何承諾何時會修正或公開時會不會提及是我們發現的。每次這種會議不論是台上的講師或台下的私人聚會,弱點揭露永遠是熱門的話題。這次 DEFCON,MIT 學生被法院禁止講捷運 RFID 卡的破解方式,RSnake 還有很多其他講師也在演講中對弱點揭露提出看法,我也有很多自己的經驗,所以我會另外寫一篇探討。

基本上,RSnake 發現 gmodules.com 這個網域有 XSS 漏洞,但是 Google 卻覺得此非 google.com 網域,即使有 XSS 漏洞,駭客也不會因此而能偷到 google.com 的 cookie,所以沒有修復的必要。

呵呵,問題是,XSS 漏洞不只是可以偷 cookie 而已,也可以用來 phishing或掛馬。gmodules.com 這個網域有 XSS,如果這不重要的話,那我想 gmail.com 是否一樣呢?如果攻擊者像是利用 SEO Posioning 那樣的利用 GModules.com XSS 來掛馬,那麼 Google 會怎麼看待這樣的問題?

這讓我想到去 Black Hat / DEFCON 之前,我受邀到國防部為三軍的資安人員講一場演講,同時受邀的有叡揚資訊的某先生。這位先生一開場就介紹資安之眼的「TW 網站淪陷資料庫」:各位如果有 XSS 的話,會被登入在這個資料庫中喔!千萬別讓自己的網站上了這個資料庫... 這位先生,您不知道貴公司也已經上了這個資料庫嗎?隨後這位先生大力建議,網站不要被攻的方法,就是盡量裡頭不要擺東西,駭客攻進來發現沒有東西可以拿,也沒有資料庫,就不會對你的網站有興趣了...這位先生,您沒有聽過什麼叫 botnet (僵屍網路)嗎?駭客攻機器只是為了拿資料,我還第一次聽到...那天我在台下真的是聽不下去了!

回到主題,RSnake 這個 talk 我很喜歡,因為我最近開發阿碼外傳,選擇用 Blogger,也發現很多這樣子的問題。Blogger 之前非 google,上面推薦了擺在很多第三方的 widget,這些 widget 目前仍大量被使用。Blogger 被 Google 買了之後,大家相信 Google 也因此相信 Blogger,但是這些擺在第三方的 script 安全嗎?

接下來 RSnake 就介紹了他做的許多可以擺在 gmodules.com 下的惡意的 Google gadget,包含會掃瞄網路的,會偷資料的...等等。這部分技術上沒什麼難度主要是,但是聽起來蠻有趣的 :)

最後,RSnake 介紹了gmodules.com 的proxy cache 弱點,可以在上面放惡意程式,而這種惡意程式,他取名做 「GMalware」。

8. Paul Royal: Alternative Medicine: The Malware Analyst's Blue Pill投影片下載)(whitepaper下載)(程式下載

最後一場,我跳過了美國機敏單位與駭客大拜拜的「Meet the Feds」,因為反正DEFCON也有,而去了Paul Royal 的演講:「Alternative Medicine: The Malware Analyst's Blue Pill」。Paul Royal 是 Georgia Tech Dr. Wenke Lee 的學生,主攻 binary 分析,目前是 Damballa 的首席研究員。



Paul Royal 在他演講的簡介裡,把現在惡意程式設計與偵測的挑戰講得很清楚:對於動態偵測,惡意程式有各種方法偵測 sandbox,對於靜態偵測,惡意程式有各種不同加殼技術,所以惡意程式設計與偵測,就是一場永無止境的賽跑。Paul 介紹如何利用中央處理器對虛擬化(virtualization)的硬體支援(例如 Intel 的 VT),以建構出一個 KVM 式的 sandbox,使得惡意程式無法偵測出,其已經被置入 sandbox 執行,並正在被分析。Royal 有當場解釋 source code,並秀出此研究的雛形(prototype):Azure,與之前其他研究的雛形:RenovoSaffron

Paul 用了 15 套加殼程式來比較這三個技術的差別:Armadillo, Aspack, Asprotect, FSG, MEW, Molebox, Morphine, Obsidium, PECompact, Themida, Themida VM, UPX, UPX S, WinUPack, Yoda’s Prot,其中 Azure 偵測到所有的惡意程式,而 Renovo 只偵測到 13 隻,Saffron 只偵測到 10 隻。我想叫 Birdman 跑一下我們的 Archon Analyzer (HackAlert的引擎)比比看... 順便跑一下趨勢跟賽門好了,呵呵!

9. 綿羊牆

最後,我發現今年 Black Hat 也有綿羊牆了!綿羊牆(wall of sheep)(CNET 報導:中文英文)一直是 DEFCON 有趣的特色之一,而今年也來到了 Black Hat。綿羊牆團隊約有十位核心成員,他們全天候監控大會的網路封包,抓到與會者的機密資料,如帳號密碼或信用卡號碼等,就貼到綿羊牆上去恭喜他 :)


(我來不及問綿羊牆可不可以照,上面這張不是我照的,是 wired 的 blog 上的

綿羊牆團隊不使用任何解密工具,所以牆上的綿羊都是自己使用了明碼的通訊(沒有加密的 FTP、POP、SMTP...)而光榮上榜的。CNET 這次有訪問綿羊牆的團隊:





有趣的是,今年在 Black Hat 有三位法國的記者(我有媒體牌所以我在媒體室有碰到他們),沒有先告知大會工作人員,就自行 sniff 媒體室裡的有線網路封包,抓到其他媒體記者的帳號密碼後,通知綿羊牆的工作人員,將這些「媒體綿羊」希望加入榜單。老兄... 你沒聽說 Black Hat 這些工作人員的風格嗎?這是他們的會,怎麼會讓你們來撒野?

主要是,美國聯邦法律規定,被監聽者需要知道自己被監聽,而 Black Hat 大家都知道無線網路是被監聽,被掃瞄,充滿 0day 攻擊的。可是記者室裡的網路,大會是宣稱安全的,因為許多記者不是技術出身,不能要求他們懂得如何設定安全的連線(這樣喔?)...

整個報導在這裡(照片也是這裡來的)。最後這三位記者被大會驅逐,並且也被禁止參加 DEFCON 以及未來所有的 Black Hat / DEFCON。

tgdaily 的記者 Humphrey Cheung 有趁亂拍下了這三位記者當時秀的畫面,除了 eWeek 之外,CNET 也在榜上 :)



(這張是 Humphrey 照的,故事在這裡,另外 CNET 也有兩篇報導:CNET 報導-1、CNET 報導-2

對了,這裡有被偷帳號密碼的 eWeek 記者 Brian Prince 的自白:eWeek 在 Black Hat 如何被駭的(How eWEEK Got Hacked at Black Hat)

疑似也被偷了帳號的 CNET 記者 Elinor Mills 女士也寫了一篇可愛的自白:「與我同桌的記者鎖定要駭我(Targeted for hacking by reporters at my table)」。報導中她說:「我報導了各資安會議十四年了,覺得很幸運一直沒有被駭,一直到這星期四...事情是這樣的...」「McAfee 的資深 VP 對我說:在這行夠久的人,一定都在某個時間有被駭過,這讓我好過一些,但是我無法抹去被侵犯(violate)的感覺,就好像一陣風把我的裙子吹了起來,讓我的內在暴露給一群陌生人看到一樣,也許這是在這行必須接受的風險,但是從現在開始我都會穿保險褲的(overalls)。」

我對這件事有很深的看法,我會再寫 blog。基本上,就像鎖匠一樣,駭客最重要的是紀律。我們會開鎖,不代表我們可以去嚇別人;駭客的功夫我都很尊敬,但是行為不約束的我只有不屑。這些改天再寫吧!

另外讓我想到,這次北京奧運,這麼多記者在北京...大概都完了吧 :)

我看會來後大家最好換一下帳號吧...應該說最好換一台電腦吧,用什麼掃毒軟體確定?阿碼科技的 Archon 嗎?不用了啦!應該都中了,直接 format 吧!不過現在很多都會跑到 bios 裡面去,我看換一台比較快啦!

大會結束後我去了一個私底下約的聚會,內容就不能公開啦!只能說現在 rootkit 都已經軍規化了,真恐怖!

(繼續閱讀::美國駭客年會 Black Hat 2008 觀察--第二天
(繼續閱讀::駭客年會Black Hat / DEFCON 2008 心得一:地下犯罪經濟成熟,影響會議品質?

作者 Wayne 為阿碼科技 CEO

繼續閱讀全文...